diff --git a/.travis.yml b/.travis.yml index 5d613e1dfca..7dea8765cb2 100644 --- a/.travis.yml +++ b/.travis.yml @@ -131,7 +131,7 @@ script: # - 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 +# - cat upgrade380390.log - php upgrade2.php 3.8.0 3.9.0 ignoredbversion > upgrade380390-2.log # - cat upgrade380390-2.log - cd ../.. diff --git a/.tx/config b/.tx/config index 3c8c49e40e9..a8ac07f0c8b 100644 --- a/.tx/config +++ b/.tx/config @@ -224,6 +224,12 @@ source_file = htdocs/langs/en_US/members.lang source_lang = en_US type = MOZILLAPROPERTIES +[dolibarr.oauth] +file_filter = htdocs/langs//oauth.lang +source_file = htdocs/langs/en_US/oauth.lang +source_lang = en_US +type = MOZILLAPROPERTIES + [dolibarr.opensurvey] file_filter = htdocs/langs//opensurvey.lang source_file = htdocs/langs/en_US/opensurvey.lang @@ -284,6 +290,12 @@ source_file = htdocs/langs/en_US/propal.lang source_lang = en_US type = MOZILLAPROPERTIES +[dolibarr.receiptprinter] +file_filter = htdocs/langs//receiptprinter.lang +source_file = htdocs/langs/en_US/receiptprinter.lang +source_lang = en_US +type = MOZILLAPROPERTIES + [dolibarr.resource] file_filter = htdocs/langs//resource.lang source_file = htdocs/langs/en_US/resource.lang diff --git a/COPYRIGHT b/COPYRIGHT index 534770f0f75..4862ab1b339 100644 --- a/COPYRIGHT +++ b/COPYRIGHT @@ -16,6 +16,7 @@ AdoDb-Date 0.33 Modified BSD License Yes ChromePHP 4.1.0 Apache Software License 2.0 Yes Return server log to chrome browser console CKEditor 4.3.3 LGPL-2.1+ Yes Editor WYSIWYG EvalMath 1.0 BSD Yes Safe math expressions evaluation +Escpos-php MIT License Yes Thermal receipt printer library, for use with ESC/POS compatible printers FirePHPCore 0.4.0 MIT License Yes Send logs to Firefox Firebug console 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) @@ -25,6 +26,7 @@ PEAR Mail_MIME 1.8.9 BSD Yes odtPHP 1.0.1 GPL-2+ b Yes Library to build/edit ODT files PHPExcel 1.8.0 LGPL-2.1+ Yes Read/Write XLS files, read ODS files php-iban 1.4.7 LGPL-3+ Yes Parse and validate IBAN (and IIBAN) bank account information in PHP +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 Raven-php 0.12.1 MIT License Yes Used for server-side error logging with Sentry logger Restler 3.0 LGPL-3+ Yes Library to develop REST Web services @@ -56,7 +58,7 @@ JsTimezoneDetect 1.0.4 MIT License Yes Raven.js 1.1.19 MIT License Yes Used for client-side error logging with Sentry logger For licenses compatibility informations: -http://www.fsf.org/licensing/licenses/index_html +http://www.gnu.org/licenses/licenses.en.html Copyright diff --git a/README.md b/README.md index 576e3153ef9..f6f4b8be34f 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,7 @@ # DOLIBARR ERP & CRM +![Build status](https://img.shields.io/travis/Dolibarr/dolibarr/develop.svg) ![Downloads per day](https://img.shields.io/sourceforge/dd/dolibarr.svg) + Dolibarr ERP & CRM is a modern software to manage your organization's activity (contacts, suppliers, invoices, orders, stocks, agenda, ...). It's an Open Source software (wrote in PHP language) designed for small and medium companies, foundation and freelances. diff --git a/build/debian/README.howto b/build/debian/README.howto index 92397130a3a..1889c7b633e 100644 --- a/build/debian/README.howto +++ b/build/debian/README.howto @@ -239,7 +239,7 @@ http://packages.qa.debian.org/t/tcpdf.html ##### Create/Maintain dolibarr package -To update dolibarr debian package when upstream version has changed +To update dolibarr debian package when upstream (official version of external project) has changed: * You can git clone debian git repo > git clone git.debian.org:/git/collab-maint/dolibarr.git [dolibarr-debian] @@ -284,10 +284,10 @@ Then check/modify also the user/date signature: - Name and email must match value into debian/control file (Entry added here is used by next step). -To update dolibarr debian package when only files into debian has changed +To update dolibarr debian package when only files into debian has changed, or if you include manually backport: * Change files and commit. -* Add a tag debian/x.y.z+dfsgw-2 (increase the last 1 into 2) +* Add a tag debian/x.y.z+dfsgw-2 (increase the last 1 into 2, 3...) Once files has been prepared, it's time to test: diff --git a/composer.json b/composer.json index 80e55b6a221..c5fab8bf290 100644 --- a/composer.json +++ b/composer.json @@ -17,6 +17,7 @@ "ext-curl": "*", "ccampbell/chromephp": "^4.1", "ckeditor/ckeditor": "4.3.3", + "mike42/escpos-php": "dev-master", "mobiledetect/mobiledetectlib": "2.8.3", "phpoffice/phpexcel": "1.8.0", "restler/framework": "^3.0", diff --git a/composer.lock b/composer.lock index f178ec4f419..47122ebe431 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": "f441e6348ae7862942693cab10810418", + "hash": "d88b5c84a9ea1af354d867ba2e2ab251", + "content-hash": "85e60ec7f8ab593387c7bd10d8db860d", "packages": [ { "name": "ccampbell/chromephp", @@ -126,6 +127,64 @@ "homepage": "https://github.com/firephp/firephp-core", "time": "2013-04-23 15:28:20" }, + { + "name": "mike42/escpos-php", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/mike42/escpos-php.git", + "reference": "0564ff94de45564221eca99c4cd5ab24492894c2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/mike42/escpos-php/zipball/0564ff94de45564221eca99c4cd5ab24492894c2", + "reference": "0564ff94de45564221eca99c4cd5ab24492894c2", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "require-dev": { + "phpunit/phpunit": "4.5.*" + }, + "type": "library", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Roni Saha", + "email": "roni.cse@gmail.com" + }, + { + "name": "Michael Billington", + "email": "michael.billington@gmail.com" + }, + { + "name": "Gergely Radics", + "email": "gerifield@ustream.tv" + }, + { + "name": "Warren Doyle", + "email": "w.doyle@fuelled.co" + }, + { + "name": "vharo", + "email": "vharo@geepok.com" + } + ], + "description": "Thermal receipt printer library, for use with ESC/POS compatible printers", + "homepage": "https://github.com/mike42/escpos-php", + "keywords": [ + "ESC-POS", + "driver", + "escpos", + "print", + "receipt" + ], + "time": "2015-11-02 10:50:46" + }, { "name": "mobiledetect/mobiledetectlib", "version": "2.8.3", @@ -424,13 +483,16 @@ "pdf417", "qrcode" ], + "abandoned": "tecnickcom/tcpdf", "time": "2015-01-28 18:51:40" } ], "packages-dev": [], "aliases": [], "minimum-stability": "stable", - "stability-flags": [], + "stability-flags": { + "mike42/escpos-php": 20 + }, "prefer-stable": false, "prefer-lowest": false, "platform": { diff --git a/dev/initdata/generate-facture.php b/dev/initdata/generate-invoice.php similarity index 95% rename from dev/initdata/generate-facture.php rename to dev/initdata/generate-invoice.php index 97f00f7d6d6..321cc6af06a 100755 --- a/dev/initdata/generate-facture.php +++ b/dev/initdata/generate-invoice.php @@ -19,8 +19,8 @@ */ /** - * \file dev/intdata/generate-facture.php - * \brief Script de generation de donnees aleatoires pour les factures + * \file dev/intdata/generate-invoice.php + * \brief Script example to inject random customer invoices (for load tests) */ // Test si mode batch diff --git a/dev/initdata/generate-commande.php b/dev/initdata/generate-order.php similarity index 97% rename from dev/initdata/generate-commande.php rename to dev/initdata/generate-order.php index 785c0544876..6ba813c5135 100755 --- a/dev/initdata/generate-commande.php +++ b/dev/initdata/generate-order.php @@ -20,8 +20,8 @@ */ /** - * \file dev/initdata/generate-commande.php - * \brief Script de generation de donnees aleatoires pour les commandes + * \file dev/initdata/generate-order.php + * \brief Script example to inject random orders (for load tests) */ // Test si mode batch diff --git a/dev/initdata/generate-produit.php b/dev/initdata/generate-product.php similarity index 96% rename from dev/initdata/generate-produit.php rename to dev/initdata/generate-product.php index 6e7ea6dd05f..38c0e755db3 100755 --- a/dev/initdata/generate-produit.php +++ b/dev/initdata/generate-product.php @@ -20,8 +20,8 @@ */ /** - * \file dev/initdata/generate-produit.php - * \brief Script de generation de donnees aleatoires pour les produits + * \file dev/initdata/generate-product.php + * \brief Script example to inject random products (for load tests) */ // Test si mode batch diff --git a/dev/initdata/generate-propale.php b/dev/initdata/generate-proposal.php similarity index 96% rename from dev/initdata/generate-propale.php rename to dev/initdata/generate-proposal.php index b7b76ec2c02..8e17e673b86 100755 --- a/dev/initdata/generate-propale.php +++ b/dev/initdata/generate-proposal.php @@ -20,8 +20,8 @@ */ /** - * \file dev/initdata/generate-propale.php - * \brief Script de generation de donnees aleatoires pour les propales + * \file dev/initdata/generate-proposal.php + * \brief Script example to inject random proposals (for load tests) */ // Test si mode batch diff --git a/dev/initdata/generate-societe.php b/dev/initdata/generate-thirdparty.php similarity index 97% rename from dev/initdata/generate-societe.php rename to dev/initdata/generate-thirdparty.php index 72e4d9b1e84..9d928db6ac0 100755 --- a/dev/initdata/generate-societe.php +++ b/dev/initdata/generate-thirdparty.php @@ -20,8 +20,8 @@ */ /** - * \file dev/initdata/generate-societe.php - * \brief Script de generation de donnees aleatoires pour les societes + * \file dev/initdata/generate-thirdparty.php + * \brief Script example to inject random thirdparties (for load tests) */ // Test si mode batch diff --git a/dev/initdata/mysqldump_dolibarr_3.8.0.sql b/dev/initdata/mysqldump_dolibarr_3.8.0.sql index ba88c642d41..fa5243cb2ac 100644 --- a/dev/initdata/mysqldump_dolibarr_3.8.0.sql +++ b/dev/initdata/mysqldump_dolibarr_3.8.0.sql @@ -382,7 +382,7 @@ CREATE TABLE `llx_adherent` ( LOCK TABLES `llx_adherent` WRITE; /*!40000 ALTER TABLE `llx_adherent` DISABLE KEYS */; -INSERT INTO `llx_adherent` VALUES (1,1,NULL,NULL,'Smith','Vick','vsmith','vsx1n8tf',2,'phy',NULL,10,NULL,NULL,NULL,NULL,'102','vsmith@email.com',NULL,NULL,NULL,NULL,'1960-07-07',NULL,1,0,'2012-07-09 00:00:00',NULL,NULL,'2010-07-10 15:12:56','2010-07-08 23:50:00','2013-03-20 13:30:11',1,1,1,NULL,NULL),(2,1,NULL,NULL,'Pierre','Curie','pcurie','pcuriedolibarr',2,'phy',NULL,12,NULL,NULL,NULL,NULL,'1','pcurie@example.com','',NULL,NULL,NULL,'1972-07-08',NULL,1,1,'2017-07-17 00:00:00',NULL,NULL,'2010-07-10 15:03:32','2010-07-10 15:03:09','2015-10-03 09:08:58',1,1,1,NULL,NULL),(3,1,NULL,NULL,'john','doe','john','8bs6gty5',2,'phy',NULL,NULL,NULL,NULL,NULL,NULL,'1','johndoe@email.com',NULL,NULL,NULL,NULL,NULL,NULL,1,0,NULL,NULL,NULL,'2011-07-18 21:28:00','2011-07-18 21:10:09','2015-10-03 09:28:46',1,1,1,NULL,NULL),(4,1,NULL,NULL,'smith','smith','Smith','s6hjp10f',2,'phy',NULL,NULL,NULL,NULL,NULL,NULL,'11','smith@email.com',NULL,NULL,NULL,NULL,NULL,NULL,1,0,NULL,NULL,NULL,'2011-07-18 21:27:52','2011-07-18 21:27:44','2015-10-03 09:40:27',1,1,1,NULL,NULL); +INSERT INTO `llx_adherent` VALUES (1,1,NULL,NULL,'Smith','Vick','vsmith','vsx1n8tf',2,'phy',NULL,10,NULL,NULL,NULL,NULL,'102','vsmith@email.com',NULL,NULL,NULL,NULL,'1960-07-07',NULL,1,0,'2012-07-09 00:00:00',NULL,NULL,'2010-07-10 15:12:56','2010-07-08 23:50:00','2013-03-20 13:30:11',1,1,1,NULL,NULL),(2,1,NULL,NULL,'Curie','Pierre','pcurie','pcuriedolibarr',2,'phy',NULL,12,NULL,NULL,NULL,NULL,'1','pcurie@example.com','',NULL,NULL,NULL,'1972-07-08',NULL,1,1,'2017-07-17 00:00:00',NULL,NULL,'2010-07-10 15:03:32','2010-07-10 15:03:09','2015-10-05 19:57:57',1,12,1,NULL,NULL),(3,1,NULL,NULL,'john','doe','john','8bs6gty5',2,'phy',NULL,NULL,NULL,NULL,NULL,NULL,'1','johndoe@email.com',NULL,NULL,NULL,NULL,NULL,NULL,1,0,NULL,NULL,NULL,'2011-07-18 21:28:00','2011-07-18 21:10:09','2015-10-03 09:28:46',1,1,1,NULL,NULL),(4,1,NULL,NULL,'smith','smith','Smith','s6hjp10f',2,'phy',NULL,NULL,NULL,NULL,NULL,NULL,'11','smith@email.com',NULL,NULL,NULL,NULL,NULL,NULL,1,0,NULL,NULL,NULL,'2011-07-18 21:27:52','2011-07-18 21:27:44','2015-10-03 09:40:27',1,1,1,NULL,NULL); /*!40000 ALTER TABLE `llx_adherent` ENABLE KEYS */; UNLOCK TABLES; @@ -1058,7 +1058,7 @@ CREATE TABLE `llx_boxes` ( KEY `idx_boxes_boxid` (`box_id`), KEY `idx_boxes_fk_user` (`fk_user`), CONSTRAINT `fk_boxes_box_id` FOREIGN KEY (`box_id`) REFERENCES `llx_boxes_def` (`rowid`) -) ENGINE=InnoDB AUTO_INCREMENT=787 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=811 DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1067,7 +1067,7 @@ CREATE TABLE `llx_boxes` ( LOCK TABLES `llx_boxes` WRITE; /*!40000 ALTER TABLE `llx_boxes` DISABLE KEYS */; -INSERT INTO `llx_boxes` VALUES (12,1,20,0,'A09',0,NULL,NULL),(73,1,21,0,'B16',0,NULL,NULL),(153,1,288,0,'A21',0,NULL,NULL),(154,1,289,0,'A07',0,NULL,NULL),(155,1,290,0,'A17',0,NULL,NULL),(160,1,295,0,'A13',0,NULL,NULL),(161,1,296,0,'A15',0,NULL,NULL),(162,1,297,0,'B12',0,NULL,NULL),(163,1,298,0,'B20',0,NULL,NULL),(164,1,299,0,'B10',0,NULL,NULL),(177,1,309,0,'B18',0,NULL,NULL),(240,1,316,0,'A05',0,NULL,NULL),(241,1,317,0,'B04',0,NULL,NULL),(253,2,323,0,'0',0,NULL,NULL),(304,2,324,0,'0',0,NULL,NULL),(305,2,325,0,'0',0,NULL,NULL),(306,2,326,0,'0',0,NULL,NULL),(307,2,327,0,'0',0,NULL,NULL),(308,2,328,0,'0',0,NULL,NULL),(309,2,329,0,'0',0,NULL,NULL),(310,2,330,0,'0',0,NULL,NULL),(311,2,331,0,'0',0,NULL,NULL),(312,2,332,0,'0',0,NULL,NULL),(313,2,333,0,'0',0,NULL,NULL),(372,1,334,0,'0',0,NULL,NULL),(373,1,335,0,'0',0,NULL,NULL),(374,1,336,0,'0',0,NULL,NULL),(439,1,337,0,'0',0,NULL,NULL),(440,1,338,0,'0',0,NULL,NULL),(441,1,339,0,'0',0,NULL,NULL),(442,1,340,0,'0',0,NULL,NULL),(531,1,341,0,'0',0,NULL,NULL),(532,1,342,0,'0',0,NULL,NULL),(533,1,343,0,'0',0,NULL,NULL),(534,1,344,0,'0',0,NULL,NULL),(535,1,345,0,'0',0,NULL,NULL),(772,1,343,0,'A01',1,NULL,NULL),(773,1,342,0,'A02',1,NULL,NULL),(774,1,335,0,'A03',1,NULL,NULL),(775,1,339,0,'A04',1,NULL,NULL),(776,1,317,0,'A05',1,NULL,NULL),(777,1,299,0,'A06',1,NULL,NULL),(778,1,289,0,'A07',1,NULL,NULL),(779,1,336,0,'B01',1,NULL,NULL),(780,1,341,0,'B02',1,NULL,NULL),(781,1,340,0,'B03',1,NULL,NULL),(782,1,298,0,'B04',1,NULL,NULL),(783,1,295,0,'B05',1,NULL,NULL),(784,1,290,0,'B06',1,NULL,NULL),(785,1,297,0,'B07',1,NULL,NULL),(786,1,20,0,'B08',1,NULL,NULL); +INSERT INTO `llx_boxes` VALUES (12,1,20,0,'A09',0,NULL,NULL),(73,1,21,0,'B16',0,NULL,NULL),(153,1,288,0,'A21',0,NULL,NULL),(154,1,289,0,'A07',0,NULL,NULL),(155,1,290,0,'A17',0,NULL,NULL),(160,1,295,0,'A13',0,NULL,NULL),(161,1,296,0,'A15',0,NULL,NULL),(162,1,297,0,'B12',0,NULL,NULL),(163,1,298,0,'B20',0,NULL,NULL),(164,1,299,0,'B10',0,NULL,NULL),(177,1,309,0,'B18',0,NULL,NULL),(240,1,316,0,'A05',0,NULL,NULL),(241,1,317,0,'B04',0,NULL,NULL),(253,2,323,0,'0',0,NULL,NULL),(304,2,324,0,'0',0,NULL,NULL),(305,2,325,0,'0',0,NULL,NULL),(306,2,326,0,'0',0,NULL,NULL),(307,2,327,0,'0',0,NULL,NULL),(308,2,328,0,'0',0,NULL,NULL),(309,2,329,0,'0',0,NULL,NULL),(310,2,330,0,'0',0,NULL,NULL),(311,2,331,0,'0',0,NULL,NULL),(312,2,332,0,'0',0,NULL,NULL),(313,2,333,0,'0',0,NULL,NULL),(372,1,334,0,'0',0,NULL,NULL),(373,1,335,0,'0',0,NULL,NULL),(374,1,336,0,'0',0,NULL,NULL),(439,1,337,0,'0',0,NULL,NULL),(440,1,338,0,'0',0,NULL,NULL),(441,1,339,0,'0',0,NULL,NULL),(442,1,340,0,'0',0,NULL,NULL),(531,1,341,0,'0',0,NULL,NULL),(532,1,342,0,'0',0,NULL,NULL),(533,1,343,0,'0',0,NULL,NULL),(534,1,344,0,'0',0,NULL,NULL),(535,1,345,0,'0',0,NULL,NULL),(772,1,343,0,'A01',1,NULL,NULL),(773,1,342,0,'A02',1,NULL,NULL),(774,1,335,0,'A03',1,NULL,NULL),(775,1,339,0,'A04',1,NULL,NULL),(776,1,317,0,'A05',1,NULL,NULL),(777,1,299,0,'A06',1,NULL,NULL),(778,1,289,0,'A07',1,NULL,NULL),(779,1,336,0,'B01',1,NULL,NULL),(780,1,341,0,'B02',1,NULL,NULL),(781,1,340,0,'B03',1,NULL,NULL),(782,1,298,0,'B04',1,NULL,NULL),(783,1,295,0,'B05',1,NULL,NULL),(784,1,290,0,'B06',1,NULL,NULL),(785,1,297,0,'B07',1,NULL,NULL),(786,1,20,0,'B08',1,NULL,NULL),(787,1,345,0,'A01',11,NULL,NULL),(788,1,335,0,'A02',11,NULL,NULL),(789,1,336,0,'A03',11,NULL,NULL),(790,1,337,0,'A04',11,NULL,NULL),(791,1,338,0,'A05',11,NULL,NULL),(792,1,339,0,'A06',11,NULL,NULL),(793,1,340,0,'A07',11,NULL,NULL),(794,1,342,0,'A08',11,NULL,NULL),(795,1,343,0,'A09',11,NULL,NULL),(796,1,344,0,'A10',11,NULL,NULL),(797,1,334,0,'A11',11,NULL,NULL),(798,1,316,0,'A12',11,NULL,NULL),(799,1,289,0,'A13',11,NULL,NULL),(800,1,20,0,'A14',11,NULL,NULL),(801,1,295,0,'A15',11,NULL,NULL),(802,1,296,0,'A16',11,NULL,NULL),(803,1,290,0,'A17',11,NULL,NULL),(804,1,288,0,'A18',11,NULL,NULL),(805,1,317,0,'B01',11,NULL,NULL),(806,1,299,0,'B02',11,NULL,NULL),(807,1,341,0,'B03',11,NULL,NULL),(808,1,297,0,'B04',11,NULL,NULL),(809,1,21,0,'B05',11,NULL,NULL),(810,1,298,0,'B06',11,NULL,NULL); /*!40000 ALTER TABLE `llx_boxes` ENABLE KEYS */; UNLOCK TABLES; @@ -3237,7 +3237,7 @@ CREATE TABLE `llx_const` ( `tms` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`rowid`), UNIQUE KEY `uk_const` (`name`,`entity`) -) ENGINE=InnoDB AUTO_INCREMENT=5360 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=5376 DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -3246,7 +3246,7 @@ CREATE TABLE `llx_const` ( LOCK TABLES `llx_const` WRITE; /*!40000 ALTER TABLE `llx_const` DISABLE KEYS */; -INSERT INTO `llx_const` VALUES (5,'SYSLOG_LEVEL',0,'7','chaine',0,'Level of debug info to show','2010-07-08 11:17:57'),(8,'MAIN_UPLOAD_DOC',0,'2048','chaine',0,'Max size for file upload (0 means no upload allowed)','2010-07-08 11:17:57'),(9,'MAIN_SEARCHFORM_SOCIETE',0,'1','yesno',0,'Show form for quick company search','2010-07-08 11:17:57'),(10,'MAIN_SEARCHFORM_CONTACT',0,'1','yesno',0,'Show form for quick contact search','2010-07-08 11:17:57'),(11,'MAIN_SEARCHFORM_PRODUITSERVICE',0,'1','yesno',0,'Show form for quick product search','2010-07-08 11:17:58'),(12,'MAIN_SEARCHFORM_ADHERENT',0,'1','yesno',0,'Show form for quick member search','2010-07-08 11:17:58'),(16,'MAIN_SIZE_LISTE_LIMIT',0,'25','chaine',0,'Longueur maximum des listes','2010-07-08 11:17:58'),(17,'MAIN_SHOW_WORKBOARD',0,'1','yesno',0,'Affichage tableau de bord de travail Dolibarr','2010-07-08 11:17:58'),(29,'MAIN_DELAY_NOT_ACTIVATED_SERVICES',1,'0','chaine',0,'Tolérance de retard avant alerte (en jours) sur services à activer','2010-07-08 11:17:58'),(33,'SOCIETE_NOLIST_COURRIER',0,'1','yesno',0,'Liste les fichiers du repertoire courrier','2010-07-08 11:17:58'),(35,'SOCIETE_CODECOMPTA_ADDON',1,'mod_codecompta_panicum','yesno',0,'Module to control third parties codes','2010-07-08 11:17:58'),(36,'ADHERENT_MAIL_REQUIRED',1,'1','yesno',0,'EMail required to create a new member','2010-07-08 11:17:58'),(37,'ADHERENT_MAIL_FROM',1,'adherents@domain.com','chaine',0,'Sender EMail for automatic emails','2010-07-08 11:17:58'),(38,'ADHERENT_MAIL_RESIL',1,'Your subscription has been resiliated.\r\nWe hope to see you soon again','texte',0,'Mail resiliation','2010-07-08 11:17:58'),(39,'ADHERENT_MAIL_VALID',1,'Your subscription has been validated.\r\nThis is a remind of your personal information :\r\n\r\n%INFOS%\r\n\r\n','texte',0,'Mail de validation','2010-07-08 11:17:59'),(40,'ADHERENT_MAIL_COTIS',1,'Hello %PRENOM%,\r\nThanks for your subscription.\r\nThis email confirms that your subscription has been received and processed.\r\n\r\n','texte',0,'Mail de validation de cotisation','2010-07-08 11:17:59'),(41,'ADHERENT_MAIL_VALID_SUBJECT',1,'Your subscription has been validated','chaine',0,'Sujet du mail de validation','2010-07-08 11:17:59'),(42,'ADHERENT_MAIL_RESIL_SUBJECT',1,'Resiliating your subscription','chaine',0,'Sujet du mail de resiliation','2010-07-08 11:17:59'),(43,'ADHERENT_MAIL_COTIS_SUBJECT',1,'Receipt of your subscription','chaine',0,'Sujet du mail de validation de cotisation','2010-07-08 11:17:59'),(44,'MAILING_EMAIL_FROM',1,'dolibarr@domain.com','chaine',0,'EMail emmetteur pour les envois d emailings','2010-07-08 11:17:59'),(45,'ADHERENT_USE_MAILMAN',1,'0','yesno',0,'Utilisation de Mailman','2010-07-08 11:17:59'),(46,'ADHERENT_MAILMAN_UNSUB_URL',1,'http://lists.domain.com/cgi-bin/mailman/admin/%LISTE%/members?adminpw=%MAILMAN_ADMINPW%&user=%EMAIL%','chaine',0,'Url de desinscription aux listes mailman','2010-07-08 11:17:59'),(47,'ADHERENT_MAILMAN_URL',1,'http://lists.domain.com/cgi-bin/mailman/admin/%LISTE%/members?adminpw=%MAILMAN_ADMINPW%&send_welcome_msg_to_this_batch=1&subscribees=%EMAIL%','chaine',0,'Url pour les inscriptions mailman','2010-07-08 11:17:59'),(48,'ADHERENT_MAILMAN_LISTS',1,'test-test,test-test2','chaine',0,'Listes auxquelles inscrire les nouveaux adherents','2010-07-08 11:17:59'),(49,'ADHERENT_MAILMAN_ADMINPW',1,'','chaine',0,'Mot de passe Admin des liste mailman','2010-07-08 11:17:59'),(50,'ADHERENT_MAILMAN_SERVER',1,'lists.domain.com','chaine',0,'Serveur hebergeant les interfaces d Admin des listes mailman','2010-07-08 11:17:59'),(51,'ADHERENT_MAILMAN_LISTS_COTISANT',1,'','chaine',0,'Liste(s) auxquelles les nouveaux cotisants sont inscris automatiquement','2010-07-08 11:17:59'),(52,'ADHERENT_USE_SPIP',1,'0','yesno',0,'Utilisation de SPIP ?','2010-07-08 11:17:59'),(53,'ADHERENT_USE_SPIP_AUTO',1,'0','yesno',0,'Utilisation de SPIP automatiquement','2010-07-08 11:17:59'),(54,'ADHERENT_SPIP_USER',1,'user','chaine',0,'user spip','2010-07-08 11:17:59'),(55,'ADHERENT_SPIP_PASS',1,'pass','chaine',0,'Pass de connection','2010-07-08 11:17:59'),(56,'ADHERENT_SPIP_SERVEUR',1,'localhost','chaine',0,'serveur spip','2010-07-08 11:17:59'),(57,'ADHERENT_SPIP_DB',1,'spip','chaine',0,'db spip','2010-07-08 11:17:59'),(58,'ADHERENT_CARD_HEADER_TEXT',1,'%ANNEE%','chaine',0,'Texte imprime sur le haut de la carte adherent','2010-07-08 11:17:59'),(59,'ADHERENT_CARD_FOOTER_TEXT',1,'Association AZERTY','chaine',0,'Texte imprime sur le bas de la carte adherent','2010-07-08 11:17:59'),(61,'FCKEDITOR_ENABLE_USER',1,'1','yesno',0,'Activation fckeditor sur notes utilisateurs','2010-07-08 11:17:59'),(62,'FCKEDITOR_ENABLE_SOCIETE',1,'1','yesno',0,'Activation fckeditor sur notes societe','2010-07-08 11:17:59'),(63,'FCKEDITOR_ENABLE_PRODUCTDESC',1,'1','yesno',0,'Activation fckeditor sur notes produits','2010-07-08 11:17:59'),(64,'FCKEDITOR_ENABLE_MEMBER',1,'1','yesno',0,'Activation fckeditor sur notes adherent','2010-07-08 11:17:59'),(65,'FCKEDITOR_ENABLE_MAILING',1,'1','yesno',0,'Activation fckeditor sur emailing','2010-07-08 11:17:59'),(67,'DON_ADDON_MODEL',1,'html_cerfafr','chaine',0,'','2010-07-08 11:18:00'),(68,'PROPALE_ADDON',1,'mod_propale_marbre','chaine',0,'','2010-07-08 11:18:00'),(69,'PROPALE_ADDON_PDF',1,'azur','chaine',0,'','2010-07-08 11:18:00'),(70,'COMMANDE_ADDON',1,'mod_commande_marbre','chaine',0,'','2010-07-08 11:18:00'),(71,'COMMANDE_ADDON_PDF',1,'einstein','chaine',0,'','2010-07-08 11:18:00'),(72,'COMMANDE_SUPPLIER_ADDON',1,'mod_commande_fournisseur_muguet','chaine',0,'','2010-07-08 11:18:00'),(73,'COMMANDE_SUPPLIER_ADDON_PDF',1,'muscadet','chaine',0,'','2010-07-08 11:18:00'),(74,'EXPEDITION_ADDON',1,'enlevement','chaine',0,'','2010-07-08 11:18:00'),(76,'FICHEINTER_ADDON',1,'pacific','chaine',0,'','2010-07-08 11:18:00'),(77,'FICHEINTER_ADDON_PDF',1,'soleil','chaine',0,'','2010-07-08 11:18:00'),(79,'FACTURE_ADDON_PDF',1,'crabe','chaine',0,'','2010-07-08 11:18:00'),(80,'PROPALE_VALIDITY_DURATION',1,'15','chaine',0,'Durée de validitée des propales','2010-07-08 11:18:00'),(230,'COMPANY_ADDON_PDF_ODT_PATH',1,'DOL_DATA_ROOT/doctemplates/thirdparties','chaine',0,NULL,'2010-07-08 11:26:20'),(238,'LIVRAISON_ADDON_PDF',1,'typhon','chaine',0,'Nom du gestionnaire de generation des commandes en PDF','2010-07-08 11:26:27'),(239,'LIVRAISON_ADDON_NUMBER',1,'mod_livraison_jade','chaine',0,'Nom du gestionnaire de numerotation des bons de livraison','2013-03-20 13:17:36'),(242,'MAIN_SUBMODULE_EXPEDITION',1,'1','chaine',0,'','2010-07-08 11:26:34'),(245,'FACTURE_ADDON_PDF_ODT_PATH',1,'DOL_DATA_ROOT/doctemplates/invoices','chaine',0,NULL,'2010-07-08 11:28:53'),(249,'DON_FORM',1,'fsfe.fr.php','chaine',0,'Nom du gestionnaire de formulaire de dons','2010-07-08 11:29:00'),(252,'MAIN_MODULE_ADHERENT',1,'1',NULL,0,NULL,'2010-07-08 11:29:05'),(253,'ADHERENT_BANK_USE_AUTO',1,'','yesno',0,'Insertion automatique des cotisation dans le compte banquaire','2010-07-08 11:29:05'),(254,'ADHERENT_BANK_ACCOUNT',1,'','chaine',0,'ID du Compte banquaire utilise','2010-07-08 11:29:05'),(255,'ADHERENT_BANK_CATEGORIE',1,'','chaine',0,'ID de la categorie banquaire des cotisations','2010-07-08 11:29:05'),(256,'ADHERENT_ETIQUETTE_TYPE',1,'L7163','chaine',0,'Type d etiquette (pour impression de planche d etiquette)','2010-07-08 11:29:05'),(260,'MAIN_MODULE_STOCK',1,'1',NULL,0,NULL,'2010-07-08 11:29:18'),(269,'PROJECT_ADDON_PDF',1,'baleine','chaine',0,'Nom du gestionnaire de generation des projets en PDF','2010-07-08 11:29:33'),(270,'PROJECT_ADDON',1,'mod_project_simple','chaine',0,'Nom du gestionnaire de numerotation des projets','2010-07-08 11:29:33'),(271,'MAIN_MODULE_MAILING',1,'1',NULL,0,NULL,'2010-07-08 11:29:37'),(272,'MAIN_MODULE_EXPORT',1,'1',NULL,0,NULL,'2010-07-08 11:29:41'),(273,'MAIN_MODULE_IMPORT',1,'1',NULL,0,NULL,'2010-07-08 11:29:45'),(274,'MAIN_MODULE_CATEGORIE',1,'1',NULL,0,NULL,'2010-07-08 11:29:59'),(275,'MAIN_MODULE_BOOKMARK',1,'1',NULL,0,NULL,'2010-07-08 11:30:03'),(276,'MAIN_MODULE_WEBSERVICES',1,'1',NULL,0,NULL,'2010-07-08 11:30:30'),(278,'MAIN_MODULE_GEOIPMAXMIND',1,'1',NULL,0,NULL,'2010-07-08 11:30:36'),(279,'MAIN_MODULE_EXTERNALRSS',1,'1',NULL,0,NULL,'2010-07-08 11:30:38'),(292,'MAIN_MODULE_FCKEDITOR',1,'1',NULL,0,NULL,'2010-07-08 11:56:27'),(368,'STOCK_USERSTOCK_AUTOCREATE',1,'1','chaine',0,'','2010-07-08 22:44:59'),(369,'EXPEDITION_ADDON_PDF',1,'merou','chaine',0,'','2010-07-08 22:58:07'),(370,'MAIN_SUBMODULE_LIVRAISON',1,'1','chaine',0,'','2010-07-08 23:00:29'),(377,'FACTURE_ADDON',1,'mod_facture_terre','chaine',0,'','2010-07-08 23:08:12'),(380,'ADHERENT_CARD_TEXT',1,'%TYPE% n° %ID%\r\n%PRENOM% %NOM%\r\n<%EMAIL%>\r\n%ADRESSE%\r\n%CP% %VILLE%\r\n%PAYS%','',0,'Texte imprime sur la carte adherent','2010-07-08 23:14:46'),(381,'ADHERENT_CARD_TEXT_RIGHT',1,'aaa','',0,'','2010-07-08 23:14:55'),(384,'PRODUIT_SOUSPRODUITS',1,'1','chaine',0,'','2010-07-08 23:22:12'),(385,'PRODUIT_USE_SEARCH_TO_SELECT',1,'1','chaine',0,'','2010-07-08 23:22:19'),(386,'STOCK_CALCULATE_ON_SHIPMENT',1,'1','chaine',0,'','2010-07-08 23:23:21'),(387,'STOCK_CALCULATE_ON_SUPPLIER_DISPATCH_ORDER',1,'1','chaine',0,'','2010-07-08 23:23:26'),(392,'MAIN_AGENDA_XCAL_EXPORTKEY',1,'dolibarr','chaine',0,'','2010-07-08 23:27:50'),(393,'MAIN_AGENDA_EXPORT_PAST_DELAY',1,'100','chaine',0,'','2010-07-08 23:27:50'),(523,'MAIN_AGENDA_ACTIONAUTO_COMPANY_CREATE',1,'1','chaine',0,'','2010-07-10 12:48:49'),(524,'MAIN_AGENDA_ACTIONAUTO_CONTRACT_VALIDATE',1,'1','chaine',0,'','2010-07-10 12:48:49'),(525,'MAIN_AGENDA_ACTIONAUTO_PROPAL_VALIDATE',1,'1','chaine',0,'','2010-07-10 12:48:49'),(526,'MAIN_AGENDA_ACTIONAUTO_PROPAL_SENTBYMAIL',1,'1','chaine',0,'','2010-07-10 12:48:49'),(527,'MAIN_AGENDA_ACTIONAUTO_ORDER_VALIDATE',1,'1','chaine',0,'','2010-07-10 12:48:49'),(528,'MAIN_AGENDA_ACTIONAUTO_ORDER_SENTBYMAIL',1,'1','chaine',0,'','2010-07-10 12:48:49'),(529,'MAIN_AGENDA_ACTIONAUTO_BILL_VALIDATE',1,'1','chaine',0,'','2010-07-10 12:48:49'),(530,'MAIN_AGENDA_ACTIONAUTO_BILL_PAYED',1,'1','chaine',0,'','2010-07-10 12:48:49'),(531,'MAIN_AGENDA_ACTIONAUTO_BILL_CANCEL',1,'1','chaine',0,'','2010-07-10 12:48:49'),(532,'MAIN_AGENDA_ACTIONAUTO_BILL_SENTBYMAIL',1,'1','chaine',0,'','2010-07-10 12:48:49'),(533,'MAIN_AGENDA_ACTIONAUTO_ORDER_SUPPLIER_VALIDATE',1,'1','chaine',0,'','2010-07-10 12:48:50'),(534,'MAIN_AGENDA_ACTIONAUTO_BILL_SUPPLIER_VALIDATE',1,'1','chaine',0,'','2010-07-10 12:48:50'),(602,'MAIN_MODULE_PROJET',1,'1',NULL,0,NULL,'2010-07-11 13:26:54'),(610,'CASHDESK_ID_THIRDPARTY',1,'7','chaine',0,'','2010-07-11 17:08:18'),(611,'CASHDESK_ID_BANKACCOUNT_CASH',1,'3','chaine',0,'','2010-07-11 17:08:18'),(612,'CASHDESK_ID_BANKACCOUNT_CHEQUE',1,'1','chaine',0,'','2010-07-11 17:08:18'),(613,'CASHDESK_ID_BANKACCOUNT_CB',1,'1','chaine',0,'','2010-07-11 17:08:18'),(614,'CASHDESK_ID_WAREHOUSE',1,'2','chaine',0,'','2010-07-11 17:08:18'),(660,'LDAP_USER_DN',1,'ou=users,dc=my-domain,dc=com','chaine',0,NULL,'2010-07-18 10:25:27'),(661,'LDAP_GROUP_DN',1,'ou=groups,dc=my-domain,dc=com','chaine',0,NULL,'2010-07-18 10:25:27'),(662,'LDAP_FILTER_CONNECTION',1,'&(objectClass=user)(objectCategory=person)','chaine',0,NULL,'2010-07-18 10:25:27'),(663,'LDAP_FIELD_LOGIN',1,'uid','chaine',0,NULL,'2010-07-18 10:25:27'),(664,'LDAP_FIELD_FULLNAME',1,'cn','chaine',0,NULL,'2010-07-18 10:25:27'),(665,'LDAP_FIELD_NAME',1,'sn','chaine',0,NULL,'2010-07-18 10:25:27'),(666,'LDAP_FIELD_FIRSTNAME',1,'givenname','chaine',0,NULL,'2010-07-18 10:25:27'),(667,'LDAP_FIELD_MAIL',1,'mail','chaine',0,NULL,'2010-07-18 10:25:27'),(668,'LDAP_FIELD_PHONE',1,'telephonenumber','chaine',0,NULL,'2010-07-18 10:25:27'),(669,'LDAP_FIELD_FAX',1,'facsimiletelephonenumber','chaine',0,NULL,'2010-07-18 10:25:27'),(670,'LDAP_FIELD_MOBILE',1,'mobile','chaine',0,NULL,'2010-07-18 10:25:27'),(671,'LDAP_SERVER_TYPE',1,'openldap','chaine',0,'','2010-07-18 10:25:46'),(672,'LDAP_SERVER_PROTOCOLVERSION',1,'3','chaine',0,'','2010-07-18 10:25:47'),(673,'LDAP_SERVER_HOST',1,'localhost','chaine',0,'','2010-07-18 10:25:47'),(674,'LDAP_SERVER_PORT',1,'389','chaine',0,'','2010-07-18 10:25:47'),(675,'LDAP_SERVER_USE_TLS',1,'0','chaine',0,'','2010-07-18 10:25:47'),(676,'LDAP_SYNCHRO_ACTIVE',1,'dolibarr2ldap','chaine',0,'','2010-07-18 10:25:47'),(677,'LDAP_CONTACT_ACTIVE',1,'1','chaine',0,'','2010-07-18 10:25:47'),(678,'LDAP_MEMBER_ACTIVE',1,'1','chaine',0,'','2010-07-18 10:25:47'),(807,'MAIN_AGENDA_ACTIONAUTO_SHIPPING_VALIDATE',1,'1','chaine',0,NULL,'2011-07-18 17:27:52'),(808,'MAIN_AGENDA_ACTIONAUTO_SHIPPING_SENTBYMAIL',1,'1','chaine',0,NULL,'2011-07-18 17:27:52'),(834,'MAIN_MODULE_CASHDESK',1,'1',NULL,0,NULL,'2011-07-18 17:30:24'),(969,'MAIN_MODULE_PRELEVEMENT',1,'1',NULL,0,NULL,'2011-07-18 18:01:59'),(973,'MAIN_MODULE_WORKFLOW',1,'1',NULL,0,NULL,'2011-07-18 18:02:20'),(974,'MAIN_MODULE_WORKFLOW_TRIGGERS',1,'1','chaine',0,NULL,'2011-07-18 18:02:20'),(975,'WORKFLOW_PROPAL_AUTOCREATE_ORDER',1,'1','chaine',0,'','2011-07-18 18:02:24'),(978,'MAIN_MODULE_NOTIFICATION',1,'1',NULL,0,NULL,'2011-07-18 18:03:06'),(979,'PRELEVEMENT_USER',1,'1','chaine',0,'','2011-07-18 18:05:50'),(980,'PRELEVEMENT_NUMERO_NATIONAL_EMETTEUR',1,'1234567','chaine',0,'','2011-07-18 18:05:50'),(981,'PRELEVEMENT_ID_BANKACCOUNT',1,'1','chaine',0,'','2011-07-18 18:05:50'),(983,'FACTURE_RIB_NUMBER',1,'1','chaine',0,'','2011-07-18 18:35:14'),(984,'FACTURE_CHQ_NUMBER',1,'1','chaine',0,'','2011-07-18 18:35:14'),(1016,'GOOGLE_DUPLICATE_INTO_GCAL',1,'1','chaine',0,'','2011-07-18 21:40:20'),(1018,'MAIN_MODULE_SYSLOG',0,'1',NULL,0,NULL,'2011-07-20 11:36:47'),(1138,'MAIN_VERSION_LAST_INSTALL',0,'3.1.0-beta','chaine',0,'Dolibarr version when install','2011-07-28 23:05:02'),(1152,'SOCIETE_CODECLIENT_ADDON',1,'mod_codeclient_monkey','chaine',0,'','2011-07-29 20:50:02'),(1231,'MAIN_UPLOAD_DOC',1,'2048','chaine',0,'','2011-07-29 21:04:00'),(1234,'MAIN_UMASK',1,'0664','chaine',0,'','2011-07-29 21:04:11'),(1240,'MAIN_LOGEVENTS_USER_LOGIN',1,'1','chaine',0,'','2011-07-29 21:05:01'),(1241,'MAIN_LOGEVENTS_USER_LOGIN_FAILED',1,'1','chaine',0,'','2011-07-29 21:05:01'),(1242,'MAIN_LOGEVENTS_USER_LOGOUT',1,'1','chaine',0,'','2011-07-29 21:05:01'),(1243,'MAIN_LOGEVENTS_USER_CREATE',1,'1','chaine',0,'','2011-07-29 21:05:01'),(1244,'MAIN_LOGEVENTS_USER_MODIFY',1,'1','chaine',0,'','2011-07-29 21:05:01'),(1245,'MAIN_LOGEVENTS_USER_NEW_PASSWORD',1,'1','chaine',0,'','2011-07-29 21:05:01'),(1246,'MAIN_LOGEVENTS_USER_ENABLEDISABLE',1,'1','chaine',0,'','2011-07-29 21:05:01'),(1247,'MAIN_LOGEVENTS_USER_DELETE',1,'1','chaine',0,'','2011-07-29 21:05:01'),(1248,'MAIN_LOGEVENTS_GROUP_CREATE',1,'1','chaine',0,'','2011-07-29 21:05:01'),(1249,'MAIN_LOGEVENTS_GROUP_MODIFY',1,'1','chaine',0,'','2011-07-29 21:05:01'),(1250,'MAIN_LOGEVENTS_GROUP_DELETE',1,'1','chaine',0,'','2011-07-29 21:05:01'),(1251,'MAIN_BOXES_MAXLINES',1,'5','',0,'','2011-07-29 21:05:42'),(1379,'CABINETMED_RHEUMATOLOGY_ON',1,'1','chaine',1,'Enable features for rheumatology','2011-08-01 21:47:53'),(1482,'EXPEDITION_ADDON_NUMBER',1,'mod_expedition_safor','chaine',0,'Nom du gestionnaire de numerotation des expeditions','2011-08-05 17:53:11'),(1490,'CONTRACT_ADDON',1,'mod_contract_serpis','chaine',0,'Nom du gestionnaire de numerotation des contrats','2011-08-05 18:11:58'),(1677,'COMMANDE_ADDON_PDF_ODT_PATH',1,'DOL_DATA_ROOT/doctemplates/orders','chaine',0,NULL,'2012-12-08 13:11:02'),(1698,'PRODUCT_CODEPRODUCT_ADDON',1,'mod_codeproduct_leopard','yesno',0,'Module to control product codes','2012-12-08 13:11:25'),(1718,'MAIN_MODULE_TAX',1,'1',NULL,0,NULL,'2012-12-08 13:12:41'),(1719,'ACCOUNTING_USEDICTTOEDIT',1,'1','chaine',1,'','2012-12-08 13:15:00'),(1724,'PROPALE_ADDON_PDF_ODT_PATH',1,'DOL_DATA_ROOT/doctemplates/proposals','chaine',0,NULL,'2012-12-08 13:17:14'),(1730,'OPENSTREETMAP_ENABLE_MAPS',1,'1','chaine',0,'','2012-12-08 13:22:47'),(1731,'OPENSTREETMAP_ENABLE_MAPS_CONTACTS',1,'1','chaine',0,'','2012-12-08 13:22:47'),(1732,'OPENSTREETMAP_ENABLE_MAPS_MEMBERS',1,'1','chaine',0,'','2012-12-08 13:22:47'),(1733,'OPENSTREETMAP_MAPS_ZOOM_LEVEL',1,'15','chaine',0,'','2012-12-08 13:22:47'),(1737,'MAIN_INFO_SOCIETE_COUNTRY',2,'1:FR:France','chaine',0,'','2013-02-26 21:56:28'),(1738,'MAIN_INFO_SOCIETE_NOM',2,'aaa','chaine',0,'','2012-12-08 14:08:14'),(1739,'MAIN_INFO_SOCIETE_STATE',2,'0','chaine',0,'','2013-02-27 14:20:27'),(1740,'MAIN_MONNAIE',2,'EUR','chaine',0,'','2012-12-08 14:08:14'),(1741,'MAIN_LANG_DEFAULT',2,'auto','chaine',0,'','2012-12-08 14:08:14'),(1742,'MAIN_MAIL_EMAIL_FROM',2,'dolibarr-robot@domain.com','chaine',0,'EMail emetteur pour les emails automatiques Dolibarr','2012-12-08 14:08:14'),(1743,'MAIN_MENU_STANDARD',2,'eldy_menu.php','chaine',0,'Module de gestion de la barre de menu du haut pour utilisateurs internes','2013-02-11 19:43:54'),(1744,'MAIN_MENUFRONT_STANDARD',2,'eldy_menu.php','chaine',0,'Module de gestion de la barre de menu du haut pour utilisateurs externes','2013-02-11 19:43:54'),(1745,'MAIN_MENU_SMARTPHONE',2,'iphone_backoffice.php','chaine',0,'Module de gestion de la barre de menu smartphone pour utilisateurs internes','2012-12-08 14:08:14'),(1746,'MAIN_MENUFRONT_SMARTPHONE',2,'iphone_frontoffice.php','chaine',0,'Module de gestion de la barre de menu smartphone pour utilisateurs externes','2012-12-08 14:08:14'),(1747,'MAIN_THEME',2,'eldy','chaine',0,'Default theme','2012-12-08 14:08:14'),(1748,'MAIN_DELAY_ACTIONS_TODO',2,'7','chaine',0,'Tolérance de retard avant alerte (en jours) sur actions planifiées non réalisées','2012-12-08 14:08:14'),(1749,'MAIN_DELAY_ORDERS_TO_PROCESS',2,'2','chaine',0,'Tolérance de retard avant alerte (en jours) sur commandes clients non traitées','2012-12-08 14:08:14'),(1750,'MAIN_DELAY_SUPPLIER_ORDERS_TO_PROCESS',2,'7','chaine',0,'Tolérance de retard avant alerte (en jours) sur commandes fournisseurs non traitées','2012-12-08 14:08:14'),(1751,'MAIN_DELAY_PROPALS_TO_CLOSE',2,'31','chaine',0,'Tolérance de retard avant alerte (en jours) sur propales à cloturer','2012-12-08 14:08:14'),(1752,'MAIN_DELAY_PROPALS_TO_BILL',2,'7','chaine',0,'Tolérance de retard avant alerte (en jours) sur propales non facturées','2012-12-08 14:08:14'),(1753,'MAIN_DELAY_CUSTOMER_BILLS_UNPAYED',2,'31','chaine',0,'Tolérance de retard avant alerte (en jours) sur factures client impayées','2012-12-08 14:08:14'),(1754,'MAIN_DELAY_SUPPLIER_BILLS_TO_PAY',2,'2','chaine',0,'Tolérance de retard avant alerte (en jours) sur factures fournisseur impayées','2012-12-08 14:08:14'),(1755,'MAIN_DELAY_NOT_ACTIVATED_SERVICES',2,'0','chaine',0,'Tolérance de retard avant alerte (en jours) sur services à activer','2012-12-08 14:08:14'),(1756,'MAIN_DELAY_RUNNING_SERVICES',2,'0','chaine',0,'Tolérance de retard avant alerte (en jours) sur services expirés','2012-12-08 14:08:14'),(1757,'MAIN_DELAY_MEMBERS',2,'31','chaine',0,'Tolérance de retard avant alerte (en jours) sur cotisations adhérent en retard','2012-12-08 14:08:14'),(1758,'MAIN_DELAY_TRANSACTIONS_TO_CONCILIATE',2,'62','chaine',0,'Tolérance de retard avant alerte (en jours) sur rapprochements bancaires à faire','2012-12-08 14:08:14'),(1759,'MAILING_EMAIL_FROM',2,'dolibarr@domain.com','chaine',0,'EMail emmetteur pour les envois d emailings','2012-12-08 14:08:14'),(1760,'MAIN_INFO_SOCIETE_COUNTRY',3,'1:FR:France','chaine',0,'','2013-02-26 21:56:28'),(1761,'MAIN_INFO_SOCIETE_NOM',3,'bbb','chaine',0,'','2012-12-08 14:08:20'),(1762,'MAIN_INFO_SOCIETE_STATE',3,'0','chaine',0,'','2013-02-27 14:20:27'),(1763,'MAIN_MONNAIE',3,'EUR','chaine',0,'','2012-12-08 14:08:20'),(1764,'MAIN_LANG_DEFAULT',3,'auto','chaine',0,'','2012-12-08 14:08:20'),(1765,'MAIN_MAIL_EMAIL_FROM',3,'dolibarr-robot@domain.com','chaine',0,'EMail emetteur pour les emails automatiques Dolibarr','2012-12-08 14:08:20'),(1766,'MAIN_MENU_STANDARD',3,'eldy_menu.php','chaine',0,'Module de gestion de la barre de menu du haut pour utilisateurs internes','2013-02-11 19:43:54'),(1767,'MAIN_MENUFRONT_STANDARD',3,'eldy_menu.php','chaine',0,'Module de gestion de la barre de menu du haut pour utilisateurs externes','2013-02-11 19:43:54'),(1768,'MAIN_MENU_SMARTPHONE',3,'iphone_backoffice.php','chaine',0,'Module de gestion de la barre de menu smartphone pour utilisateurs internes','2012-12-08 14:08:20'),(1769,'MAIN_MENUFRONT_SMARTPHONE',3,'iphone_frontoffice.php','chaine',0,'Module de gestion de la barre de menu smartphone pour utilisateurs externes','2012-12-08 14:08:20'),(1770,'MAIN_THEME',3,'eldy','chaine',0,'Default theme','2012-12-08 14:08:20'),(1771,'MAIN_DELAY_ACTIONS_TODO',3,'7','chaine',0,'Tolérance de retard avant alerte (en jours) sur actions planifiées non réalisées','2012-12-08 14:08:20'),(1772,'MAIN_DELAY_ORDERS_TO_PROCESS',3,'2','chaine',0,'Tolérance de retard avant alerte (en jours) sur commandes clients non traitées','2012-12-08 14:08:20'),(1773,'MAIN_DELAY_SUPPLIER_ORDERS_TO_PROCESS',3,'7','chaine',0,'Tolérance de retard avant alerte (en jours) sur commandes fournisseurs non traitées','2012-12-08 14:08:20'),(1774,'MAIN_DELAY_PROPALS_TO_CLOSE',3,'31','chaine',0,'Tolérance de retard avant alerte (en jours) sur propales à cloturer','2012-12-08 14:08:20'),(1775,'MAIN_DELAY_PROPALS_TO_BILL',3,'7','chaine',0,'Tolérance de retard avant alerte (en jours) sur propales non facturées','2012-12-08 14:08:20'),(1776,'MAIN_DELAY_CUSTOMER_BILLS_UNPAYED',3,'31','chaine',0,'Tolérance de retard avant alerte (en jours) sur factures client impayées','2012-12-08 14:08:20'),(1777,'MAIN_DELAY_SUPPLIER_BILLS_TO_PAY',3,'2','chaine',0,'Tolérance de retard avant alerte (en jours) sur factures fournisseur impayées','2012-12-08 14:08:20'),(1778,'MAIN_DELAY_NOT_ACTIVATED_SERVICES',3,'0','chaine',0,'Tolérance de retard avant alerte (en jours) sur services à activer','2012-12-08 14:08:20'),(1779,'MAIN_DELAY_RUNNING_SERVICES',3,'0','chaine',0,'Tolérance de retard avant alerte (en jours) sur services expirés','2012-12-08 14:08:20'),(1780,'MAIN_DELAY_MEMBERS',3,'31','chaine',0,'Tolérance de retard avant alerte (en jours) sur cotisations adhérent en retard','2012-12-08 14:08:20'),(1781,'MAIN_DELAY_TRANSACTIONS_TO_CONCILIATE',3,'62','chaine',0,'Tolérance de retard avant alerte (en jours) sur rapprochements bancaires à faire','2012-12-08 14:08:20'),(1782,'MAILING_EMAIL_FROM',3,'dolibarr@domain.com','chaine',0,'EMail emmetteur pour les envois d emailings','2012-12-08 14:08:20'),(1803,'SYSLOG_FILE',1,'DOL_DATA_ROOT/dolibarr.log','chaine',0,'','2012-12-08 14:15:08'),(1804,'SYSLOG_HANDLERS',1,'[\"mod_syslog_file\"]','chaine',0,'','2012-12-08 14:15:08'),(1805,'MAIN_MODULE_SKINCOLOREDITOR',3,'1',NULL,0,NULL,'2012-12-08 14:35:40'),(1806,'MAIN_MODULE_SKINCOLOREDITOR_TABS_0',3,'user:+tabskincoloreditors:ColorEditor:skincoloreditor@skincoloreditor:/skincoloreditor/usercolors.php?id=__ID__','chaine',0,NULL,'2012-12-08 14:35:40'),(1867,'MAIN_MODULE_PAYPAL',1,'1',NULL,0,NULL,'2012-12-11 22:53:56'),(1922,'PAYPAL_API_SANDBOX',1,'1','chaine',0,'','2012-12-12 12:11:05'),(1923,'PAYPAL_API_USER',1,'seller_1355312017_biz_api1.nltechno.com','chaine',0,'','2012-12-12 12:11:05'),(1924,'PAYPAL_API_PASSWORD',1,'1355312040','chaine',0,'','2012-12-12 12:11:05'),(1925,'PAYPAL_API_SIGNATURE',1,'AXqqdsWBzvfn0q5iNmbuiDv1y.3EAXIMWyl4C5KvDReR9HDwwAd6dQ4Q','chaine',0,'','2012-12-12 12:11:05'),(1926,'PAYPAL_API_INTEGRAL_OR_PAYPALONLY',1,'integral','chaine',0,'','2012-12-12 12:11:05'),(1927,'PAYPAL_SECURITY_TOKEN',1,'50c82fab36bb3b6aa83e2a50691803b2','chaine',0,'','2012-12-12 12:11:05'),(1928,'PAYPAL_SECURITY_TOKEN_UNIQUE',1,'0','chaine',0,'','2012-12-12 12:11:05'),(1929,'PAYPAL_ADD_PAYMENT_URL',1,'1','chaine',0,'','2012-12-12 12:11:05'),(1980,'MAIN_PDF_FORMAT',1,'EUA4','chaine',0,'','2012-12-12 19:58:05'),(1981,'MAIN_PROFID1_IN_ADDRESS',1,'0','chaine',0,'','2012-12-12 19:58:05'),(1982,'MAIN_PROFID2_IN_ADDRESS',1,'0','chaine',0,'','2012-12-12 19:58:05'),(1983,'MAIN_PROFID3_IN_ADDRESS',1,'0','chaine',0,'','2012-12-12 19:58:05'),(1984,'MAIN_PROFID4_IN_ADDRESS',1,'0','chaine',0,'','2012-12-12 19:58:05'),(1985,'MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT',1,'0','chaine',0,'','2012-12-12 19:58:05'),(1990,'MAIN_SMS_SENDMODE',1,'ovh','chaine',0,'This is to enable OVH SMS engine','2012-12-17 21:19:01'),(2040,'MAIN_MAIL_SMTP_PORT',1,'465','chaine',0,'','2015-07-19 13:41:06'),(2041,'MAIN_MAIL_SMTP_SERVER',1,'smtp.mail.com','chaine',0,'','2015-07-19 13:41:06'),(2044,'MAIN_MAIL_EMAIL_TLS',1,'1','chaine',0,'','2015-07-19 13:41:06'),(2251,'FCKEDITOR_TEST',1,'Test
\r\n\"\"fdfs','chaine',0,'','2012-12-19 19:12:24'),(2293,'SYSTEMTOOLS_MYSQLDUMP',1,'/usr/bin/mysqldump','chaine',0,'','2012-12-27 02:02:00'),(2305,'MAIN_MODULE_PROPALE',1,'1',NULL,0,NULL,'2013-01-02 20:33:16'),(2307,'MAIN_MODULE_CONTRAT',1,'1',NULL,0,NULL,'2013-01-02 20:33:17'),(2310,'MAIN_MODULE_EXPEDITION',1,'1',NULL,0,NULL,'2013-01-02 20:33:18'),(2315,'MAIN_MODULE_FICHEINTER',1,'1',NULL,0,NULL,'2013-01-02 20:33:21'),(2786,'MAIN_SOAP_DEBUG',1,'1','chaine',1,'','2013-01-13 12:37:21'),(2835,'MAIN_USE_CONNECT_TIMEOUT',1,'10','chaine',0,'','2013-01-16 19:28:50'),(2836,'MAIN_USE_RESPONSE_TIMEOUT',1,'30','chaine',0,'','2013-01-16 19:28:50'),(2837,'MAIN_PROXY_USE',1,'0','chaine',0,'','2013-01-16 19:28:50'),(2838,'MAIN_PROXY_HOST',1,'localhost','chaine',0,'','2013-01-16 19:28:50'),(2839,'MAIN_PROXY_PORT',1,'8080','chaine',0,'','2013-01-16 19:28:50'),(2840,'MAIN_PROXY_USER',1,'aaa','chaine',0,'','2013-01-16 19:28:50'),(2841,'MAIN_PROXY_PASS',1,'bbb','chaine',0,'','2013-01-16 19:28:50'),(2848,'OVHSMS_NICK',1,'BN196-OVH','chaine',0,'','2013-01-16 19:32:36'),(2849,'OVHSMS_PASS',1,'bigone-10','chaine',0,'','2013-01-16 19:32:36'),(2850,'OVHSMS_SOAPURL',1,'https://www.ovh.com/soapi/soapi-re-1.55.wsdl','chaine',0,'','2013-01-16 19:32:36'),(2854,'THEME_ELDY_RGB',1,'bfbf00','chaine',0,'','2013-01-18 10:02:53'),(2855,'THEME_ELDY_ENABLE_PERSONALIZED',1,'0','chaine',0,'','2013-01-18 10:02:55'),(2858,'MAIN_SESSION_TIMEOUT',1,'2000','chaine',0,'','2013-01-19 17:01:53'),(2862,'TICKET_ADDON',1,'mod_ticket_avenc','chaine',0,'Nom du gestionnaire de numerotation des tickets','2013-01-19 17:16:10'),(2866,'MAIN_MODULE_PRODUCT',1,'1',NULL,0,NULL,'2013-01-19 17:16:10'),(2867,'FACSIM_ADDON',1,'mod_facsim_alcoy','chaine',0,'','2013-01-19 17:16:25'),(2868,'POS_SERVICES',1,'0','chaine',0,'','2013-01-19 17:16:51'),(2869,'POS_USE_TICKETS',1,'1','chaine',0,'','2013-01-19 17:16:51'),(2870,'POS_MAX_TTC',1,'100','chaine',0,'','2013-01-19 17:16:51'),(3190,'MAIN_MODULE_HOLIDAY',2,'1',NULL,0,NULL,'2013-02-01 08:52:34'),(3191,'MAIN_MODULE_HOLIDAY_TABS_0',2,'user:+paidholidays:CPTitreMenu:holiday:$user->rights->holiday->write:/holiday/index.php?mainmenu=holiday&id=__ID__','chaine',0,NULL,'2013-02-01 08:52:34'),(3195,'INVOICE_SUPPLIER_ADDON_PDF',1,'canelle','chaine',0,'','2013-02-10 19:50:27'),(3199,'MAIN_FORCE_RELOAD_PAGE',1,'1','chaine',0,NULL,'2013-02-12 16:22:55'),(3217,'MAIN_PDF_TITLE_BACKGROUND_COLOR',1,'240,240,240','chaine',1,'','2013-02-13 15:18:02'),(3223,'OVH_THIRDPARTY_IMPORT',1,'2','chaine',0,'','2013-02-13 16:20:18'),(3241,'COMPANY_USE_SEARCH_TO_SELECT',1,'2','chaine',0,'','2013-02-17 14:33:39'),(3409,'AGENDA_USE_EVENT_TYPE',1,'1','chaine',0,'','2013-02-27 18:12:24'),(3886,'MAIN_REMOVE_INSTALL_WARNING',1,'1','chaine',1,'','2013-03-02 18:32:50'),(4013,'MAIN_DELAY_ACTIONS_TODO',1,'7','chaine',0,'','2013-03-06 08:59:12'),(4014,'MAIN_DELAY_PROPALS_TO_CLOSE',1,'31','chaine',0,'','2013-03-06 08:59:12'),(4015,'MAIN_DELAY_PROPALS_TO_BILL',1,'7','chaine',0,'','2013-03-06 08:59:12'),(4016,'MAIN_DELAY_ORDERS_TO_PROCESS',1,'2','chaine',0,'','2013-03-06 08:59:12'),(4017,'MAIN_DELAY_CUSTOMER_BILLS_UNPAYED',1,'31','chaine',0,'','2013-03-06 08:59:12'),(4018,'MAIN_DELAY_SUPPLIER_ORDERS_TO_PROCESS',1,'7','chaine',0,'','2013-03-06 08:59:12'),(4019,'MAIN_DELAY_SUPPLIER_BILLS_TO_PAY',1,'2','chaine',0,'','2013-03-06 08:59:12'),(4020,'MAIN_DELAY_RUNNING_SERVICES',1,'-15','chaine',0,'','2013-03-06 08:59:12'),(4021,'MAIN_DELAY_TRANSACTIONS_TO_CONCILIATE',1,'62','chaine',0,'','2013-03-06 08:59:13'),(4022,'MAIN_DELAY_MEMBERS',1,'31','chaine',0,'','2013-03-06 08:59:13'),(4023,'MAIN_DISABLE_METEO',1,'0','chaine',0,'','2013-03-06 08:59:13'),(4044,'ADHERENT_VAT_FOR_SUBSCRIPTIONS',1,'0','',0,'','2013-03-06 16:06:38'),(4047,'ADHERENT_BANK_USE',1,'bankviainvoice','',0,'','2013-03-06 16:12:30'),(4049,'PHPSANE_SCANIMAGE',1,'/usr/bin/scanimage','chaine',0,'','2013-03-06 21:54:13'),(4050,'PHPSANE_PNMTOJPEG',1,'/usr/bin/pnmtojpeg','chaine',0,'','2013-03-06 21:54:13'),(4051,'PHPSANE_PNMTOTIFF',1,'/usr/bin/pnmtotiff','chaine',0,'','2013-03-06 21:54:13'),(4052,'PHPSANE_OCR',1,'/usr/bin/gocr','chaine',0,'','2013-03-06 21:54:13'),(4548,'ECM_AUTO_TREE_ENABLED',1,'1','chaine',0,'','2013-03-10 15:57:21'),(4555,'WEBSERVICES_KEY',1,'dolibarrkey','chaine',0,'','2013-03-13 10:19:31'),(4579,'MAIN_MODULE_AGENDA',2,'1',NULL,0,NULL,'2013-03-13 15:29:19'),(4580,'MAIN_AGENDA_ACTIONAUTO_COMPANY_CREATE',2,'1','chaine',0,NULL,'2013-03-13 15:29:19'),(4581,'MAIN_AGENDA_ACTIONAUTO_CONTRACT_VALIDATE',2,'1','chaine',0,NULL,'2013-03-13 15:29:19'),(4582,'MAIN_AGENDA_ACTIONAUTO_PROPAL_VALIDATE',2,'1','chaine',0,NULL,'2013-03-13 15:29:19'),(4583,'MAIN_AGENDA_ACTIONAUTO_PROPAL_SENTBYMAIL',2,'1','chaine',0,NULL,'2013-03-13 15:29:19'),(4584,'MAIN_AGENDA_ACTIONAUTO_ORDER_VALIDATE',2,'1','chaine',0,NULL,'2013-03-13 15:29:19'),(4585,'MAIN_AGENDA_ACTIONAUTO_ORDER_SENTBYMAIL',2,'1','chaine',0,NULL,'2013-03-13 15:29:19'),(4586,'MAIN_AGENDA_ACTIONAUTO_BILL_VALIDATE',2,'1','chaine',0,NULL,'2013-03-13 15:29:19'),(4587,'MAIN_AGENDA_ACTIONAUTO_BILL_PAYED',2,'1','chaine',0,NULL,'2013-03-13 15:29:19'),(4588,'MAIN_AGENDA_ACTIONAUTO_BILL_CANCEL',2,'1','chaine',0,NULL,'2013-03-13 15:29:19'),(4589,'MAIN_AGENDA_ACTIONAUTO_BILL_SENTBYMAIL',2,'1','chaine',0,NULL,'2013-03-13 15:29:19'),(4590,'MAIN_AGENDA_ACTIONAUTO_ORDER_SUPPLIER_VALIDATE',2,'1','chaine',0,NULL,'2013-03-13 15:29:19'),(4591,'MAIN_AGENDA_ACTIONAUTO_BILL_SUPPLIER_VALIDATE',2,'1','chaine',0,NULL,'2013-03-13 15:29:19'),(4592,'MAIN_AGENDA_ACTIONAUTO_SHIPPING_VALIDATE',2,'1','chaine',0,NULL,'2013-03-13 15:29:19'),(4593,'MAIN_AGENDA_ACTIONAUTO_SHIPPING_SENTBYMAIL',2,'1','chaine',0,NULL,'2013-03-13 15:29:19'),(4594,'MAIN_AGENDA_ACTIONAUTO_BILL_UNVALIDATE',2,'1','chaine',0,NULL,'2013-03-13 15:29:19'),(4595,'MAIN_MODULE_GOOGLE',2,'1',NULL,0,NULL,'2013-03-13 15:29:47'),(4596,'MAIN_MODULE_GOOGLE_TABS_0',2,'agenda:+gcal:MenuAgendaGoogle:google@google:$conf->google->enabled && $conf->global->GOOGLE_ENABLE_AGENDA:/google/index.php','chaine',0,NULL,'2013-03-13 15:29:47'),(4597,'MAIN_MODULE_GOOGLE_TABS_1',2,'user:+gsetup:GoogleUserConf:google@google:$conf->google->enabled && $conf->global->GOOGLE_DUPLICATE_INTO_GCAL:/google/admin/google_calsync_user.php?id=__ID__','chaine',0,NULL,'2013-03-13 15:29:47'),(4598,'MAIN_MODULE_GOOGLE_TRIGGERS',2,'1','chaine',0,NULL,'2013-03-13 15:29:47'),(4599,'MAIN_MODULE_GOOGLE_HOOKS',2,'[\"toprightmenu\"]','chaine',0,NULL,'2013-03-13 15:29:47'),(4688,'GOOGLE_ENABLE_AGENDA',2,'1','chaine',0,'','2013-03-13 15:36:29'),(4689,'GOOGLE_AGENDA_NAME1',2,'eldy','chaine',0,'','2013-03-13 15:36:29'),(4690,'GOOGLE_AGENDA_SRC1',2,'eldy10@mail.com','chaine',0,'','2013-03-13 15:36:29'),(4691,'GOOGLE_AGENDA_COLOR1',2,'BE6D00','chaine',0,'','2013-03-13 15:36:29'),(4692,'GOOGLE_AGENDA_COLOR2',2,'7A367A','chaine',0,'','2013-03-13 15:36:29'),(4693,'GOOGLE_AGENDA_COLOR3',2,'7A367A','chaine',0,'','2013-03-13 15:36:29'),(4694,'GOOGLE_AGENDA_COLOR4',2,'7A367A','chaine',0,'','2013-03-13 15:36:29'),(4695,'GOOGLE_AGENDA_COLOR5',2,'7A367A','chaine',0,'','2013-03-13 15:36:29'),(4696,'GOOGLE_AGENDA_TIMEZONE',2,'Europe/Paris','chaine',0,'','2013-03-13 15:36:29'),(4697,'GOOGLE_AGENDA_NB',2,'5','chaine',0,'','2013-03-13 15:36:29'),(4698,'MAIN_DISABLE_ALL_MAILS',1,'0','chaine',0,'','2013-03-13 17:22:24'),(4699,'MAIN_MAIL_SENDMODE',1,'mail','chaine',0,'','2015-07-19 13:41:06'),(4700,'MAIN_MAIL_SMTPS_ID',1,'eldy10@mail.com','chaine',0,'','2015-07-19 13:41:06'),(4701,'MAIN_MAIL_SMTPS_PW',1,'bidonge','chaine',0,'','2015-07-19 13:41:06'),(4711,'GOOGLE_ENABLE_AGENDA',1,'1','chaine',0,'','2013-03-13 19:37:38'),(4712,'GOOGLE_AGENDA_NAME1',1,'asso master','chaine',0,'','2013-03-13 19:37:38'),(4713,'GOOGLE_AGENDA_SRC1',1,'assodolibarr@mail.com','chaine',0,'','2013-03-13 19:37:38'),(4714,'GOOGLE_AGENDA_COLOR1',1,'1B887A','chaine',0,'','2013-03-13 19:37:38'),(4715,'GOOGLE_AGENDA_COLOR2',1,'7A367A','chaine',0,'','2013-03-13 19:37:38'),(4716,'GOOGLE_AGENDA_COLOR3',1,'7A367A','chaine',0,'','2013-03-13 19:37:38'),(4717,'GOOGLE_AGENDA_COLOR4',1,'7A367A','chaine',0,'','2013-03-13 19:37:38'),(4718,'GOOGLE_AGENDA_COLOR5',1,'7A367A','chaine',0,'','2013-03-13 19:37:38'),(4719,'GOOGLE_AGENDA_TIMEZONE',1,'Europe/Paris','chaine',0,'','2013-03-13 19:37:38'),(4720,'GOOGLE_AGENDA_NB',1,'5','chaine',0,'','2013-03-13 19:37:38'),(4725,'SOCIETE_CODECLIENT_ADDON',2,'mod_codeclient_leopard','chaine',0,'Module to control third parties codes','2013-03-13 20:21:35'),(4726,'SOCIETE_CODECOMPTA_ADDON',2,'mod_codecompta_panicum','chaine',0,'Module to control third parties codes','2013-03-13 20:21:35'),(4727,'SOCIETE_FISCAL_MONTH_START',2,'','chaine',0,'Mettre le numero du mois du debut d\\\'annee fiscale, ex: 9 pour septembre','2013-03-13 20:21:35'),(4728,'MAIN_SEARCHFORM_SOCIETE',2,'1','yesno',0,'Show form for quick company search','2013-03-13 20:21:35'),(4729,'MAIN_SEARCHFORM_CONTACT',2,'1','yesno',0,'Show form for quick contact search','2013-03-13 20:21:35'),(4730,'COMPANY_ADDON_PDF_ODT_PATH',2,'DOL_DATA_ROOT/doctemplates/thirdparties','chaine',0,NULL,'2013-03-13 20:21:35'),(4743,'MAIN_MODULE_CLICKTODIAL',2,'1',NULL,0,NULL,'2013-03-13 20:30:28'),(4744,'MAIN_MODULE_NOTIFICATION',2,'1',NULL,0,NULL,'2013-03-13 20:30:34'),(4745,'MAIN_MODULE_WEBSERVICES',2,'1',NULL,0,NULL,'2013-03-13 20:30:41'),(4746,'MAIN_MODULE_PROPALE',2,'1',NULL,0,NULL,'2013-03-13 20:32:38'),(4747,'PROPALE_ADDON_PDF',2,'azur','chaine',0,'Nom du gestionnaire de generation des propales en PDF','2013-03-13 20:32:38'),(4748,'PROPALE_ADDON',2,'mod_propale_marbre','chaine',0,'Nom du gestionnaire de numerotation des propales','2013-03-13 20:32:38'),(4749,'PROPALE_VALIDITY_DURATION',2,'15','chaine',0,'Duration of validity of business proposals','2013-03-13 20:32:38'),(4750,'PROPALE_ADDON_PDF_ODT_PATH',2,'DOL_DATA_ROOT/doctemplates/proposals','chaine',0,NULL,'2013-03-13 20:32:38'),(4752,'MAIN_MODULE_TAX',2,'1',NULL,0,NULL,'2013-03-13 20:32:47'),(4753,'MAIN_MODULE_DON',2,'1',NULL,0,NULL,'2013-03-13 20:32:54'),(4754,'DON_ADDON_MODEL',2,'html_cerfafr','chaine',0,'Nom du gestionnaire de generation de recu de dons','2013-03-13 20:32:54'),(4755,'POS_USE_TICKETS',2,'1','chaine',0,'','2013-03-13 20:33:09'),(4756,'POS_MAX_TTC',2,'100','chaine',0,'','2013-03-13 20:33:09'),(4757,'MAIN_MODULE_POS',2,'1',NULL,0,NULL,'2013-03-13 20:33:09'),(4758,'TICKET_ADDON',2,'mod_ticket_avenc','chaine',0,'Nom du gestionnaire de numerotation des tickets','2013-03-13 20:33:09'),(4759,'MAIN_MODULE_BANQUE',2,'1',NULL,0,NULL,'2013-03-13 20:33:09'),(4760,'MAIN_MODULE_FACTURE',2,'1',NULL,0,NULL,'2013-03-13 20:33:09'),(4761,'FACTURE_ADDON_PDF',2,'crabe','chaine',0,'Name of PDF model of invoice','2013-03-13 20:33:09'),(4762,'FACTURE_ADDON',2,'mod_facture_terre','chaine',0,'Name of numbering numerotation rules of invoice','2013-03-13 20:33:09'),(4763,'FACTURE_ADDON_PDF_ODT_PATH',2,'DOL_DATA_ROOT/doctemplates/invoices','chaine',0,NULL,'2013-03-13 20:33:09'),(4764,'MAIN_MODULE_SOCIETE',2,'1',NULL,0,NULL,'2013-03-13 20:33:09'),(4765,'MAIN_MODULE_PRODUCT',2,'1',NULL,0,NULL,'2013-03-13 20:33:09'),(4766,'PRODUCT_CODEPRODUCT_ADDON',2,'mod_codeproduct_leopard','chaine',0,'Module to control product codes','2013-03-13 20:33:09'),(4767,'MAIN_SEARCHFORM_PRODUITSERVICE',2,'1','yesno',0,'Show form for quick product search','2013-03-13 20:33:09'),(4772,'FACSIM_ADDON',2,'mod_facsim_alcoy','chaine',0,'','2013-03-13 20:33:32'),(4773,'MAIN_MODULE_MAILING',2,'1',NULL,0,NULL,'2013-03-13 20:33:37'),(4774,'MAIN_MODULE_OPENSURVEY',2,'1',NULL,0,NULL,'2013-03-13 20:33:42'),(4782,'AGENDA_USE_EVENT_TYPE',2,'1','chaine',0,'','2013-03-13 20:53:36'),(4884,'AGENDA_DISABLE_EXT',2,'1','chaine',0,'','2013-03-13 22:03:40'),(4919,'MAIN_MODULE_COMPTABILITE',1,'1',NULL,0,NULL,'2013-03-20 20:04:28'),(4922,'MAIN_MODULE_BANQUE',1,'1',NULL,0,NULL,'2013-03-20 20:04:28'),(4928,'COMMANDE_SUPPLIER_ADDON_NUMBER',1,'mod_commande_fournisseur_muguet','chaine',0,'Nom du gestionnaire de numerotation des commandes fournisseur','2013-03-22 09:24:29'),(4929,'INVOICE_SUPPLIER_ADDON_NUMBER',1,'mod_facture_fournisseur_cactus','chaine',0,'Nom du gestionnaire de numerotation des factures fournisseur','2013-03-22 09:24:29'),(5001,'MAIN_CRON_KEY',0,'bc54582fe30d5d4a830c6f582ec28810','chaine',0,'','2013-03-23 17:54:53'),(5009,'CRON_KEY',0,'2c2e755c20be2014098f629865598006','chaine',0,'','2013-03-23 18:06:24'),(5075,'MAIN_MENU_STANDARD',1,'eldy_menu.php','chaine',0,'','2013-03-24 02:51:13'),(5076,'MAIN_MENU_SMARTPHONE',1,'eldy_menu.php','chaine',0,'','2013-03-24 02:51:13'),(5077,'MAIN_MENUFRONT_STANDARD',1,'eldy_menu.php','chaine',0,'','2013-03-24 02:51:13'),(5078,'MAIN_MENUFRONT_SMARTPHONE',1,'eldy_menu.php','chaine',0,'','2013-03-24 02:51:13'),(5137,'MAIN_AGENDA_ACTIONAUTO_BILL_UNVALIDATE',1,'1','chaine',0,NULL,'2013-09-08 23:06:08'),(5139,'SOCIETE_ADD_REF_IN_LIST',1,'','yesno',0,'Display customer ref into select list','2013-09-08 23:06:08'),(5150,'PROJECT_TASK_ADDON_PDF',1,'','chaine',0,'Name of PDF/ODT tasks manager class','2013-09-08 23:06:14'),(5151,'PROJECT_TASK_ADDON',1,'mod_task_simple','chaine',0,'Name of Numbering Rule task manager class','2013-09-08 23:06:14'),(5152,'PROJECT_TASK_ADDON_PDF_ODT_PATH',1,'DOL_DATA_ROOT/doctemplates/tasks','chaine',0,'','2013-09-08 23:06:14'),(5164,'MAIN_AGENDA_ACTIONAUTO_COMPANY_SENTBYMAIL',1,'1','chaine',0,NULL,'2013-11-06 23:35:12'),(5195,'GOOGLE_DUPLICATE_INTO_THIRDPARTIES',1,'1','chaine',0,'','2013-11-07 00:02:34'),(5196,'GOOGLE_DUPLICATE_INTO_CONTACTS',1,'0','chaine',0,'','2013-11-07 00:02:34'),(5197,'GOOGLE_DUPLICATE_INTO_MEMBERS',1,'0','chaine',0,'','2013-11-07 00:02:34'),(5198,'GOOGLE_CONTACT_LOGIN',1,'eldy10@mail.com','chaine',0,'','2013-11-07 00:02:34'),(5199,'GOOGLE_CONTACT_PASSWORD',1,'bidonge','chaine',0,'','2013-11-07 00:02:34'),(5200,'GOOGLE_TAG_PREFIX',1,'Dolibarr (Thirdparties)','chaine',0,'','2013-11-07 00:02:34'),(5201,'GOOGLE_TAG_PREFIX_CONTACTS',1,'Dolibarr (Contacts/Addresses)','chaine',0,'','2013-11-07 00:02:34'),(5202,'GOOGLE_TAG_PREFIX_MEMBERS',1,'Dolibarr (Members)','chaine',0,'','2013-11-07 00:02:34'),(5203,'MODULE_GOOGLE_DEBUG',1,'1','chaine',1,'','2013-11-07 00:16:31'),(5235,'MAIN_FEATURES_LEVEL',0,'0','chaine',1,'Level of features to show (0=stable only, 1=stable+experimental, 2=stable+experimental+development','2014-03-02 15:22:27'),(5237,'MAIN_MODULE_GRAVATAR',1,'1',NULL,0,NULL,'2014-03-02 15:37:37'),(5239,'BOOKMARKS_SHOW_IN_MENU',1,'10','chaine',0,'','2014-03-02 15:42:26'),(5271,'DONATION_ART200',1,'','yesno',0,'Option Française - Eligibilité Art200 du CGI','2014-12-21 12:51:28'),(5272,'DONATION_ART238',1,'','yesno',0,'Option Française - Eligibilité Art238 bis du CGI','2014-12-21 12:51:28'),(5273,'DONATION_ART885',1,'','yesno',0,'Option Française - Eligibilité Art885-0 V bis du CGI','2014-12-21 12:51:28'),(5274,'DONATION_MESSAGE',1,'Thank you','chaine',0,'Message affiché sur le récépissé de versements ou dons','2014-12-21 12:51:28'),(5278,'PRODUCT_USE_OLD_PATH_FOR_PHOTO',0,'1','chaine',1,'Use old path for products images','2015-07-19 13:40:55'),(5282,'MAIN_AGENDA_ACTIONAUTO_BILL_SUPPLIER_UNVALIDATE',1,'1','chaine',0,NULL,'2015-07-19 13:41:20'),(5288,'DONATION_ACCOUNTINGACCOUNT',1,'7581','chaine',0,'Compte comptable de remise des versements ou dons','2015-07-19 13:41:21'),(5300,'MAIN_MODULE_AGENDA',1,'1',NULL,0,NULL,'2015-10-03 08:46:14'),(5301,'MAIN_MODULE_BARCODE',1,'1',NULL,0,NULL,'2015-10-03 08:46:14'),(5302,'MAIN_MODULE_CRON',1,'1',NULL,0,NULL,'2015-10-03 08:46:14'),(5303,'MAIN_MODULE_COMMANDE',1,'1',NULL,0,NULL,'2015-10-03 08:46:15'),(5304,'MAIN_MODULE_DEPLACEMENT',1,'1',NULL,0,NULL,'2015-10-03 08:46:15'),(5305,'MAIN_MODULE_DON',1,'1',NULL,0,NULL,'2015-10-03 08:46:15'),(5306,'MAIN_MODULE_ECM',1,'1',NULL,0,NULL,'2015-10-03 08:46:15'),(5307,'MAIN_MODULE_FACTURE',1,'1',NULL,0,NULL,'2015-10-03 08:46:15'),(5308,'MAIN_MODULE_FOURNISSEUR',1,'1',NULL,0,NULL,'2015-10-03 08:46:15'),(5309,'MAIN_MODULE_HOLIDAY',1,'1',NULL,0,NULL,'2015-10-03 08:46:15'),(5310,'MAIN_MODULE_HOLIDAY_TABS_0',1,'user:+paidholidays:CPTitreMenu:holiday:$user->rights->holiday->read:/holiday/list.php?mainmenu=holiday&id=__ID__','chaine',0,NULL,'2015-10-03 08:46:15'),(5311,'MAIN_MODULE_OPENSURVEY',1,'1',NULL,0,NULL,'2015-10-03 08:46:16'),(5312,'MAIN_MODULE_SOCIETE',1,'1',NULL,0,NULL,'2015-10-03 08:46:16'),(5313,'MAIN_MODULE_SERVICE',1,'1',NULL,0,NULL,'2015-10-03 08:46:16'),(5314,'MAIN_MODULE_USER',0,'1',NULL,0,NULL,'2015-10-03 08:46:16'),(5315,'MAIN_VERSION_LAST_UPGRADE',0,'3.8.1','chaine',0,'Dolibarr version for last upgrade','2015-10-03 08:46:18'),(5317,'INVOICE_CAN_ALWAYS_BE_REMOVED',1,'1','chaine',1,'','2015-10-03 09:25:30'),(5318,'MAIN_INFO_SOCIETE_COUNTRY',1,'1:FR:France','chaine',0,'','2015-10-03 10:11:01'),(5319,'MAIN_INFO_SOCIETE_NOM',1,'MyBigCompany','chaine',0,'','2015-10-03 10:11:01'),(5320,'MAIN_INFO_SOCIETE_ADDRESS',1,'21 Jump street','chaine',0,'','2015-10-03 10:11:01'),(5321,'MAIN_INFO_SOCIETE_TOWN',1,'MyTown','chaine',0,'','2015-10-03 10:11:01'),(5322,'MAIN_INFO_SOCIETE_ZIP',1,'75500','chaine',0,'','2015-10-03 10:11:01'),(5323,'MAIN_INFO_SOCIETE_STATE',1,'0','chaine',0,'','2015-10-03 10:11:01'),(5324,'MAIN_MONNAIE',1,'EUR','chaine',0,'','2015-10-03 10:11:01'),(5325,'MAIN_INFO_SOCIETE_TEL',1,'09123123','chaine',0,'','2015-10-03 10:11:01'),(5326,'MAIN_INFO_SOCIETE_FAX',1,'09123124','chaine',0,'','2015-10-03 10:11:01'),(5327,'MAIN_INFO_SOCIETE_MAIL',1,'myemail@mybigcompany.com','chaine',0,'','2015-10-03 10:11:01'),(5328,'MAIN_INFO_SOCIETE_WEB',1,'http://www.dolibarr.org','chaine',0,'','2015-10-03 10:11:01'),(5329,'MAIN_INFO_SOCIETE_NOTE',1,'This is note about my company','chaine',0,'','2015-10-03 10:11:01'),(5330,'MAIN_INFO_SOCIETE_LOGO',1,'mybigcompany.png','chaine',0,'','2015-10-03 10:11:01'),(5331,'MAIN_INFO_SOCIETE_LOGO_SMALL',1,'mybigcompany_small.png','chaine',0,'','2015-10-03 10:11:01'),(5332,'MAIN_INFO_SOCIETE_LOGO_MINI',1,'mybigcompany_mini.png','chaine',0,'','2015-10-03 10:11:01'),(5333,'MAIN_INFO_CAPITAL',1,'10000','chaine',0,'','2015-10-03 10:11:01'),(5334,'MAIN_INFO_SOCIETE_FORME_JURIDIQUE',1,'0','chaine',0,'','2015-10-03 10:11:01'),(5335,'MAIN_INFO_TVAINTRA',1,'FR1234567','chaine',0,'','2015-10-03 10:11:01'),(5336,'SOCIETE_FISCAL_MONTH_START',1,'1','chaine',0,'','2015-10-03 10:11:01'),(5337,'FACTURE_TVAOPTION',1,'1','chaine',0,'','2015-10-03 10:11:01'),(5338,'MAIN_LANG_DEFAULT',1,'en_US','chaine',0,'','2015-10-03 10:11:33'),(5339,'MAIN_MULTILANGS',1,'1','chaine',0,'','2015-10-03 10:11:33'),(5340,'MAIN_SIZE_LISTE_LIMIT',1,'25','chaine',0,'','2015-10-03 10:11:33'),(5341,'MAIN_DISABLE_JAVASCRIPT',1,'0','chaine',0,'','2015-10-03 10:11:33'),(5342,'MAIN_BUTTON_HIDE_UNAUTHORIZED',1,'0','chaine',0,'','2015-10-03 10:11:33'),(5343,'MAIN_START_WEEK',1,'1','chaine',0,'','2015-10-03 10:11:33'),(5344,'MAIN_DEFAULT_WORKING_DAYS',1,'1-5','chaine',0,'','2015-10-03 10:11:33'),(5345,'MAIN_DEFAULT_WORKING_HOURS',1,'9-18','chaine',0,'','2015-10-03 10:11:33'),(5346,'MAIN_SHOW_LOGO',1,'1','chaine',0,'','2015-10-03 10:11:33'),(5347,'MAIN_FIRSTNAME_NAME_POSITION',1,'0','chaine',0,'','2015-10-03 10:11:33'),(5348,'MAIN_THEME',1,'eldy','chaine',0,'','2015-10-03 10:11:33'),(5349,'MAIN_SEARCHFORM_CONTACT',1,'1','chaine',0,'','2015-10-03 10:11:33'),(5350,'MAIN_SEARCHFORM_SOCIETE',1,'1','chaine',0,'','2015-10-03 10:11:33'),(5351,'MAIN_SEARCHFORM_PRODUITSERVICE',1,'1','chaine',0,'','2015-10-03 10:11:33'),(5352,'MAIN_SEARCHFORM_PRODUITSERVICE_SUPPLIER',1,'0','chaine',0,'','2015-10-03 10:11:33'),(5353,'MAIN_SEARCHFORM_ADHERENT',1,'1','chaine',0,'','2015-10-03 10:11:33'),(5354,'MAIN_SEARCHFORM_PROJECT',1,'0','chaine',0,'','2015-10-03 10:11:33'),(5355,'MAIN_HELPCENTER_DISABLELINK',0,'1','chaine',0,'','2015-10-03 10:11:33'),(5356,'MAIN_HOME',1,'__(NoteSomeFeaturesAreDisabled)__
\r\n
\r\n__(SomeTranslationAreUncomplete)__
','chaine',0,'','2015-10-03 10:11:33'),(5357,'MAIN_HELP_DISABLELINK',0,'0','chaine',0,'','2015-10-03 10:11:33'),(5358,'MAIN_BUGTRACK_ENABLELINK',1,'0','chaine',0,'','2015-10-03 10:11:33'),(5359,'THEME_ELDY_USE_HOVER',1,'1','chaine',0,'','2015-10-03 10:11:33'); +INSERT INTO `llx_const` VALUES (5,'SYSLOG_LEVEL',0,'7','chaine',0,'Level of debug info to show','2010-07-08 11:17:57'),(8,'MAIN_UPLOAD_DOC',0,'2048','chaine',0,'Max size for file upload (0 means no upload allowed)','2010-07-08 11:17:57'),(9,'MAIN_SEARCHFORM_SOCIETE',0,'1','yesno',0,'Show form for quick company search','2010-07-08 11:17:57'),(10,'MAIN_SEARCHFORM_CONTACT',0,'1','yesno',0,'Show form for quick contact search','2010-07-08 11:17:57'),(11,'MAIN_SEARCHFORM_PRODUITSERVICE',0,'1','yesno',0,'Show form for quick product search','2010-07-08 11:17:58'),(12,'MAIN_SEARCHFORM_ADHERENT',0,'1','yesno',0,'Show form for quick member search','2010-07-08 11:17:58'),(16,'MAIN_SIZE_LISTE_LIMIT',0,'25','chaine',0,'Longueur maximum des listes','2010-07-08 11:17:58'),(17,'MAIN_SHOW_WORKBOARD',0,'1','yesno',0,'Affichage tableau de bord de travail Dolibarr','2010-07-08 11:17:58'),(29,'MAIN_DELAY_NOT_ACTIVATED_SERVICES',1,'0','chaine',0,'Tolérance de retard avant alerte (en jours) sur services à activer','2010-07-08 11:17:58'),(33,'SOCIETE_NOLIST_COURRIER',0,'1','yesno',0,'Liste les fichiers du repertoire courrier','2010-07-08 11:17:58'),(35,'SOCIETE_CODECOMPTA_ADDON',1,'mod_codecompta_panicum','yesno',0,'Module to control third parties codes','2010-07-08 11:17:58'),(36,'ADHERENT_MAIL_REQUIRED',1,'1','yesno',0,'EMail required to create a new member','2010-07-08 11:17:58'),(37,'ADHERENT_MAIL_FROM',1,'adherents@domain.com','chaine',0,'Sender EMail for automatic emails','2010-07-08 11:17:58'),(38,'ADHERENT_MAIL_RESIL',1,'Your subscription has been resiliated.\r\nWe hope to see you soon again','texte',0,'Mail resiliation','2010-07-08 11:17:58'),(39,'ADHERENT_MAIL_VALID',1,'Your subscription has been validated.\r\nThis is a remind of your personal information :\r\n\r\n%INFOS%\r\n\r\n','texte',0,'Mail de validation','2010-07-08 11:17:59'),(40,'ADHERENT_MAIL_COTIS',1,'Hello %PRENOM%,\r\nThanks for your subscription.\r\nThis email confirms that your subscription has been received and processed.\r\n\r\n','texte',0,'Mail de validation de cotisation','2010-07-08 11:17:59'),(41,'ADHERENT_MAIL_VALID_SUBJECT',1,'Your subscription has been validated','chaine',0,'Sujet du mail de validation','2010-07-08 11:17:59'),(42,'ADHERENT_MAIL_RESIL_SUBJECT',1,'Resiliating your subscription','chaine',0,'Sujet du mail de resiliation','2010-07-08 11:17:59'),(43,'ADHERENT_MAIL_COTIS_SUBJECT',1,'Receipt of your subscription','chaine',0,'Sujet du mail de validation de cotisation','2010-07-08 11:17:59'),(44,'MAILING_EMAIL_FROM',1,'dolibarr@domain.com','chaine',0,'EMail emmetteur pour les envois d emailings','2010-07-08 11:17:59'),(45,'ADHERENT_USE_MAILMAN',1,'0','yesno',0,'Utilisation de Mailman','2010-07-08 11:17:59'),(46,'ADHERENT_MAILMAN_UNSUB_URL',1,'http://lists.domain.com/cgi-bin/mailman/admin/%LISTE%/members?adminpw=%MAILMAN_ADMINPW%&user=%EMAIL%','chaine',0,'Url de desinscription aux listes mailman','2010-07-08 11:17:59'),(47,'ADHERENT_MAILMAN_URL',1,'http://lists.domain.com/cgi-bin/mailman/admin/%LISTE%/members?adminpw=%MAILMAN_ADMINPW%&send_welcome_msg_to_this_batch=1&subscribees=%EMAIL%','chaine',0,'Url pour les inscriptions mailman','2010-07-08 11:17:59'),(48,'ADHERENT_MAILMAN_LISTS',1,'test-test,test-test2','chaine',0,'Listes auxquelles inscrire les nouveaux adherents','2010-07-08 11:17:59'),(49,'ADHERENT_MAILMAN_ADMINPW',1,'','chaine',0,'Mot de passe Admin des liste mailman','2010-07-08 11:17:59'),(50,'ADHERENT_MAILMAN_SERVER',1,'lists.domain.com','chaine',0,'Serveur hebergeant les interfaces d Admin des listes mailman','2010-07-08 11:17:59'),(51,'ADHERENT_MAILMAN_LISTS_COTISANT',1,'','chaine',0,'Liste(s) auxquelles les nouveaux cotisants sont inscris automatiquement','2010-07-08 11:17:59'),(52,'ADHERENT_USE_SPIP',1,'0','yesno',0,'Utilisation de SPIP ?','2010-07-08 11:17:59'),(53,'ADHERENT_USE_SPIP_AUTO',1,'0','yesno',0,'Utilisation de SPIP automatiquement','2010-07-08 11:17:59'),(54,'ADHERENT_SPIP_USER',1,'user','chaine',0,'user spip','2010-07-08 11:17:59'),(55,'ADHERENT_SPIP_PASS',1,'pass','chaine',0,'Pass de connection','2010-07-08 11:17:59'),(56,'ADHERENT_SPIP_SERVEUR',1,'localhost','chaine',0,'serveur spip','2010-07-08 11:17:59'),(57,'ADHERENT_SPIP_DB',1,'spip','chaine',0,'db spip','2010-07-08 11:17:59'),(58,'ADHERENT_CARD_HEADER_TEXT',1,'%ANNEE%','chaine',0,'Texte imprime sur le haut de la carte adherent','2010-07-08 11:17:59'),(59,'ADHERENT_CARD_FOOTER_TEXT',1,'Association AZERTY','chaine',0,'Texte imprime sur le bas de la carte adherent','2010-07-08 11:17:59'),(61,'FCKEDITOR_ENABLE_USER',1,'1','yesno',0,'Activation fckeditor sur notes utilisateurs','2010-07-08 11:17:59'),(62,'FCKEDITOR_ENABLE_SOCIETE',1,'1','yesno',0,'Activation fckeditor sur notes societe','2010-07-08 11:17:59'),(63,'FCKEDITOR_ENABLE_PRODUCTDESC',1,'1','yesno',0,'Activation fckeditor sur notes produits','2010-07-08 11:17:59'),(64,'FCKEDITOR_ENABLE_MEMBER',1,'1','yesno',0,'Activation fckeditor sur notes adherent','2010-07-08 11:17:59'),(65,'FCKEDITOR_ENABLE_MAILING',1,'1','yesno',0,'Activation fckeditor sur emailing','2010-07-08 11:17:59'),(67,'DON_ADDON_MODEL',1,'html_cerfafr','chaine',0,'','2010-07-08 11:18:00'),(68,'PROPALE_ADDON',1,'mod_propale_marbre','chaine',0,'','2010-07-08 11:18:00'),(69,'PROPALE_ADDON_PDF',1,'azur','chaine',0,'','2010-07-08 11:18:00'),(70,'COMMANDE_ADDON',1,'mod_commande_marbre','chaine',0,'','2010-07-08 11:18:00'),(71,'COMMANDE_ADDON_PDF',1,'einstein','chaine',0,'','2010-07-08 11:18:00'),(72,'COMMANDE_SUPPLIER_ADDON',1,'mod_commande_fournisseur_muguet','chaine',0,'','2010-07-08 11:18:00'),(73,'COMMANDE_SUPPLIER_ADDON_PDF',1,'muscadet','chaine',0,'','2010-07-08 11:18:00'),(74,'EXPEDITION_ADDON',1,'enlevement','chaine',0,'','2010-07-08 11:18:00'),(76,'FICHEINTER_ADDON',1,'pacific','chaine',0,'','2010-07-08 11:18:00'),(77,'FICHEINTER_ADDON_PDF',1,'soleil','chaine',0,'','2010-07-08 11:18:00'),(79,'FACTURE_ADDON_PDF',1,'crabe','chaine',0,'','2010-07-08 11:18:00'),(80,'PROPALE_VALIDITY_DURATION',1,'15','chaine',0,'Durée de validitée des propales','2010-07-08 11:18:00'),(230,'COMPANY_ADDON_PDF_ODT_PATH',1,'DOL_DATA_ROOT/doctemplates/thirdparties','chaine',0,NULL,'2010-07-08 11:26:20'),(238,'LIVRAISON_ADDON_PDF',1,'typhon','chaine',0,'Nom du gestionnaire de generation des commandes en PDF','2010-07-08 11:26:27'),(239,'LIVRAISON_ADDON_NUMBER',1,'mod_livraison_jade','chaine',0,'Nom du gestionnaire de numerotation des bons de livraison','2013-03-20 13:17:36'),(242,'MAIN_SUBMODULE_EXPEDITION',1,'1','chaine',0,'','2010-07-08 11:26:34'),(245,'FACTURE_ADDON_PDF_ODT_PATH',1,'DOL_DATA_ROOT/doctemplates/invoices','chaine',0,NULL,'2010-07-08 11:28:53'),(249,'DON_FORM',1,'fsfe.fr.php','chaine',0,'Nom du gestionnaire de formulaire de dons','2010-07-08 11:29:00'),(252,'MAIN_MODULE_ADHERENT',1,'1',NULL,0,NULL,'2010-07-08 11:29:05'),(253,'ADHERENT_BANK_USE_AUTO',1,'','yesno',0,'Insertion automatique des cotisation dans le compte banquaire','2010-07-08 11:29:05'),(254,'ADHERENT_BANK_ACCOUNT',1,'','chaine',0,'ID du Compte banquaire utilise','2010-07-08 11:29:05'),(255,'ADHERENT_BANK_CATEGORIE',1,'','chaine',0,'ID de la categorie banquaire des cotisations','2010-07-08 11:29:05'),(256,'ADHERENT_ETIQUETTE_TYPE',1,'L7163','chaine',0,'Type d etiquette (pour impression de planche d etiquette)','2010-07-08 11:29:05'),(260,'MAIN_MODULE_STOCK',1,'1',NULL,0,NULL,'2010-07-08 11:29:18'),(269,'PROJECT_ADDON_PDF',1,'baleine','chaine',0,'Nom du gestionnaire de generation des projets en PDF','2010-07-08 11:29:33'),(270,'PROJECT_ADDON',1,'mod_project_simple','chaine',0,'Nom du gestionnaire de numerotation des projets','2010-07-08 11:29:33'),(271,'MAIN_MODULE_MAILING',1,'1',NULL,0,NULL,'2010-07-08 11:29:37'),(272,'MAIN_MODULE_EXPORT',1,'1',NULL,0,NULL,'2010-07-08 11:29:41'),(273,'MAIN_MODULE_IMPORT',1,'1',NULL,0,NULL,'2010-07-08 11:29:45'),(274,'MAIN_MODULE_CATEGORIE',1,'1',NULL,0,NULL,'2010-07-08 11:29:59'),(275,'MAIN_MODULE_BOOKMARK',1,'1',NULL,0,NULL,'2010-07-08 11:30:03'),(276,'MAIN_MODULE_WEBSERVICES',1,'1',NULL,0,NULL,'2010-07-08 11:30:30'),(278,'MAIN_MODULE_GEOIPMAXMIND',1,'1',NULL,0,NULL,'2010-07-08 11:30:36'),(279,'MAIN_MODULE_EXTERNALRSS',1,'1',NULL,0,NULL,'2010-07-08 11:30:38'),(292,'MAIN_MODULE_FCKEDITOR',1,'1',NULL,0,NULL,'2010-07-08 11:56:27'),(368,'STOCK_USERSTOCK_AUTOCREATE',1,'1','chaine',0,'','2010-07-08 22:44:59'),(369,'EXPEDITION_ADDON_PDF',1,'merou','chaine',0,'','2010-07-08 22:58:07'),(370,'MAIN_SUBMODULE_LIVRAISON',1,'1','chaine',0,'','2010-07-08 23:00:29'),(377,'FACTURE_ADDON',1,'mod_facture_terre','chaine',0,'','2010-07-08 23:08:12'),(380,'ADHERENT_CARD_TEXT',1,'%TYPE% n° %ID%\r\n%PRENOM% %NOM%\r\n<%EMAIL%>\r\n%ADRESSE%\r\n%CP% %VILLE%\r\n%PAYS%','',0,'Texte imprime sur la carte adherent','2010-07-08 23:14:46'),(381,'ADHERENT_CARD_TEXT_RIGHT',1,'aaa','',0,'','2010-07-08 23:14:55'),(384,'PRODUIT_SOUSPRODUITS',1,'1','chaine',0,'','2010-07-08 23:22:12'),(385,'PRODUIT_USE_SEARCH_TO_SELECT',1,'1','chaine',0,'','2010-07-08 23:22:19'),(386,'STOCK_CALCULATE_ON_SHIPMENT',1,'1','chaine',0,'','2010-07-08 23:23:21'),(387,'STOCK_CALCULATE_ON_SUPPLIER_DISPATCH_ORDER',1,'1','chaine',0,'','2010-07-08 23:23:26'),(392,'MAIN_AGENDA_XCAL_EXPORTKEY',1,'dolibarr','chaine',0,'','2010-07-08 23:27:50'),(393,'MAIN_AGENDA_EXPORT_PAST_DELAY',1,'100','chaine',0,'','2010-07-08 23:27:50'),(523,'MAIN_AGENDA_ACTIONAUTO_COMPANY_CREATE',1,'1','chaine',0,'','2010-07-10 12:48:49'),(524,'MAIN_AGENDA_ACTIONAUTO_CONTRACT_VALIDATE',1,'1','chaine',0,'','2010-07-10 12:48:49'),(525,'MAIN_AGENDA_ACTIONAUTO_PROPAL_VALIDATE',1,'1','chaine',0,'','2010-07-10 12:48:49'),(526,'MAIN_AGENDA_ACTIONAUTO_PROPAL_SENTBYMAIL',1,'1','chaine',0,'','2010-07-10 12:48:49'),(527,'MAIN_AGENDA_ACTIONAUTO_ORDER_VALIDATE',1,'1','chaine',0,'','2010-07-10 12:48:49'),(528,'MAIN_AGENDA_ACTIONAUTO_ORDER_SENTBYMAIL',1,'1','chaine',0,'','2010-07-10 12:48:49'),(529,'MAIN_AGENDA_ACTIONAUTO_BILL_VALIDATE',1,'1','chaine',0,'','2010-07-10 12:48:49'),(530,'MAIN_AGENDA_ACTIONAUTO_BILL_PAYED',1,'1','chaine',0,'','2010-07-10 12:48:49'),(531,'MAIN_AGENDA_ACTIONAUTO_BILL_CANCEL',1,'1','chaine',0,'','2010-07-10 12:48:49'),(532,'MAIN_AGENDA_ACTIONAUTO_BILL_SENTBYMAIL',1,'1','chaine',0,'','2010-07-10 12:48:49'),(533,'MAIN_AGENDA_ACTIONAUTO_ORDER_SUPPLIER_VALIDATE',1,'1','chaine',0,'','2010-07-10 12:48:50'),(534,'MAIN_AGENDA_ACTIONAUTO_BILL_SUPPLIER_VALIDATE',1,'1','chaine',0,'','2010-07-10 12:48:50'),(602,'MAIN_MODULE_PROJET',1,'1',NULL,0,NULL,'2010-07-11 13:26:54'),(610,'CASHDESK_ID_THIRDPARTY',1,'7','chaine',0,'','2010-07-11 17:08:18'),(611,'CASHDESK_ID_BANKACCOUNT_CASH',1,'3','chaine',0,'','2010-07-11 17:08:18'),(612,'CASHDESK_ID_BANKACCOUNT_CHEQUE',1,'1','chaine',0,'','2010-07-11 17:08:18'),(613,'CASHDESK_ID_BANKACCOUNT_CB',1,'1','chaine',0,'','2010-07-11 17:08:18'),(614,'CASHDESK_ID_WAREHOUSE',1,'2','chaine',0,'','2010-07-11 17:08:18'),(660,'LDAP_USER_DN',1,'ou=users,dc=my-domain,dc=com','chaine',0,NULL,'2010-07-18 10:25:27'),(661,'LDAP_GROUP_DN',1,'ou=groups,dc=my-domain,dc=com','chaine',0,NULL,'2010-07-18 10:25:27'),(662,'LDAP_FILTER_CONNECTION',1,'&(objectClass=user)(objectCategory=person)','chaine',0,NULL,'2010-07-18 10:25:27'),(663,'LDAP_FIELD_LOGIN',1,'uid','chaine',0,NULL,'2010-07-18 10:25:27'),(664,'LDAP_FIELD_FULLNAME',1,'cn','chaine',0,NULL,'2010-07-18 10:25:27'),(665,'LDAP_FIELD_NAME',1,'sn','chaine',0,NULL,'2010-07-18 10:25:27'),(666,'LDAP_FIELD_FIRSTNAME',1,'givenname','chaine',0,NULL,'2010-07-18 10:25:27'),(667,'LDAP_FIELD_MAIL',1,'mail','chaine',0,NULL,'2010-07-18 10:25:27'),(668,'LDAP_FIELD_PHONE',1,'telephonenumber','chaine',0,NULL,'2010-07-18 10:25:27'),(669,'LDAP_FIELD_FAX',1,'facsimiletelephonenumber','chaine',0,NULL,'2010-07-18 10:25:27'),(670,'LDAP_FIELD_MOBILE',1,'mobile','chaine',0,NULL,'2010-07-18 10:25:27'),(671,'LDAP_SERVER_TYPE',1,'openldap','chaine',0,'','2010-07-18 10:25:46'),(672,'LDAP_SERVER_PROTOCOLVERSION',1,'3','chaine',0,'','2010-07-18 10:25:47'),(673,'LDAP_SERVER_HOST',1,'localhost','chaine',0,'','2010-07-18 10:25:47'),(674,'LDAP_SERVER_PORT',1,'389','chaine',0,'','2010-07-18 10:25:47'),(675,'LDAP_SERVER_USE_TLS',1,'0','chaine',0,'','2010-07-18 10:25:47'),(676,'LDAP_SYNCHRO_ACTIVE',1,'dolibarr2ldap','chaine',0,'','2010-07-18 10:25:47'),(677,'LDAP_CONTACT_ACTIVE',1,'1','chaine',0,'','2010-07-18 10:25:47'),(678,'LDAP_MEMBER_ACTIVE',1,'1','chaine',0,'','2010-07-18 10:25:47'),(807,'MAIN_AGENDA_ACTIONAUTO_SHIPPING_VALIDATE',1,'1','chaine',0,NULL,'2011-07-18 17:27:52'),(808,'MAIN_AGENDA_ACTIONAUTO_SHIPPING_SENTBYMAIL',1,'1','chaine',0,NULL,'2011-07-18 17:27:52'),(834,'MAIN_MODULE_CASHDESK',1,'1',NULL,0,NULL,'2011-07-18 17:30:24'),(969,'MAIN_MODULE_PRELEVEMENT',1,'1',NULL,0,NULL,'2011-07-18 18:01:59'),(973,'MAIN_MODULE_WORKFLOW',1,'1',NULL,0,NULL,'2011-07-18 18:02:20'),(974,'MAIN_MODULE_WORKFLOW_TRIGGERS',1,'1','chaine',0,NULL,'2011-07-18 18:02:20'),(975,'WORKFLOW_PROPAL_AUTOCREATE_ORDER',1,'1','chaine',0,'','2011-07-18 18:02:24'),(978,'MAIN_MODULE_NOTIFICATION',1,'1',NULL,0,NULL,'2011-07-18 18:03:06'),(979,'PRELEVEMENT_USER',1,'1','chaine',0,'','2011-07-18 18:05:50'),(980,'PRELEVEMENT_NUMERO_NATIONAL_EMETTEUR',1,'1234567','chaine',0,'','2011-07-18 18:05:50'),(981,'PRELEVEMENT_ID_BANKACCOUNT',1,'1','chaine',0,'','2011-07-18 18:05:50'),(983,'FACTURE_RIB_NUMBER',1,'1','chaine',0,'','2011-07-18 18:35:14'),(984,'FACTURE_CHQ_NUMBER',1,'1','chaine',0,'','2011-07-18 18:35:14'),(1016,'GOOGLE_DUPLICATE_INTO_GCAL',1,'1','chaine',0,'','2011-07-18 21:40:20'),(1018,'MAIN_MODULE_SYSLOG',0,'1',NULL,0,NULL,'2011-07-20 11:36:47'),(1138,'MAIN_VERSION_LAST_INSTALL',0,'3.1.0-beta','chaine',0,'Dolibarr version when install','2011-07-28 23:05:02'),(1152,'SOCIETE_CODECLIENT_ADDON',1,'mod_codeclient_monkey','chaine',0,'','2011-07-29 20:50:02'),(1231,'MAIN_UPLOAD_DOC',1,'2048','chaine',0,'','2011-07-29 21:04:00'),(1234,'MAIN_UMASK',1,'0664','chaine',0,'','2011-07-29 21:04:11'),(1240,'MAIN_LOGEVENTS_USER_LOGIN',1,'1','chaine',0,'','2011-07-29 21:05:01'),(1241,'MAIN_LOGEVENTS_USER_LOGIN_FAILED',1,'1','chaine',0,'','2011-07-29 21:05:01'),(1242,'MAIN_LOGEVENTS_USER_LOGOUT',1,'1','chaine',0,'','2011-07-29 21:05:01'),(1243,'MAIN_LOGEVENTS_USER_CREATE',1,'1','chaine',0,'','2011-07-29 21:05:01'),(1244,'MAIN_LOGEVENTS_USER_MODIFY',1,'1','chaine',0,'','2011-07-29 21:05:01'),(1245,'MAIN_LOGEVENTS_USER_NEW_PASSWORD',1,'1','chaine',0,'','2011-07-29 21:05:01'),(1246,'MAIN_LOGEVENTS_USER_ENABLEDISABLE',1,'1','chaine',0,'','2011-07-29 21:05:01'),(1247,'MAIN_LOGEVENTS_USER_DELETE',1,'1','chaine',0,'','2011-07-29 21:05:01'),(1248,'MAIN_LOGEVENTS_GROUP_CREATE',1,'1','chaine',0,'','2011-07-29 21:05:01'),(1249,'MAIN_LOGEVENTS_GROUP_MODIFY',1,'1','chaine',0,'','2011-07-29 21:05:01'),(1250,'MAIN_LOGEVENTS_GROUP_DELETE',1,'1','chaine',0,'','2011-07-29 21:05:01'),(1251,'MAIN_BOXES_MAXLINES',1,'5','',0,'','2011-07-29 21:05:42'),(1379,'CABINETMED_RHEUMATOLOGY_ON',1,'1','chaine',1,'Enable features for rheumatology','2011-08-01 21:47:53'),(1482,'EXPEDITION_ADDON_NUMBER',1,'mod_expedition_safor','chaine',0,'Nom du gestionnaire de numerotation des expeditions','2011-08-05 17:53:11'),(1490,'CONTRACT_ADDON',1,'mod_contract_serpis','chaine',0,'Nom du gestionnaire de numerotation des contrats','2011-08-05 18:11:58'),(1677,'COMMANDE_ADDON_PDF_ODT_PATH',1,'DOL_DATA_ROOT/doctemplates/orders','chaine',0,NULL,'2012-12-08 13:11:02'),(1698,'PRODUCT_CODEPRODUCT_ADDON',1,'mod_codeproduct_leopard','yesno',0,'Module to control product codes','2012-12-08 13:11:25'),(1718,'MAIN_MODULE_TAX',1,'1',NULL,0,NULL,'2012-12-08 13:12:41'),(1719,'ACCOUNTING_USEDICTTOEDIT',1,'1','chaine',1,'','2012-12-08 13:15:00'),(1724,'PROPALE_ADDON_PDF_ODT_PATH',1,'DOL_DATA_ROOT/doctemplates/proposals','chaine',0,NULL,'2012-12-08 13:17:14'),(1730,'OPENSTREETMAP_ENABLE_MAPS',1,'1','chaine',0,'','2012-12-08 13:22:47'),(1731,'OPENSTREETMAP_ENABLE_MAPS_CONTACTS',1,'1','chaine',0,'','2012-12-08 13:22:47'),(1732,'OPENSTREETMAP_ENABLE_MAPS_MEMBERS',1,'1','chaine',0,'','2012-12-08 13:22:47'),(1733,'OPENSTREETMAP_MAPS_ZOOM_LEVEL',1,'15','chaine',0,'','2012-12-08 13:22:47'),(1737,'MAIN_INFO_SOCIETE_COUNTRY',2,'1:FR:France','chaine',0,'','2013-02-26 21:56:28'),(1738,'MAIN_INFO_SOCIETE_NOM',2,'aaa','chaine',0,'','2012-12-08 14:08:14'),(1739,'MAIN_INFO_SOCIETE_STATE',2,'0','chaine',0,'','2013-02-27 14:20:27'),(1740,'MAIN_MONNAIE',2,'EUR','chaine',0,'','2012-12-08 14:08:14'),(1741,'MAIN_LANG_DEFAULT',2,'auto','chaine',0,'','2012-12-08 14:08:14'),(1742,'MAIN_MAIL_EMAIL_FROM',2,'dolibarr-robot@domain.com','chaine',0,'EMail emetteur pour les emails automatiques Dolibarr','2012-12-08 14:08:14'),(1743,'MAIN_MENU_STANDARD',2,'eldy_menu.php','chaine',0,'Module de gestion de la barre de menu du haut pour utilisateurs internes','2013-02-11 19:43:54'),(1744,'MAIN_MENUFRONT_STANDARD',2,'eldy_menu.php','chaine',0,'Module de gestion de la barre de menu du haut pour utilisateurs externes','2013-02-11 19:43:54'),(1745,'MAIN_MENU_SMARTPHONE',2,'iphone_backoffice.php','chaine',0,'Module de gestion de la barre de menu smartphone pour utilisateurs internes','2012-12-08 14:08:14'),(1746,'MAIN_MENUFRONT_SMARTPHONE',2,'iphone_frontoffice.php','chaine',0,'Module de gestion de la barre de menu smartphone pour utilisateurs externes','2012-12-08 14:08:14'),(1747,'MAIN_THEME',2,'eldy','chaine',0,'Default theme','2012-12-08 14:08:14'),(1748,'MAIN_DELAY_ACTIONS_TODO',2,'7','chaine',0,'Tolérance de retard avant alerte (en jours) sur actions planifiées non réalisées','2012-12-08 14:08:14'),(1749,'MAIN_DELAY_ORDERS_TO_PROCESS',2,'2','chaine',0,'Tolérance de retard avant alerte (en jours) sur commandes clients non traitées','2012-12-08 14:08:14'),(1750,'MAIN_DELAY_SUPPLIER_ORDERS_TO_PROCESS',2,'7','chaine',0,'Tolérance de retard avant alerte (en jours) sur commandes fournisseurs non traitées','2012-12-08 14:08:14'),(1751,'MAIN_DELAY_PROPALS_TO_CLOSE',2,'31','chaine',0,'Tolérance de retard avant alerte (en jours) sur propales à cloturer','2012-12-08 14:08:14'),(1752,'MAIN_DELAY_PROPALS_TO_BILL',2,'7','chaine',0,'Tolérance de retard avant alerte (en jours) sur propales non facturées','2012-12-08 14:08:14'),(1753,'MAIN_DELAY_CUSTOMER_BILLS_UNPAYED',2,'31','chaine',0,'Tolérance de retard avant alerte (en jours) sur factures client impayées','2012-12-08 14:08:14'),(1754,'MAIN_DELAY_SUPPLIER_BILLS_TO_PAY',2,'2','chaine',0,'Tolérance de retard avant alerte (en jours) sur factures fournisseur impayées','2012-12-08 14:08:14'),(1755,'MAIN_DELAY_NOT_ACTIVATED_SERVICES',2,'0','chaine',0,'Tolérance de retard avant alerte (en jours) sur services à activer','2012-12-08 14:08:14'),(1756,'MAIN_DELAY_RUNNING_SERVICES',2,'0','chaine',0,'Tolérance de retard avant alerte (en jours) sur services expirés','2012-12-08 14:08:14'),(1757,'MAIN_DELAY_MEMBERS',2,'31','chaine',0,'Tolérance de retard avant alerte (en jours) sur cotisations adhérent en retard','2012-12-08 14:08:14'),(1758,'MAIN_DELAY_TRANSACTIONS_TO_CONCILIATE',2,'62','chaine',0,'Tolérance de retard avant alerte (en jours) sur rapprochements bancaires à faire','2012-12-08 14:08:14'),(1759,'MAILING_EMAIL_FROM',2,'dolibarr@domain.com','chaine',0,'EMail emmetteur pour les envois d emailings','2012-12-08 14:08:14'),(1760,'MAIN_INFO_SOCIETE_COUNTRY',3,'1:FR:France','chaine',0,'','2013-02-26 21:56:28'),(1761,'MAIN_INFO_SOCIETE_NOM',3,'bbb','chaine',0,'','2012-12-08 14:08:20'),(1762,'MAIN_INFO_SOCIETE_STATE',3,'0','chaine',0,'','2013-02-27 14:20:27'),(1763,'MAIN_MONNAIE',3,'EUR','chaine',0,'','2012-12-08 14:08:20'),(1764,'MAIN_LANG_DEFAULT',3,'auto','chaine',0,'','2012-12-08 14:08:20'),(1765,'MAIN_MAIL_EMAIL_FROM',3,'dolibarr-robot@domain.com','chaine',0,'EMail emetteur pour les emails automatiques Dolibarr','2012-12-08 14:08:20'),(1766,'MAIN_MENU_STANDARD',3,'eldy_menu.php','chaine',0,'Module de gestion de la barre de menu du haut pour utilisateurs internes','2013-02-11 19:43:54'),(1767,'MAIN_MENUFRONT_STANDARD',3,'eldy_menu.php','chaine',0,'Module de gestion de la barre de menu du haut pour utilisateurs externes','2013-02-11 19:43:54'),(1768,'MAIN_MENU_SMARTPHONE',3,'iphone_backoffice.php','chaine',0,'Module de gestion de la barre de menu smartphone pour utilisateurs internes','2012-12-08 14:08:20'),(1769,'MAIN_MENUFRONT_SMARTPHONE',3,'iphone_frontoffice.php','chaine',0,'Module de gestion de la barre de menu smartphone pour utilisateurs externes','2012-12-08 14:08:20'),(1770,'MAIN_THEME',3,'eldy','chaine',0,'Default theme','2012-12-08 14:08:20'),(1771,'MAIN_DELAY_ACTIONS_TODO',3,'7','chaine',0,'Tolérance de retard avant alerte (en jours) sur actions planifiées non réalisées','2012-12-08 14:08:20'),(1772,'MAIN_DELAY_ORDERS_TO_PROCESS',3,'2','chaine',0,'Tolérance de retard avant alerte (en jours) sur commandes clients non traitées','2012-12-08 14:08:20'),(1773,'MAIN_DELAY_SUPPLIER_ORDERS_TO_PROCESS',3,'7','chaine',0,'Tolérance de retard avant alerte (en jours) sur commandes fournisseurs non traitées','2012-12-08 14:08:20'),(1774,'MAIN_DELAY_PROPALS_TO_CLOSE',3,'31','chaine',0,'Tolérance de retard avant alerte (en jours) sur propales à cloturer','2012-12-08 14:08:20'),(1775,'MAIN_DELAY_PROPALS_TO_BILL',3,'7','chaine',0,'Tolérance de retard avant alerte (en jours) sur propales non facturées','2012-12-08 14:08:20'),(1776,'MAIN_DELAY_CUSTOMER_BILLS_UNPAYED',3,'31','chaine',0,'Tolérance de retard avant alerte (en jours) sur factures client impayées','2012-12-08 14:08:20'),(1777,'MAIN_DELAY_SUPPLIER_BILLS_TO_PAY',3,'2','chaine',0,'Tolérance de retard avant alerte (en jours) sur factures fournisseur impayées','2012-12-08 14:08:20'),(1778,'MAIN_DELAY_NOT_ACTIVATED_SERVICES',3,'0','chaine',0,'Tolérance de retard avant alerte (en jours) sur services à activer','2012-12-08 14:08:20'),(1779,'MAIN_DELAY_RUNNING_SERVICES',3,'0','chaine',0,'Tolérance de retard avant alerte (en jours) sur services expirés','2012-12-08 14:08:20'),(1780,'MAIN_DELAY_MEMBERS',3,'31','chaine',0,'Tolérance de retard avant alerte (en jours) sur cotisations adhérent en retard','2012-12-08 14:08:20'),(1781,'MAIN_DELAY_TRANSACTIONS_TO_CONCILIATE',3,'62','chaine',0,'Tolérance de retard avant alerte (en jours) sur rapprochements bancaires à faire','2012-12-08 14:08:20'),(1782,'MAILING_EMAIL_FROM',3,'dolibarr@domain.com','chaine',0,'EMail emmetteur pour les envois d emailings','2012-12-08 14:08:20'),(1803,'SYSLOG_FILE',1,'DOL_DATA_ROOT/dolibarr.log','chaine',0,'','2012-12-08 14:15:08'),(1804,'SYSLOG_HANDLERS',1,'[\"mod_syslog_file\"]','chaine',0,'','2012-12-08 14:15:08'),(1805,'MAIN_MODULE_SKINCOLOREDITOR',3,'1',NULL,0,NULL,'2012-12-08 14:35:40'),(1806,'MAIN_MODULE_SKINCOLOREDITOR_TABS_0',3,'user:+tabskincoloreditors:ColorEditor:skincoloreditor@skincoloreditor:/skincoloreditor/usercolors.php?id=__ID__','chaine',0,NULL,'2012-12-08 14:35:40'),(1867,'MAIN_MODULE_PAYPAL',1,'1',NULL,0,NULL,'2012-12-11 22:53:56'),(1922,'PAYPAL_API_SANDBOX',1,'1','chaine',0,'','2012-12-12 12:11:05'),(1923,'PAYPAL_API_USER',1,'seller_1355312017_biz_api1.nltechno.com','chaine',0,'','2012-12-12 12:11:05'),(1924,'PAYPAL_API_PASSWORD',1,'1355312040','chaine',0,'','2012-12-12 12:11:05'),(1925,'PAYPAL_API_SIGNATURE',1,'AXqqdsWBzvfn0q5iNmbuiDv1y.3EAXIMWyl4C5KvDReR9HDwwAd6dQ4Q','chaine',0,'','2012-12-12 12:11:05'),(1926,'PAYPAL_API_INTEGRAL_OR_PAYPALONLY',1,'integral','chaine',0,'','2012-12-12 12:11:05'),(1927,'PAYPAL_SECURITY_TOKEN',1,'50c82fab36bb3b6aa83e2a50691803b2','chaine',0,'','2012-12-12 12:11:05'),(1928,'PAYPAL_SECURITY_TOKEN_UNIQUE',1,'0','chaine',0,'','2012-12-12 12:11:05'),(1929,'PAYPAL_ADD_PAYMENT_URL',1,'1','chaine',0,'','2012-12-12 12:11:05'),(1980,'MAIN_PDF_FORMAT',1,'EUA4','chaine',0,'','2012-12-12 19:58:05'),(1981,'MAIN_PROFID1_IN_ADDRESS',1,'0','chaine',0,'','2012-12-12 19:58:05'),(1982,'MAIN_PROFID2_IN_ADDRESS',1,'0','chaine',0,'','2012-12-12 19:58:05'),(1983,'MAIN_PROFID3_IN_ADDRESS',1,'0','chaine',0,'','2012-12-12 19:58:05'),(1984,'MAIN_PROFID4_IN_ADDRESS',1,'0','chaine',0,'','2012-12-12 19:58:05'),(1985,'MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT',1,'0','chaine',0,'','2012-12-12 19:58:05'),(1990,'MAIN_SMS_SENDMODE',1,'ovh','chaine',0,'This is to enable OVH SMS engine','2012-12-17 21:19:01'),(2040,'MAIN_MAIL_SMTP_PORT',1,'465','chaine',0,'','2015-07-19 13:41:06'),(2041,'MAIN_MAIL_SMTP_SERVER',1,'smtp.mail.com','chaine',0,'','2015-07-19 13:41:06'),(2044,'MAIN_MAIL_EMAIL_TLS',1,'1','chaine',0,'','2015-07-19 13:41:06'),(2251,'FCKEDITOR_TEST',1,'Test
\r\n\"\"fdfs','chaine',0,'','2012-12-19 19:12:24'),(2293,'SYSTEMTOOLS_MYSQLDUMP',1,'/usr/bin/mysqldump','chaine',0,'','2012-12-27 02:02:00'),(2305,'MAIN_MODULE_PROPALE',1,'1',NULL,0,NULL,'2013-01-02 20:33:16'),(2307,'MAIN_MODULE_CONTRAT',1,'1',NULL,0,NULL,'2013-01-02 20:33:17'),(2310,'MAIN_MODULE_EXPEDITION',1,'1',NULL,0,NULL,'2013-01-02 20:33:18'),(2315,'MAIN_MODULE_FICHEINTER',1,'1',NULL,0,NULL,'2013-01-02 20:33:21'),(2786,'MAIN_SOAP_DEBUG',1,'1','chaine',1,'','2013-01-13 12:37:21'),(2835,'MAIN_USE_CONNECT_TIMEOUT',1,'10','chaine',0,'','2013-01-16 19:28:50'),(2836,'MAIN_USE_RESPONSE_TIMEOUT',1,'30','chaine',0,'','2013-01-16 19:28:50'),(2837,'MAIN_PROXY_USE',1,'0','chaine',0,'','2013-01-16 19:28:50'),(2838,'MAIN_PROXY_HOST',1,'localhost','chaine',0,'','2013-01-16 19:28:50'),(2839,'MAIN_PROXY_PORT',1,'8080','chaine',0,'','2013-01-16 19:28:50'),(2840,'MAIN_PROXY_USER',1,'aaa','chaine',0,'','2013-01-16 19:28:50'),(2841,'MAIN_PROXY_PASS',1,'bbb','chaine',0,'','2013-01-16 19:28:50'),(2848,'OVHSMS_NICK',1,'BN196-OVH','chaine',0,'','2013-01-16 19:32:36'),(2849,'OVHSMS_PASS',1,'bigone-10','chaine',0,'','2013-01-16 19:32:36'),(2850,'OVHSMS_SOAPURL',1,'https://www.ovh.com/soapi/soapi-re-1.55.wsdl','chaine',0,'','2013-01-16 19:32:36'),(2854,'THEME_ELDY_RGB',1,'bfbf00','chaine',0,'','2013-01-18 10:02:53'),(2855,'THEME_ELDY_ENABLE_PERSONALIZED',1,'0','chaine',0,'','2013-01-18 10:02:55'),(2858,'MAIN_SESSION_TIMEOUT',1,'2000','chaine',0,'','2013-01-19 17:01:53'),(2862,'TICKET_ADDON',1,'mod_ticket_avenc','chaine',0,'Nom du gestionnaire de numerotation des tickets','2013-01-19 17:16:10'),(2866,'MAIN_MODULE_PRODUCT',1,'1',NULL,0,NULL,'2013-01-19 17:16:10'),(2867,'FACSIM_ADDON',1,'mod_facsim_alcoy','chaine',0,'','2013-01-19 17:16:25'),(2868,'POS_SERVICES',1,'0','chaine',0,'','2013-01-19 17:16:51'),(2869,'POS_USE_TICKETS',1,'1','chaine',0,'','2013-01-19 17:16:51'),(2870,'POS_MAX_TTC',1,'100','chaine',0,'','2013-01-19 17:16:51'),(3190,'MAIN_MODULE_HOLIDAY',2,'1',NULL,0,NULL,'2013-02-01 08:52:34'),(3191,'MAIN_MODULE_HOLIDAY_TABS_0',2,'user:+paidholidays:CPTitreMenu:holiday:$user->rights->holiday->write:/holiday/index.php?mainmenu=holiday&id=__ID__','chaine',0,NULL,'2013-02-01 08:52:34'),(3195,'INVOICE_SUPPLIER_ADDON_PDF',1,'canelle','chaine',0,'','2013-02-10 19:50:27'),(3199,'MAIN_FORCE_RELOAD_PAGE',1,'1','chaine',0,NULL,'2013-02-12 16:22:55'),(3217,'MAIN_PDF_TITLE_BACKGROUND_COLOR',1,'240,240,240','chaine',1,'','2013-02-13 15:18:02'),(3223,'OVH_THIRDPARTY_IMPORT',1,'2','chaine',0,'','2013-02-13 16:20:18'),(3241,'COMPANY_USE_SEARCH_TO_SELECT',1,'2','chaine',0,'','2013-02-17 14:33:39'),(3409,'AGENDA_USE_EVENT_TYPE',1,'1','chaine',0,'','2013-02-27 18:12:24'),(3886,'MAIN_REMOVE_INSTALL_WARNING',1,'1','chaine',1,'','2013-03-02 18:32:50'),(4013,'MAIN_DELAY_ACTIONS_TODO',1,'7','chaine',0,'','2013-03-06 08:59:12'),(4014,'MAIN_DELAY_PROPALS_TO_CLOSE',1,'31','chaine',0,'','2013-03-06 08:59:12'),(4015,'MAIN_DELAY_PROPALS_TO_BILL',1,'7','chaine',0,'','2013-03-06 08:59:12'),(4016,'MAIN_DELAY_ORDERS_TO_PROCESS',1,'2','chaine',0,'','2013-03-06 08:59:12'),(4017,'MAIN_DELAY_CUSTOMER_BILLS_UNPAYED',1,'31','chaine',0,'','2013-03-06 08:59:12'),(4018,'MAIN_DELAY_SUPPLIER_ORDERS_TO_PROCESS',1,'7','chaine',0,'','2013-03-06 08:59:12'),(4019,'MAIN_DELAY_SUPPLIER_BILLS_TO_PAY',1,'2','chaine',0,'','2013-03-06 08:59:12'),(4020,'MAIN_DELAY_RUNNING_SERVICES',1,'-15','chaine',0,'','2013-03-06 08:59:12'),(4021,'MAIN_DELAY_TRANSACTIONS_TO_CONCILIATE',1,'62','chaine',0,'','2013-03-06 08:59:13'),(4022,'MAIN_DELAY_MEMBERS',1,'31','chaine',0,'','2013-03-06 08:59:13'),(4023,'MAIN_DISABLE_METEO',1,'0','chaine',0,'','2013-03-06 08:59:13'),(4044,'ADHERENT_VAT_FOR_SUBSCRIPTIONS',1,'0','',0,'','2013-03-06 16:06:38'),(4047,'ADHERENT_BANK_USE',1,'bankviainvoice','',0,'','2013-03-06 16:12:30'),(4049,'PHPSANE_SCANIMAGE',1,'/usr/bin/scanimage','chaine',0,'','2013-03-06 21:54:13'),(4050,'PHPSANE_PNMTOJPEG',1,'/usr/bin/pnmtojpeg','chaine',0,'','2013-03-06 21:54:13'),(4051,'PHPSANE_PNMTOTIFF',1,'/usr/bin/pnmtotiff','chaine',0,'','2013-03-06 21:54:13'),(4052,'PHPSANE_OCR',1,'/usr/bin/gocr','chaine',0,'','2013-03-06 21:54:13'),(4548,'ECM_AUTO_TREE_ENABLED',1,'1','chaine',0,'','2013-03-10 15:57:21'),(4555,'WEBSERVICES_KEY',1,'dolibarrkey','chaine',0,'','2013-03-13 10:19:31'),(4579,'MAIN_MODULE_AGENDA',2,'1',NULL,0,NULL,'2013-03-13 15:29:19'),(4580,'MAIN_AGENDA_ACTIONAUTO_COMPANY_CREATE',2,'1','chaine',0,NULL,'2013-03-13 15:29:19'),(4581,'MAIN_AGENDA_ACTIONAUTO_CONTRACT_VALIDATE',2,'1','chaine',0,NULL,'2013-03-13 15:29:19'),(4582,'MAIN_AGENDA_ACTIONAUTO_PROPAL_VALIDATE',2,'1','chaine',0,NULL,'2013-03-13 15:29:19'),(4583,'MAIN_AGENDA_ACTIONAUTO_PROPAL_SENTBYMAIL',2,'1','chaine',0,NULL,'2013-03-13 15:29:19'),(4584,'MAIN_AGENDA_ACTIONAUTO_ORDER_VALIDATE',2,'1','chaine',0,NULL,'2013-03-13 15:29:19'),(4585,'MAIN_AGENDA_ACTIONAUTO_ORDER_SENTBYMAIL',2,'1','chaine',0,NULL,'2013-03-13 15:29:19'),(4586,'MAIN_AGENDA_ACTIONAUTO_BILL_VALIDATE',2,'1','chaine',0,NULL,'2013-03-13 15:29:19'),(4587,'MAIN_AGENDA_ACTIONAUTO_BILL_PAYED',2,'1','chaine',0,NULL,'2013-03-13 15:29:19'),(4588,'MAIN_AGENDA_ACTIONAUTO_BILL_CANCEL',2,'1','chaine',0,NULL,'2013-03-13 15:29:19'),(4589,'MAIN_AGENDA_ACTIONAUTO_BILL_SENTBYMAIL',2,'1','chaine',0,NULL,'2013-03-13 15:29:19'),(4590,'MAIN_AGENDA_ACTIONAUTO_ORDER_SUPPLIER_VALIDATE',2,'1','chaine',0,NULL,'2013-03-13 15:29:19'),(4591,'MAIN_AGENDA_ACTIONAUTO_BILL_SUPPLIER_VALIDATE',2,'1','chaine',0,NULL,'2013-03-13 15:29:19'),(4592,'MAIN_AGENDA_ACTIONAUTO_SHIPPING_VALIDATE',2,'1','chaine',0,NULL,'2013-03-13 15:29:19'),(4593,'MAIN_AGENDA_ACTIONAUTO_SHIPPING_SENTBYMAIL',2,'1','chaine',0,NULL,'2013-03-13 15:29:19'),(4594,'MAIN_AGENDA_ACTIONAUTO_BILL_UNVALIDATE',2,'1','chaine',0,NULL,'2013-03-13 15:29:19'),(4595,'MAIN_MODULE_GOOGLE',2,'1',NULL,0,NULL,'2013-03-13 15:29:47'),(4596,'MAIN_MODULE_GOOGLE_TABS_0',2,'agenda:+gcal:MenuAgendaGoogle:google@google:$conf->google->enabled && $conf->global->GOOGLE_ENABLE_AGENDA:/google/index.php','chaine',0,NULL,'2013-03-13 15:29:47'),(4597,'MAIN_MODULE_GOOGLE_TABS_1',2,'user:+gsetup:GoogleUserConf:google@google:$conf->google->enabled && $conf->global->GOOGLE_DUPLICATE_INTO_GCAL:/google/admin/google_calsync_user.php?id=__ID__','chaine',0,NULL,'2013-03-13 15:29:47'),(4598,'MAIN_MODULE_GOOGLE_TRIGGERS',2,'1','chaine',0,NULL,'2013-03-13 15:29:47'),(4599,'MAIN_MODULE_GOOGLE_HOOKS',2,'[\"toprightmenu\"]','chaine',0,NULL,'2013-03-13 15:29:47'),(4688,'GOOGLE_ENABLE_AGENDA',2,'1','chaine',0,'','2013-03-13 15:36:29'),(4689,'GOOGLE_AGENDA_NAME1',2,'eldy','chaine',0,'','2013-03-13 15:36:29'),(4690,'GOOGLE_AGENDA_SRC1',2,'eldy10@mail.com','chaine',0,'','2013-03-13 15:36:29'),(4691,'GOOGLE_AGENDA_COLOR1',2,'BE6D00','chaine',0,'','2013-03-13 15:36:29'),(4692,'GOOGLE_AGENDA_COLOR2',2,'7A367A','chaine',0,'','2013-03-13 15:36:29'),(4693,'GOOGLE_AGENDA_COLOR3',2,'7A367A','chaine',0,'','2013-03-13 15:36:29'),(4694,'GOOGLE_AGENDA_COLOR4',2,'7A367A','chaine',0,'','2013-03-13 15:36:29'),(4695,'GOOGLE_AGENDA_COLOR5',2,'7A367A','chaine',0,'','2013-03-13 15:36:29'),(4696,'GOOGLE_AGENDA_TIMEZONE',2,'Europe/Paris','chaine',0,'','2013-03-13 15:36:29'),(4697,'GOOGLE_AGENDA_NB',2,'5','chaine',0,'','2013-03-13 15:36:29'),(4698,'MAIN_DISABLE_ALL_MAILS',1,'0','chaine',0,'','2013-03-13 17:22:24'),(4699,'MAIN_MAIL_SENDMODE',1,'mail','chaine',0,'','2015-07-19 13:41:06'),(4700,'MAIN_MAIL_SMTPS_ID',1,'eldy10@mail.com','chaine',0,'','2015-07-19 13:41:06'),(4701,'MAIN_MAIL_SMTPS_PW',1,'bidonge','chaine',0,'','2015-07-19 13:41:06'),(4711,'GOOGLE_ENABLE_AGENDA',1,'1','chaine',0,'','2013-03-13 19:37:38'),(4712,'GOOGLE_AGENDA_NAME1',1,'asso master','chaine',0,'','2013-03-13 19:37:38'),(4713,'GOOGLE_AGENDA_SRC1',1,'assodolibarr@mail.com','chaine',0,'','2013-03-13 19:37:38'),(4714,'GOOGLE_AGENDA_COLOR1',1,'1B887A','chaine',0,'','2013-03-13 19:37:38'),(4715,'GOOGLE_AGENDA_COLOR2',1,'7A367A','chaine',0,'','2013-03-13 19:37:38'),(4716,'GOOGLE_AGENDA_COLOR3',1,'7A367A','chaine',0,'','2013-03-13 19:37:38'),(4717,'GOOGLE_AGENDA_COLOR4',1,'7A367A','chaine',0,'','2013-03-13 19:37:38'),(4718,'GOOGLE_AGENDA_COLOR5',1,'7A367A','chaine',0,'','2013-03-13 19:37:38'),(4719,'GOOGLE_AGENDA_TIMEZONE',1,'Europe/Paris','chaine',0,'','2013-03-13 19:37:38'),(4720,'GOOGLE_AGENDA_NB',1,'5','chaine',0,'','2013-03-13 19:37:38'),(4725,'SOCIETE_CODECLIENT_ADDON',2,'mod_codeclient_leopard','chaine',0,'Module to control third parties codes','2013-03-13 20:21:35'),(4726,'SOCIETE_CODECOMPTA_ADDON',2,'mod_codecompta_panicum','chaine',0,'Module to control third parties codes','2013-03-13 20:21:35'),(4727,'SOCIETE_FISCAL_MONTH_START',2,'','chaine',0,'Mettre le numero du mois du debut d\\\'annee fiscale, ex: 9 pour septembre','2013-03-13 20:21:35'),(4728,'MAIN_SEARCHFORM_SOCIETE',2,'1','yesno',0,'Show form for quick company search','2013-03-13 20:21:35'),(4729,'MAIN_SEARCHFORM_CONTACT',2,'1','yesno',0,'Show form for quick contact search','2013-03-13 20:21:35'),(4730,'COMPANY_ADDON_PDF_ODT_PATH',2,'DOL_DATA_ROOT/doctemplates/thirdparties','chaine',0,NULL,'2013-03-13 20:21:35'),(4743,'MAIN_MODULE_CLICKTODIAL',2,'1',NULL,0,NULL,'2013-03-13 20:30:28'),(4744,'MAIN_MODULE_NOTIFICATION',2,'1',NULL,0,NULL,'2013-03-13 20:30:34'),(4745,'MAIN_MODULE_WEBSERVICES',2,'1',NULL,0,NULL,'2013-03-13 20:30:41'),(4746,'MAIN_MODULE_PROPALE',2,'1',NULL,0,NULL,'2013-03-13 20:32:38'),(4747,'PROPALE_ADDON_PDF',2,'azur','chaine',0,'Nom du gestionnaire de generation des propales en PDF','2013-03-13 20:32:38'),(4748,'PROPALE_ADDON',2,'mod_propale_marbre','chaine',0,'Nom du gestionnaire de numerotation des propales','2013-03-13 20:32:38'),(4749,'PROPALE_VALIDITY_DURATION',2,'15','chaine',0,'Duration of validity of business proposals','2013-03-13 20:32:38'),(4750,'PROPALE_ADDON_PDF_ODT_PATH',2,'DOL_DATA_ROOT/doctemplates/proposals','chaine',0,NULL,'2013-03-13 20:32:38'),(4752,'MAIN_MODULE_TAX',2,'1',NULL,0,NULL,'2013-03-13 20:32:47'),(4753,'MAIN_MODULE_DON',2,'1',NULL,0,NULL,'2013-03-13 20:32:54'),(4754,'DON_ADDON_MODEL',2,'html_cerfafr','chaine',0,'Nom du gestionnaire de generation de recu de dons','2013-03-13 20:32:54'),(4755,'POS_USE_TICKETS',2,'1','chaine',0,'','2013-03-13 20:33:09'),(4756,'POS_MAX_TTC',2,'100','chaine',0,'','2013-03-13 20:33:09'),(4757,'MAIN_MODULE_POS',2,'1',NULL,0,NULL,'2013-03-13 20:33:09'),(4758,'TICKET_ADDON',2,'mod_ticket_avenc','chaine',0,'Nom du gestionnaire de numerotation des tickets','2013-03-13 20:33:09'),(4759,'MAIN_MODULE_BANQUE',2,'1',NULL,0,NULL,'2013-03-13 20:33:09'),(4760,'MAIN_MODULE_FACTURE',2,'1',NULL,0,NULL,'2013-03-13 20:33:09'),(4761,'FACTURE_ADDON_PDF',2,'crabe','chaine',0,'Name of PDF model of invoice','2013-03-13 20:33:09'),(4762,'FACTURE_ADDON',2,'mod_facture_terre','chaine',0,'Name of numbering numerotation rules of invoice','2013-03-13 20:33:09'),(4763,'FACTURE_ADDON_PDF_ODT_PATH',2,'DOL_DATA_ROOT/doctemplates/invoices','chaine',0,NULL,'2013-03-13 20:33:09'),(4764,'MAIN_MODULE_SOCIETE',2,'1',NULL,0,NULL,'2013-03-13 20:33:09'),(4765,'MAIN_MODULE_PRODUCT',2,'1',NULL,0,NULL,'2013-03-13 20:33:09'),(4766,'PRODUCT_CODEPRODUCT_ADDON',2,'mod_codeproduct_leopard','chaine',0,'Module to control product codes','2013-03-13 20:33:09'),(4767,'MAIN_SEARCHFORM_PRODUITSERVICE',2,'1','yesno',0,'Show form for quick product search','2013-03-13 20:33:09'),(4772,'FACSIM_ADDON',2,'mod_facsim_alcoy','chaine',0,'','2013-03-13 20:33:32'),(4773,'MAIN_MODULE_MAILING',2,'1',NULL,0,NULL,'2013-03-13 20:33:37'),(4774,'MAIN_MODULE_OPENSURVEY',2,'1',NULL,0,NULL,'2013-03-13 20:33:42'),(4782,'AGENDA_USE_EVENT_TYPE',2,'1','chaine',0,'','2013-03-13 20:53:36'),(4884,'AGENDA_DISABLE_EXT',2,'1','chaine',0,'','2013-03-13 22:03:40'),(4919,'MAIN_MODULE_COMPTABILITE',1,'1',NULL,0,NULL,'2013-03-20 20:04:28'),(4922,'MAIN_MODULE_BANQUE',1,'1',NULL,0,NULL,'2013-03-20 20:04:28'),(4928,'COMMANDE_SUPPLIER_ADDON_NUMBER',1,'mod_commande_fournisseur_muguet','chaine',0,'Nom du gestionnaire de numerotation des commandes fournisseur','2013-03-22 09:24:29'),(4929,'INVOICE_SUPPLIER_ADDON_NUMBER',1,'mod_facture_fournisseur_cactus','chaine',0,'Nom du gestionnaire de numerotation des factures fournisseur','2013-03-22 09:24:29'),(5001,'MAIN_CRON_KEY',0,'bc54582fe30d5d4a830c6f582ec28810','chaine',0,'','2013-03-23 17:54:53'),(5009,'CRON_KEY',0,'2c2e755c20be2014098f629865598006','chaine',0,'','2013-03-23 18:06:24'),(5075,'MAIN_MENU_STANDARD',1,'eldy_menu.php','chaine',0,'','2013-03-24 02:51:13'),(5076,'MAIN_MENU_SMARTPHONE',1,'eldy_menu.php','chaine',0,'','2013-03-24 02:51:13'),(5077,'MAIN_MENUFRONT_STANDARD',1,'eldy_menu.php','chaine',0,'','2013-03-24 02:51:13'),(5078,'MAIN_MENUFRONT_SMARTPHONE',1,'eldy_menu.php','chaine',0,'','2013-03-24 02:51:13'),(5137,'MAIN_AGENDA_ACTIONAUTO_BILL_UNVALIDATE',1,'1','chaine',0,NULL,'2013-09-08 23:06:08'),(5139,'SOCIETE_ADD_REF_IN_LIST',1,'','yesno',0,'Display customer ref into select list','2013-09-08 23:06:08'),(5150,'PROJECT_TASK_ADDON_PDF',1,'','chaine',0,'Name of PDF/ODT tasks manager class','2013-09-08 23:06:14'),(5151,'PROJECT_TASK_ADDON',1,'mod_task_simple','chaine',0,'Name of Numbering Rule task manager class','2013-09-08 23:06:14'),(5152,'PROJECT_TASK_ADDON_PDF_ODT_PATH',1,'DOL_DATA_ROOT/doctemplates/tasks','chaine',0,'','2013-09-08 23:06:14'),(5164,'MAIN_AGENDA_ACTIONAUTO_COMPANY_SENTBYMAIL',1,'1','chaine',0,NULL,'2013-11-06 23:35:12'),(5195,'GOOGLE_DUPLICATE_INTO_THIRDPARTIES',1,'1','chaine',0,'','2013-11-07 00:02:34'),(5196,'GOOGLE_DUPLICATE_INTO_CONTACTS',1,'0','chaine',0,'','2013-11-07 00:02:34'),(5197,'GOOGLE_DUPLICATE_INTO_MEMBERS',1,'0','chaine',0,'','2013-11-07 00:02:34'),(5198,'GOOGLE_CONTACT_LOGIN',1,'eldy10@mail.com','chaine',0,'','2013-11-07 00:02:34'),(5199,'GOOGLE_CONTACT_PASSWORD',1,'bidonge','chaine',0,'','2013-11-07 00:02:34'),(5200,'GOOGLE_TAG_PREFIX',1,'Dolibarr (Thirdparties)','chaine',0,'','2013-11-07 00:02:34'),(5201,'GOOGLE_TAG_PREFIX_CONTACTS',1,'Dolibarr (Contacts/Addresses)','chaine',0,'','2013-11-07 00:02:34'),(5202,'GOOGLE_TAG_PREFIX_MEMBERS',1,'Dolibarr (Members)','chaine',0,'','2013-11-07 00:02:34'),(5203,'MODULE_GOOGLE_DEBUG',1,'1','chaine',1,'','2013-11-07 00:16:31'),(5235,'MAIN_FEATURES_LEVEL',0,'0','chaine',1,'Level of features to show (0=stable only, 1=stable+experimental, 2=stable+experimental+development','2014-03-02 15:22:27'),(5237,'MAIN_MODULE_GRAVATAR',1,'1',NULL,0,NULL,'2014-03-02 15:37:37'),(5239,'BOOKMARKS_SHOW_IN_MENU',1,'10','chaine',0,'','2014-03-02 15:42:26'),(5271,'DONATION_ART200',1,'','yesno',0,'Option Française - Eligibilité Art200 du CGI','2014-12-21 12:51:28'),(5272,'DONATION_ART238',1,'','yesno',0,'Option Française - Eligibilité Art238 bis du CGI','2014-12-21 12:51:28'),(5273,'DONATION_ART885',1,'','yesno',0,'Option Française - Eligibilité Art885-0 V bis du CGI','2014-12-21 12:51:28'),(5274,'DONATION_MESSAGE',1,'Thank you','chaine',0,'Message affiché sur le récépissé de versements ou dons','2014-12-21 12:51:28'),(5278,'PRODUCT_USE_OLD_PATH_FOR_PHOTO',0,'1','chaine',1,'Use old path for products images','2015-07-19 13:40:55'),(5282,'MAIN_AGENDA_ACTIONAUTO_BILL_SUPPLIER_UNVALIDATE',1,'1','chaine',0,NULL,'2015-07-19 13:41:20'),(5288,'DONATION_ACCOUNTINGACCOUNT',1,'7581','chaine',0,'Compte comptable de remise des versements ou dons','2015-07-19 13:41:21'),(5317,'INVOICE_CAN_ALWAYS_BE_REMOVED',1,'1','chaine',1,'','2015-10-03 09:25:30'),(5318,'MAIN_INFO_SOCIETE_COUNTRY',1,'1:FR:France','chaine',0,'','2015-10-03 10:11:01'),(5319,'MAIN_INFO_SOCIETE_NOM',1,'MyBigCompany','chaine',0,'','2015-10-03 10:11:01'),(5320,'MAIN_INFO_SOCIETE_ADDRESS',1,'21 Jump street','chaine',0,'','2015-10-03 10:11:01'),(5321,'MAIN_INFO_SOCIETE_TOWN',1,'MyTown','chaine',0,'','2015-10-03 10:11:01'),(5322,'MAIN_INFO_SOCIETE_ZIP',1,'75500','chaine',0,'','2015-10-03 10:11:01'),(5323,'MAIN_INFO_SOCIETE_STATE',1,'0','chaine',0,'','2015-10-03 10:11:01'),(5324,'MAIN_MONNAIE',1,'EUR','chaine',0,'','2015-10-03 10:11:01'),(5325,'MAIN_INFO_SOCIETE_TEL',1,'09123123','chaine',0,'','2015-10-03 10:11:01'),(5326,'MAIN_INFO_SOCIETE_FAX',1,'09123124','chaine',0,'','2015-10-03 10:11:01'),(5327,'MAIN_INFO_SOCIETE_MAIL',1,'myemail@mybigcompany.com','chaine',0,'','2015-10-03 10:11:01'),(5328,'MAIN_INFO_SOCIETE_WEB',1,'http://www.dolibarr.org','chaine',0,'','2015-10-03 10:11:01'),(5329,'MAIN_INFO_SOCIETE_NOTE',1,'This is note about my company','chaine',0,'','2015-10-03 10:11:01'),(5330,'MAIN_INFO_SOCIETE_LOGO',1,'mybigcompany.png','chaine',0,'','2015-10-03 10:11:01'),(5331,'MAIN_INFO_SOCIETE_LOGO_SMALL',1,'mybigcompany_small.png','chaine',0,'','2015-10-03 10:11:01'),(5332,'MAIN_INFO_SOCIETE_LOGO_MINI',1,'mybigcompany_mini.png','chaine',0,'','2015-10-03 10:11:01'),(5333,'MAIN_INFO_CAPITAL',1,'10000','chaine',0,'','2015-10-03 10:11:01'),(5334,'MAIN_INFO_SOCIETE_FORME_JURIDIQUE',1,'0','chaine',0,'','2015-10-03 10:11:01'),(5335,'MAIN_INFO_TVAINTRA',1,'FR1234567','chaine',0,'','2015-10-03 10:11:01'),(5336,'SOCIETE_FISCAL_MONTH_START',1,'1','chaine',0,'','2015-10-03 10:11:01'),(5337,'FACTURE_TVAOPTION',1,'1','chaine',0,'','2015-10-03 10:11:01'),(5338,'MAIN_LANG_DEFAULT',1,'en_US','chaine',0,'','2015-10-03 10:11:33'),(5339,'MAIN_MULTILANGS',1,'1','chaine',0,'','2015-10-03 10:11:33'),(5340,'MAIN_SIZE_LISTE_LIMIT',1,'25','chaine',0,'','2015-10-03 10:11:33'),(5341,'MAIN_DISABLE_JAVASCRIPT',1,'0','chaine',0,'','2015-10-03 10:11:33'),(5342,'MAIN_BUTTON_HIDE_UNAUTHORIZED',1,'0','chaine',0,'','2015-10-03 10:11:33'),(5343,'MAIN_START_WEEK',1,'1','chaine',0,'','2015-10-03 10:11:33'),(5344,'MAIN_DEFAULT_WORKING_DAYS',1,'1-5','chaine',0,'','2015-10-03 10:11:33'),(5345,'MAIN_DEFAULT_WORKING_HOURS',1,'9-18','chaine',0,'','2015-10-03 10:11:33'),(5346,'MAIN_SHOW_LOGO',1,'1','chaine',0,'','2015-10-03 10:11:33'),(5347,'MAIN_FIRSTNAME_NAME_POSITION',1,'0','chaine',0,'','2015-10-03 10:11:33'),(5348,'MAIN_THEME',1,'eldy','chaine',0,'','2015-10-03 10:11:33'),(5349,'MAIN_SEARCHFORM_CONTACT',1,'1','chaine',0,'','2015-10-03 10:11:33'),(5350,'MAIN_SEARCHFORM_SOCIETE',1,'1','chaine',0,'','2015-10-03 10:11:33'),(5351,'MAIN_SEARCHFORM_PRODUITSERVICE',1,'1','chaine',0,'','2015-10-03 10:11:33'),(5352,'MAIN_SEARCHFORM_PRODUITSERVICE_SUPPLIER',1,'0','chaine',0,'','2015-10-03 10:11:33'),(5353,'MAIN_SEARCHFORM_ADHERENT',1,'1','chaine',0,'','2015-10-03 10:11:33'),(5354,'MAIN_SEARCHFORM_PROJECT',1,'0','chaine',0,'','2015-10-03 10:11:33'),(5355,'MAIN_HELPCENTER_DISABLELINK',0,'1','chaine',0,'','2015-10-03 10:11:33'),(5356,'MAIN_HOME',1,'__(NoteSomeFeaturesAreDisabled)__
\r\n
\r\n__(SomeTranslationAreUncomplete)__
','chaine',0,'','2015-10-03 10:11:33'),(5357,'MAIN_HELP_DISABLELINK',0,'0','chaine',0,'','2015-10-03 10:11:33'),(5358,'MAIN_BUGTRACK_ENABLELINK',1,'0','chaine',0,'','2015-10-03 10:11:33'),(5359,'THEME_ELDY_USE_HOVER',1,'1','chaine',0,'','2015-10-03 10:11:33'),(5360,'MAIN_MODULE_AGENDA',1,'1',NULL,0,NULL,'2015-10-29 18:14:51'),(5361,'MAIN_MODULE_BARCODE',1,'1',NULL,0,NULL,'2015-10-29 18:14:51'),(5362,'MAIN_MODULE_CRON',1,'1',NULL,0,NULL,'2015-10-29 18:14:51'),(5363,'MAIN_MODULE_COMMANDE',1,'1',NULL,0,NULL,'2015-10-29 18:14:51'),(5364,'MAIN_MODULE_DEPLACEMENT',1,'1',NULL,0,NULL,'2015-10-29 18:14:51'),(5365,'MAIN_MODULE_DON',1,'1',NULL,0,NULL,'2015-10-29 18:14:51'),(5366,'MAIN_MODULE_ECM',1,'1',NULL,0,NULL,'2015-10-29 18:14:51'),(5367,'MAIN_MODULE_FACTURE',1,'1',NULL,0,NULL,'2015-10-29 18:14:51'),(5368,'MAIN_MODULE_FOURNISSEUR',1,'1',NULL,0,NULL,'2015-10-29 18:14:51'),(5369,'MAIN_MODULE_HOLIDAY',1,'1',NULL,0,NULL,'2015-10-29 18:14:51'),(5370,'MAIN_MODULE_HOLIDAY_TABS_0',1,'user:+paidholidays:CPTitreMenu:holiday:$user->rights->holiday->read:/holiday/list.php?mainmenu=holiday&id=__ID__','chaine',0,NULL,'2015-10-29 18:14:51'),(5371,'MAIN_MODULE_OPENSURVEY',1,'1',NULL,0,NULL,'2015-10-29 18:14:52'),(5372,'MAIN_MODULE_SOCIETE',1,'1',NULL,0,NULL,'2015-10-29 18:14:52'),(5373,'MAIN_MODULE_SERVICE',1,'1',NULL,0,NULL,'2015-10-29 18:14:52'),(5374,'MAIN_MODULE_USER',0,'1',NULL,0,NULL,'2015-10-29 18:14:52'),(5375,'MAIN_VERSION_LAST_UPGRADE',0,'3.8.2','chaine',0,'Dolibarr version for last upgrade','2015-10-29 18:14:55'); /*!40000 ALTER TABLE `llx_const` ENABLE KEYS */; UNLOCK TABLES; @@ -3614,7 +3614,7 @@ CREATE TABLE `llx_document_model` ( `description` text, PRIMARY KEY (`rowid`), UNIQUE KEY `uk_document_model` (`nom`,`type`,`entity`) -) ENGINE=InnoDB AUTO_INCREMENT=236 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=240 DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -3623,7 +3623,7 @@ CREATE TABLE `llx_document_model` ( LOCK TABLES `llx_document_model` WRITE; /*!40000 ALTER TABLE `llx_document_model` DISABLE KEYS */; -INSERT INTO `llx_document_model` VALUES (9,'merou',1,'shipping',NULL,NULL),(15,'fsfe.fr.php',1,'donation',NULL,NULL),(21,'baleine',1,'project',NULL,NULL),(174,'azur',1,'propal',NULL,NULL),(175,'rouget',1,'shipping',NULL,NULL),(176,'typhon',1,'delivery',NULL,NULL),(178,'soleil',1,'ficheinter',NULL,NULL),(181,'generic_invoice_odt',1,'invoice','ODT templates','FACTURE_ADDON_PDF_ODT_PATH'),(193,'canelle2',1,'invoice_supplier','canelle2',NULL),(195,'canelle',1,'invoice_supplier','canelle',NULL),(198,'azur',2,'propal',NULL,NULL),(199,'html_cerfafr',2,'donation',NULL,NULL),(200,'crabe',2,'invoice',NULL,NULL),(201,'generic_odt',1,'company','ODT templates','COMPANY_ADDON_PDF_ODT_PATH'),(232,'einstein',1,'order',NULL,NULL),(233,'html_cerfafr',1,'donation',NULL,NULL),(234,'crabe',1,'invoice',NULL,NULL),(235,'muscadet',1,'order_supplier',NULL,NULL); +INSERT INTO `llx_document_model` VALUES (9,'merou',1,'shipping',NULL,NULL),(15,'fsfe.fr.php',1,'donation',NULL,NULL),(21,'baleine',1,'project',NULL,NULL),(174,'azur',1,'propal',NULL,NULL),(175,'rouget',1,'shipping',NULL,NULL),(176,'typhon',1,'delivery',NULL,NULL),(178,'soleil',1,'ficheinter',NULL,NULL),(181,'generic_invoice_odt',1,'invoice','ODT templates','FACTURE_ADDON_PDF_ODT_PATH'),(193,'canelle2',1,'invoice_supplier','canelle2',NULL),(195,'canelle',1,'invoice_supplier','canelle',NULL),(198,'azur',2,'propal',NULL,NULL),(199,'html_cerfafr',2,'donation',NULL,NULL),(200,'crabe',2,'invoice',NULL,NULL),(201,'generic_odt',1,'company','ODT templates','COMPANY_ADDON_PDF_ODT_PATH'),(236,'einstein',1,'order',NULL,NULL),(237,'html_cerfafr',1,'donation',NULL,NULL),(238,'crabe',1,'invoice',NULL,NULL),(239,'muscadet',1,'order_supplier',NULL,NULL); /*!40000 ALTER TABLE `llx_document_model` ENABLE KEYS */; UNLOCK TABLES; @@ -4075,7 +4075,7 @@ CREATE TABLE `llx_entrepot` ( `import_key` varchar(14) DEFAULT NULL, PRIMARY KEY (`rowid`), UNIQUE KEY `uk_entrepot_label` (`label`,`entity`) -) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=18 DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -4084,7 +4084,7 @@ CREATE TABLE `llx_entrepot` ( LOCK TABLES `llx_entrepot` WRITE; /*!40000 ALTER TABLE `llx_entrepot` DISABLE KEYS */; -INSERT INTO `llx_entrepot` VALUES (1,'2010-07-09 00:31:22','2010-07-08 22:40:36','WAREHOUSEHOUSTON',1,'Warehouse located at Houston','Warehouse houston','','','Houston',NULL,11,1,NULL,1,NULL),(2,'2010-07-09 00:41:03','2010-07-08 22:41:03','WAREHOUSEPARIS',1,'
','Warehouse Paris','','75000','Paris',NULL,1,1,NULL,1,NULL),(3,'2010-07-11 16:18:59','2010-07-11 14:18:59','Stock personnel Dupont',1,'Cet entrepôt représente le stock personnel de Alain Dupont','','','','',NULL,0,1,NULL,1,NULL),(4,'2013-01-23 17:52:27','2013-01-23 16:52:27','Stock personnel aaa',1,'Cet entrepôt représente le stock personnel de aaa','','','','',NULL,81,1,NULL,1,NULL),(5,'2013-01-23 17:52:37','2013-01-23 16:52:37','Stock personnel bbb',1,'Cet entrepôt représente le stock personnel de bbb','','','','',NULL,81,1,NULL,1,NULL),(6,'2013-02-16 20:22:40','2013-02-16 19:22:40','Stock personnel aaab',1,'Cet entrepôt représente le stock personnel de aaab','','','','',NULL,1,1,NULL,1,NULL),(7,'2013-02-16 20:48:15','2013-02-16 19:48:15','Stock personnel zzz',1,'Cet entrepôt représente le stock personnel de zzz','','','','',NULL,1,1,NULL,1,NULL),(8,'2013-02-16 20:50:07','2013-02-16 19:50:07','Stock personnel zzzg',1,'Cet entrepôt représente le stock personnel de zzzg','','','','',NULL,1,1,NULL,1,NULL),(9,'2015-10-03 11:47:41','2015-10-03 09:47:41','Personal stock Marie Curie',1,'This warehouse represents personal stock of Marie Curie','','','','',NULL,1,1,NULL,1,NULL); +INSERT INTO `llx_entrepot` VALUES (1,'2010-07-09 00:31:22','2010-07-08 22:40:36','WAREHOUSEHOUSTON',1,'Warehouse located at Houston','Warehouse houston','','','Houston',NULL,11,1,NULL,1,NULL),(2,'2010-07-09 00:41:03','2010-07-08 22:41:03','WAREHOUSEPARIS',1,'
','Warehouse Paris','','75000','Paris',NULL,1,1,NULL,1,NULL),(3,'2010-07-11 16:18:59','2010-07-11 14:18:59','Stock personnel Dupont',1,'Cet entrepôt représente le stock personnel de Alain Dupont','','','','',NULL,0,1,NULL,1,NULL),(4,'2013-01-23 17:52:27','2013-01-23 16:52:27','Stock personnel aaa',1,'Cet entrepôt représente le stock personnel de aaa','','','','',NULL,81,1,NULL,1,NULL),(5,'2013-01-23 17:52:37','2013-01-23 16:52:37','Stock personnel bbb',1,'Cet entrepôt représente le stock personnel de bbb','','','','',NULL,81,1,NULL,1,NULL),(6,'2013-02-16 20:22:40','2013-02-16 19:22:40','Stock personnel aaab',1,'Cet entrepôt représente le stock personnel de aaab','','','','',NULL,1,1,NULL,1,NULL),(7,'2013-02-16 20:48:15','2013-02-16 19:48:15','Stock personnel zzz',1,'Cet entrepôt représente le stock personnel de zzz','','','','',NULL,1,1,NULL,1,NULL),(8,'2013-02-16 20:50:07','2013-02-16 19:50:07','Stock personnel zzzg',1,'Cet entrepôt représente le stock personnel de zzzg','','','','',NULL,1,1,NULL,1,NULL),(9,'2015-10-03 11:47:41','2015-10-03 09:47:41','Personal stock Marie Curie',1,'This warehouse represents personal stock of Marie Curie','','','','',NULL,1,1,NULL,1,NULL),(10,'2015-10-05 09:07:52','2015-10-05 07:07:52','Personal stock Alex Theceo',1,'This warehouse represents personal stock of Alex Theceo','','','','',NULL,1,1,NULL,1,NULL),(11,'2015-10-05 09:09:46','2015-10-05 07:09:46','Personal stock Alice theceo',1,'This warehouse represents personal stock of Alice theceo','','','','',NULL,1,1,NULL,1,NULL),(12,'2015-10-05 21:29:35','2015-10-05 19:29:35','Personal stock Charly Commery',1,'This warehouse represents personal stock of Charly Commery','','','','',NULL,1,1,NULL,11,NULL),(13,'2015-10-05 21:33:33','2015-10-05 19:33:33','Personal stock Sam Scientol',1,'This warehouse represents personal stock of Sam Scientol','','','','',NULL,1,1,NULL,11,NULL),(14,'2015-10-05 21:45:43','2015-10-05 19:45:43','Personal stock aaa',1,'This warehouse represents personal stock of aaa','','','','',NULL,1,1,NULL,12,NULL),(15,'2015-10-05 22:47:52','2015-10-05 20:47:52','Personal stock cc1',1,'This warehouse represents personal stock of cc1','','','','',NULL,1,1,NULL,12,NULL),(16,'2015-10-05 22:48:39','2015-10-05 20:48:39','Personal stock cc2',1,'This warehouse represents personal stock of cc2','','','','',NULL,1,1,NULL,11,NULL),(17,'2015-10-05 23:13:00','2015-10-05 21:13:00','Personal stock aaa aaa',1,'This warehouse represents personal stock of aaa aaa','','','','',NULL,1,1,NULL,12,NULL); /*!40000 ALTER TABLE `llx_entrepot` ENABLE KEYS */; UNLOCK TABLES; @@ -4133,7 +4133,7 @@ CREATE TABLE `llx_events` ( `fk_object` int(11) DEFAULT NULL, PRIMARY KEY (`rowid`), KEY `idx_events_dateevent` (`dateevent`) -) ENGINE=InnoDB AUTO_INCREMENT=591 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=690 DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -4142,7 +4142,7 @@ CREATE TABLE `llx_events` ( LOCK TABLES `llx_events` WRITE; /*!40000 ALTER TABLE `llx_events` DISABLE KEYS */; -INSERT INTO `llx_events` VALUES (30,'2011-07-18 18:23:06','USER_LOGOUT',1,'2011-07-18 20:23:06',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(31,'2011-07-18 18:23:12','USER_LOGIN_FAILED',1,'2011-07-18 20:23:12',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(32,'2011-07-18 18:23:17','USER_LOGIN',1,'2011-07-18 20:23:17',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(33,'2011-07-18 20:10:51','USER_LOGIN_FAILED',1,'2011-07-18 22:10:51',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(34,'2011-07-18 20:10:55','USER_LOGIN',1,'2011-07-18 22:10:55',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(35,'2011-07-18 21:18:57','USER_LOGIN',1,'2011-07-18 23:18:57',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(36,'2011-07-20 10:34:10','USER_LOGIN',1,'2011-07-20 12:34:10',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(37,'2011-07-20 12:36:44','USER_LOGIN',1,'2011-07-20 14:36:44',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(38,'2011-07-20 13:20:51','USER_LOGIN_FAILED',1,'2011-07-20 15:20:51',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(39,'2011-07-20 13:20:54','USER_LOGIN',1,'2011-07-20 15:20:54',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(40,'2011-07-20 15:03:46','USER_LOGIN_FAILED',1,'2011-07-20 17:03:46',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(41,'2011-07-20 15:03:55','USER_LOGIN',1,'2011-07-20 17:03:55',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(42,'2011-07-20 18:05:05','USER_LOGIN_FAILED',1,'2011-07-20 20:05:05',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(43,'2011-07-20 18:05:08','USER_LOGIN',1,'2011-07-20 20:05:08',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(44,'2011-07-20 21:08:53','USER_LOGIN_FAILED',1,'2011-07-20 23:08:53',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(45,'2011-07-20 21:08:56','USER_LOGIN',1,'2011-07-20 23:08:56',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(46,'2011-07-21 01:26:12','USER_LOGIN',1,'2011-07-21 03:26:12',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(47,'2011-07-21 22:35:45','USER_LOGIN_FAILED',1,'2011-07-22 00:35:45',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(48,'2011-07-21 22:35:49','USER_LOGIN',1,'2011-07-22 00:35:49',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(49,'2011-07-26 23:09:47','USER_LOGIN_FAILED',1,'2011-07-27 01:09:47',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(50,'2011-07-26 23:09:50','USER_LOGIN',1,'2011-07-27 01:09:50',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(51,'2011-07-27 17:02:27','USER_LOGIN_FAILED',1,'2011-07-27 19:02:27',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(52,'2011-07-27 17:02:32','USER_LOGIN',1,'2011-07-27 19:02:32',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(53,'2011-07-27 23:33:37','USER_LOGIN_FAILED',1,'2011-07-28 01:33:37',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(54,'2011-07-27 23:33:41','USER_LOGIN',1,'2011-07-28 01:33:41',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(55,'2011-07-28 18:20:36','USER_LOGIN_FAILED',1,'2011-07-28 20:20:36',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(56,'2011-07-28 18:20:38','USER_LOGIN',1,'2011-07-28 20:20:38',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(57,'2011-07-28 20:13:30','USER_LOGIN_FAILED',1,'2011-07-28 22:13:30',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(58,'2011-07-28 20:13:34','USER_LOGIN',1,'2011-07-28 22:13:34',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(59,'2011-07-28 20:22:51','USER_LOGIN',1,'2011-07-28 22:22:51',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(60,'2011-07-28 23:05:06','USER_LOGIN',1,'2011-07-29 01:05:06',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(61,'2011-07-29 20:15:50','USER_LOGIN_FAILED',1,'2011-07-29 22:15:50',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(62,'2011-07-29 20:15:53','USER_LOGIN',1,'2011-07-29 22:15:53',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(68,'2011-07-29 20:51:01','USER_LOGOUT',1,'2011-07-29 22:51:01',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(69,'2011-07-29 20:51:05','USER_LOGIN',1,'2011-07-29 22:51:05',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(70,'2011-07-30 08:46:20','USER_LOGIN_FAILED',1,'2011-07-30 10:46:20',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(71,'2011-07-30 08:46:38','USER_LOGIN_FAILED',1,'2011-07-30 10:46:38',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(72,'2011-07-30 08:46:42','USER_LOGIN',1,'2011-07-30 10:46:42',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(73,'2011-07-30 10:05:12','USER_LOGIN_FAILED',1,'2011-07-30 12:05:12',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(74,'2011-07-30 10:05:15','USER_LOGIN',1,'2011-07-30 12:05:15',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(75,'2011-07-30 12:15:46','USER_LOGIN',1,'2011-07-30 14:15:46',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(76,'2011-07-31 22:19:30','USER_LOGIN',1,'2011-08-01 00:19:30',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(77,'2011-07-31 23:32:52','USER_LOGIN',1,'2011-08-01 01:32:52',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(78,'2011-08-01 01:24:50','USER_LOGIN_FAILED',1,'2011-08-01 03:24:50',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(79,'2011-08-01 01:24:54','USER_LOGIN',1,'2011-08-01 03:24:54',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(80,'2011-08-01 19:31:36','USER_LOGIN_FAILED',1,'2011-08-01 21:31:35',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(81,'2011-08-01 19:31:39','USER_LOGIN',1,'2011-08-01 21:31:39',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(82,'2011-08-01 20:01:36','USER_LOGIN',1,'2011-08-01 22:01:36',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(83,'2011-08-01 20:52:54','USER_LOGIN_FAILED',1,'2011-08-01 22:52:54',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(84,'2011-08-01 20:52:58','USER_LOGIN',1,'2011-08-01 22:52:58',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(85,'2011-08-01 21:17:28','USER_LOGIN_FAILED',1,'2011-08-01 23:17:28',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(86,'2011-08-01 21:17:31','USER_LOGIN',1,'2011-08-01 23:17:31',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(87,'2011-08-04 11:55:17','USER_LOGIN',1,'2011-08-04 13:55:17',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(88,'2011-08-04 20:19:03','USER_LOGIN_FAILED',1,'2011-08-04 22:19:03',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(89,'2011-08-04 20:19:07','USER_LOGIN',1,'2011-08-04 22:19:07',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(90,'2011-08-05 17:51:42','USER_LOGIN_FAILED',1,'2011-08-05 19:51:42',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(91,'2011-08-05 17:51:47','USER_LOGIN',1,'2011-08-05 19:51:47',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(92,'2011-08-05 17:56:03','USER_LOGIN',1,'2011-08-05 19:56:03',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(93,'2011-08-05 17:59:10','USER_LOGIN',1,'2011-08-05 19:59:10',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.100 Safari/534.30',NULL),(94,'2011-08-05 18:01:58','USER_LOGIN',1,'2011-08-05 20:01:58',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.100 Safari/534.30',NULL),(95,'2011-08-05 19:59:56','USER_LOGIN',1,'2011-08-05 21:59:56',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(96,'2011-08-06 18:33:22','USER_LOGIN',1,'2011-08-06 20:33:22',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(97,'2011-08-07 00:56:59','USER_LOGIN',1,'2011-08-07 02:56:59',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(98,'2011-08-07 22:49:14','USER_LOGIN',1,'2011-08-08 00:49:14',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(99,'2011-08-07 23:05:18','USER_LOGOUT',1,'2011-08-08 01:05:18',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(105,'2011-08-08 00:41:09','USER_LOGIN',1,'2011-08-08 02:41:09',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(106,'2011-08-08 11:58:55','USER_LOGIN',1,'2011-08-08 13:58:55',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(107,'2011-08-08 14:35:48','USER_LOGIN',1,'2011-08-08 16:35:48',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(108,'2011-08-08 14:36:31','USER_LOGOUT',1,'2011-08-08 16:36:31',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(109,'2011-08-08 14:38:28','USER_LOGIN',1,'2011-08-08 16:38:28',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(110,'2011-08-08 14:39:02','USER_LOGOUT',1,'2011-08-08 16:39:02',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(111,'2011-08-08 14:39:10','USER_LOGIN',1,'2011-08-08 16:39:10',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(112,'2011-08-08 14:39:28','USER_LOGOUT',1,'2011-08-08 16:39:28',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(113,'2011-08-08 14:39:37','USER_LOGIN',1,'2011-08-08 16:39:37',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(114,'2011-08-08 14:50:02','USER_LOGOUT',1,'2011-08-08 16:50:02',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(115,'2011-08-08 14:51:45','USER_LOGIN_FAILED',1,'2011-08-08 16:51:45',NULL,'Identifiants login ou mot de passe incorrects - login=','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(116,'2011-08-08 14:51:52','USER_LOGIN',1,'2011-08-08 16:51:52',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(117,'2011-08-08 15:09:54','USER_LOGOUT',1,'2011-08-08 17:09:54',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(118,'2011-08-08 15:10:19','USER_LOGIN_FAILED',1,'2011-08-08 17:10:19',NULL,'Identifiants login ou mot de passe incorrects - login=','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(119,'2011-08-08 15:10:28','USER_LOGIN',1,'2011-08-08 17:10:28',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(121,'2011-08-08 15:14:58','USER_LOGOUT',1,'2011-08-08 17:14:58',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(122,'2011-08-08 15:15:00','USER_LOGIN_FAILED',1,'2011-08-08 17:15:00',NULL,'Identifiants login ou mot de passe incorrects - login=','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(123,'2011-08-08 15:17:57','USER_LOGIN',1,'2011-08-08 17:17:57',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(124,'2011-08-08 15:35:56','USER_LOGOUT',1,'2011-08-08 17:35:56',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(125,'2011-08-08 15:36:05','USER_LOGIN',1,'2011-08-08 17:36:05',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(126,'2011-08-08 17:32:42','USER_LOGIN',1,'2011-08-08 19:32:42',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(127,'2012-12-08 13:49:37','USER_LOGOUT',1,'2012-12-08 14:49:37',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL),(128,'2012-12-08 13:49:42','USER_LOGIN',1,'2012-12-08 14:49:42',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL),(129,'2012-12-08 13:50:12','USER_LOGOUT',1,'2012-12-08 14:50:12',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL),(130,'2012-12-08 13:50:14','USER_LOGIN',1,'2012-12-08 14:50:14',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL),(131,'2012-12-08 13:50:17','USER_LOGOUT',1,'2012-12-08 14:50:17',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL),(132,'2012-12-08 13:52:47','USER_LOGIN',1,'2012-12-08 14:52:47',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL),(133,'2012-12-08 13:53:08','USER_MODIFY',1,'2012-12-08 14:53:08',1,'User admin modified','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL),(134,'2012-12-08 14:08:45','USER_LOGOUT',1,'2012-12-08 15:08:45',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL),(135,'2012-12-08 14:09:09','USER_LOGIN',1,'2012-12-08 15:09:09',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL),(136,'2012-12-08 14:11:43','USER_LOGOUT',1,'2012-12-08 15:11:43',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL),(137,'2012-12-08 14:11:45','USER_LOGIN',1,'2012-12-08 15:11:45',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL),(138,'2012-12-08 14:22:53','USER_LOGOUT',1,'2012-12-08 15:22:53',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL),(139,'2012-12-08 14:22:54','USER_LOGIN',1,'2012-12-08 15:22:54',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL),(140,'2012-12-08 14:23:10','USER_LOGOUT',1,'2012-12-08 15:23:10',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL),(141,'2012-12-08 14:23:11','USER_LOGIN',1,'2012-12-08 15:23:11',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL),(142,'2012-12-08 14:23:49','USER_LOGOUT',1,'2012-12-08 15:23:49',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL),(143,'2012-12-08 14:23:50','USER_LOGIN',1,'2012-12-08 15:23:50',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL),(144,'2012-12-08 14:28:08','USER_LOGOUT',1,'2012-12-08 15:28:08',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL),(145,'2012-12-08 14:35:15','USER_LOGIN',1,'2012-12-08 15:35:15',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL),(146,'2012-12-08 14:35:18','USER_LOGOUT',1,'2012-12-08 15:35:18',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL),(147,'2012-12-08 14:36:07','USER_LOGIN',1,'2012-12-08 15:36:07',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL),(148,'2012-12-08 14:36:09','USER_LOGOUT',1,'2012-12-08 15:36:09',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL),(149,'2012-12-08 14:36:41','USER_LOGIN',1,'2012-12-08 15:36:41',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL),(150,'2012-12-08 15:59:13','USER_LOGIN',1,'2012-12-08 16:59:13',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL),(151,'2012-12-09 11:49:52','USER_LOGIN',1,'2012-12-09 12:49:52',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL),(152,'2012-12-09 13:46:31','USER_LOGIN',1,'2012-12-09 14:46:31',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL),(153,'2012-12-09 19:03:14','USER_LOGIN',1,'2012-12-09 20:03:14',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL),(154,'2012-12-10 00:16:31','USER_LOGIN',1,'2012-12-10 01:16:31',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL),(170,'2012-12-11 22:03:31','USER_LOGIN',1,'2012-12-11 23:03:31',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL),(171,'2012-12-12 00:32:39','USER_LOGIN',1,'2012-12-12 01:32:39',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL),(172,'2012-12-12 10:49:59','USER_LOGIN',1,'2012-12-12 11:49:59',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL),(175,'2012-12-12 10:57:40','USER_MODIFY',1,'2012-12-12 11:57:40',1,'Modification utilisateur admin','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL),(176,'2012-12-12 13:29:15','USER_LOGIN',1,'2012-12-12 14:29:15',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL),(177,'2012-12-12 13:30:15','USER_LOGIN',1,'2012-12-12 14:30:15',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL),(178,'2012-12-12 13:40:08','USER_LOGOUT',1,'2012-12-12 14:40:08',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL),(179,'2012-12-12 13:40:10','USER_LOGIN',1,'2012-12-12 14:40:10',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL),(180,'2012-12-12 13:40:26','USER_MODIFY',1,'2012-12-12 14:40:26',1,'Modification utilisateur admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL),(181,'2012-12-12 13:40:34','USER_LOGOUT',1,'2012-12-12 14:40:34',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL),(182,'2012-12-12 13:42:23','USER_LOGIN',1,'2012-12-12 14:42:23',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL),(183,'2012-12-12 13:43:02','USER_NEW_PASSWORD',1,'2012-12-12 14:43:02',NULL,'Changement mot de passe de admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL),(184,'2012-12-12 13:43:25','USER_LOGOUT',1,'2012-12-12 14:43:25',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL),(185,'2012-12-12 13:43:27','USER_LOGIN_FAILED',1,'2012-12-12 14:43:27',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL),(186,'2012-12-12 13:43:30','USER_LOGIN',1,'2012-12-12 14:43:30',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL),(187,'2012-12-12 14:52:11','USER_LOGIN',1,'2012-12-12 15:52:11',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL),(188,'2012-12-12 17:53:00','USER_LOGIN_FAILED',1,'2012-12-12 18:53:00',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL),(189,'2012-12-12 17:53:07','USER_LOGIN_FAILED',1,'2012-12-12 18:53:07',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL),(190,'2012-12-12 17:53:51','USER_NEW_PASSWORD',1,'2012-12-12 18:53:51',NULL,'Changement mot de passe de admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL),(191,'2012-12-12 17:54:00','USER_LOGIN',1,'2012-12-12 18:54:00',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL),(192,'2012-12-12 17:54:10','USER_NEW_PASSWORD',1,'2012-12-12 18:54:10',1,'Changement mot de passe de admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL),(193,'2012-12-12 17:54:10','USER_MODIFY',1,'2012-12-12 18:54:10',1,'Modification utilisateur admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL),(194,'2012-12-12 18:57:09','USER_LOGIN',1,'2012-12-12 19:57:09',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL),(195,'2012-12-12 23:04:08','USER_LOGIN',1,'2012-12-13 00:04:08',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL),(196,'2012-12-17 20:03:14','USER_LOGIN',1,'2012-12-17 21:03:14',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL),(197,'2012-12-17 21:18:45','USER_LOGIN',1,'2012-12-17 22:18:45',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL),(198,'2012-12-17 22:30:08','USER_LOGIN',1,'2012-12-17 23:30:08',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL),(199,'2012-12-18 23:32:03','USER_LOGIN',1,'2012-12-19 00:32:03',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL),(200,'2012-12-19 09:38:03','USER_LOGIN',1,'2012-12-19 10:38:03',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL),(201,'2012-12-19 11:23:35','USER_LOGIN',1,'2012-12-19 12:23:35',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL),(202,'2012-12-19 12:46:22','USER_LOGIN',1,'2012-12-19 13:46:22',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL),(214,'2012-12-19 19:11:31','USER_LOGIN',1,'2012-12-19 20:11:31',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL),(215,'2012-12-21 16:36:57','USER_LOGIN',1,'2012-12-21 17:36:57',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL),(216,'2012-12-21 16:38:43','USER_NEW_PASSWORD',1,'2012-12-21 17:38:43',1,'Changement mot de passe de adupont','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL),(217,'2012-12-21 16:38:43','USER_MODIFY',1,'2012-12-21 17:38:43',1,'Modification utilisateur adupont','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL),(218,'2012-12-21 16:38:51','USER_LOGOUT',1,'2012-12-21 17:38:51',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL),(219,'2012-12-21 16:38:55','USER_LOGIN',1,'2012-12-21 17:38:55',3,'(UserLogged,adupont)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL),(220,'2012-12-21 16:48:18','USER_LOGOUT',1,'2012-12-21 17:48:18',3,'(UserLogoff,adupont)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL),(221,'2012-12-21 16:48:20','USER_LOGIN',1,'2012-12-21 17:48:20',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL),(222,'2012-12-26 18:28:18','USER_LOGIN',1,'2012-12-26 19:28:18',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL),(223,'2012-12-26 20:00:24','USER_LOGIN',1,'2012-12-26 21:00:24',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL),(224,'2012-12-27 01:10:27','USER_LOGIN',1,'2012-12-27 02:10:27',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL),(225,'2012-12-28 19:12:08','USER_LOGIN',1,'2012-12-28 20:12:08',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL),(226,'2012-12-28 20:16:58','USER_LOGIN',1,'2012-12-28 21:16:58',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL),(227,'2012-12-29 14:35:46','USER_LOGIN',1,'2012-12-29 15:35:46',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL),(228,'2012-12-29 14:37:59','USER_LOGOUT',1,'2012-12-29 15:37:59',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL),(229,'2012-12-29 14:38:00','USER_LOGIN',1,'2012-12-29 15:38:00',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL),(230,'2012-12-29 17:16:48','USER_LOGIN',1,'2012-12-29 18:16:48',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL),(231,'2012-12-31 12:02:59','USER_LOGIN',1,'2012-12-31 13:02:59',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL),(232,'2013-01-02 20:32:51','USER_LOGIN',1,'2013-01-02 21:32:51',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:17.0) Gecko/20100101 Firefox/17.0',NULL),(233,'2013-01-02 20:58:59','USER_LOGIN',1,'2013-01-02 21:58:59',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL),(234,'2013-01-03 09:25:07','USER_LOGIN',1,'2013-01-03 10:25:07',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL),(235,'2013-01-03 19:39:31','USER_LOGIN',1,'2013-01-03 20:39:31',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL),(236,'2013-01-04 22:40:19','USER_LOGIN',1,'2013-01-04 23:40:19',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL),(237,'2013-01-05 12:59:59','USER_LOGIN',1,'2013-01-05 13:59:59',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL),(238,'2013-01-05 15:28:52','USER_LOGIN',1,'2013-01-05 16:28:52',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL),(239,'2013-01-05 17:02:08','USER_LOGIN',1,'2013-01-05 18:02:08',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL),(240,'2013-01-06 12:13:33','USER_LOGIN',1,'2013-01-06 13:13:33',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL),(241,'2013-01-07 01:21:15','USER_LOGIN',1,'2013-01-07 02:21:15',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL),(242,'2013-01-07 01:46:31','USER_LOGOUT',1,'2013-01-07 02:46:31',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL),(243,'2013-01-07 19:54:50','USER_LOGIN',1,'2013-01-07 20:54:50',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL),(244,'2013-01-08 21:55:01','USER_LOGIN',1,'2013-01-08 22:55:01',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL),(245,'2013-01-09 11:13:28','USER_LOGIN',1,'2013-01-09 12:13:28',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL),(246,'2013-01-10 18:30:46','USER_LOGIN',1,'2013-01-10 19:30:46',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL),(247,'2013-01-11 18:03:26','USER_LOGIN',1,'2013-01-11 19:03:26',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL),(248,'2013-01-12 11:15:04','USER_LOGIN',1,'2013-01-12 12:15:04',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL),(249,'2013-01-12 14:42:44','USER_LOGIN',1,'2013-01-12 15:42:44',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL),(250,'2013-01-13 12:07:17','USER_LOGIN',1,'2013-01-13 13:07:17',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL),(251,'2013-01-13 17:37:58','USER_LOGIN',1,'2013-01-13 18:37:58',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL),(252,'2013-01-13 19:24:21','USER_LOGIN',1,'2013-01-13 20:24:21',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL),(253,'2013-01-13 19:29:19','USER_LOGOUT',1,'2013-01-13 20:29:19',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL),(254,'2013-01-13 21:39:39','USER_LOGIN',1,'2013-01-13 22:39:39',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL),(255,'2013-01-14 00:52:21','USER_LOGIN',1,'2013-01-14 01:52:21',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL),(256,'2013-01-16 11:34:31','USER_LOGIN',1,'2013-01-16 12:34:31',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17',NULL),(257,'2013-01-16 15:36:21','USER_LOGIN',1,'2013-01-16 16:36:21',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17',NULL),(258,'2013-01-16 19:17:36','USER_LOGIN',1,'2013-01-16 20:17:36',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17',NULL),(259,'2013-01-16 19:48:08','GROUP_CREATE',1,'2013-01-16 20:48:08',1,'Création groupe ggg','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17',NULL),(260,'2013-01-16 21:48:53','USER_LOGIN',1,'2013-01-16 22:48:53',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17',NULL),(261,'2013-01-17 19:55:53','USER_LOGIN',1,'2013-01-17 20:55:53',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17',NULL),(262,'2013-01-18 09:48:01','USER_LOGIN',1,'2013-01-18 10:48:01',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17',NULL),(263,'2013-01-18 13:22:36','USER_LOGIN',1,'2013-01-18 14:22:36',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17',NULL),(264,'2013-01-18 16:10:23','USER_LOGIN',1,'2013-01-18 17:10:22',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17',NULL),(265,'2013-01-18 17:41:40','USER_LOGIN',1,'2013-01-18 18:41:40',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17',NULL),(266,'2013-01-19 14:33:48','USER_LOGIN',1,'2013-01-19 15:33:48',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17',NULL),(267,'2013-01-19 16:47:43','USER_LOGIN',1,'2013-01-19 17:47:43',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17',NULL),(268,'2013-01-19 16:59:43','USER_LOGIN',1,'2013-01-19 17:59:43',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17',NULL),(269,'2013-01-19 17:00:22','USER_LOGIN',1,'2013-01-19 18:00:22',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17',NULL),(270,'2013-01-19 17:04:16','USER_LOGOUT',1,'2013-01-19 18:04:16',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17',NULL),(271,'2013-01-19 17:04:18','USER_LOGIN',1,'2013-01-19 18:04:18',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17',NULL),(272,'2013-01-20 00:34:19','USER_LOGIN',1,'2013-01-20 01:34:19',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17',NULL),(273,'2013-01-21 11:54:17','USER_LOGIN',1,'2013-01-21 12:54:17',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17',NULL),(274,'2013-01-21 13:48:15','USER_LOGIN',1,'2013-01-21 14:48:15',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17',NULL),(275,'2013-01-21 14:30:22','USER_LOGIN',1,'2013-01-21 15:30:22',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17',NULL),(276,'2013-01-21 15:10:46','USER_LOGIN',1,'2013-01-21 16:10:46',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17',NULL),(277,'2013-01-21 17:27:43','USER_LOGIN',1,'2013-01-21 18:27:43',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17',NULL),(278,'2013-01-21 21:48:15','USER_LOGIN',1,'2013-01-21 22:48:15',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17',NULL),(279,'2013-01-21 21:50:42','USER_LOGIN',1,'2013-01-21 22:50:42',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17',NULL),(280,'2013-01-23 09:28:26','USER_LOGIN',1,'2013-01-23 10:28:26',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.56 Safari/537.17',NULL),(281,'2013-01-23 13:21:57','USER_LOGIN',1,'2013-01-23 14:21:57',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.56 Safari/537.17',NULL),(282,'2013-01-23 16:52:00','USER_LOGOUT',1,'2013-01-23 17:52:00',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.56 Safari/537.17',NULL),(283,'2013-01-23 16:52:05','USER_LOGIN_FAILED',1,'2013-01-23 17:52:05',NULL,'Bad value for login or password - login=bbb','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.56 Safari/537.17',NULL),(284,'2013-01-23 16:52:09','USER_LOGIN',1,'2013-01-23 17:52:09',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.56 Safari/537.17',NULL),(285,'2013-01-23 16:52:27','USER_CREATE',1,'2013-01-23 17:52:27',1,'Création utilisateur aaa','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.56 Safari/537.17',NULL),(286,'2013-01-23 16:52:27','USER_NEW_PASSWORD',1,'2013-01-23 17:52:27',1,'Changement mot de passe de aaa','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.56 Safari/537.17',NULL),(287,'2013-01-23 16:52:37','USER_CREATE',1,'2013-01-23 17:52:37',1,'Création utilisateur bbb','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.56 Safari/537.17',NULL),(288,'2013-01-23 16:52:37','USER_NEW_PASSWORD',1,'2013-01-23 17:52:37',1,'Changement mot de passe de bbb','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.56 Safari/537.17',NULL),(289,'2013-01-23 16:53:15','USER_LOGOUT',1,'2013-01-23 17:53:15',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.56 Safari/537.17',NULL),(290,'2013-01-23 16:53:20','USER_LOGIN',1,'2013-01-23 17:53:20',4,'(UserLogged,aaa)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.56 Safari/537.17',NULL),(291,'2013-01-23 19:16:58','USER_LOGIN',1,'2013-01-23 20:16:58',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.56 Safari/537.17',NULL),(292,'2013-01-26 10:54:07','USER_LOGIN',1,'2013-01-26 11:54:07',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.56 Safari/537.17',NULL),(293,'2013-01-29 10:15:36','USER_LOGIN',1,'2013-01-29 11:15:36',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.56 Safari/537.17',NULL),(294,'2013-01-30 17:42:50','USER_LOGIN',1,'2013-01-30 18:42:50',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.56 Safari/537.17',NULL),(295,'2013-02-01 08:49:55','USER_LOGIN',1,'2013-02-01 09:49:55',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17',NULL),(296,'2013-02-01 08:51:57','USER_LOGOUT',1,'2013-02-01 09:51:57',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17',NULL),(297,'2013-02-01 08:52:39','USER_LOGIN',1,'2013-02-01 09:52:39',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17',NULL),(298,'2013-02-01 21:03:01','USER_LOGIN',1,'2013-02-01 22:03:01',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17',NULL),(299,'2013-02-10 19:48:39','USER_LOGIN',1,'2013-02-10 20:48:39',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17',NULL),(300,'2013-02-10 20:46:48','USER_LOGIN',1,'2013-02-10 21:46:48',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17',NULL),(301,'2013-02-10 21:39:23','USER_LOGIN',1,'2013-02-10 22:39:23',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17',NULL),(302,'2013-02-11 19:00:13','USER_LOGIN',1,'2013-02-11 20:00:13',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17',NULL),(303,'2013-02-11 19:43:44','USER_LOGIN_FAILED',1,'2013-02-11 20:43:44',NULL,'Unknown column \'u.fk_user\' in \'field list\'','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17',NULL),(304,'2013-02-11 19:44:01','USER_LOGIN',1,'2013-02-11 20:44:01',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17',NULL),(305,'2013-02-12 00:27:35','USER_LOGIN',1,'2013-02-12 01:27:35',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17',NULL),(306,'2013-02-12 00:27:38','USER_LOGOUT',1,'2013-02-12 01:27:38',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17',NULL),(307,'2013-02-12 00:28:07','USER_LOGIN',1,'2013-02-12 01:28:07',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17',NULL),(308,'2013-02-12 00:28:09','USER_LOGOUT',1,'2013-02-12 01:28:09',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17',NULL),(309,'2013-02-12 00:28:26','USER_LOGIN',1,'2013-02-12 01:28:26',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17',NULL),(310,'2013-02-12 00:28:30','USER_LOGOUT',1,'2013-02-12 01:28:30',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17',NULL),(311,'2013-02-12 12:42:15','USER_LOGIN',1,'2013-02-12 13:42:15',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17',NULL),(312,'2013-02-12 13:46:16','USER_LOGIN',1,'2013-02-12 14:46:16',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL),(313,'2013-02-12 14:54:28','USER_LOGIN',1,'2013-02-12 15:54:28',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL),(314,'2013-02-12 16:04:46','USER_LOGIN',1,'2013-02-12 17:04:46',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL),(315,'2013-02-13 14:02:43','USER_LOGIN',1,'2013-02-13 15:02:43',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL),(316,'2013-02-13 14:48:30','USER_LOGIN',1,'2013-02-13 15:48:30',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL),(317,'2013-02-13 17:44:53','USER_LOGIN',1,'2013-02-13 18:44:53',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL),(318,'2013-02-15 08:44:36','USER_LOGIN',1,'2013-02-15 09:44:36',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL),(319,'2013-02-15 08:53:20','USER_LOGIN',1,'2013-02-15 09:53:20',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL),(320,'2013-02-16 19:10:28','USER_LOGIN',1,'2013-02-16 20:10:28',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL),(321,'2013-02-16 19:22:40','USER_CREATE',1,'2013-02-16 20:22:40',1,'Création utilisateur aaab','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL),(322,'2013-02-16 19:22:40','USER_NEW_PASSWORD',1,'2013-02-16 20:22:40',1,'Changement mot de passe de aaab','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL),(323,'2013-02-16 19:48:15','USER_CREATE',1,'2013-02-16 20:48:15',1,'Création utilisateur zzz','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL),(324,'2013-02-16 19:48:15','USER_NEW_PASSWORD',1,'2013-02-16 20:48:15',1,'Changement mot de passe de zzz','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL),(325,'2013-02-16 19:50:08','USER_CREATE',1,'2013-02-16 20:50:08',1,'Création utilisateur zzzg','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL),(326,'2013-02-16 19:50:08','USER_NEW_PASSWORD',1,'2013-02-16 20:50:08',1,'Changement mot de passe de zzzg','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL),(327,'2013-02-16 21:20:03','USER_LOGIN',1,'2013-02-16 22:20:03',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL),(328,'2013-02-17 14:30:51','USER_LOGIN',1,'2013-02-17 15:30:51',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL),(329,'2013-02-17 17:21:22','USER_LOGIN',1,'2013-02-17 18:21:22',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL),(330,'2013-02-17 17:48:43','USER_MODIFY',1,'2013-02-17 18:48:43',1,'Modification utilisateur aaa','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL),(331,'2013-02-17 17:48:47','USER_MODIFY',1,'2013-02-17 18:48:47',1,'Modification utilisateur aaa','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL),(332,'2013-02-17 17:48:51','USER_MODIFY',1,'2013-02-17 18:48:51',1,'Modification utilisateur aaa','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL),(333,'2013-02-17 17:48:56','USER_MODIFY',1,'2013-02-17 18:48:56',1,'Modification utilisateur aaa','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL),(334,'2013-02-18 22:00:01','USER_LOGIN',1,'2013-02-18 23:00:01',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL),(335,'2013-02-19 08:19:52','USER_LOGIN',1,'2013-02-19 09:19:52',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL),(336,'2013-02-19 22:00:52','USER_LOGIN',1,'2013-02-19 23:00:52',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL),(337,'2013-02-20 09:34:52','USER_LOGIN',1,'2013-02-20 10:34:52',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL),(338,'2013-02-20 13:12:28','USER_LOGIN',1,'2013-02-20 14:12:28',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL),(339,'2013-02-20 17:19:44','USER_LOGIN',1,'2013-02-20 18:19:44',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL),(340,'2013-02-20 19:07:21','USER_MODIFY',1,'2013-02-20 20:07:21',1,'Modification utilisateur adupont','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL),(341,'2013-02-20 19:47:17','USER_LOGIN',1,'2013-02-20 20:47:17',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL),(342,'2013-02-20 19:48:01','USER_MODIFY',1,'2013-02-20 20:48:01',1,'Modification utilisateur aaa','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL),(343,'2013-02-21 08:27:07','USER_LOGIN',1,'2013-02-21 09:27:07',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL),(344,'2013-02-23 13:34:13','USER_LOGIN',1,'2013-02-23 14:34:13',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL),(345,'2013-02-24 01:06:41','USER_LOGIN_FAILED',1,'2013-02-24 02:06:41',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(346,'2013-02-24 01:06:45','USER_LOGIN_FAILED',1,'2013-02-24 02:06:45',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(347,'2013-02-24 01:06:55','USER_LOGIN_FAILED',1,'2013-02-24 02:06:55',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(348,'2013-02-24 01:07:03','USER_LOGIN_FAILED',1,'2013-02-24 02:07:03',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(349,'2013-02-24 01:07:21','USER_LOGIN_FAILED',1,'2013-02-24 02:07:21',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(350,'2013-02-24 01:08:12','USER_LOGIN_FAILED',1,'2013-02-24 02:08:12',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(351,'2013-02-24 01:08:42','USER_LOGIN_FAILED',1,'2013-02-24 02:08:42',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(352,'2013-02-24 01:08:50','USER_LOGIN_FAILED',1,'2013-02-24 02:08:50',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(353,'2013-02-24 01:09:08','USER_LOGIN_FAILED',1,'2013-02-24 02:09:08',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(354,'2013-02-24 01:09:42','USER_LOGIN_FAILED',1,'2013-02-24 02:09:42',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(355,'2013-02-24 01:09:50','USER_LOGIN_FAILED',1,'2013-02-24 02:09:50',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(356,'2013-02-24 01:10:05','USER_LOGIN_FAILED',1,'2013-02-24 02:10:05',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(357,'2013-02-24 01:10:22','USER_LOGIN_FAILED',1,'2013-02-24 02:10:22',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(358,'2013-02-24 01:10:30','USER_LOGIN_FAILED',1,'2013-02-24 02:10:30',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(359,'2013-02-24 01:10:56','USER_LOGIN_FAILED',1,'2013-02-24 02:10:56',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(360,'2013-02-24 01:11:26','USER_LOGIN_FAILED',1,'2013-02-24 02:11:26',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(361,'2013-02-24 01:12:06','USER_LOGIN_FAILED',1,'2013-02-24 02:12:06',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(362,'2013-02-24 01:21:14','USER_LOGIN_FAILED',1,'2013-02-24 02:21:14',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(363,'2013-02-24 01:21:25','USER_LOGIN_FAILED',1,'2013-02-24 02:21:25',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(364,'2013-02-24 01:21:54','USER_LOGIN_FAILED',1,'2013-02-24 02:21:54',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(365,'2013-02-24 01:22:14','USER_LOGIN_FAILED',1,'2013-02-24 02:22:14',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(366,'2013-02-24 01:22:37','USER_LOGIN_FAILED',1,'2013-02-24 02:22:37',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(367,'2013-02-24 01:23:01','USER_LOGIN_FAILED',1,'2013-02-24 02:23:01',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(368,'2013-02-24 01:23:39','USER_LOGIN_FAILED',1,'2013-02-24 02:23:39',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(369,'2013-02-24 01:24:04','USER_LOGIN_FAILED',1,'2013-02-24 02:24:04',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(370,'2013-02-24 01:24:39','USER_LOGIN_FAILED',1,'2013-02-24 02:24:39',NULL,'Bad value for login or password - login=aa','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(371,'2013-02-24 01:25:01','USER_LOGIN_FAILED',1,'2013-02-24 02:25:01',NULL,'Bad value for login or password - login=aa','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(372,'2013-02-24 01:25:12','USER_LOGIN_FAILED',1,'2013-02-24 02:25:12',NULL,'Bad value for login or password - login=aa','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(373,'2013-02-24 01:27:30','USER_LOGIN_FAILED',1,'2013-02-24 02:27:30',NULL,'Bad value for login or password - login=aa','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(374,'2013-02-24 01:28:00','USER_LOGIN_FAILED',1,'2013-02-24 02:28:00',NULL,'Bad value for login or password - login=aa','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(375,'2013-02-24 01:28:35','USER_LOGIN_FAILED',1,'2013-02-24 02:28:35',NULL,'Bad value for login or password - login=aa','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(376,'2013-02-24 01:29:03','USER_LOGIN_FAILED',1,'2013-02-24 02:29:03',NULL,'Bad value for login or password - login=aa','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(377,'2013-02-24 01:29:55','USER_LOGIN_FAILED',1,'2013-02-24 02:29:55',NULL,'Bad value for login or password - login=aa','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(378,'2013-02-24 01:32:40','USER_LOGIN_FAILED',1,'2013-02-24 02:32:40',NULL,'Bad value for login or password - login=aa','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(379,'2013-02-24 01:39:33','USER_LOGIN_FAILED',1,'2013-02-24 02:39:33',NULL,'Identifiants login ou mot de passe incorrects - login=aa','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(380,'2013-02-24 01:39:38','USER_LOGIN_FAILED',1,'2013-02-24 02:39:38',NULL,'Identifiants login ou mot de passe incorrects - login=aa','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(381,'2013-02-24 01:39:47','USER_LOGIN_FAILED',1,'2013-02-24 02:39:47',NULL,'Identifiants login ou mot de passe incorrects - login=lmkm','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(382,'2013-02-24 01:40:54','USER_LOGIN_FAILED',1,'2013-02-24 02:40:54',NULL,'Identifiants login ou mot de passe incorrects - login=lmkm','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(383,'2013-02-24 01:47:57','USER_LOGIN_FAILED',1,'2013-02-24 02:47:57',NULL,'Identifiants login ou mot de passe incorrects - login=lmkm','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(384,'2013-02-24 01:48:05','USER_LOGIN_FAILED',1,'2013-02-24 02:48:05',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(385,'2013-02-24 01:48:07','USER_LOGIN_FAILED',1,'2013-02-24 02:48:07',NULL,'Unknown column \'u.lastname\' in \'field list\'','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(386,'2013-02-24 01:48:35','USER_LOGIN',1,'2013-02-24 02:48:35',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(387,'2013-02-24 01:56:32','USER_LOGIN',1,'2013-02-24 02:56:32',1,'(UserLogged,admin)','192.168.0.254','Mozilla/5.0 (Linux; U; Android 2.2; en-us; sdk Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1',NULL),(388,'2013-02-24 02:05:55','USER_LOGOUT',1,'2013-02-24 03:05:55',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(389,'2013-02-24 02:39:52','USER_LOGIN',1,'2013-02-24 03:39:52',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(390,'2013-02-24 02:51:10','USER_LOGOUT',1,'2013-02-24 03:51:10',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(391,'2013-02-24 12:46:41','USER_LOGIN',1,'2013-02-24 13:46:41',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(392,'2013-02-24 12:46:52','USER_LOGOUT',1,'2013-02-24 13:46:52',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(393,'2013-02-24 12:46:56','USER_LOGIN',1,'2013-02-24 13:46:56',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(394,'2013-02-24 12:47:56','USER_LOGOUT',1,'2013-02-24 13:47:56',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(395,'2013-02-24 12:48:00','USER_LOGIN',1,'2013-02-24 13:48:00',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(396,'2013-02-24 12:48:11','USER_LOGOUT',1,'2013-02-24 13:48:11',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(397,'2013-02-24 12:48:32','USER_LOGIN',1,'2013-02-24 13:48:32',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(398,'2013-02-24 12:52:22','USER_LOGOUT',1,'2013-02-24 13:52:22',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(399,'2013-02-24 12:52:27','USER_LOGIN',1,'2013-02-24 13:52:27',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(400,'2013-02-24 12:52:54','USER_LOGOUT',1,'2013-02-24 13:52:54',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(401,'2013-02-24 12:52:59','USER_LOGIN',1,'2013-02-24 13:52:59',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(402,'2013-02-24 12:55:39','USER_LOGOUT',1,'2013-02-24 13:55:39',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(403,'2013-02-24 12:55:59','USER_LOGIN',1,'2013-02-24 13:55:59',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(404,'2013-02-24 12:56:07','USER_LOGOUT',1,'2013-02-24 13:56:07',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(405,'2013-02-24 12:56:23','USER_LOGIN',1,'2013-02-24 13:56:23',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(406,'2013-02-24 12:56:46','USER_LOGOUT',1,'2013-02-24 13:56:46',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(407,'2013-02-24 12:58:30','USER_LOGIN',1,'2013-02-24 13:58:30',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(408,'2013-02-24 12:58:33','USER_LOGOUT',1,'2013-02-24 13:58:33',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(409,'2013-02-24 12:58:51','USER_LOGIN',1,'2013-02-24 13:58:51',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(410,'2013-02-24 12:58:58','USER_LOGOUT',1,'2013-02-24 13:58:58',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(411,'2013-02-24 13:18:53','USER_LOGIN',1,'2013-02-24 14:18:53',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(412,'2013-02-24 13:19:52','USER_LOGOUT',1,'2013-02-24 14:19:52',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(413,'2013-02-24 15:39:31','USER_LOGIN_FAILED',1,'2013-02-24 16:39:31',NULL,'ErrorBadValueForCode - login=admin','127.0.0.1',NULL,NULL),(414,'2013-02-24 15:42:07','USER_LOGIN',1,'2013-02-24 16:42:07',1,'(UserLogged,admin)','127.0.0.1',NULL,NULL),(415,'2013-02-24 15:42:52','USER_LOGOUT',1,'2013-02-24 16:42:52',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_0 like Mac OS X; en-us) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8A293 Safari/6531.22.7',NULL),(416,'2013-02-24 16:04:21','USER_LOGIN',1,'2013-02-24 17:04:21',1,'(UserLogged,admin)','192.168.0.254','Mozilla/5.0 (Linux; U; Android 2.2; en-us; sdk Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1',NULL),(417,'2013-02-24 16:11:28','USER_LOGIN_FAILED',1,'2013-02-24 17:11:28',NULL,'ErrorBadValueForCode - login=admin','127.0.0.1','Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_0 like Mac OS X; en-us) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8A293 Safari/6531.22.7',NULL),(418,'2013-02-24 16:11:37','USER_LOGIN',1,'2013-02-24 17:11:37',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_0 like Mac OS X; en-us) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8A293 Safari/6531.22.7',NULL),(419,'2013-02-24 16:36:52','USER_LOGOUT',1,'2013-02-24 17:36:52',1,'(UserLogoff,admin)','192.168.0.254','Mozilla/5.0 (Linux; U; Android 2.2; en-us; sdk Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1',NULL),(420,'2013-02-24 16:40:37','USER_LOGIN',1,'2013-02-24 17:40:37',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(421,'2013-02-24 16:57:16','USER_LOGIN',1,'2013-02-24 17:57:16',1,'(UserLogged,admin)','192.168.0.254','Mozilla/5.0 (Linux; U; Android 2.2; en-us; sdk Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 - 2131034114',NULL),(422,'2013-02-24 17:01:30','USER_LOGOUT',1,'2013-02-24 18:01:30',1,'(UserLogoff,admin)','192.168.0.254','Mozilla/5.0 (Linux; U; Android 2.2; en-us; sdk Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 - 2131034114',NULL),(423,'2013-02-24 17:02:33','USER_LOGIN',1,'2013-02-24 18:02:33',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(424,'2013-02-24 17:14:22','USER_LOGOUT',1,'2013-02-24 18:14:22',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(425,'2013-02-24 17:15:07','USER_LOGIN_FAILED',1,'2013-02-24 18:15:07',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(426,'2013-02-24 17:15:20','USER_LOGIN',1,'2013-02-24 18:15:20',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(427,'2013-02-24 17:20:14','USER_LOGIN',1,'2013-02-24 18:20:14',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(428,'2013-02-24 17:20:51','USER_LOGIN',1,'2013-02-24 18:20:51',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(429,'2013-02-24 17:20:54','USER_LOGOUT',1,'2013-02-24 18:20:54',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(430,'2013-02-24 17:21:19','USER_LOGIN',1,'2013-02-24 18:21:19',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(431,'2013-02-24 17:32:35','USER_LOGIN',1,'2013-02-24 18:32:35',1,'(UserLogged,admin)','192.168.0.254','Mozilla/5.0 (Linux; U; Android 2.2; en-us; sdk Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 - 2131034114',NULL),(432,'2013-02-24 18:28:48','USER_LOGIN',1,'2013-02-24 19:28:48',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(433,'2013-02-24 18:29:27','USER_LOGOUT',1,'2013-02-24 19:29:27',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_0 like Mac OS X; en-us) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8A293 Safari/6531.22.7',NULL),(434,'2013-02-24 18:29:32','USER_LOGIN',1,'2013-02-24 19:29:32',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_0 like Mac OS X; en-us) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8A293 Safari/6531.22.7',NULL),(435,'2013-02-24 20:13:13','USER_LOGOUT',1,'2013-02-24 21:13:13',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(436,'2013-02-24 20:13:17','USER_LOGIN',1,'2013-02-24 21:13:17',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(437,'2013-02-25 08:57:16','USER_LOGIN',1,'2013-02-25 09:57:16',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(438,'2013-02-25 08:57:59','USER_LOGOUT',1,'2013-02-25 09:57:59',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(439,'2013-02-25 09:15:02','USER_LOGIN',1,'2013-02-25 10:15:02',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(440,'2013-02-25 09:15:50','USER_LOGOUT',1,'2013-02-25 10:15:50',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(441,'2013-02-25 09:15:57','USER_LOGIN',1,'2013-02-25 10:15:57',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(442,'2013-02-25 09:16:12','USER_LOGOUT',1,'2013-02-25 10:16:12',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(443,'2013-02-25 09:16:19','USER_LOGIN',1,'2013-02-25 10:16:19',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(444,'2013-02-25 09:16:25','USER_LOGOUT',1,'2013-02-25 10:16:25',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(445,'2013-02-25 09:16:39','USER_LOGIN_FAILED',1,'2013-02-25 10:16:39',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(446,'2013-02-25 09:16:42','USER_LOGIN_FAILED',1,'2013-02-25 10:16:42',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(447,'2013-02-25 09:16:54','USER_LOGIN_FAILED',1,'2013-02-25 10:16:54',NULL,'Identificadors d'usuari o contrasenya incorrectes - login=gfdg','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(448,'2013-02-25 09:17:53','USER_LOGIN',1,'2013-02-25 10:17:53',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(449,'2013-02-25 09:18:37','USER_LOGOUT',1,'2013-02-25 10:18:37',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(450,'2013-02-25 09:18:41','USER_LOGIN',1,'2013-02-25 10:18:41',4,'(UserLogged,aaa)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(451,'2013-02-25 09:18:47','USER_LOGOUT',1,'2013-02-25 10:18:47',4,'(UserLogoff,aaa)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(452,'2013-02-25 10:05:34','USER_LOGIN',1,'2013-02-25 11:05:34',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(453,'2013-02-26 21:51:40','USER_LOGIN',1,'2013-02-26 22:51:40',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(454,'2013-02-26 23:30:06','USER_LOGIN',1,'2013-02-27 00:30:06',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(455,'2013-02-27 14:13:11','USER_LOGIN',1,'2013-02-27 15:13:11',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(456,'2013-02-27 18:12:06','USER_LOGIN_FAILED',1,'2013-02-27 19:12:06',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(457,'2013-02-27 18:12:10','USER_LOGIN',1,'2013-02-27 19:12:10',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(458,'2013-02-27 20:20:08','USER_LOGIN',1,'2013-02-27 21:20:08',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(459,'2013-03-01 22:12:03','USER_LOGIN',1,'2013-03-01 23:12:03',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(460,'2013-03-02 11:45:50','USER_LOGIN',1,'2013-03-02 12:45:50',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(461,'2013-03-02 15:53:51','USER_LOGIN_FAILED',1,'2013-03-02 16:53:51',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(462,'2013-03-02 15:53:53','USER_LOGIN',1,'2013-03-02 16:53:53',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(463,'2013-03-02 18:32:32','USER_LOGIN',1,'2013-03-02 19:32:32',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(464,'2013-03-02 22:59:36','USER_LOGIN',1,'2013-03-02 23:59:36',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(465,'2013-03-03 16:26:26','USER_LOGIN',1,'2013-03-03 17:26:26',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(466,'2013-03-03 22:50:27','USER_LOGIN',1,'2013-03-03 23:50:27',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(467,'2013-03-04 08:29:27','USER_LOGIN',1,'2013-03-04 09:29:27',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(468,'2013-03-04 18:27:28','USER_LOGIN',1,'2013-03-04 19:27:28',1,'(UserLogged,admin)','192.168.0.254','Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; NP06)',NULL),(469,'2013-03-04 19:27:23','USER_LOGIN',1,'2013-03-04 20:27:23',1,'(UserLogged,admin)','192.168.0.254','Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)',NULL),(470,'2013-03-04 19:35:14','USER_LOGIN',1,'2013-03-04 20:35:14',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(471,'2013-03-04 19:55:49','USER_LOGIN',1,'2013-03-04 20:55:49',1,'(UserLogged,admin)','192.168.0.254','Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0)',NULL),(472,'2013-03-04 21:16:13','USER_LOGIN',1,'2013-03-04 22:16:13',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(473,'2013-03-05 10:17:30','USER_LOGIN',1,'2013-03-05 11:17:30',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(474,'2013-03-05 11:02:43','USER_LOGIN',1,'2013-03-05 12:02:43',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(475,'2013-03-05 23:14:39','USER_LOGIN',1,'2013-03-06 00:14:39',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(476,'2013-03-06 08:58:57','USER_LOGIN',1,'2013-03-06 09:58:57',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(477,'2013-03-06 14:29:40','USER_LOGIN',1,'2013-03-06 15:29:40',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(478,'2013-03-06 21:53:02','USER_LOGIN',1,'2013-03-06 22:53:02',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(479,'2013-03-07 21:14:39','USER_LOGIN',1,'2013-03-07 22:14:39',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(480,'2013-03-08 00:06:05','USER_LOGIN',1,'2013-03-08 01:06:05',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(481,'2013-03-08 01:38:13','USER_LOGIN',1,'2013-03-08 02:38:13',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(482,'2013-03-08 08:59:50','USER_LOGIN',1,'2013-03-08 09:59:50',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(483,'2013-03-09 12:08:51','USER_LOGIN',1,'2013-03-09 13:08:51',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(484,'2013-03-09 15:19:53','USER_LOGIN',1,'2013-03-09 16:19:53',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(495,'2013-03-09 18:06:21','USER_LOGIN',1,'2013-03-09 19:06:21',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(496,'2013-03-09 20:01:24','USER_LOGIN',1,'2013-03-09 21:01:24',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(497,'2013-03-09 23:36:45','USER_LOGIN',1,'2013-03-10 00:36:45',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(498,'2013-03-10 14:37:13','USER_LOGIN',1,'2013-03-10 15:37:13',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(499,'2013-03-10 17:54:12','USER_LOGIN',1,'2013-03-10 18:54:12',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(500,'2013-03-11 08:57:09','USER_LOGIN',1,'2013-03-11 09:57:09',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(501,'2013-03-11 22:05:13','USER_LOGIN',1,'2013-03-11 23:05:13',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(502,'2013-03-12 08:34:27','USER_LOGIN',1,'2013-03-12 09:34:27',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(503,'2013-03-13 09:11:02','USER_LOGIN',1,'2013-03-13 10:11:02',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(504,'2013-03-13 10:02:11','USER_LOGIN',1,'2013-03-13 11:02:11',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(505,'2013-03-13 13:20:58','USER_LOGIN',1,'2013-03-13 14:20:58',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(506,'2013-03-13 16:19:28','USER_LOGIN',1,'2013-03-13 17:19:28',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(507,'2013-03-13 18:34:30','USER_LOGIN',1,'2013-03-13 19:34:30',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(508,'2013-03-14 08:25:02','USER_LOGIN',1,'2013-03-14 09:25:02',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(509,'2013-03-14 19:15:22','USER_LOGIN',1,'2013-03-14 20:15:22',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(510,'2013-03-14 21:58:53','USER_LOGIN',1,'2013-03-14 22:58:53',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(511,'2013-03-14 21:58:59','USER_LOGOUT',1,'2013-03-14 22:58:59',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(512,'2013-03-14 21:59:07','USER_LOGIN',1,'2013-03-14 22:59:07',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(513,'2013-03-14 22:58:22','USER_LOGOUT',1,'2013-03-14 23:58:22',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(514,'2013-03-14 23:00:25','USER_LOGIN',1,'2013-03-15 00:00:25',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(515,'2013-03-16 12:14:28','USER_LOGIN',1,'2013-03-16 13:14:28',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(516,'2013-03-16 16:09:01','USER_LOGIN',1,'2013-03-16 17:09:01',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(517,'2013-03-16 16:57:11','USER_LOGIN',1,'2013-03-16 17:57:11',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(518,'2013-03-16 19:31:31','USER_LOGIN',1,'2013-03-16 20:31:31',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(519,'2013-03-17 17:44:39','USER_LOGIN',1,'2013-03-17 18:44:39',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL),(520,'2013-03-17 20:40:57','USER_LOGIN',1,'2013-03-17 21:40:57',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL),(521,'2013-03-17 23:14:05','USER_LOGIN',1,'2013-03-18 00:14:05',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL),(522,'2013-03-17 23:28:47','USER_LOGOUT',1,'2013-03-18 00:28:47',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL),(523,'2013-03-17 23:28:54','USER_LOGIN',1,'2013-03-18 00:28:54',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL),(524,'2013-03-18 17:37:30','USER_LOGIN',1,'2013-03-18 18:37:30',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL),(525,'2013-03-18 18:11:37','USER_LOGIN',1,'2013-03-18 19:11:37',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL),(526,'2013-03-19 08:35:08','USER_LOGIN',1,'2013-03-19 09:35:08',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL),(527,'2013-03-19 09:20:23','USER_LOGIN',1,'2013-03-19 10:20:23',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL),(528,'2013-03-20 13:17:13','USER_LOGIN',1,'2013-03-20 14:17:13',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL),(529,'2013-03-20 14:44:31','USER_LOGIN',1,'2013-03-20 15:44:31',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL),(530,'2013-03-20 18:24:25','USER_LOGIN',1,'2013-03-20 19:24:25',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL),(531,'2013-03-20 19:15:54','USER_LOGIN',1,'2013-03-20 20:15:54',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL),(532,'2013-03-21 18:40:47','USER_LOGIN',1,'2013-03-21 19:40:47',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL),(533,'2013-03-21 21:42:24','USER_LOGIN',1,'2013-03-21 22:42:24',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL),(534,'2013-03-22 08:39:23','USER_LOGIN',1,'2013-03-22 09:39:23',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL),(535,'2013-03-23 13:04:55','USER_LOGIN',1,'2013-03-23 14:04:55',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL),(536,'2013-03-23 15:47:43','USER_LOGIN',1,'2013-03-23 16:47:43',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL),(537,'2013-03-23 22:56:36','USER_LOGIN',1,'2013-03-23 23:56:36',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL),(538,'2013-03-24 01:22:32','USER_LOGIN',1,'2013-03-24 02:22:32',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL),(539,'2013-03-24 14:40:42','USER_LOGIN',1,'2013-03-24 15:40:42',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL),(540,'2013-03-24 15:30:26','USER_LOGOUT',1,'2013-03-24 16:30:26',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL),(541,'2013-03-24 15:30:29','USER_LOGIN',1,'2013-03-24 16:30:29',2,'(UserLogged,demo)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL),(542,'2013-03-24 15:49:40','USER_LOGOUT',1,'2013-03-24 16:49:40',2,'(UserLogoff,demo)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL),(543,'2013-03-24 15:49:48','USER_LOGIN',1,'2013-03-24 16:49:48',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL),(544,'2013-03-24 15:52:35','USER_MODIFY',1,'2013-03-24 16:52:35',1,'Modification utilisateur zzzg','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL),(545,'2013-03-24 15:52:52','USER_MODIFY',1,'2013-03-24 16:52:52',1,'Modification utilisateur zzzg','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL),(546,'2013-03-24 15:53:09','USER_MODIFY',1,'2013-03-24 16:53:09',1,'Modification utilisateur zzzg','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL),(547,'2013-03-24 15:53:23','USER_MODIFY',1,'2013-03-24 16:53:23',1,'Modification utilisateur zzzg','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL),(548,'2013-03-24 16:00:04','USER_MODIFY',1,'2013-03-24 17:00:04',1,'Modification utilisateur zzzg','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL),(549,'2013-03-24 16:01:50','USER_MODIFY',1,'2013-03-24 17:01:50',1,'Modification utilisateur zzzg','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL),(550,'2013-03-24 16:10:14','USER_MODIFY',1,'2013-03-24 17:10:14',1,'Modification utilisateur zzzg','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL),(551,'2013-03-24 16:55:13','USER_LOGIN',1,'2013-03-24 17:55:13',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL),(552,'2013-03-24 17:44:29','USER_LOGIN',1,'2013-03-24 18:44:29',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL),(553,'2013-09-08 23:06:26','USER_LOGIN',1,'2013-09-09 01:06:26',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.57 Safari/537.36',NULL),(554,'2013-10-21 22:32:28','USER_LOGIN',1,'2013-10-22 00:32:28',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.66 Safari/537.36',NULL),(555,'2013-10-21 22:32:48','USER_LOGIN',1,'2013-10-22 00:32:48',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.66 Safari/537.36',NULL),(556,'2013-11-07 00:01:51','USER_LOGIN',1,'2013-11-07 01:01:51',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.114 Safari/537.36',NULL),(557,'2014-03-02 15:21:07','USER_LOGIN',1,'2014-03-02 16:21:07',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.117 Safari/537.36',NULL),(558,'2014-03-02 15:36:53','USER_LOGIN',1,'2014-03-02 16:36:53',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.117 Safari/537.36',NULL),(559,'2014-03-02 18:54:23','USER_LOGIN',1,'2014-03-02 19:54:23',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.117 Safari/537.36',NULL),(560,'2014-03-02 19:11:17','USER_LOGIN',1,'2014-03-02 20:11:17',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.117 Safari/537.36',NULL),(561,'2014-03-03 18:19:24','USER_LOGIN',1,'2014-03-03 19:19:24',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.117 Safari/537.36',NULL),(562,'2014-12-21 12:51:38','USER_LOGIN',1,'2014-12-21 13:51:38',1,'(UserLogged,admin) - TZ=1;TZString=CET;Screen=1920x969','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.111 Safari/537.36',NULL),(563,'2014-12-21 19:52:09','USER_LOGIN',1,'2014-12-21 20:52:09',1,'(UserLogged,admin) - TZ=1;TZString=CET;Screen=1920x969','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.111 Safari/537.36',NULL),(566,'2015-10-03 08:49:43','USER_NEW_PASSWORD',1,'2015-10-03 10:49:43',1,'Password change for admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(567,'2015-10-03 08:49:43','USER_MODIFY',1,'2015-10-03 10:49:43',1,'User admin modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(568,'2015-10-03 09:03:12','USER_MODIFY',1,'2015-10-03 11:03:12',1,'User admin modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(569,'2015-10-03 09:03:42','USER_MODIFY',1,'2015-10-03 11:03:42',1,'User admin modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(570,'2015-10-03 09:07:36','USER_MODIFY',1,'2015-10-03 11:07:36',1,'User demo modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(571,'2015-10-03 09:08:58','USER_NEW_PASSWORD',1,'2015-10-03 11:08:58',1,'Password change for pcurie','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(572,'2015-10-03 09:08:58','USER_MODIFY',1,'2015-10-03 11:08:58',1,'User pcurie modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(573,'2015-10-03 09:09:23','USER_MODIFY',1,'2015-10-03 11:09:23',1,'User pcurie modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(574,'2015-10-03 09:11:04','USER_NEW_PASSWORD',1,'2015-10-03 11:11:04',1,'Password change for athestudent','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(575,'2015-10-03 09:11:04','USER_MODIFY',1,'2015-10-03 11:11:04',1,'User athestudent modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(576,'2015-10-03 09:11:53','USER_MODIFY',1,'2015-10-03 11:11:53',1,'User abookkeeper modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(577,'2015-10-03 09:42:12','USER_LOGIN_FAILED',1,'2015-10-03 11:42:11',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(578,'2015-10-03 09:42:19','USER_LOGIN_FAILED',1,'2015-10-03 11:42:19',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(579,'2015-10-03 09:42:42','USER_LOGIN_FAILED',1,'2015-10-03 11:42:42',NULL,'Bad value for login or password - login=aeinstein','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(580,'2015-10-03 09:43:50','USER_LOGIN',1,'2015-10-03 11:43:50',1,'(UserLogged,admin) - TZ=1;TZString=Europe/Berlin;Screen=1600x788','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(581,'2015-10-03 09:44:44','GROUP_MODIFY',1,'2015-10-03 11:44:44',1,'Group Sale representatives modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(582,'2015-10-03 09:46:25','GROUP_CREATE',1,'2015-10-03 11:46:25',1,'Group Management created','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(583,'2015-10-03 09:46:46','GROUP_CREATE',1,'2015-10-03 11:46:46',1,'Group Scientists created','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(584,'2015-10-03 09:47:41','USER_CREATE',1,'2015-10-03 11:47:41',1,'User mcurie created','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(585,'2015-10-03 09:47:41','USER_NEW_PASSWORD',1,'2015-10-03 11:47:41',1,'Password change for mcurie','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(586,'2015-10-03 09:47:53','USER_MODIFY',1,'2015-10-03 11:47:53',1,'User mcurie modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(587,'2015-10-03 09:48:32','USER_DELETE',1,'2015-10-03 11:48:32',1,'User bbb removed','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(588,'2015-10-03 09:48:52','USER_MODIFY',1,'2015-10-03 11:48:52',1,'User bookkeeper modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(589,'2015-10-03 10:01:28','USER_MODIFY',1,'2015-10-03 12:01:28',1,'User bookkeeper modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(590,'2015-10-03 10:01:39','USER_MODIFY',1,'2015-10-03 12:01:39',1,'User bookkeeper modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL); +INSERT INTO `llx_events` VALUES (30,'2011-07-18 18:23:06','USER_LOGOUT',1,'2011-07-18 20:23:06',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(31,'2011-07-18 18:23:12','USER_LOGIN_FAILED',1,'2011-07-18 20:23:12',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(32,'2011-07-18 18:23:17','USER_LOGIN',1,'2011-07-18 20:23:17',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(33,'2011-07-18 20:10:51','USER_LOGIN_FAILED',1,'2011-07-18 22:10:51',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(34,'2011-07-18 20:10:55','USER_LOGIN',1,'2011-07-18 22:10:55',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(35,'2011-07-18 21:18:57','USER_LOGIN',1,'2011-07-18 23:18:57',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(36,'2011-07-20 10:34:10','USER_LOGIN',1,'2011-07-20 12:34:10',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(37,'2011-07-20 12:36:44','USER_LOGIN',1,'2011-07-20 14:36:44',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(38,'2011-07-20 13:20:51','USER_LOGIN_FAILED',1,'2011-07-20 15:20:51',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(39,'2011-07-20 13:20:54','USER_LOGIN',1,'2011-07-20 15:20:54',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(40,'2011-07-20 15:03:46','USER_LOGIN_FAILED',1,'2011-07-20 17:03:46',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(41,'2011-07-20 15:03:55','USER_LOGIN',1,'2011-07-20 17:03:55',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(42,'2011-07-20 18:05:05','USER_LOGIN_FAILED',1,'2011-07-20 20:05:05',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(43,'2011-07-20 18:05:08','USER_LOGIN',1,'2011-07-20 20:05:08',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(44,'2011-07-20 21:08:53','USER_LOGIN_FAILED',1,'2011-07-20 23:08:53',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(45,'2011-07-20 21:08:56','USER_LOGIN',1,'2011-07-20 23:08:56',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(46,'2011-07-21 01:26:12','USER_LOGIN',1,'2011-07-21 03:26:12',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(47,'2011-07-21 22:35:45','USER_LOGIN_FAILED',1,'2011-07-22 00:35:45',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(48,'2011-07-21 22:35:49','USER_LOGIN',1,'2011-07-22 00:35:49',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(49,'2011-07-26 23:09:47','USER_LOGIN_FAILED',1,'2011-07-27 01:09:47',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(50,'2011-07-26 23:09:50','USER_LOGIN',1,'2011-07-27 01:09:50',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(51,'2011-07-27 17:02:27','USER_LOGIN_FAILED',1,'2011-07-27 19:02:27',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(52,'2011-07-27 17:02:32','USER_LOGIN',1,'2011-07-27 19:02:32',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(53,'2011-07-27 23:33:37','USER_LOGIN_FAILED',1,'2011-07-28 01:33:37',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(54,'2011-07-27 23:33:41','USER_LOGIN',1,'2011-07-28 01:33:41',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(55,'2011-07-28 18:20:36','USER_LOGIN_FAILED',1,'2011-07-28 20:20:36',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(56,'2011-07-28 18:20:38','USER_LOGIN',1,'2011-07-28 20:20:38',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(57,'2011-07-28 20:13:30','USER_LOGIN_FAILED',1,'2011-07-28 22:13:30',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(58,'2011-07-28 20:13:34','USER_LOGIN',1,'2011-07-28 22:13:34',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(59,'2011-07-28 20:22:51','USER_LOGIN',1,'2011-07-28 22:22:51',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(60,'2011-07-28 23:05:06','USER_LOGIN',1,'2011-07-29 01:05:06',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(61,'2011-07-29 20:15:50','USER_LOGIN_FAILED',1,'2011-07-29 22:15:50',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(62,'2011-07-29 20:15:53','USER_LOGIN',1,'2011-07-29 22:15:53',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(68,'2011-07-29 20:51:01','USER_LOGOUT',1,'2011-07-29 22:51:01',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(69,'2011-07-29 20:51:05','USER_LOGIN',1,'2011-07-29 22:51:05',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(70,'2011-07-30 08:46:20','USER_LOGIN_FAILED',1,'2011-07-30 10:46:20',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(71,'2011-07-30 08:46:38','USER_LOGIN_FAILED',1,'2011-07-30 10:46:38',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(72,'2011-07-30 08:46:42','USER_LOGIN',1,'2011-07-30 10:46:42',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(73,'2011-07-30 10:05:12','USER_LOGIN_FAILED',1,'2011-07-30 12:05:12',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(74,'2011-07-30 10:05:15','USER_LOGIN',1,'2011-07-30 12:05:15',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(75,'2011-07-30 12:15:46','USER_LOGIN',1,'2011-07-30 14:15:46',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(76,'2011-07-31 22:19:30','USER_LOGIN',1,'2011-08-01 00:19:30',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(77,'2011-07-31 23:32:52','USER_LOGIN',1,'2011-08-01 01:32:52',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(78,'2011-08-01 01:24:50','USER_LOGIN_FAILED',1,'2011-08-01 03:24:50',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(79,'2011-08-01 01:24:54','USER_LOGIN',1,'2011-08-01 03:24:54',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(80,'2011-08-01 19:31:36','USER_LOGIN_FAILED',1,'2011-08-01 21:31:35',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(81,'2011-08-01 19:31:39','USER_LOGIN',1,'2011-08-01 21:31:39',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(82,'2011-08-01 20:01:36','USER_LOGIN',1,'2011-08-01 22:01:36',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(83,'2011-08-01 20:52:54','USER_LOGIN_FAILED',1,'2011-08-01 22:52:54',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(84,'2011-08-01 20:52:58','USER_LOGIN',1,'2011-08-01 22:52:58',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(85,'2011-08-01 21:17:28','USER_LOGIN_FAILED',1,'2011-08-01 23:17:28',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(86,'2011-08-01 21:17:31','USER_LOGIN',1,'2011-08-01 23:17:31',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(87,'2011-08-04 11:55:17','USER_LOGIN',1,'2011-08-04 13:55:17',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(88,'2011-08-04 20:19:03','USER_LOGIN_FAILED',1,'2011-08-04 22:19:03',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(89,'2011-08-04 20:19:07','USER_LOGIN',1,'2011-08-04 22:19:07',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(90,'2011-08-05 17:51:42','USER_LOGIN_FAILED',1,'2011-08-05 19:51:42',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(91,'2011-08-05 17:51:47','USER_LOGIN',1,'2011-08-05 19:51:47',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(92,'2011-08-05 17:56:03','USER_LOGIN',1,'2011-08-05 19:56:03',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(93,'2011-08-05 17:59:10','USER_LOGIN',1,'2011-08-05 19:59:10',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.100 Safari/534.30',NULL),(94,'2011-08-05 18:01:58','USER_LOGIN',1,'2011-08-05 20:01:58',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.100 Safari/534.30',NULL),(95,'2011-08-05 19:59:56','USER_LOGIN',1,'2011-08-05 21:59:56',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(96,'2011-08-06 18:33:22','USER_LOGIN',1,'2011-08-06 20:33:22',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(97,'2011-08-07 00:56:59','USER_LOGIN',1,'2011-08-07 02:56:59',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(98,'2011-08-07 22:49:14','USER_LOGIN',1,'2011-08-08 00:49:14',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(99,'2011-08-07 23:05:18','USER_LOGOUT',1,'2011-08-08 01:05:18',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(105,'2011-08-08 00:41:09','USER_LOGIN',1,'2011-08-08 02:41:09',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(106,'2011-08-08 11:58:55','USER_LOGIN',1,'2011-08-08 13:58:55',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(107,'2011-08-08 14:35:48','USER_LOGIN',1,'2011-08-08 16:35:48',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(108,'2011-08-08 14:36:31','USER_LOGOUT',1,'2011-08-08 16:36:31',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(109,'2011-08-08 14:38:28','USER_LOGIN',1,'2011-08-08 16:38:28',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(110,'2011-08-08 14:39:02','USER_LOGOUT',1,'2011-08-08 16:39:02',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(111,'2011-08-08 14:39:10','USER_LOGIN',1,'2011-08-08 16:39:10',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(112,'2011-08-08 14:39:28','USER_LOGOUT',1,'2011-08-08 16:39:28',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(113,'2011-08-08 14:39:37','USER_LOGIN',1,'2011-08-08 16:39:37',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(114,'2011-08-08 14:50:02','USER_LOGOUT',1,'2011-08-08 16:50:02',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(115,'2011-08-08 14:51:45','USER_LOGIN_FAILED',1,'2011-08-08 16:51:45',NULL,'Identifiants login ou mot de passe incorrects - login=','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(116,'2011-08-08 14:51:52','USER_LOGIN',1,'2011-08-08 16:51:52',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(117,'2011-08-08 15:09:54','USER_LOGOUT',1,'2011-08-08 17:09:54',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(118,'2011-08-08 15:10:19','USER_LOGIN_FAILED',1,'2011-08-08 17:10:19',NULL,'Identifiants login ou mot de passe incorrects - login=','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(119,'2011-08-08 15:10:28','USER_LOGIN',1,'2011-08-08 17:10:28',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(121,'2011-08-08 15:14:58','USER_LOGOUT',1,'2011-08-08 17:14:58',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(122,'2011-08-08 15:15:00','USER_LOGIN_FAILED',1,'2011-08-08 17:15:00',NULL,'Identifiants login ou mot de passe incorrects - login=','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(123,'2011-08-08 15:17:57','USER_LOGIN',1,'2011-08-08 17:17:57',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(124,'2011-08-08 15:35:56','USER_LOGOUT',1,'2011-08-08 17:35:56',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(125,'2011-08-08 15:36:05','USER_LOGIN',1,'2011-08-08 17:36:05',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(126,'2011-08-08 17:32:42','USER_LOGIN',1,'2011-08-08 19:32:42',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL),(127,'2012-12-08 13:49:37','USER_LOGOUT',1,'2012-12-08 14:49:37',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL),(128,'2012-12-08 13:49:42','USER_LOGIN',1,'2012-12-08 14:49:42',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL),(129,'2012-12-08 13:50:12','USER_LOGOUT',1,'2012-12-08 14:50:12',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL),(130,'2012-12-08 13:50:14','USER_LOGIN',1,'2012-12-08 14:50:14',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL),(131,'2012-12-08 13:50:17','USER_LOGOUT',1,'2012-12-08 14:50:17',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL),(132,'2012-12-08 13:52:47','USER_LOGIN',1,'2012-12-08 14:52:47',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL),(133,'2012-12-08 13:53:08','USER_MODIFY',1,'2012-12-08 14:53:08',1,'User admin modified','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL),(134,'2012-12-08 14:08:45','USER_LOGOUT',1,'2012-12-08 15:08:45',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL),(135,'2012-12-08 14:09:09','USER_LOGIN',1,'2012-12-08 15:09:09',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL),(136,'2012-12-08 14:11:43','USER_LOGOUT',1,'2012-12-08 15:11:43',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL),(137,'2012-12-08 14:11:45','USER_LOGIN',1,'2012-12-08 15:11:45',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL),(138,'2012-12-08 14:22:53','USER_LOGOUT',1,'2012-12-08 15:22:53',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL),(139,'2012-12-08 14:22:54','USER_LOGIN',1,'2012-12-08 15:22:54',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL),(140,'2012-12-08 14:23:10','USER_LOGOUT',1,'2012-12-08 15:23:10',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL),(141,'2012-12-08 14:23:11','USER_LOGIN',1,'2012-12-08 15:23:11',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL),(142,'2012-12-08 14:23:49','USER_LOGOUT',1,'2012-12-08 15:23:49',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL),(143,'2012-12-08 14:23:50','USER_LOGIN',1,'2012-12-08 15:23:50',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL),(144,'2012-12-08 14:28:08','USER_LOGOUT',1,'2012-12-08 15:28:08',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL),(145,'2012-12-08 14:35:15','USER_LOGIN',1,'2012-12-08 15:35:15',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL),(146,'2012-12-08 14:35:18','USER_LOGOUT',1,'2012-12-08 15:35:18',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL),(147,'2012-12-08 14:36:07','USER_LOGIN',1,'2012-12-08 15:36:07',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL),(148,'2012-12-08 14:36:09','USER_LOGOUT',1,'2012-12-08 15:36:09',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL),(149,'2012-12-08 14:36:41','USER_LOGIN',1,'2012-12-08 15:36:41',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL),(150,'2012-12-08 15:59:13','USER_LOGIN',1,'2012-12-08 16:59:13',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL),(151,'2012-12-09 11:49:52','USER_LOGIN',1,'2012-12-09 12:49:52',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL),(152,'2012-12-09 13:46:31','USER_LOGIN',1,'2012-12-09 14:46:31',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL),(153,'2012-12-09 19:03:14','USER_LOGIN',1,'2012-12-09 20:03:14',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL),(154,'2012-12-10 00:16:31','USER_LOGIN',1,'2012-12-10 01:16:31',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL),(170,'2012-12-11 22:03:31','USER_LOGIN',1,'2012-12-11 23:03:31',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL),(171,'2012-12-12 00:32:39','USER_LOGIN',1,'2012-12-12 01:32:39',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL),(172,'2012-12-12 10:49:59','USER_LOGIN',1,'2012-12-12 11:49:59',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL),(175,'2012-12-12 10:57:40','USER_MODIFY',1,'2012-12-12 11:57:40',1,'Modification utilisateur admin','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL),(176,'2012-12-12 13:29:15','USER_LOGIN',1,'2012-12-12 14:29:15',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL),(177,'2012-12-12 13:30:15','USER_LOGIN',1,'2012-12-12 14:30:15',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL),(178,'2012-12-12 13:40:08','USER_LOGOUT',1,'2012-12-12 14:40:08',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL),(179,'2012-12-12 13:40:10','USER_LOGIN',1,'2012-12-12 14:40:10',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL),(180,'2012-12-12 13:40:26','USER_MODIFY',1,'2012-12-12 14:40:26',1,'Modification utilisateur admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL),(181,'2012-12-12 13:40:34','USER_LOGOUT',1,'2012-12-12 14:40:34',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL),(182,'2012-12-12 13:42:23','USER_LOGIN',1,'2012-12-12 14:42:23',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL),(183,'2012-12-12 13:43:02','USER_NEW_PASSWORD',1,'2012-12-12 14:43:02',NULL,'Changement mot de passe de admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL),(184,'2012-12-12 13:43:25','USER_LOGOUT',1,'2012-12-12 14:43:25',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL),(185,'2012-12-12 13:43:27','USER_LOGIN_FAILED',1,'2012-12-12 14:43:27',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL),(186,'2012-12-12 13:43:30','USER_LOGIN',1,'2012-12-12 14:43:30',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL),(187,'2012-12-12 14:52:11','USER_LOGIN',1,'2012-12-12 15:52:11',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL),(188,'2012-12-12 17:53:00','USER_LOGIN_FAILED',1,'2012-12-12 18:53:00',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL),(189,'2012-12-12 17:53:07','USER_LOGIN_FAILED',1,'2012-12-12 18:53:07',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL),(190,'2012-12-12 17:53:51','USER_NEW_PASSWORD',1,'2012-12-12 18:53:51',NULL,'Changement mot de passe de admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL),(191,'2012-12-12 17:54:00','USER_LOGIN',1,'2012-12-12 18:54:00',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL),(192,'2012-12-12 17:54:10','USER_NEW_PASSWORD',1,'2012-12-12 18:54:10',1,'Changement mot de passe de admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL),(193,'2012-12-12 17:54:10','USER_MODIFY',1,'2012-12-12 18:54:10',1,'Modification utilisateur admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL),(194,'2012-12-12 18:57:09','USER_LOGIN',1,'2012-12-12 19:57:09',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL),(195,'2012-12-12 23:04:08','USER_LOGIN',1,'2012-12-13 00:04:08',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL),(196,'2012-12-17 20:03:14','USER_LOGIN',1,'2012-12-17 21:03:14',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL),(197,'2012-12-17 21:18:45','USER_LOGIN',1,'2012-12-17 22:18:45',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL),(198,'2012-12-17 22:30:08','USER_LOGIN',1,'2012-12-17 23:30:08',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL),(199,'2012-12-18 23:32:03','USER_LOGIN',1,'2012-12-19 00:32:03',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL),(200,'2012-12-19 09:38:03','USER_LOGIN',1,'2012-12-19 10:38:03',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL),(201,'2012-12-19 11:23:35','USER_LOGIN',1,'2012-12-19 12:23:35',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL),(202,'2012-12-19 12:46:22','USER_LOGIN',1,'2012-12-19 13:46:22',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL),(214,'2012-12-19 19:11:31','USER_LOGIN',1,'2012-12-19 20:11:31',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL),(215,'2012-12-21 16:36:57','USER_LOGIN',1,'2012-12-21 17:36:57',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL),(216,'2012-12-21 16:38:43','USER_NEW_PASSWORD',1,'2012-12-21 17:38:43',1,'Changement mot de passe de adupont','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL),(217,'2012-12-21 16:38:43','USER_MODIFY',1,'2012-12-21 17:38:43',1,'Modification utilisateur adupont','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL),(218,'2012-12-21 16:38:51','USER_LOGOUT',1,'2012-12-21 17:38:51',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL),(219,'2012-12-21 16:38:55','USER_LOGIN',1,'2012-12-21 17:38:55',3,'(UserLogged,adupont)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL),(220,'2012-12-21 16:48:18','USER_LOGOUT',1,'2012-12-21 17:48:18',3,'(UserLogoff,adupont)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL),(221,'2012-12-21 16:48:20','USER_LOGIN',1,'2012-12-21 17:48:20',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL),(222,'2012-12-26 18:28:18','USER_LOGIN',1,'2012-12-26 19:28:18',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL),(223,'2012-12-26 20:00:24','USER_LOGIN',1,'2012-12-26 21:00:24',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL),(224,'2012-12-27 01:10:27','USER_LOGIN',1,'2012-12-27 02:10:27',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL),(225,'2012-12-28 19:12:08','USER_LOGIN',1,'2012-12-28 20:12:08',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL),(226,'2012-12-28 20:16:58','USER_LOGIN',1,'2012-12-28 21:16:58',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL),(227,'2012-12-29 14:35:46','USER_LOGIN',1,'2012-12-29 15:35:46',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL),(228,'2012-12-29 14:37:59','USER_LOGOUT',1,'2012-12-29 15:37:59',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL),(229,'2012-12-29 14:38:00','USER_LOGIN',1,'2012-12-29 15:38:00',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL),(230,'2012-12-29 17:16:48','USER_LOGIN',1,'2012-12-29 18:16:48',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL),(231,'2012-12-31 12:02:59','USER_LOGIN',1,'2012-12-31 13:02:59',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL),(232,'2013-01-02 20:32:51','USER_LOGIN',1,'2013-01-02 21:32:51',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:17.0) Gecko/20100101 Firefox/17.0',NULL),(233,'2013-01-02 20:58:59','USER_LOGIN',1,'2013-01-02 21:58:59',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL),(234,'2013-01-03 09:25:07','USER_LOGIN',1,'2013-01-03 10:25:07',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL),(235,'2013-01-03 19:39:31','USER_LOGIN',1,'2013-01-03 20:39:31',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL),(236,'2013-01-04 22:40:19','USER_LOGIN',1,'2013-01-04 23:40:19',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL),(237,'2013-01-05 12:59:59','USER_LOGIN',1,'2013-01-05 13:59:59',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL),(238,'2013-01-05 15:28:52','USER_LOGIN',1,'2013-01-05 16:28:52',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL),(239,'2013-01-05 17:02:08','USER_LOGIN',1,'2013-01-05 18:02:08',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL),(240,'2013-01-06 12:13:33','USER_LOGIN',1,'2013-01-06 13:13:33',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL),(241,'2013-01-07 01:21:15','USER_LOGIN',1,'2013-01-07 02:21:15',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL),(242,'2013-01-07 01:46:31','USER_LOGOUT',1,'2013-01-07 02:46:31',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL),(243,'2013-01-07 19:54:50','USER_LOGIN',1,'2013-01-07 20:54:50',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL),(244,'2013-01-08 21:55:01','USER_LOGIN',1,'2013-01-08 22:55:01',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL),(245,'2013-01-09 11:13:28','USER_LOGIN',1,'2013-01-09 12:13:28',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL),(246,'2013-01-10 18:30:46','USER_LOGIN',1,'2013-01-10 19:30:46',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL),(247,'2013-01-11 18:03:26','USER_LOGIN',1,'2013-01-11 19:03:26',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL),(248,'2013-01-12 11:15:04','USER_LOGIN',1,'2013-01-12 12:15:04',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL),(249,'2013-01-12 14:42:44','USER_LOGIN',1,'2013-01-12 15:42:44',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL),(250,'2013-01-13 12:07:17','USER_LOGIN',1,'2013-01-13 13:07:17',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL),(251,'2013-01-13 17:37:58','USER_LOGIN',1,'2013-01-13 18:37:58',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL),(252,'2013-01-13 19:24:21','USER_LOGIN',1,'2013-01-13 20:24:21',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL),(253,'2013-01-13 19:29:19','USER_LOGOUT',1,'2013-01-13 20:29:19',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL),(254,'2013-01-13 21:39:39','USER_LOGIN',1,'2013-01-13 22:39:39',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL),(255,'2013-01-14 00:52:21','USER_LOGIN',1,'2013-01-14 01:52:21',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL),(256,'2013-01-16 11:34:31','USER_LOGIN',1,'2013-01-16 12:34:31',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17',NULL),(257,'2013-01-16 15:36:21','USER_LOGIN',1,'2013-01-16 16:36:21',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17',NULL),(258,'2013-01-16 19:17:36','USER_LOGIN',1,'2013-01-16 20:17:36',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17',NULL),(259,'2013-01-16 19:48:08','GROUP_CREATE',1,'2013-01-16 20:48:08',1,'Création groupe ggg','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17',NULL),(260,'2013-01-16 21:48:53','USER_LOGIN',1,'2013-01-16 22:48:53',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17',NULL),(261,'2013-01-17 19:55:53','USER_LOGIN',1,'2013-01-17 20:55:53',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17',NULL),(262,'2013-01-18 09:48:01','USER_LOGIN',1,'2013-01-18 10:48:01',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17',NULL),(263,'2013-01-18 13:22:36','USER_LOGIN',1,'2013-01-18 14:22:36',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17',NULL),(264,'2013-01-18 16:10:23','USER_LOGIN',1,'2013-01-18 17:10:22',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17',NULL),(265,'2013-01-18 17:41:40','USER_LOGIN',1,'2013-01-18 18:41:40',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17',NULL),(266,'2013-01-19 14:33:48','USER_LOGIN',1,'2013-01-19 15:33:48',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17',NULL),(267,'2013-01-19 16:47:43','USER_LOGIN',1,'2013-01-19 17:47:43',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17',NULL),(268,'2013-01-19 16:59:43','USER_LOGIN',1,'2013-01-19 17:59:43',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17',NULL),(269,'2013-01-19 17:00:22','USER_LOGIN',1,'2013-01-19 18:00:22',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17',NULL),(270,'2013-01-19 17:04:16','USER_LOGOUT',1,'2013-01-19 18:04:16',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17',NULL),(271,'2013-01-19 17:04:18','USER_LOGIN',1,'2013-01-19 18:04:18',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17',NULL),(272,'2013-01-20 00:34:19','USER_LOGIN',1,'2013-01-20 01:34:19',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17',NULL),(273,'2013-01-21 11:54:17','USER_LOGIN',1,'2013-01-21 12:54:17',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17',NULL),(274,'2013-01-21 13:48:15','USER_LOGIN',1,'2013-01-21 14:48:15',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17',NULL),(275,'2013-01-21 14:30:22','USER_LOGIN',1,'2013-01-21 15:30:22',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17',NULL),(276,'2013-01-21 15:10:46','USER_LOGIN',1,'2013-01-21 16:10:46',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17',NULL),(277,'2013-01-21 17:27:43','USER_LOGIN',1,'2013-01-21 18:27:43',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17',NULL),(278,'2013-01-21 21:48:15','USER_LOGIN',1,'2013-01-21 22:48:15',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17',NULL),(279,'2013-01-21 21:50:42','USER_LOGIN',1,'2013-01-21 22:50:42',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17',NULL),(280,'2013-01-23 09:28:26','USER_LOGIN',1,'2013-01-23 10:28:26',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.56 Safari/537.17',NULL),(281,'2013-01-23 13:21:57','USER_LOGIN',1,'2013-01-23 14:21:57',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.56 Safari/537.17',NULL),(282,'2013-01-23 16:52:00','USER_LOGOUT',1,'2013-01-23 17:52:00',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.56 Safari/537.17',NULL),(283,'2013-01-23 16:52:05','USER_LOGIN_FAILED',1,'2013-01-23 17:52:05',NULL,'Bad value for login or password - login=bbb','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.56 Safari/537.17',NULL),(284,'2013-01-23 16:52:09','USER_LOGIN',1,'2013-01-23 17:52:09',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.56 Safari/537.17',NULL),(285,'2013-01-23 16:52:27','USER_CREATE',1,'2013-01-23 17:52:27',1,'Création utilisateur aaa','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.56 Safari/537.17',NULL),(286,'2013-01-23 16:52:27','USER_NEW_PASSWORD',1,'2013-01-23 17:52:27',1,'Changement mot de passe de aaa','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.56 Safari/537.17',NULL),(287,'2013-01-23 16:52:37','USER_CREATE',1,'2013-01-23 17:52:37',1,'Création utilisateur bbb','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.56 Safari/537.17',NULL),(288,'2013-01-23 16:52:37','USER_NEW_PASSWORD',1,'2013-01-23 17:52:37',1,'Changement mot de passe de bbb','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.56 Safari/537.17',NULL),(289,'2013-01-23 16:53:15','USER_LOGOUT',1,'2013-01-23 17:53:15',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.56 Safari/537.17',NULL),(290,'2013-01-23 16:53:20','USER_LOGIN',1,'2013-01-23 17:53:20',4,'(UserLogged,aaa)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.56 Safari/537.17',NULL),(291,'2013-01-23 19:16:58','USER_LOGIN',1,'2013-01-23 20:16:58',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.56 Safari/537.17',NULL),(292,'2013-01-26 10:54:07','USER_LOGIN',1,'2013-01-26 11:54:07',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.56 Safari/537.17',NULL),(293,'2013-01-29 10:15:36','USER_LOGIN',1,'2013-01-29 11:15:36',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.56 Safari/537.17',NULL),(294,'2013-01-30 17:42:50','USER_LOGIN',1,'2013-01-30 18:42:50',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.56 Safari/537.17',NULL),(295,'2013-02-01 08:49:55','USER_LOGIN',1,'2013-02-01 09:49:55',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17',NULL),(296,'2013-02-01 08:51:57','USER_LOGOUT',1,'2013-02-01 09:51:57',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17',NULL),(297,'2013-02-01 08:52:39','USER_LOGIN',1,'2013-02-01 09:52:39',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17',NULL),(298,'2013-02-01 21:03:01','USER_LOGIN',1,'2013-02-01 22:03:01',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17',NULL),(299,'2013-02-10 19:48:39','USER_LOGIN',1,'2013-02-10 20:48:39',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17',NULL),(300,'2013-02-10 20:46:48','USER_LOGIN',1,'2013-02-10 21:46:48',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17',NULL),(301,'2013-02-10 21:39:23','USER_LOGIN',1,'2013-02-10 22:39:23',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17',NULL),(302,'2013-02-11 19:00:13','USER_LOGIN',1,'2013-02-11 20:00:13',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17',NULL),(303,'2013-02-11 19:43:44','USER_LOGIN_FAILED',1,'2013-02-11 20:43:44',NULL,'Unknown column \'u.fk_user\' in \'field list\'','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17',NULL),(304,'2013-02-11 19:44:01','USER_LOGIN',1,'2013-02-11 20:44:01',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17',NULL),(305,'2013-02-12 00:27:35','USER_LOGIN',1,'2013-02-12 01:27:35',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17',NULL),(306,'2013-02-12 00:27:38','USER_LOGOUT',1,'2013-02-12 01:27:38',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17',NULL),(307,'2013-02-12 00:28:07','USER_LOGIN',1,'2013-02-12 01:28:07',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17',NULL),(308,'2013-02-12 00:28:09','USER_LOGOUT',1,'2013-02-12 01:28:09',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17',NULL),(309,'2013-02-12 00:28:26','USER_LOGIN',1,'2013-02-12 01:28:26',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17',NULL),(310,'2013-02-12 00:28:30','USER_LOGOUT',1,'2013-02-12 01:28:30',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17',NULL),(311,'2013-02-12 12:42:15','USER_LOGIN',1,'2013-02-12 13:42:15',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17',NULL),(312,'2013-02-12 13:46:16','USER_LOGIN',1,'2013-02-12 14:46:16',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL),(313,'2013-02-12 14:54:28','USER_LOGIN',1,'2013-02-12 15:54:28',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL),(314,'2013-02-12 16:04:46','USER_LOGIN',1,'2013-02-12 17:04:46',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL),(315,'2013-02-13 14:02:43','USER_LOGIN',1,'2013-02-13 15:02:43',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL),(316,'2013-02-13 14:48:30','USER_LOGIN',1,'2013-02-13 15:48:30',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL),(317,'2013-02-13 17:44:53','USER_LOGIN',1,'2013-02-13 18:44:53',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL),(318,'2013-02-15 08:44:36','USER_LOGIN',1,'2013-02-15 09:44:36',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL),(319,'2013-02-15 08:53:20','USER_LOGIN',1,'2013-02-15 09:53:20',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL),(320,'2013-02-16 19:10:28','USER_LOGIN',1,'2013-02-16 20:10:28',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL),(321,'2013-02-16 19:22:40','USER_CREATE',1,'2013-02-16 20:22:40',1,'Création utilisateur aaab','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL),(322,'2013-02-16 19:22:40','USER_NEW_PASSWORD',1,'2013-02-16 20:22:40',1,'Changement mot de passe de aaab','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL),(323,'2013-02-16 19:48:15','USER_CREATE',1,'2013-02-16 20:48:15',1,'Création utilisateur zzz','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL),(324,'2013-02-16 19:48:15','USER_NEW_PASSWORD',1,'2013-02-16 20:48:15',1,'Changement mot de passe de zzz','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL),(325,'2013-02-16 19:50:08','USER_CREATE',1,'2013-02-16 20:50:08',1,'Création utilisateur zzzg','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL),(326,'2013-02-16 19:50:08','USER_NEW_PASSWORD',1,'2013-02-16 20:50:08',1,'Changement mot de passe de zzzg','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL),(327,'2013-02-16 21:20:03','USER_LOGIN',1,'2013-02-16 22:20:03',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL),(328,'2013-02-17 14:30:51','USER_LOGIN',1,'2013-02-17 15:30:51',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL),(329,'2013-02-17 17:21:22','USER_LOGIN',1,'2013-02-17 18:21:22',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL),(330,'2013-02-17 17:48:43','USER_MODIFY',1,'2013-02-17 18:48:43',1,'Modification utilisateur aaa','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL),(331,'2013-02-17 17:48:47','USER_MODIFY',1,'2013-02-17 18:48:47',1,'Modification utilisateur aaa','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL),(332,'2013-02-17 17:48:51','USER_MODIFY',1,'2013-02-17 18:48:51',1,'Modification utilisateur aaa','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL),(333,'2013-02-17 17:48:56','USER_MODIFY',1,'2013-02-17 18:48:56',1,'Modification utilisateur aaa','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL),(334,'2013-02-18 22:00:01','USER_LOGIN',1,'2013-02-18 23:00:01',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL),(335,'2013-02-19 08:19:52','USER_LOGIN',1,'2013-02-19 09:19:52',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL),(336,'2013-02-19 22:00:52','USER_LOGIN',1,'2013-02-19 23:00:52',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL),(337,'2013-02-20 09:34:52','USER_LOGIN',1,'2013-02-20 10:34:52',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL),(338,'2013-02-20 13:12:28','USER_LOGIN',1,'2013-02-20 14:12:28',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL),(339,'2013-02-20 17:19:44','USER_LOGIN',1,'2013-02-20 18:19:44',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL),(340,'2013-02-20 19:07:21','USER_MODIFY',1,'2013-02-20 20:07:21',1,'Modification utilisateur adupont','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL),(341,'2013-02-20 19:47:17','USER_LOGIN',1,'2013-02-20 20:47:17',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL),(342,'2013-02-20 19:48:01','USER_MODIFY',1,'2013-02-20 20:48:01',1,'Modification utilisateur aaa','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL),(343,'2013-02-21 08:27:07','USER_LOGIN',1,'2013-02-21 09:27:07',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL),(344,'2013-02-23 13:34:13','USER_LOGIN',1,'2013-02-23 14:34:13',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL),(345,'2013-02-24 01:06:41','USER_LOGIN_FAILED',1,'2013-02-24 02:06:41',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(346,'2013-02-24 01:06:45','USER_LOGIN_FAILED',1,'2013-02-24 02:06:45',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(347,'2013-02-24 01:06:55','USER_LOGIN_FAILED',1,'2013-02-24 02:06:55',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(348,'2013-02-24 01:07:03','USER_LOGIN_FAILED',1,'2013-02-24 02:07:03',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(349,'2013-02-24 01:07:21','USER_LOGIN_FAILED',1,'2013-02-24 02:07:21',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(350,'2013-02-24 01:08:12','USER_LOGIN_FAILED',1,'2013-02-24 02:08:12',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(351,'2013-02-24 01:08:42','USER_LOGIN_FAILED',1,'2013-02-24 02:08:42',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(352,'2013-02-24 01:08:50','USER_LOGIN_FAILED',1,'2013-02-24 02:08:50',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(353,'2013-02-24 01:09:08','USER_LOGIN_FAILED',1,'2013-02-24 02:09:08',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(354,'2013-02-24 01:09:42','USER_LOGIN_FAILED',1,'2013-02-24 02:09:42',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(355,'2013-02-24 01:09:50','USER_LOGIN_FAILED',1,'2013-02-24 02:09:50',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(356,'2013-02-24 01:10:05','USER_LOGIN_FAILED',1,'2013-02-24 02:10:05',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(357,'2013-02-24 01:10:22','USER_LOGIN_FAILED',1,'2013-02-24 02:10:22',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(358,'2013-02-24 01:10:30','USER_LOGIN_FAILED',1,'2013-02-24 02:10:30',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(359,'2013-02-24 01:10:56','USER_LOGIN_FAILED',1,'2013-02-24 02:10:56',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(360,'2013-02-24 01:11:26','USER_LOGIN_FAILED',1,'2013-02-24 02:11:26',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(361,'2013-02-24 01:12:06','USER_LOGIN_FAILED',1,'2013-02-24 02:12:06',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(362,'2013-02-24 01:21:14','USER_LOGIN_FAILED',1,'2013-02-24 02:21:14',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(363,'2013-02-24 01:21:25','USER_LOGIN_FAILED',1,'2013-02-24 02:21:25',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(364,'2013-02-24 01:21:54','USER_LOGIN_FAILED',1,'2013-02-24 02:21:54',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(365,'2013-02-24 01:22:14','USER_LOGIN_FAILED',1,'2013-02-24 02:22:14',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(366,'2013-02-24 01:22:37','USER_LOGIN_FAILED',1,'2013-02-24 02:22:37',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(367,'2013-02-24 01:23:01','USER_LOGIN_FAILED',1,'2013-02-24 02:23:01',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(368,'2013-02-24 01:23:39','USER_LOGIN_FAILED',1,'2013-02-24 02:23:39',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(369,'2013-02-24 01:24:04','USER_LOGIN_FAILED',1,'2013-02-24 02:24:04',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(370,'2013-02-24 01:24:39','USER_LOGIN_FAILED',1,'2013-02-24 02:24:39',NULL,'Bad value for login or password - login=aa','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(371,'2013-02-24 01:25:01','USER_LOGIN_FAILED',1,'2013-02-24 02:25:01',NULL,'Bad value for login or password - login=aa','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(372,'2013-02-24 01:25:12','USER_LOGIN_FAILED',1,'2013-02-24 02:25:12',NULL,'Bad value for login or password - login=aa','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(373,'2013-02-24 01:27:30','USER_LOGIN_FAILED',1,'2013-02-24 02:27:30',NULL,'Bad value for login or password - login=aa','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(374,'2013-02-24 01:28:00','USER_LOGIN_FAILED',1,'2013-02-24 02:28:00',NULL,'Bad value for login or password - login=aa','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(375,'2013-02-24 01:28:35','USER_LOGIN_FAILED',1,'2013-02-24 02:28:35',NULL,'Bad value for login or password - login=aa','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(376,'2013-02-24 01:29:03','USER_LOGIN_FAILED',1,'2013-02-24 02:29:03',NULL,'Bad value for login or password - login=aa','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(377,'2013-02-24 01:29:55','USER_LOGIN_FAILED',1,'2013-02-24 02:29:55',NULL,'Bad value for login or password - login=aa','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(378,'2013-02-24 01:32:40','USER_LOGIN_FAILED',1,'2013-02-24 02:32:40',NULL,'Bad value for login or password - login=aa','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(379,'2013-02-24 01:39:33','USER_LOGIN_FAILED',1,'2013-02-24 02:39:33',NULL,'Identifiants login ou mot de passe incorrects - login=aa','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(380,'2013-02-24 01:39:38','USER_LOGIN_FAILED',1,'2013-02-24 02:39:38',NULL,'Identifiants login ou mot de passe incorrects - login=aa','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(381,'2013-02-24 01:39:47','USER_LOGIN_FAILED',1,'2013-02-24 02:39:47',NULL,'Identifiants login ou mot de passe incorrects - login=lmkm','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(382,'2013-02-24 01:40:54','USER_LOGIN_FAILED',1,'2013-02-24 02:40:54',NULL,'Identifiants login ou mot de passe incorrects - login=lmkm','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(383,'2013-02-24 01:47:57','USER_LOGIN_FAILED',1,'2013-02-24 02:47:57',NULL,'Identifiants login ou mot de passe incorrects - login=lmkm','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(384,'2013-02-24 01:48:05','USER_LOGIN_FAILED',1,'2013-02-24 02:48:05',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(385,'2013-02-24 01:48:07','USER_LOGIN_FAILED',1,'2013-02-24 02:48:07',NULL,'Unknown column \'u.lastname\' in \'field list\'','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(386,'2013-02-24 01:48:35','USER_LOGIN',1,'2013-02-24 02:48:35',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(387,'2013-02-24 01:56:32','USER_LOGIN',1,'2013-02-24 02:56:32',1,'(UserLogged,admin)','192.168.0.254','Mozilla/5.0 (Linux; U; Android 2.2; en-us; sdk Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1',NULL),(388,'2013-02-24 02:05:55','USER_LOGOUT',1,'2013-02-24 03:05:55',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(389,'2013-02-24 02:39:52','USER_LOGIN',1,'2013-02-24 03:39:52',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(390,'2013-02-24 02:51:10','USER_LOGOUT',1,'2013-02-24 03:51:10',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(391,'2013-02-24 12:46:41','USER_LOGIN',1,'2013-02-24 13:46:41',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(392,'2013-02-24 12:46:52','USER_LOGOUT',1,'2013-02-24 13:46:52',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(393,'2013-02-24 12:46:56','USER_LOGIN',1,'2013-02-24 13:46:56',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(394,'2013-02-24 12:47:56','USER_LOGOUT',1,'2013-02-24 13:47:56',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(395,'2013-02-24 12:48:00','USER_LOGIN',1,'2013-02-24 13:48:00',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(396,'2013-02-24 12:48:11','USER_LOGOUT',1,'2013-02-24 13:48:11',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(397,'2013-02-24 12:48:32','USER_LOGIN',1,'2013-02-24 13:48:32',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(398,'2013-02-24 12:52:22','USER_LOGOUT',1,'2013-02-24 13:52:22',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(399,'2013-02-24 12:52:27','USER_LOGIN',1,'2013-02-24 13:52:27',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(400,'2013-02-24 12:52:54','USER_LOGOUT',1,'2013-02-24 13:52:54',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(401,'2013-02-24 12:52:59','USER_LOGIN',1,'2013-02-24 13:52:59',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(402,'2013-02-24 12:55:39','USER_LOGOUT',1,'2013-02-24 13:55:39',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(403,'2013-02-24 12:55:59','USER_LOGIN',1,'2013-02-24 13:55:59',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(404,'2013-02-24 12:56:07','USER_LOGOUT',1,'2013-02-24 13:56:07',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(405,'2013-02-24 12:56:23','USER_LOGIN',1,'2013-02-24 13:56:23',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(406,'2013-02-24 12:56:46','USER_LOGOUT',1,'2013-02-24 13:56:46',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(407,'2013-02-24 12:58:30','USER_LOGIN',1,'2013-02-24 13:58:30',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(408,'2013-02-24 12:58:33','USER_LOGOUT',1,'2013-02-24 13:58:33',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(409,'2013-02-24 12:58:51','USER_LOGIN',1,'2013-02-24 13:58:51',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(410,'2013-02-24 12:58:58','USER_LOGOUT',1,'2013-02-24 13:58:58',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(411,'2013-02-24 13:18:53','USER_LOGIN',1,'2013-02-24 14:18:53',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(412,'2013-02-24 13:19:52','USER_LOGOUT',1,'2013-02-24 14:19:52',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(413,'2013-02-24 15:39:31','USER_LOGIN_FAILED',1,'2013-02-24 16:39:31',NULL,'ErrorBadValueForCode - login=admin','127.0.0.1',NULL,NULL),(414,'2013-02-24 15:42:07','USER_LOGIN',1,'2013-02-24 16:42:07',1,'(UserLogged,admin)','127.0.0.1',NULL,NULL),(415,'2013-02-24 15:42:52','USER_LOGOUT',1,'2013-02-24 16:42:52',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_0 like Mac OS X; en-us) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8A293 Safari/6531.22.7',NULL),(416,'2013-02-24 16:04:21','USER_LOGIN',1,'2013-02-24 17:04:21',1,'(UserLogged,admin)','192.168.0.254','Mozilla/5.0 (Linux; U; Android 2.2; en-us; sdk Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1',NULL),(417,'2013-02-24 16:11:28','USER_LOGIN_FAILED',1,'2013-02-24 17:11:28',NULL,'ErrorBadValueForCode - login=admin','127.0.0.1','Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_0 like Mac OS X; en-us) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8A293 Safari/6531.22.7',NULL),(418,'2013-02-24 16:11:37','USER_LOGIN',1,'2013-02-24 17:11:37',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_0 like Mac OS X; en-us) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8A293 Safari/6531.22.7',NULL),(419,'2013-02-24 16:36:52','USER_LOGOUT',1,'2013-02-24 17:36:52',1,'(UserLogoff,admin)','192.168.0.254','Mozilla/5.0 (Linux; U; Android 2.2; en-us; sdk Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1',NULL),(420,'2013-02-24 16:40:37','USER_LOGIN',1,'2013-02-24 17:40:37',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(421,'2013-02-24 16:57:16','USER_LOGIN',1,'2013-02-24 17:57:16',1,'(UserLogged,admin)','192.168.0.254','Mozilla/5.0 (Linux; U; Android 2.2; en-us; sdk Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 - 2131034114',NULL),(422,'2013-02-24 17:01:30','USER_LOGOUT',1,'2013-02-24 18:01:30',1,'(UserLogoff,admin)','192.168.0.254','Mozilla/5.0 (Linux; U; Android 2.2; en-us; sdk Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 - 2131034114',NULL),(423,'2013-02-24 17:02:33','USER_LOGIN',1,'2013-02-24 18:02:33',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(424,'2013-02-24 17:14:22','USER_LOGOUT',1,'2013-02-24 18:14:22',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(425,'2013-02-24 17:15:07','USER_LOGIN_FAILED',1,'2013-02-24 18:15:07',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(426,'2013-02-24 17:15:20','USER_LOGIN',1,'2013-02-24 18:15:20',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(427,'2013-02-24 17:20:14','USER_LOGIN',1,'2013-02-24 18:20:14',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(428,'2013-02-24 17:20:51','USER_LOGIN',1,'2013-02-24 18:20:51',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(429,'2013-02-24 17:20:54','USER_LOGOUT',1,'2013-02-24 18:20:54',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(430,'2013-02-24 17:21:19','USER_LOGIN',1,'2013-02-24 18:21:19',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(431,'2013-02-24 17:32:35','USER_LOGIN',1,'2013-02-24 18:32:35',1,'(UserLogged,admin)','192.168.0.254','Mozilla/5.0 (Linux; U; Android 2.2; en-us; sdk Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 - 2131034114',NULL),(432,'2013-02-24 18:28:48','USER_LOGIN',1,'2013-02-24 19:28:48',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(433,'2013-02-24 18:29:27','USER_LOGOUT',1,'2013-02-24 19:29:27',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_0 like Mac OS X; en-us) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8A293 Safari/6531.22.7',NULL),(434,'2013-02-24 18:29:32','USER_LOGIN',1,'2013-02-24 19:29:32',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_0 like Mac OS X; en-us) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8A293 Safari/6531.22.7',NULL),(435,'2013-02-24 20:13:13','USER_LOGOUT',1,'2013-02-24 21:13:13',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(436,'2013-02-24 20:13:17','USER_LOGIN',1,'2013-02-24 21:13:17',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(437,'2013-02-25 08:57:16','USER_LOGIN',1,'2013-02-25 09:57:16',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(438,'2013-02-25 08:57:59','USER_LOGOUT',1,'2013-02-25 09:57:59',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(439,'2013-02-25 09:15:02','USER_LOGIN',1,'2013-02-25 10:15:02',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(440,'2013-02-25 09:15:50','USER_LOGOUT',1,'2013-02-25 10:15:50',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(441,'2013-02-25 09:15:57','USER_LOGIN',1,'2013-02-25 10:15:57',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(442,'2013-02-25 09:16:12','USER_LOGOUT',1,'2013-02-25 10:16:12',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(443,'2013-02-25 09:16:19','USER_LOGIN',1,'2013-02-25 10:16:19',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(444,'2013-02-25 09:16:25','USER_LOGOUT',1,'2013-02-25 10:16:25',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(445,'2013-02-25 09:16:39','USER_LOGIN_FAILED',1,'2013-02-25 10:16:39',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(446,'2013-02-25 09:16:42','USER_LOGIN_FAILED',1,'2013-02-25 10:16:42',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(447,'2013-02-25 09:16:54','USER_LOGIN_FAILED',1,'2013-02-25 10:16:54',NULL,'Identificadors d'usuari o contrasenya incorrectes - login=gfdg','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(448,'2013-02-25 09:17:53','USER_LOGIN',1,'2013-02-25 10:17:53',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(449,'2013-02-25 09:18:37','USER_LOGOUT',1,'2013-02-25 10:18:37',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(450,'2013-02-25 09:18:41','USER_LOGIN',1,'2013-02-25 10:18:41',4,'(UserLogged,aaa)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(451,'2013-02-25 09:18:47','USER_LOGOUT',1,'2013-02-25 10:18:47',4,'(UserLogoff,aaa)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(452,'2013-02-25 10:05:34','USER_LOGIN',1,'2013-02-25 11:05:34',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(453,'2013-02-26 21:51:40','USER_LOGIN',1,'2013-02-26 22:51:40',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(454,'2013-02-26 23:30:06','USER_LOGIN',1,'2013-02-27 00:30:06',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(455,'2013-02-27 14:13:11','USER_LOGIN',1,'2013-02-27 15:13:11',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(456,'2013-02-27 18:12:06','USER_LOGIN_FAILED',1,'2013-02-27 19:12:06',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(457,'2013-02-27 18:12:10','USER_LOGIN',1,'2013-02-27 19:12:10',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(458,'2013-02-27 20:20:08','USER_LOGIN',1,'2013-02-27 21:20:08',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(459,'2013-03-01 22:12:03','USER_LOGIN',1,'2013-03-01 23:12:03',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(460,'2013-03-02 11:45:50','USER_LOGIN',1,'2013-03-02 12:45:50',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(461,'2013-03-02 15:53:51','USER_LOGIN_FAILED',1,'2013-03-02 16:53:51',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(462,'2013-03-02 15:53:53','USER_LOGIN',1,'2013-03-02 16:53:53',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(463,'2013-03-02 18:32:32','USER_LOGIN',1,'2013-03-02 19:32:32',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(464,'2013-03-02 22:59:36','USER_LOGIN',1,'2013-03-02 23:59:36',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(465,'2013-03-03 16:26:26','USER_LOGIN',1,'2013-03-03 17:26:26',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(466,'2013-03-03 22:50:27','USER_LOGIN',1,'2013-03-03 23:50:27',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(467,'2013-03-04 08:29:27','USER_LOGIN',1,'2013-03-04 09:29:27',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(468,'2013-03-04 18:27:28','USER_LOGIN',1,'2013-03-04 19:27:28',1,'(UserLogged,admin)','192.168.0.254','Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; NP06)',NULL),(469,'2013-03-04 19:27:23','USER_LOGIN',1,'2013-03-04 20:27:23',1,'(UserLogged,admin)','192.168.0.254','Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)',NULL),(470,'2013-03-04 19:35:14','USER_LOGIN',1,'2013-03-04 20:35:14',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(471,'2013-03-04 19:55:49','USER_LOGIN',1,'2013-03-04 20:55:49',1,'(UserLogged,admin)','192.168.0.254','Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0)',NULL),(472,'2013-03-04 21:16:13','USER_LOGIN',1,'2013-03-04 22:16:13',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(473,'2013-03-05 10:17:30','USER_LOGIN',1,'2013-03-05 11:17:30',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(474,'2013-03-05 11:02:43','USER_LOGIN',1,'2013-03-05 12:02:43',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(475,'2013-03-05 23:14:39','USER_LOGIN',1,'2013-03-06 00:14:39',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(476,'2013-03-06 08:58:57','USER_LOGIN',1,'2013-03-06 09:58:57',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(477,'2013-03-06 14:29:40','USER_LOGIN',1,'2013-03-06 15:29:40',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(478,'2013-03-06 21:53:02','USER_LOGIN',1,'2013-03-06 22:53:02',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(479,'2013-03-07 21:14:39','USER_LOGIN',1,'2013-03-07 22:14:39',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(480,'2013-03-08 00:06:05','USER_LOGIN',1,'2013-03-08 01:06:05',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(481,'2013-03-08 01:38:13','USER_LOGIN',1,'2013-03-08 02:38:13',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(482,'2013-03-08 08:59:50','USER_LOGIN',1,'2013-03-08 09:59:50',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(483,'2013-03-09 12:08:51','USER_LOGIN',1,'2013-03-09 13:08:51',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(484,'2013-03-09 15:19:53','USER_LOGIN',1,'2013-03-09 16:19:53',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(495,'2013-03-09 18:06:21','USER_LOGIN',1,'2013-03-09 19:06:21',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(496,'2013-03-09 20:01:24','USER_LOGIN',1,'2013-03-09 21:01:24',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(497,'2013-03-09 23:36:45','USER_LOGIN',1,'2013-03-10 00:36:45',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(498,'2013-03-10 14:37:13','USER_LOGIN',1,'2013-03-10 15:37:13',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(499,'2013-03-10 17:54:12','USER_LOGIN',1,'2013-03-10 18:54:12',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(500,'2013-03-11 08:57:09','USER_LOGIN',1,'2013-03-11 09:57:09',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(501,'2013-03-11 22:05:13','USER_LOGIN',1,'2013-03-11 23:05:13',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(502,'2013-03-12 08:34:27','USER_LOGIN',1,'2013-03-12 09:34:27',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(503,'2013-03-13 09:11:02','USER_LOGIN',1,'2013-03-13 10:11:02',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(504,'2013-03-13 10:02:11','USER_LOGIN',1,'2013-03-13 11:02:11',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(505,'2013-03-13 13:20:58','USER_LOGIN',1,'2013-03-13 14:20:58',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(506,'2013-03-13 16:19:28','USER_LOGIN',1,'2013-03-13 17:19:28',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(507,'2013-03-13 18:34:30','USER_LOGIN',1,'2013-03-13 19:34:30',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(508,'2013-03-14 08:25:02','USER_LOGIN',1,'2013-03-14 09:25:02',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(509,'2013-03-14 19:15:22','USER_LOGIN',1,'2013-03-14 20:15:22',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(510,'2013-03-14 21:58:53','USER_LOGIN',1,'2013-03-14 22:58:53',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(511,'2013-03-14 21:58:59','USER_LOGOUT',1,'2013-03-14 22:58:59',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(512,'2013-03-14 21:59:07','USER_LOGIN',1,'2013-03-14 22:59:07',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(513,'2013-03-14 22:58:22','USER_LOGOUT',1,'2013-03-14 23:58:22',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(514,'2013-03-14 23:00:25','USER_LOGIN',1,'2013-03-15 00:00:25',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(515,'2013-03-16 12:14:28','USER_LOGIN',1,'2013-03-16 13:14:28',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(516,'2013-03-16 16:09:01','USER_LOGIN',1,'2013-03-16 17:09:01',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(517,'2013-03-16 16:57:11','USER_LOGIN',1,'2013-03-16 17:57:11',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(518,'2013-03-16 19:31:31','USER_LOGIN',1,'2013-03-16 20:31:31',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL),(519,'2013-03-17 17:44:39','USER_LOGIN',1,'2013-03-17 18:44:39',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL),(520,'2013-03-17 20:40:57','USER_LOGIN',1,'2013-03-17 21:40:57',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL),(521,'2013-03-17 23:14:05','USER_LOGIN',1,'2013-03-18 00:14:05',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL),(522,'2013-03-17 23:28:47','USER_LOGOUT',1,'2013-03-18 00:28:47',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL),(523,'2013-03-17 23:28:54','USER_LOGIN',1,'2013-03-18 00:28:54',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL),(524,'2013-03-18 17:37:30','USER_LOGIN',1,'2013-03-18 18:37:30',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL),(525,'2013-03-18 18:11:37','USER_LOGIN',1,'2013-03-18 19:11:37',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL),(526,'2013-03-19 08:35:08','USER_LOGIN',1,'2013-03-19 09:35:08',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL),(527,'2013-03-19 09:20:23','USER_LOGIN',1,'2013-03-19 10:20:23',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL),(528,'2013-03-20 13:17:13','USER_LOGIN',1,'2013-03-20 14:17:13',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL),(529,'2013-03-20 14:44:31','USER_LOGIN',1,'2013-03-20 15:44:31',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL),(530,'2013-03-20 18:24:25','USER_LOGIN',1,'2013-03-20 19:24:25',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL),(531,'2013-03-20 19:15:54','USER_LOGIN',1,'2013-03-20 20:15:54',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL),(532,'2013-03-21 18:40:47','USER_LOGIN',1,'2013-03-21 19:40:47',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL),(533,'2013-03-21 21:42:24','USER_LOGIN',1,'2013-03-21 22:42:24',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL),(534,'2013-03-22 08:39:23','USER_LOGIN',1,'2013-03-22 09:39:23',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL),(535,'2013-03-23 13:04:55','USER_LOGIN',1,'2013-03-23 14:04:55',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL),(536,'2013-03-23 15:47:43','USER_LOGIN',1,'2013-03-23 16:47:43',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL),(537,'2013-03-23 22:56:36','USER_LOGIN',1,'2013-03-23 23:56:36',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL),(538,'2013-03-24 01:22:32','USER_LOGIN',1,'2013-03-24 02:22:32',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL),(539,'2013-03-24 14:40:42','USER_LOGIN',1,'2013-03-24 15:40:42',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL),(540,'2013-03-24 15:30:26','USER_LOGOUT',1,'2013-03-24 16:30:26',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL),(541,'2013-03-24 15:30:29','USER_LOGIN',1,'2013-03-24 16:30:29',2,'(UserLogged,demo)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL),(542,'2013-03-24 15:49:40','USER_LOGOUT',1,'2013-03-24 16:49:40',2,'(UserLogoff,demo)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL),(543,'2013-03-24 15:49:48','USER_LOGIN',1,'2013-03-24 16:49:48',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL),(544,'2013-03-24 15:52:35','USER_MODIFY',1,'2013-03-24 16:52:35',1,'Modification utilisateur zzzg','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL),(545,'2013-03-24 15:52:52','USER_MODIFY',1,'2013-03-24 16:52:52',1,'Modification utilisateur zzzg','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL),(546,'2013-03-24 15:53:09','USER_MODIFY',1,'2013-03-24 16:53:09',1,'Modification utilisateur zzzg','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL),(547,'2013-03-24 15:53:23','USER_MODIFY',1,'2013-03-24 16:53:23',1,'Modification utilisateur zzzg','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL),(548,'2013-03-24 16:00:04','USER_MODIFY',1,'2013-03-24 17:00:04',1,'Modification utilisateur zzzg','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL),(549,'2013-03-24 16:01:50','USER_MODIFY',1,'2013-03-24 17:01:50',1,'Modification utilisateur zzzg','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL),(550,'2013-03-24 16:10:14','USER_MODIFY',1,'2013-03-24 17:10:14',1,'Modification utilisateur zzzg','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL),(551,'2013-03-24 16:55:13','USER_LOGIN',1,'2013-03-24 17:55:13',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL),(552,'2013-03-24 17:44:29','USER_LOGIN',1,'2013-03-24 18:44:29',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL),(553,'2013-09-08 23:06:26','USER_LOGIN',1,'2013-09-09 01:06:26',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.57 Safari/537.36',NULL),(554,'2013-10-21 22:32:28','USER_LOGIN',1,'2013-10-22 00:32:28',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.66 Safari/537.36',NULL),(555,'2013-10-21 22:32:48','USER_LOGIN',1,'2013-10-22 00:32:48',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.66 Safari/537.36',NULL),(556,'2013-11-07 00:01:51','USER_LOGIN',1,'2013-11-07 01:01:51',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.114 Safari/537.36',NULL),(557,'2014-03-02 15:21:07','USER_LOGIN',1,'2014-03-02 16:21:07',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.117 Safari/537.36',NULL),(558,'2014-03-02 15:36:53','USER_LOGIN',1,'2014-03-02 16:36:53',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.117 Safari/537.36',NULL),(559,'2014-03-02 18:54:23','USER_LOGIN',1,'2014-03-02 19:54:23',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.117 Safari/537.36',NULL),(560,'2014-03-02 19:11:17','USER_LOGIN',1,'2014-03-02 20:11:17',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.117 Safari/537.36',NULL),(561,'2014-03-03 18:19:24','USER_LOGIN',1,'2014-03-03 19:19:24',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.117 Safari/537.36',NULL),(562,'2014-12-21 12:51:38','USER_LOGIN',1,'2014-12-21 13:51:38',1,'(UserLogged,admin) - TZ=1;TZString=CET;Screen=1920x969','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.111 Safari/537.36',NULL),(563,'2014-12-21 19:52:09','USER_LOGIN',1,'2014-12-21 20:52:09',1,'(UserLogged,admin) - TZ=1;TZString=CET;Screen=1920x969','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.111 Safari/537.36',NULL),(566,'2015-10-03 08:49:43','USER_NEW_PASSWORD',1,'2015-10-03 10:49:43',1,'Password change for admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(567,'2015-10-03 08:49:43','USER_MODIFY',1,'2015-10-03 10:49:43',1,'User admin modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(568,'2015-10-03 09:03:12','USER_MODIFY',1,'2015-10-03 11:03:12',1,'User admin modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(569,'2015-10-03 09:03:42','USER_MODIFY',1,'2015-10-03 11:03:42',1,'User admin modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(570,'2015-10-03 09:07:36','USER_MODIFY',1,'2015-10-03 11:07:36',1,'User demo modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(571,'2015-10-03 09:08:58','USER_NEW_PASSWORD',1,'2015-10-03 11:08:58',1,'Password change for pcurie','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(572,'2015-10-03 09:08:58','USER_MODIFY',1,'2015-10-03 11:08:58',1,'User pcurie modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(573,'2015-10-03 09:09:23','USER_MODIFY',1,'2015-10-03 11:09:23',1,'User pcurie modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(574,'2015-10-03 09:11:04','USER_NEW_PASSWORD',1,'2015-10-03 11:11:04',1,'Password change for athestudent','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(575,'2015-10-03 09:11:04','USER_MODIFY',1,'2015-10-03 11:11:04',1,'User athestudent modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(576,'2015-10-03 09:11:53','USER_MODIFY',1,'2015-10-03 11:11:53',1,'User abookkeeper modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(577,'2015-10-03 09:42:12','USER_LOGIN_FAILED',1,'2015-10-03 11:42:11',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(578,'2015-10-03 09:42:19','USER_LOGIN_FAILED',1,'2015-10-03 11:42:19',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(579,'2015-10-03 09:42:42','USER_LOGIN_FAILED',1,'2015-10-03 11:42:42',NULL,'Bad value for login or password - login=aeinstein','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(580,'2015-10-03 09:43:50','USER_LOGIN',1,'2015-10-03 11:43:50',1,'(UserLogged,admin) - TZ=1;TZString=Europe/Berlin;Screen=1600x788','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(581,'2015-10-03 09:44:44','GROUP_MODIFY',1,'2015-10-03 11:44:44',1,'Group Sale representatives modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(582,'2015-10-03 09:46:25','GROUP_CREATE',1,'2015-10-03 11:46:25',1,'Group Management created','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(583,'2015-10-03 09:46:46','GROUP_CREATE',1,'2015-10-03 11:46:46',1,'Group Scientists created','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(584,'2015-10-03 09:47:41','USER_CREATE',1,'2015-10-03 11:47:41',1,'User mcurie created','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(585,'2015-10-03 09:47:41','USER_NEW_PASSWORD',1,'2015-10-03 11:47:41',1,'Password change for mcurie','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(586,'2015-10-03 09:47:53','USER_MODIFY',1,'2015-10-03 11:47:53',1,'User mcurie modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(587,'2015-10-03 09:48:32','USER_DELETE',1,'2015-10-03 11:48:32',1,'User bbb removed','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(588,'2015-10-03 09:48:52','USER_MODIFY',1,'2015-10-03 11:48:52',1,'User bookkeeper modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(589,'2015-10-03 10:01:28','USER_MODIFY',1,'2015-10-03 12:01:28',1,'User bookkeeper modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(590,'2015-10-03 10:01:39','USER_MODIFY',1,'2015-10-03 12:01:39',1,'User bookkeeper modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(591,'2015-10-05 06:32:38','USER_LOGIN_FAILED',1,'2015-10-05 08:32:38',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(592,'2015-10-05 06:32:44','USER_LOGIN',1,'2015-10-05 08:32:44',1,'(UserLogged,admin) - TZ=1;TZString=Europe/Berlin;Screen=1590x767','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(593,'2015-10-05 07:07:52','USER_CREATE',1,'2015-10-05 09:07:52',1,'User atheceo created','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(594,'2015-10-05 07:07:52','USER_NEW_PASSWORD',1,'2015-10-05 09:07:52',1,'Password change for atheceo','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(595,'2015-10-05 07:09:08','USER_NEW_PASSWORD',1,'2015-10-05 09:09:08',1,'Password change for aeinstein','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(596,'2015-10-05 07:09:08','USER_MODIFY',1,'2015-10-05 09:09:08',1,'User aeinstein modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(597,'2015-10-05 07:09:46','USER_CREATE',1,'2015-10-05 09:09:46',1,'User admin created','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(598,'2015-10-05 07:09:46','USER_NEW_PASSWORD',1,'2015-10-05 09:09:46',1,'Password change for admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(599,'2015-10-05 07:10:20','USER_MODIFY',1,'2015-10-05 09:10:20',1,'User demo modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(600,'2015-10-05 07:10:48','USER_MODIFY',1,'2015-10-05 09:10:48',1,'User admin modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(601,'2015-10-05 07:11:22','USER_NEW_PASSWORD',1,'2015-10-05 09:11:22',1,'Password change for bbookkeeper','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(602,'2015-10-05 07:11:22','USER_MODIFY',1,'2015-10-05 09:11:22',1,'User bbookkeeper modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(603,'2015-10-05 07:12:37','USER_MODIFY',1,'2015-10-05 09:12:37',1,'User admin modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(604,'2015-10-05 07:13:27','USER_MODIFY',1,'2015-10-05 09:13:27',1,'User demo modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(605,'2015-10-05 07:13:52','USER_MODIFY',1,'2015-10-05 09:13:52',1,'User admin modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(606,'2015-10-05 07:14:35','USER_LOGOUT',1,'2015-10-05 09:14:35',1,'(UserLogoff,aeinstein)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(607,'2015-10-05 07:14:40','USER_LOGIN_FAILED',1,'2015-10-05 09:14:40',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(608,'2015-10-05 07:14:44','USER_LOGIN_FAILED',1,'2015-10-05 09:14:44',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(609,'2015-10-05 07:14:49','USER_LOGIN',1,'2015-10-05 09:14:49',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Berlin;Screen=1590x767','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(610,'2015-10-05 07:57:18','USER_MODIFY',1,'2015-10-05 09:57:18',12,'User aeinstein modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(611,'2015-10-05 08:06:54','USER_LOGOUT',1,'2015-10-05 10:06:54',12,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(612,'2015-10-05 08:07:03','USER_LOGIN',1,'2015-10-05 10:07:03',11,'(UserLogged,atheceo) - TZ=1;TZString=Europe/Berlin;Screen=1590x767','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(613,'2015-10-05 19:18:46','USER_LOGIN',1,'2015-10-05 21:18:46',11,'(UserLogged,atheceo) - TZ=1;TZString=Europe/Berlin;Screen=1590x767','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(614,'2015-10-05 19:29:35','USER_CREATE',1,'2015-10-05 21:29:35',11,'User ccommercy created','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(615,'2015-10-05 19:29:35','USER_NEW_PASSWORD',1,'2015-10-05 21:29:35',11,'Password change for ccommercy','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(616,'2015-10-05 19:30:13','GROUP_CREATE',1,'2015-10-05 21:30:13',11,'Group Commercial created','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(617,'2015-10-05 19:31:37','USER_NEW_PASSWORD',1,'2015-10-05 21:31:37',11,'Password change for admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(618,'2015-10-05 19:31:37','USER_MODIFY',1,'2015-10-05 21:31:37',11,'User admin modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(619,'2015-10-05 19:32:00','USER_MODIFY',1,'2015-10-05 21:32:00',11,'User admin modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(620,'2015-10-05 19:33:33','USER_CREATE',1,'2015-10-05 21:33:33',11,'User sscientol created','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(621,'2015-10-05 19:33:33','USER_NEW_PASSWORD',1,'2015-10-05 21:33:33',11,'Password change for sscientol','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(622,'2015-10-05 19:33:47','USER_NEW_PASSWORD',1,'2015-10-05 21:33:47',11,'Password change for mcurie','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(623,'2015-10-05 19:33:47','USER_MODIFY',1,'2015-10-05 21:33:47',11,'User mcurie modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(624,'2015-10-05 19:34:23','USER_NEW_PASSWORD',1,'2015-10-05 21:34:23',11,'Password change for pcurie','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(625,'2015-10-05 19:34:23','USER_MODIFY',1,'2015-10-05 21:34:23',11,'User pcurie modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(626,'2015-10-05 19:34:42','USER_MODIFY',1,'2015-10-05 21:34:42',11,'User aeinstein modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(627,'2015-10-05 19:36:06','USER_NEW_PASSWORD',1,'2015-10-05 21:36:06',11,'Password change for ccommercy','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(628,'2015-10-05 19:36:06','USER_MODIFY',1,'2015-10-05 21:36:06',11,'User ccommercy modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(629,'2015-10-05 19:36:57','USER_NEW_PASSWORD',1,'2015-10-05 21:36:57',11,'Password change for atheceo','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(630,'2015-10-05 19:36:57','USER_MODIFY',1,'2015-10-05 21:36:57',11,'User atheceo modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(631,'2015-10-05 19:37:27','USER_LOGOUT',1,'2015-10-05 21:37:27',11,'(UserLogoff,atheceo)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(632,'2015-10-05 19:37:35','USER_LOGIN_FAILED',1,'2015-10-05 21:37:35',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(633,'2015-10-05 19:37:39','USER_LOGIN_FAILED',1,'2015-10-05 21:37:39',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(634,'2015-10-05 19:37:44','USER_LOGIN_FAILED',1,'2015-10-05 21:37:44',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(635,'2015-10-05 19:37:49','USER_LOGIN_FAILED',1,'2015-10-05 21:37:49',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(636,'2015-10-05 19:38:12','USER_LOGIN_FAILED',1,'2015-10-05 21:38:12',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(637,'2015-10-05 19:40:48','USER_LOGIN_FAILED',1,'2015-10-05 21:40:48',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(638,'2015-10-05 19:40:55','USER_LOGIN',1,'2015-10-05 21:40:55',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Berlin;Screen=1590x767','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(639,'2015-10-05 19:43:34','USER_MODIFY',1,'2015-10-05 21:43:34',12,'User aeinstein modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(640,'2015-10-05 19:45:43','USER_CREATE',1,'2015-10-05 21:45:43',12,'User aaa created','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(641,'2015-10-05 19:45:43','USER_NEW_PASSWORD',1,'2015-10-05 21:45:43',12,'Password change for aaa','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(642,'2015-10-05 19:46:18','USER_DELETE',1,'2015-10-05 21:46:18',12,'User aaa removed','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(643,'2015-10-05 19:47:09','USER_MODIFY',1,'2015-10-05 21:47:09',12,'User demo modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(644,'2015-10-05 19:47:22','USER_MODIFY',1,'2015-10-05 21:47:22',12,'User demo modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(645,'2015-10-05 19:52:05','USER_MODIFY',1,'2015-10-05 21:52:05',12,'User sscientol modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(646,'2015-10-05 19:52:23','USER_MODIFY',1,'2015-10-05 21:52:23',12,'User bbookkeeper modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(647,'2015-10-05 19:54:54','USER_NEW_PASSWORD',1,'2015-10-05 21:54:54',12,'Password change for zzeceo','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(648,'2015-10-05 19:54:54','USER_MODIFY',1,'2015-10-05 21:54:54',12,'User zzeceo modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(649,'2015-10-05 19:57:02','USER_MODIFY',1,'2015-10-05 21:57:02',12,'User zzeceo modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(650,'2015-10-05 19:57:57','USER_NEW_PASSWORD',1,'2015-10-05 21:57:57',12,'Password change for pcurie','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(651,'2015-10-05 19:57:57','USER_MODIFY',1,'2015-10-05 21:57:57',12,'User pcurie modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(652,'2015-10-05 19:59:42','USER_NEW_PASSWORD',1,'2015-10-05 21:59:42',12,'Password change for admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(653,'2015-10-05 19:59:42','USER_MODIFY',1,'2015-10-05 21:59:42',12,'User admin modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(654,'2015-10-05 20:00:21','USER_MODIFY',1,'2015-10-05 22:00:21',12,'User adminx modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(655,'2015-10-05 20:05:36','USER_MODIFY',1,'2015-10-05 22:05:36',12,'User admin modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(656,'2015-10-05 20:06:25','USER_MODIFY',1,'2015-10-05 22:06:25',12,'User ccommercy modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(657,'2015-10-05 20:07:18','USER_MODIFY',1,'2015-10-05 22:07:18',12,'User mcurie modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(658,'2015-10-05 20:07:36','USER_MODIFY',1,'2015-10-05 22:07:36',12,'User aeinstein modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(659,'2015-10-05 20:08:34','USER_MODIFY',1,'2015-10-05 22:08:34',12,'User bbookkeeper modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(660,'2015-10-05 20:47:52','USER_CREATE',1,'2015-10-05 22:47:52',12,'User cc1 created','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(661,'2015-10-05 20:47:52','USER_NEW_PASSWORD',1,'2015-10-05 22:47:52',12,'Password change for cc1','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(662,'2015-10-05 20:47:55','USER_LOGOUT',1,'2015-10-05 22:47:55',12,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(663,'2015-10-05 20:48:08','USER_LOGIN',1,'2015-10-05 22:48:08',11,'(UserLogged,zzeceo) - TZ=1;TZString=Europe/Berlin;Screen=1590x434','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(664,'2015-10-05 20:48:39','USER_CREATE',1,'2015-10-05 22:48:39',11,'User cc2 created','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(665,'2015-10-05 20:48:39','USER_NEW_PASSWORD',1,'2015-10-05 22:48:39',11,'Password change for cc2','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(666,'2015-10-05 20:48:59','USER_NEW_PASSWORD',1,'2015-10-05 22:48:59',11,'Password change for cc1','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(667,'2015-10-05 20:48:59','USER_MODIFY',1,'2015-10-05 22:48:59',11,'User cc1 modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(668,'2015-10-05 21:06:36','USER_LOGOUT',1,'2015-10-05 23:06:35',11,'(UserLogoff,zzeceo)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(669,'2015-10-05 21:06:44','USER_LOGIN_FAILED',1,'2015-10-05 23:06:44',NULL,'Bad value for login or password - login=cc1','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(670,'2015-10-05 21:07:12','USER_LOGIN_FAILED',1,'2015-10-05 23:07:12',NULL,'Bad value for login or password - login=cc1','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(671,'2015-10-05 21:07:19','USER_LOGIN_FAILED',1,'2015-10-05 23:07:19',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(672,'2015-10-05 21:07:27','USER_LOGIN_FAILED',1,'2015-10-05 23:07:27',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(673,'2015-10-05 21:07:32','USER_LOGIN',1,'2015-10-05 23:07:32',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Berlin;Screen=1590x767','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(674,'2015-10-05 21:12:28','USER_NEW_PASSWORD',1,'2015-10-05 23:12:28',12,'Password change for cc1','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(675,'2015-10-05 21:12:28','USER_MODIFY',1,'2015-10-05 23:12:28',12,'User cc1 modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(676,'2015-10-05 21:13:00','USER_CREATE',1,'2015-10-05 23:13:00',12,'User aaa created','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(677,'2015-10-05 21:13:00','USER_NEW_PASSWORD',1,'2015-10-05 23:13:00',12,'Password change for aaa','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(678,'2015-10-05 21:13:40','USER_DELETE',1,'2015-10-05 23:13:40',12,'User aaa removed','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(679,'2015-10-05 21:14:47','USER_LOGOUT',1,'2015-10-05 23:14:47',12,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(680,'2015-10-05 21:14:56','USER_LOGIN',1,'2015-10-05 23:14:56',16,'(UserLogged,cc1) - TZ=1;TZString=Europe/Berlin;Screen=1590x767','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(681,'2015-10-05 21:15:56','USER_LOGOUT',1,'2015-10-05 23:15:56',16,'(UserLogoff,cc1)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(682,'2015-10-05 21:16:06','USER_LOGIN',1,'2015-10-05 23:16:06',17,'(UserLogged,cc2) - TZ=1;TZString=Europe/Berlin;Screen=1590x767','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(683,'2015-10-05 21:37:25','USER_LOGOUT',1,'2015-10-05 23:37:25',17,'(UserLogoff,cc2)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(684,'2015-10-05 21:37:31','USER_LOGIN',1,'2015-10-05 23:37:31',16,'(UserLogged,cc1) - TZ=1;TZString=Europe/Berlin;Screen=1590x767','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(685,'2015-10-05 21:43:53','USER_LOGOUT',1,'2015-10-05 23:43:53',16,'(UserLogoff,cc1)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(686,'2015-10-05 21:44:00','USER_LOGIN',1,'2015-10-05 23:44:00',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Berlin;Screen=1590x767','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(687,'2015-10-05 21:46:17','USER_LOGOUT',1,'2015-10-05 23:46:17',12,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(688,'2015-10-05 21:46:24','USER_LOGIN',1,'2015-10-05 23:46:24',16,'(UserLogged,cc1) - TZ=1;TZString=Europe/Berlin;Screen=1590x767','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL),(689,'2015-11-04 15:17:06','USER_LOGIN',1,'2015-11-04 16:17:06',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Berlin;Screen=1600x790','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36',NULL); /*!40000 ALTER TABLE `llx_events` ENABLE KEYS */; UNLOCK TABLES; @@ -5615,7 +5615,7 @@ CREATE TABLE `llx_menu` ( PRIMARY KEY (`rowid`), UNIQUE KEY `idx_menu_uk_menu` (`menu_handler`,`fk_menu`,`position`,`url`,`entity`), KEY `idx_menu_menuhandler_type` (`menu_handler`,`type`) -) ENGINE=InnoDB AUTO_INCREMENT=113729 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=118954 DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -5624,7 +5624,7 @@ CREATE TABLE `llx_menu` ( LOCK TABLES `llx_menu` WRITE; /*!40000 ALTER TABLE `llx_menu` DISABLE KEYS */; -INSERT INTO `llx_menu` VALUES (19289,'all',1,'cashdesk','top','cashdesk',0,NULL,NULL,100,'/cashdesk/index.php?user=__LOGIN__','pointofsale','CashDeskMenu','cashdesk',NULL,NULL,'1','$conf->cashdesk->enabled',0,'2012-12-08 13:11:09'),(87422,'smartphone',1,NULL,'top','home',0,NULL,NULL,1,'/index.php?mainmenu=home&leftmenu=','','Home','',-1,'','','1',2,'2013-02-24 18:29:15'),(87423,'smartphone',1,NULL,'top','companies',0,NULL,NULL,2,'/societe/index.php?mainmenu=companies&leftmenu=','','ThirdParties','companies',-1,'','$user->rights->societe->lire || $user->rights->societe->contact->lire','$conf->societe->enabled || $conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(87424,'smartphone',1,NULL,'top','products',0,NULL,NULL,3,'/product/index.php?mainmenu=products&leftmenu=','','Products/Services','products',-1,'','$user->rights->produit->lire||$user->rights->service->lire','$conf->product->enabled || $conf->service->enabled',0,'2013-02-24 18:29:15'),(87426,'smartphone',1,NULL,'top','commercial',0,NULL,NULL,5,'/comm/index.php?mainmenu=commercial&leftmenu=','','Commercial','commercial',-1,'','$user->rights->societe->lire || $user->rights->societe->contact->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(87427,'smartphone',1,NULL,'top','accountancy',0,NULL,NULL,6,'/compta/index.php?mainmenu=accountancy&leftmenu=','','MenuFinancial','compta',-1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->plancompte->lire || $user->rights->commande->lire || $user->rights->facture->lire','$conf->comptabilite->enabled || $conf->accounting->enabled || $conf->facture->enabled || $conf->deplacement->enabled || $conf->don->enabled',2,'2013-02-24 18:29:15'),(87428,'smartphone',1,NULL,'top','project',0,NULL,NULL,7,'/projet/index.php?mainmenu=project&leftmenu=','','Projects','projects',-1,'','$user->rights->projet->lire','$conf->projet->enabled',0,'2013-02-24 18:29:15'),(87429,'smartphone',1,NULL,'top','tools',0,NULL,NULL,8,'/core/tools.php?mainmenu=tools&leftmenu=','','Tools','other',-1,'','$user->rights->mailing->lire || $user->rights->export->lire || $user->rights->import->run','$conf->mailing->enabled || $conf->export->enabled || $conf->import->enabled',2,'2013-02-24 18:29:15'),(87432,'smartphone',1,NULL,'top','shop',0,NULL,NULL,11,'/boutique/index.php?mainmenu=shop&leftmenu=','','OSCommerce','shop',-1,'','','! empty($conf->boutique->enabled)',0,'2013-02-24 18:29:15'),(87434,'smartphone',1,NULL,'top','members',0,NULL,NULL,15,'/adherents/index.php?mainmenu=members&leftmenu=','','Members','members',-1,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(87435,'smartphone',1,NULL,'top','bank',0,NULL,NULL,6,'/compta/bank/index.php?mainmenu=bank&leftmenu=bank','','MenuBankCash','banks',-1,'','$user->rights->banque->lire || $user->rights->prelevement->bons->lire','$conf->banque->enabled || $conf->prelevement->enabled',2,'2013-02-24 18:29:15'),(87521,'smartphone',1,NULL,'left','home',87422,NULL,NULL,0,'/admin/index.php?leftmenu=setup','','Setup','admin',0,'','','$user->admin',2,'2013-02-24 18:29:15'),(87522,'smartphone',1,NULL,'left','home',87521,NULL,NULL,1,'/admin/company.php?leftmenu=setup','','MenuCompanySetup','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87523,'smartphone',1,NULL,'left','home',87521,NULL,NULL,4,'/admin/ihm.php?leftmenu=setup','','GUISetup','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87524,'smartphone',1,NULL,'left','home',87521,NULL,NULL,2,'/admin/modules.php?leftmenu=setup','','Modules','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87525,'smartphone',1,NULL,'left','home',87521,NULL,NULL,5,'/admin/boxes.php?leftmenu=setup','','Boxes','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87526,'smartphone',1,NULL,'left','home',87521,NULL,NULL,3,'/admin/menus.php?leftmenu=setup','','Menus','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87527,'smartphone',1,NULL,'left','home',87521,NULL,NULL,6,'/admin/delais.php?leftmenu=setup','','Alerts','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87529,'smartphone',1,NULL,'left','home',87521,NULL,NULL,7,'/admin/perms.php?leftmenu=setup','','Security','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87530,'smartphone',1,NULL,'left','home',87521,NULL,NULL,9,'/admin/mails.php?leftmenu=setup','','Emails','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87531,'smartphone',1,NULL,'left','home',87521,NULL,NULL,8,'/admin/limits.php?leftmenu=setup','','MenuLimits','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87532,'smartphone',1,NULL,'left','home',87521,NULL,NULL,10,'/admin/dict.php?leftmenu=setup','','DictionarySetup','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87533,'smartphone',1,NULL,'left','home',87521,NULL,NULL,11,'/admin/const.php?leftmenu=setup','','OtherSetup','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87621,'smartphone',1,NULL,'left','home',87422,NULL,NULL,1,'/admin/system/index.php?leftmenu=system','','SystemInfo','admin',0,'','','$user->admin',2,'2013-02-24 18:29:15'),(87622,'smartphone',1,NULL,'left','home',87621,NULL,NULL,0,'/admin/system/dolibarr.php?leftmenu=system','','Dolibarr','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87623,'smartphone',1,NULL,'left','home',87622,NULL,NULL,1,'/admin/system/constall.php?leftmenu=system','','AllParameters','admin',2,'','','1',2,'2013-02-24 18:29:15'),(87624,'smartphone',1,NULL,'left','home',87622,NULL,NULL,4,'/admin/system/about.php?leftmenu=system','','About','admin',2,'','','1',2,'2013-02-24 18:29:15'),(87625,'smartphone',1,NULL,'left','home',87621,NULL,NULL,1,'/admin/system/os.php?leftmenu=system','','OS','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87626,'smartphone',1,NULL,'left','home',87621,NULL,NULL,2,'/admin/system/web.php?leftmenu=system','','WebServer','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87627,'smartphone',1,NULL,'left','home',87621,NULL,NULL,3,'/admin/system/phpinfo.php?leftmenu=system','','Php','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87628,'smartphone',1,NULL,'left','home',87622,NULL,NULL,3,'/admin/triggers.php?leftmenu=system','','Triggers','admin',2,'','','1',2,'2013-02-24 18:29:15'),(87629,'smartphone',1,NULL,'left','home',87622,NULL,NULL,2,'/admin/system/modules.php?leftmenu=system','','Modules','admin',2,'','','1',2,'2013-02-24 18:29:15'),(87631,'smartphone',1,NULL,'left','home',87621,NULL,NULL,4,'/admin/system/database.php?leftmenu=system','','Database','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87632,'smartphone',1,NULL,'left','home',87631,NULL,NULL,0,'/admin/system/database-tables.php?leftmenu=system','','Tables','admin',2,'','','1',2,'2013-02-24 18:29:15'),(87721,'smartphone',1,NULL,'left','home',87422,NULL,NULL,2,'/admin/tools/index.php?leftmenu=admintools','','SystemTools','admin',0,'','','$user->admin',2,'2013-02-24 18:29:15'),(87722,'smartphone',1,NULL,'left','home',87721,NULL,NULL,0,'/admin/tools/dolibarr_export.php?leftmenu=admintools','','Backup','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87723,'smartphone',1,NULL,'left','home',87721,NULL,NULL,1,'/admin/tools/dolibarr_import.php?leftmenu=admintools','','Restore','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87724,'smartphone',1,NULL,'left','home',87721,NULL,NULL,6,'/admin/tools/purge.php?leftmenu=admintools','','Purge','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87725,'smartphone',1,NULL,'left','home',87721,NULL,NULL,3,'/admin/tools/eaccelerator.php?leftmenu=admintools','','EAccelerator','admin',1,'','','1 && function_exists(\'eaccelerator_info\')',2,'2013-02-24 18:29:15'),(87726,'smartphone',1,NULL,'left','home',87721,NULL,NULL,2,'/admin/tools/update.php?leftmenu=admintools','','MenuUpgrade','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87727,'smartphone',1,NULL,'left','home',87721,NULL,NULL,4,'/admin/tools/listevents.php?leftmenu=admintools','','Audit','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87728,'smartphone',1,NULL,'left','home',87721,NULL,NULL,7,'/support/index.php?leftmenu=admintools','_blank','HelpCenter','help',1,'','','1',2,'2013-02-24 18:29:15'),(87729,'smartphone',1,NULL,'left','home',87721,NULL,NULL,5,'/admin/tools/listsessions.php?leftmenu=admintools','','Sessions','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87821,'smartphone',1,NULL,'left','home',87422,NULL,NULL,3,'/user/home.php?leftmenu=users','','MenuUsersAndGroups','users',0,'','','1',2,'2013-02-24 18:29:15'),(87822,'smartphone',1,NULL,'left','home',87821,NULL,NULL,0,'/user/index.php?leftmenu=users','','Users','users',1,'','$user->rights->user->user->lire || $user->admin','1',2,'2013-02-24 18:29:15'),(87823,'smartphone',1,NULL,'left','home',87822,NULL,NULL,0,'/user/card.php?leftmenu=users&action=create','','NewUser','users',2,'','$user->rights->user->user->creer || $user->admin','1',2,'2013-02-24 18:29:15'),(87824,'smartphone',1,NULL,'left','home',87821,NULL,NULL,1,'/user/group/index.php?leftmenu=users','','Groups','users',1,'','($conf->global->MAIN_USE_ADVANCED_PERMS?$user->rights->user->group_advance->read:$user->rights->user->user->lire) || $user->admin','1',2,'2013-02-24 18:29:15'),(87825,'smartphone',1,NULL,'left','home',87824,NULL,NULL,0,'/user/group/card.php?leftmenu=users&action=create','','NewGroup','users',2,'','($conf->global->MAIN_USE_ADVANCED_PERMS?$user->rights->user->group_advance->write:$user->rights->user->user->creer) || $user->admin','1',2,'2013-02-24 18:29:15'),(87921,'smartphone',1,NULL,'left','companies',87423,NULL,NULL,0,'/societe/societe.php','','ThirdParty','companies',0,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(87922,'smartphone',1,NULL,'left','companies',87921,NULL,NULL,0,'/societe/soc.php?action=create','','MenuNewThirdParty','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(87924,'smartphone',1,NULL,'left','companies',87921,NULL,NULL,5,'/fourn/list.php?leftmenu=suppliers','','ListSuppliersShort','suppliers',1,'','$user->rights->societe->lire && $user->rights->fournisseur->lire','$conf->societe->enabled && $conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(87925,'smartphone',1,NULL,'left','companies',87924,NULL,NULL,0,'/societe/soc.php?leftmenu=supplier&action=create&type=f','','NewSupplier','suppliers',2,'','$user->rights->societe->creer','$conf->societe->enabled && $conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(87927,'smartphone',1,NULL,'left','companies',87921,NULL,NULL,3,'/comm/prospect/list.php?leftmenu=prospects','','ListProspectsShort','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(87928,'smartphone',1,NULL,'left','companies',87927,NULL,NULL,0,'/societe/soc.php?leftmenu=prospects&action=create&type=p','','MenuNewProspect','companies',2,'','$user->rights->societe->creer','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(87930,'smartphone',1,NULL,'left','companies',87921,NULL,NULL,4,'/comm/list.php?leftmenu=customers','','ListCustomersShort','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(87931,'smartphone',1,NULL,'left','companies',87930,NULL,NULL,0,'/societe/soc.php?leftmenu=customers&action=create&type=c','','MenuNewCustomer','companies',2,'','$user->rights->societe->creer','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(88021,'smartphone',1,NULL,'left','companies',87423,NULL,NULL,1,'/contact/list.php?leftmenu=contacts','','ContactsAddresses||Contacts@$conf->global->SOCIETE_ADDRESSES_MANAGEMENT','companies',0,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(88022,'smartphone',1,NULL,'left','companies',88021,NULL,NULL,0,'/contact/card.php?leftmenu=contacts&action=create','','NewContactAddress||NewContact@$conf->global->SOCIETE_ADDRESSES_MANAGEMENT','companies',1,'','$user->rights->societe->creer','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(88023,'smartphone',1,NULL,'left','companies',88021,NULL,NULL,1,'/contact/list.php?leftmenu=contacts','','List','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(88025,'smartphone',1,NULL,'left','companies',88023,NULL,NULL,1,'/contact/list.php?leftmenu=contacts&type=p','','Prospects','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(88026,'smartphone',1,NULL,'left','companies',88023,NULL,NULL,2,'/contact/list.php?leftmenu=contacts&type=c','','Customers','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(88027,'smartphone',1,NULL,'left','companies',88023,NULL,NULL,3,'/contact/list.php?leftmenu=contacts&type=f','','Suppliers','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled && $conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(88028,'smartphone',1,NULL,'left','companies',88023,NULL,NULL,4,'/contact/list.php?leftmenu=contacts&type=o','','Others','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(88071,'smartphone',1,NULL,'left','companies',87423,NULL,NULL,3,'/categories/index.php?leftmenu=cat&type=1','','SuppliersCategoriesShort','categories',0,'','$user->rights->categorie->lire','$conf->societe->enabled && $conf->categorie->enabled',2,'2013-02-24 18:29:15'),(88072,'smartphone',1,NULL,'left','companies',88071,NULL,NULL,0,'/categories/card.php?action=create&type=1','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->societe->enabled && $conf->categorie->enabled',2,'2013-02-24 18:29:15'),(88081,'smartphone',1,NULL,'left','companies',87423,NULL,NULL,4,'/categories/index.php?leftmenu=cat&type=2','','CustomersProspectsCategoriesShort','categories',0,'','$user->rights->categorie->lire','$conf->fournisseur->enabled && $conf->categorie->enabled',2,'2013-02-24 18:29:15'),(88082,'smartphone',1,NULL,'left','companies',88081,NULL,NULL,0,'/categories/card.php?action=create&type=2','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->fournisseur->enabled && $conf->categorie->enabled',2,'2013-02-24 18:29:15'),(88121,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,1,'/comm/prospect/index.php?leftmenu=prospects','','Prospects','companies',0,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88122,'smartphone',1,NULL,'left','commercial',88121,NULL,NULL,0,'/societe/soc.php?leftmenu=prospects&action=create&type=p','','MenuNewProspect','companies',1,'','$user->rights->societe->creer','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88123,'smartphone',1,NULL,'left','commercial',88121,NULL,NULL,1,'/comm/prospect/list.php?leftmenu=prospects','','List','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88124,'smartphone',1,NULL,'left','commercial',88123,NULL,NULL,0,'/comm/prospect/list.php?sortfield=s.datec&sortorder=desc&begin=&stcomm=-1','','LastProspectDoNotContact','companies',2,'','$user->rights->societe->lire','$conf->societe->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88125,'smartphone',1,NULL,'left','commercial',88123,NULL,NULL,1,'/comm/prospect/list.php?sortfield=s.datec&sortorder=desc&begin=&stcomm=0','','LastProspectNeverContacted','companies',2,'','$user->rights->societe->lire','$conf->societe->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88126,'smartphone',1,NULL,'left','commercial',88123,NULL,NULL,2,'/comm/prospect/list.php?sortfield=s.datec&sortorder=desc&begin=&stcomm=1','','LastProspectToContact','companies',2,'','$user->rights->societe->lire','$conf->societe->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88127,'smartphone',1,NULL,'left','commercial',88123,NULL,NULL,3,'/comm/prospect/list.php?sortfield=s.datec&sortorder=desc&begin=&stcomm=2','','LastProspectContactInProcess','companies',2,'','$user->rights->societe->lire','$conf->societe->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88128,'smartphone',1,NULL,'left','commercial',88123,NULL,NULL,4,'/comm/prospect/list.php?sortfield=s.datec&sortorder=desc&begin=&stcomm=3','','LastProspectContactDone','companies',2,'','$user->rights->societe->lire','$conf->societe->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88129,'smartphone',1,NULL,'left','commercial',88121,NULL,NULL,2,'/contact/list.php?leftmenu=prospects&type=p','','Contacts','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88221,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,2,'/comm/index.php?leftmenu=customers','','Customers','companies',0,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88222,'smartphone',1,NULL,'left','commercial',88221,NULL,NULL,0,'/societe/soc.php?leftmenu=customers&action=create&type=c','','MenuNewCustomer','companies',1,'','$user->rights->societe->creer','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88223,'smartphone',1,NULL,'left','commercial',88221,NULL,NULL,1,'/comm/list.php?leftmenu=customers','','List','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88224,'smartphone',1,NULL,'left','commercial',88221,NULL,NULL,2,'/contact/list.php?leftmenu=customers&type=c','','Contacts','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88321,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,3,'/contact/list.php?leftmenu=contacts','','Contacts','companies',0,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88322,'smartphone',1,NULL,'left','commercial',88321,NULL,NULL,0,'/contact/card.php?leftmenu=contacts&action=create','','NewContactAddress||NewContact@$conf->global->SOCIETE_ADDRESSES_MANAGEMENT','companies',1,'','$user->rights->societe->creer','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88323,'smartphone',1,NULL,'left','commercial',88321,NULL,NULL,1,'/contact/list.php?leftmenu=contacts&action=create','','List','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88331,'smartphone',1,NULL,'left','commercial',88323,NULL,NULL,1,'/contact/list.php?leftmenu=contacts&type=p','','Prospects','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88332,'smartphone',1,NULL,'left','commercial',88323,NULL,NULL,1,'/contact/list.php?leftmenu=contacts&type=c','','Customers','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88333,'smartphone',1,NULL,'left','commercial',88323,NULL,NULL,1,'/contact/list.php?leftmenu=contacts&type=f','','Suppliers','companies',1,'','$user->rights->societe->lire && $user->rights->fournisseur->lire','$conf->societe->enabled && $conf->fournisseur->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88334,'smartphone',1,NULL,'left','commercial',88323,NULL,NULL,1,'/contact/list.php?leftmenu=contacts&type=o','','Other','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88521,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,4,'/comm/propal.php?leftmenu=propals','','Prop','propal',0,'','$user->rights->propale->lire','$conf->propal->enabled',2,'2013-02-24 18:29:15'),(88522,'smartphone',1,NULL,'left','commercial',88521,NULL,NULL,0,'/societe/societe.php?leftmenu=propals','','NewPropal','propal',1,'','$user->rights->propale->creer','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2013-02-24 18:29:15'),(88523,'smartphone',1,NULL,'left','commercial',88521,NULL,NULL,1,'/comm/propal.php?viewstatut=0','','PropalsDraft','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2013-02-24 18:29:15'),(88524,'smartphone',1,NULL,'left','commercial',88521,NULL,NULL,2,'/comm/propal.php?viewstatut=1','','PropalsOpened','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2013-02-24 18:29:15'),(88525,'smartphone',1,NULL,'left','commercial',88521,NULL,NULL,3,'/comm/propal.php?viewstatut=2,3,4','','PropalStatusClosedShort','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2013-02-24 18:29:15'),(88526,'smartphone',1,NULL,'left','commercial',88521,NULL,NULL,4,'/comm/propal/stats/index.php?leftmenu=propals','','Statistics','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2013-02-24 18:29:15'),(88621,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,5,'/commande/index.php?leftmenu=orders','','CustomersOrders','orders',0,'','$user->rights->commande->lire','$conf->commande->enabled',2,'2013-02-24 18:29:15'),(88622,'smartphone',1,NULL,'left','commercial',88621,NULL,NULL,0,'/societe/societe.php?leftmenu=orders','','NewOrder','orders',1,'','$user->rights->commande->creer','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88623,'smartphone',1,NULL,'left','commercial',88621,NULL,NULL,1,'/commande/list.php?leftmenu=orders','','List','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88624,'smartphone',1,NULL,'left','commercial',88623,NULL,NULL,2,'/commande/list.php?leftmenu=orders&viewstatut=0','','StatusOrderDraftShort','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88625,'smartphone',1,NULL,'left','commercial',88623,NULL,NULL,3,'/commande/list.php?leftmenu=orders&viewstatut=1','','StatusOrderValidated','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88626,'smartphone',1,NULL,'left','commercial',88623,NULL,NULL,4,'/commande/list.php?leftmenu=orders&viewstatut=2','','StatusOrderOnProcessShort','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88627,'smartphone',1,NULL,'left','commercial',88623,NULL,NULL,5,'/commande/list.php?leftmenu=orders&viewstatut=3','','StatusOrderToBill','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88628,'smartphone',1,NULL,'left','commercial',88623,NULL,NULL,6,'/commande/list.php?leftmenu=orders&viewstatut=4','','StatusOrderProcessed','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88629,'smartphone',1,NULL,'left','commercial',88623,NULL,NULL,7,'/commande/list.php?leftmenu=orders&viewstatut=-1','','StatusOrderCanceledShort','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88630,'smartphone',1,NULL,'left','commercial',88621,NULL,NULL,4,'/commande/stats/index.php?leftmenu=orders','','Statistics','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88721,'smartphone',1,NULL,'left','commercial',87424,NULL,NULL,6,'/expedition/index.php?leftmenu=sendings','','Shipments','orders',0,'','$user->rights->expedition->lire','$conf->expedition->enabled',2,'2013-02-24 18:29:15'),(88722,'smartphone',1,NULL,'left','commercial',88721,NULL,NULL,0,'/expedition/list.php?leftmenu=sendings','','List','orders',1,'','$user->rights->expedition->lire','$conf->expedition->enabled && $leftmenu==\"sendings\"',2,'2013-02-24 18:29:15'),(88723,'smartphone',1,NULL,'left','commercial',88721,NULL,NULL,1,'/expedition/stats/index.php?leftmenu=sendings','','Statistics','orders',1,'','$user->rights->expedition->lire','$conf->expedition->enabled && $leftmenu==\"sendings\"',2,'2013-02-24 18:29:15'),(88821,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,7,'/contrat/index.php?leftmenu=contracts','','Contracts','contracts',0,'','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2013-02-24 18:29:15'),(88822,'smartphone',1,NULL,'left','commercial',88821,NULL,NULL,0,'/societe/societe.php?leftmenu=contracts','','NewContract','contracts',1,'','$user->rights->contrat->creer','$conf->contrat->enabled',2,'2013-02-24 18:29:15'),(88823,'smartphone',1,NULL,'left','commercial',88821,NULL,NULL,1,'/contrat/list.php?leftmenu=contracts','','List','contracts',1,'','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2013-02-24 18:29:15'),(88824,'smartphone',1,NULL,'left','commercial',88821,NULL,NULL,2,'/contrat/services.php?leftmenu=contracts','','MenuServices','contracts',1,'','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2013-02-24 18:29:15'),(88825,'smartphone',1,NULL,'left','commercial',88824,NULL,NULL,0,'/contrat/services.php?leftmenu=contracts&mode=0','','MenuInactiveServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2013-02-24 18:29:15'),(88826,'smartphone',1,NULL,'left','commercial',88824,NULL,NULL,1,'/contrat/services.php?leftmenu=contracts&mode=4','','MenuRunningServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2013-02-24 18:29:15'),(88827,'smartphone',1,NULL,'left','commercial',88824,NULL,NULL,2,'/contrat/services.php?leftmenu=contracts&mode=4&filter=expired','','MenuExpiredServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2013-02-24 18:29:15'),(88828,'smartphone',1,NULL,'left','commercial',88824,NULL,NULL,3,'/contrat/services.php?leftmenu=contracts&mode=5','','MenuClosedServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2013-02-24 18:29:15'),(88921,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,8,'/fichinter/list.php?leftmenu=ficheinter','','Interventions','interventions',0,'','$user->rights->ficheinter->lire','$conf->ficheinter->enabled',2,'2013-02-24 18:29:15'),(88922,'smartphone',1,NULL,'left','commercial',88921,NULL,NULL,0,'/fichinter/card.php?action=create&leftmenu=ficheinter','','NewIntervention','interventions',1,'','$user->rights->ficheinter->creer','$conf->ficheinter->enabled && $leftmenu==\"ficheinter\"',2,'2013-02-24 18:29:15'),(88923,'smartphone',1,NULL,'left','commercial',88921,NULL,NULL,1,'/fichinter/list.php?leftmenu=ficheinter','','List','interventions',1,'','$user->rights->ficheinter->lire','$conf->ficheinter->enabled && $leftmenu==\"ficheinter\"',2,'2013-02-24 18:29:15'),(89021,'smartphone',1,NULL,'left','accountancy',87427,NULL,NULL,3,'/fourn/facture/index.php?leftmenu=suppliers_bills','','BillsSuppliers','bills',0,'','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(89022,'smartphone',1,NULL,'left','accountancy',89021,NULL,NULL,0,'/fourn/facture/card.php?action=create&leftmenu=suppliers_bills','','NewBill','bills',1,'','$user->rights->fournisseur->facture->creer','$conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(89023,'smartphone',1,NULL,'left','accountancy',89021,NULL,NULL,1,'/fourn/facture/impayees.php?leftmenu=suppliers_bills','','Unpaid','bills',1,'','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(89024,'smartphone',1,NULL,'left','accountancy',89021,NULL,NULL,2,'/fourn/facture/paiement.php?leftmenu=suppliers_bills','','Payments','bills',1,'','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(89121,'smartphone',1,NULL,'left','accountancy',87427,NULL,NULL,3,'/compta/facture/list.php?leftmenu=customers_bills','','BillsCustomers','bills',0,'','$user->rights->facture->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(89122,'smartphone',1,NULL,'left','accountancy',89121,NULL,NULL,3,'/compta/clients.php?action=facturer&leftmenu=customers_bills','','NewBill','bills',1,'','$user->rights->facture->creer','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(89123,'smartphone',1,NULL,'left','accountancy',89121,NULL,NULL,4,'/compta/facture/fiche-rec.php?leftmenu=customers_bills','','Repeatable','bills',1,'','$user->rights->facture->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(89124,'smartphone',1,NULL,'left','accountancy',89121,NULL,NULL,5,'/compta/facture/impayees.php?action=facturer&leftmenu=customers_bills','','Unpaid','bills',1,'','$user->rights->facture->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(89125,'smartphone',1,NULL,'left','accountancy',89121,NULL,NULL,6,'/compta/paiement/list.php?leftmenu=customers_bills','','Payments','bills',1,'','$user->rights->facture->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(89131,'smartphone',1,NULL,'left','accountancy',89125,NULL,NULL,1,'/compta/paiement/rapport.php?leftmenu=customers_bills','','Reportings','bills',2,'','$user->rights->facture->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(89132,'smartphone',1,NULL,'left','accountancy',87435,NULL,NULL,9,'/compta/paiement/cheque/index.php?leftmenu=checks&mainmenu=bank','','MenuChequeDeposits','bills',0,'','$user->rights->facture->lire','$conf->facture->enabled && $conf->banque->enabled',2,'2013-02-24 18:29:15'),(89133,'smartphone',1,NULL,'left','accountancy',89132,NULL,NULL,0,'/compta/paiement/cheque/card.php?leftmenu=checks&action=new','','NewCheckDeposit','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled && $conf->banque->enabled',2,'2013-02-24 18:29:15'),(89134,'smartphone',1,NULL,'left','accountancy',89132,NULL,NULL,1,'/compta/paiement/cheque/list.php?leftmenu=checks','','List','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled && $conf->banque->enabled',2,'2013-02-24 18:29:15'),(89135,'smartphone',1,NULL,'left','accountancy',89121,NULL,NULL,8,'/compta/facture/stats/index.php?leftmenu=customers_bills','','Statistics','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled && $conf->banque->enabled',2,'2013-02-24 18:29:15'),(89321,'smartphone',1,NULL,'left','accountancy',87427,NULL,NULL,3,'/commande/list.php?leftmenu=orders&viewstatut=3','','MenuOrdersToBill','orders',0,'','$user->rights->commande->lire','$conf->commande->enabled',0,'2013-02-24 18:29:15'),(89421,'smartphone',1,NULL,'left','accountancy',87427,NULL,NULL,4,'/compta/dons/index.php?leftmenu=donations&mainmenu=accountancy','','Donations','donations',0,'','$user->rights->don->lire','$conf->don->enabled',2,'2013-02-24 18:29:15'),(89422,'smartphone',1,NULL,'left','accountancy',89421,NULL,NULL,0,'/compta/dons/card.php?leftmenu=donations&mainmenu=accountancy&action=create','','NewDonation','donations',1,'','$user->rights->don->creer','$conf->don->enabled && $leftmenu==\"donations\"',2,'2013-02-24 18:29:15'),(89423,'smartphone',1,NULL,'left','accountancy',89421,NULL,NULL,1,'/compta/dons/list.php?leftmenu=donations&mainmenu=accountancy','','List','donations',1,'','$user->rights->don->lire','$conf->don->enabled && $leftmenu==\"donations\"',2,'2013-02-24 18:29:15'),(89521,'smartphone',1,NULL,'left','accountancy',87427,NULL,NULL,5,'/compta/deplacement/index.php?leftmenu=tripsandexpenses','','TripsAndExpenses','trips',0,'','$user->rights->deplacement->lire','$conf->deplacement->enabled',0,'2013-02-24 18:29:15'),(89522,'smartphone',1,NULL,'left','accountancy',89521,NULL,NULL,1,'/compta/deplacement/card.php?action=create&leftmenu=tripsandexpenses','','New','trips',1,'','$user->rights->deplacement->creer','$conf->deplacement->enabled && $leftmenu==\"tripsandexpenses\"',0,'2013-02-24 18:29:15'),(89523,'smartphone',1,NULL,'left','accountancy',89521,NULL,NULL,2,'/compta/deplacement/index.php?leftmenu=tripsandexpenses','','List','trips',1,'','$user->rights->deplacement->lire','$conf->deplacement->enabled && $leftmenu==\"tripsandexpenses\"',0,'2013-02-24 18:29:15'),(89524,'smartphone',1,NULL,'left','accountancy',89521,NULL,NULL,2,'/compta/deplacement/stats/index.php?leftmenu=tripsandexpenses','','Statistics','trips',1,'','$user->rights->deplacement->lire','$conf->deplacement->enabled && $leftmenu==\"tripsandexpenses\"',0,'2013-02-24 18:29:15'),(89621,'smartphone',1,NULL,'left','accountancy',87427,NULL,NULL,6,'/compta/charges/index.php?leftmenu=tax&mainmenu=accountancy','','MenuTaxAndDividends','compta',0,'','$user->rights->tax->charges->lire','$conf->tax->enabled',0,'2013-02-24 18:29:15'),(89622,'smartphone',1,NULL,'left','accountancy',89621,NULL,NULL,1,'/compta/sociales/index.php?leftmenu=tax_social','','SocialContributions','',1,'','$user->rights->tax->charges->lire','$conf->tax->enabled',0,'2013-02-24 18:29:15'),(89623,'smartphone',1,NULL,'left','accountancy',89622,NULL,NULL,2,'/compta/sociales/charges.php?leftmenu=tax_social&action=create','','MenuNewSocialContribution','',2,'','$user->rights->tax->charges->creer','$conf->tax->enabled && $leftmenu==\"tax_social\"',0,'2013-02-24 18:29:15'),(89624,'smartphone',1,NULL,'left','accountancy',89622,NULL,NULL,3,'/compta/charges/index.php?leftmenu=tax_social&mainmenu=accountancy&mode=sconly','','Payments','',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && $leftmenu==\"tax_social\"',0,'2013-02-24 18:29:15'),(89721,'smartphone',1,NULL,'left','accountancy',89621,NULL,NULL,7,'/compta/tva/index.php?leftmenu=tax_vat&mainmenu=accountancy','','VAT','companies',1,'','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS)',0,'2013-02-24 18:29:15'),(89722,'smartphone',1,NULL,'left','accountancy',89721,NULL,NULL,0,'/compta/tva/card.php?leftmenu=tax_vat&action=create','','NewPayment','companies',2,'','$user->rights->tax->charges->creer','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2013-02-24 18:29:15'),(89723,'smartphone',1,NULL,'left','accountancy',89721,NULL,NULL,1,'/compta/tva/reglement.php?leftmenu=tax_vat','','Payments','companies',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2013-02-24 18:29:15'),(89724,'smartphone',1,NULL,'left','accountancy',89721,NULL,NULL,2,'/compta/tva/clients.php?leftmenu=tax_vat','','ReportByCustomers','companies',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2013-02-24 18:29:15'),(89725,'smartphone',1,NULL,'left','accountancy',89721,NULL,NULL,3,'/compta/tva/quadri_detail.php?leftmenu=tax_vat','','ReportByQuarter','companies',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2013-02-24 18:29:15'),(89821,'smartphone',1,NULL,'left','accountancy',87427,NULL,NULL,8,'/compta/ventilation/index.php?leftmenu=ventil','','Ventilation','companies',0,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89822,'smartphone',1,NULL,'left','accountancy',89821,NULL,NULL,0,'/compta/ventilation/list.php','','ToDispatch','companies',1,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89823,'smartphone',1,NULL,'left','accountancy',89821,NULL,NULL,1,'/compta/ventilation/lignes.php','','Dispatched','companies',1,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89824,'smartphone',1,NULL,'left','accountancy',89821,NULL,NULL,2,'/compta/param/','','Setup','companies',1,'','$user->rights->compta->ventilation->parametrer','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89825,'smartphone',1,NULL,'left','accountancy',89824,NULL,NULL,0,'/compta/param/comptes/list.php','','List','companies',2,'','$user->rights->compta->ventilation->parametrer','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89826,'smartphone',1,NULL,'left','accountancy',89824,NULL,NULL,1,'/compta/param/comptes/card.php?action=create','','New','companies',2,'','$user->rights->compta->ventilation->parametrer','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89827,'smartphone',1,NULL,'left','accountancy',89821,NULL,NULL,3,'/compta/export/','','Export','companies',1,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89828,'smartphone',1,NULL,'left','accountancy',89827,NULL,NULL,0,'/compta/export/index.php','','New','companies',2,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89829,'smartphone',1,NULL,'left','accountancy',89827,NULL,NULL,1,'/compta/export/list.php','','List','companies',2,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89921,'smartphone',1,NULL,'left','accountancy',87435,NULL,NULL,9,'/compta/prelevement/index.php?leftmenu=withdraw&mainmenu=bank','','StandingOrders','withdrawals',0,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled',2,'2013-02-24 18:29:15'),(89922,'smartphone',1,NULL,'left','accountancy',89921,NULL,NULL,1,'/compta/prelevement/demandes.php?status=0&leftmenu=withdraw','','StandingOrderToProcess','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-02-24 18:29:15'),(89923,'smartphone',1,NULL,'left','accountancy',89921,NULL,NULL,0,'/compta/prelevement/create.php?leftmenu=withdraw','','NewStandingOrder','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-02-24 18:29:15'),(89924,'smartphone',1,NULL,'left','accountancy',89921,NULL,NULL,2,'/compta/prelevement/bons.php?leftmenu=withdraw','','WithdrawalsReceipts','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-02-24 18:29:15'),(89925,'smartphone',1,NULL,'left','accountancy',89921,NULL,NULL,3,'/compta/prelevement/list.php?leftmenu=withdraw','','WithdrawalsLines','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-02-24 18:29:15'),(89927,'smartphone',1,NULL,'left','accountancy',89921,NULL,NULL,5,'/compta/prelevement/rejets.php?leftmenu=withdraw','','Rejects','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-02-24 18:29:15'),(89928,'smartphone',1,NULL,'left','accountancy',89921,NULL,NULL,6,'/compta/prelevement/stats.php?leftmenu=withdraw','','Statistics','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-02-24 18:29:15'),(90021,'smartphone',1,NULL,'left','accountancy',87435,NULL,NULL,1,'/compta/bank/index.php?leftmenu=bank&mainmenu=bank','','MenuBankCash','banks',0,'','$user->rights->banque->lire','$conf->banque->enabled',0,'2013-02-24 18:29:15'),(90022,'smartphone',1,NULL,'left','accountancy',90021,NULL,NULL,0,'/compta/bank/card.php?action=create&leftmenu=bank','','MenuNewFinancialAccount','banks',1,'','$user->rights->banque->configurer','$conf->banque->enabled && $leftmenu==bank',0,'2013-02-24 18:29:15'),(90023,'smartphone',1,NULL,'left','accountancy',90021,NULL,NULL,1,'/compta/bank/categ.php?leftmenu=bank','','Rubriques','categories',1,'','$user->rights->banque->configurer','$conf->banque->enabled && $leftmenu==bank',0,'2013-02-24 18:29:15'),(90024,'smartphone',1,NULL,'left','accountancy',90021,NULL,NULL,2,'/compta/bank/search.php?leftmenu=bank','','ListTransactions','banks',1,'','$user->rights->banque->lire','$conf->banque->enabled && $leftmenu==bank',0,'2013-02-24 18:29:15'),(90025,'smartphone',1,NULL,'left','accountancy',90021,NULL,NULL,3,'/compta/bank/budget.php?leftmenu=bank','','ListTransactionsByCategory','banks',1,'','$user->rights->banque->lire','$conf->banque->enabled && $leftmenu==bank',0,'2013-02-24 18:29:15'),(90027,'smartphone',1,NULL,'left','accountancy',90021,NULL,NULL,5,'/compta/bank/virement.php?leftmenu=bank','','BankTransfers','banks',1,'','$user->rights->banque->transfer','$conf->banque->enabled && $leftmenu==bank',0,'2013-02-24 18:29:15'),(90121,'smartphone',1,NULL,'left','accountancy',87427,NULL,NULL,11,'/compta/resultat/index.php?leftmenu=ca&mainmenu=accountancy','','Reportings','main',0,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-02-24 18:29:15'),(90122,'smartphone',1,NULL,'left','accountancy',90121,NULL,NULL,0,'/compta/resultat/index.php?leftmenu=ca','','ReportInOut','main',1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-02-24 18:29:15'),(90123,'smartphone',1,NULL,'left','accountancy',90122,NULL,NULL,0,'/compta/resultat/clientfourn.php?leftmenu=ca','','ByCompanies','main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-02-24 18:29:15'),(90124,'smartphone',1,NULL,'left','accountancy',90121,NULL,NULL,1,'/compta/stats/index.php?leftmenu=ca','','ReportTurnover','main',1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-02-24 18:29:15'),(90125,'smartphone',1,NULL,'left','accountancy',90124,NULL,NULL,0,'/compta/stats/casoc.php?leftmenu=ca','','ByCompanies','main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-02-24 18:29:15'),(90126,'smartphone',1,NULL,'left','accountancy',90124,NULL,NULL,1,'/compta/stats/cabyuser.php?leftmenu=ca','','ByUsers','main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-02-24 18:29:15'),(90221,'smartphone',1,NULL,'left','products',87424,NULL,NULL,0,'/product/index.php?leftmenu=product&type=0','','Products','products',0,'','$user->rights->produit->lire','$conf->product->enabled',2,'2013-02-24 18:29:15'),(90222,'smartphone',1,NULL,'left','products',90221,NULL,NULL,0,'/product/card.php?leftmenu=product&action=create&type=0','','NewProduct','products',1,'','$user->rights->produit->creer','$conf->product->enabled',2,'2013-02-24 18:29:15'),(90223,'smartphone',1,NULL,'left','products',90221,NULL,NULL,1,'/product/list.php?leftmenu=product&type=0','','List','products',1,'','$user->rights->produit->lire','$conf->product->enabled',2,'2013-02-24 18:29:15'),(90224,'smartphone',1,NULL,'left','products',90221,NULL,NULL,4,'/product/reassort.php?type=0','','Stocks','products',1,'','$user->rights->produit->lire && $user->rights->stock->lire','$conf->product->enabled',2,'2013-02-24 18:29:15'),(90321,'smartphone',1,NULL,'left','products',87424,NULL,NULL,1,'/product/index.php?leftmenu=service&type=1','','Services','products',0,'','$user->rights->service->lire','$conf->service->enabled',2,'2013-02-24 18:29:15'),(90322,'smartphone',1,NULL,'left','products',90321,NULL,NULL,0,'/product/card.php?leftmenu=service&action=create&type=1','','NewService','products',1,'','$user->rights->service->creer','$conf->service->enabled',2,'2013-02-24 18:29:15'),(90323,'smartphone',1,NULL,'left','products',90321,NULL,NULL,1,'/product/list.php?leftmenu=service&type=1','','List','products',1,'','$user->rights->service->lire','$conf->service->enabled',2,'2013-02-24 18:29:15'),(90421,'smartphone',1,NULL,'left','products',87424,NULL,NULL,2,'/product/stats/index.php?leftmenu=stats','','Statistics','main',0,'','$user->rights->service->lire','$conf->product->enabled || $conf->service->enabled',2,'2013-02-24 18:29:15'),(90422,'smartphone',1,NULL,'left','products',90421,NULL,NULL,0,'/product/popuprop.php?leftmenu=stats','','Popularity','main',1,'','$user->rights->produit->lire && $user->rights->produit>lire','$conf->propal->enabled',2,'2013-02-24 18:29:15'),(90521,'smartphone',1,NULL,'left','products',87424,NULL,NULL,3,'/product/stock/index.php?leftmenu=stock','','Stock','stocks',0,'','$user->rights->stock->lire','$conf->stock->enabled',2,'2013-02-24 18:29:15'),(90522,'smartphone',1,NULL,'left','products',90521,NULL,NULL,0,'/product/stock/card.php?action=create','','MenuNewWarehouse','stocks',1,'','$user->rights->stock->creer','$conf->stock->enabled',2,'2013-02-24 18:29:15'),(90523,'smartphone',1,NULL,'left','products',90521,NULL,NULL,1,'/product/stock/list.php','','List','stocks',1,'','$user->rights->stock->lire','$conf->stock->enabled',2,'2013-02-24 18:29:15'),(90524,'smartphone',1,NULL,'left','products',90521,NULL,NULL,2,'/product/stock/valo.php','','EnhancedValue','stocks',1,'','$user->rights->stock->lire','$conf->stock->enabled',2,'2013-02-24 18:29:15'),(90525,'smartphone',1,NULL,'left','products',90521,NULL,NULL,3,'/product/stock/mouvement.php','','Movements','stocks',1,'','$user->rights->stock->mouvement->lire','$conf->stock->enabled',2,'2013-02-24 18:29:15'),(90621,'smartphone',1,NULL,'left','products',87424,NULL,NULL,4,'/categories/index.php?leftmenu=cat&type=0','','Categories','categories',0,'','$user->rights->categorie->lire','$conf->categorie->enabled',2,'2013-02-24 18:29:15'),(90622,'smartphone',1,NULL,'left','products',90621,NULL,NULL,0,'/categories/card.php?action=create&type=0','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->categorie->enabled',2,'2013-02-24 18:29:15'),(91021,'smartphone',1,NULL,'left','project',87428,NULL,NULL,0,'/projet/index.php?leftmenu=projects','','Projects','projects',0,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91022,'smartphone',1,NULL,'left','project',91021,NULL,NULL,1,'/projet/card.php?leftmenu=projects&action=create','','NewProject','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91023,'smartphone',1,NULL,'left','project',91021,NULL,NULL,2,'/projet/list.php?leftmenu=projects','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91031,'smartphone',1,NULL,'left','project',87428,NULL,NULL,0,'/projet/index.php?leftmenu=projects&mode=mine','','MyProjects','projects',0,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91032,'smartphone',1,NULL,'left','project',91031,NULL,NULL,1,'/projet/card.php?leftmenu=projects&action=create&mode=mine','','NewProject','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91033,'smartphone',1,NULL,'left','project',91031,NULL,NULL,2,'/projet/list.php?leftmenu=projects&mode=mine','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91121,'smartphone',1,NULL,'left','project',87428,NULL,NULL,0,'/projet/activity/index.php?leftmenu=projects','','Activities','projects',0,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91122,'smartphone',1,NULL,'left','project',91121,NULL,NULL,1,'/projet/tasks.php?leftmenu=projects&action=create','','NewTask','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91123,'smartphone',1,NULL,'left','project',91121,NULL,NULL,2,'/projet/tasks/index.php?leftmenu=projects','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91124,'smartphone',1,NULL,'left','project',91121,NULL,NULL,3,'/projet/activity/list.php?leftmenu=projects','','NewTimeSpent','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91221,'smartphone',1,NULL,'left','project',87428,NULL,NULL,0,'/projet/activity/index.php?leftmenu=projects&mode=mine','','MyActivities','projects',0,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91222,'smartphone',1,NULL,'left','project',91221,NULL,NULL,1,'/projet/tasks.php?leftmenu=projects&action=create&mode=mine','','NewTask','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91223,'smartphone',1,NULL,'left','project',91221,NULL,NULL,2,'/projet/tasks/index.php?leftmenu=projects&mode=mine','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91224,'smartphone',1,NULL,'left','project',91221,NULL,NULL,3,'/projet/activity/list.php?leftmenu=projects&mode=mine','','NewTimeSpent','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91321,'smartphone',1,NULL,'left','tools',87429,NULL,NULL,0,'/comm/mailing/index.php?leftmenu=mailing','','EMailings','mails',0,'','$user->rights->mailing->lire','$conf->mailing->enabled',0,'2013-02-24 18:29:15'),(91322,'smartphone',1,NULL,'left','tools',91321,NULL,NULL,0,'/comm/mailing/card.php?leftmenu=mailing&action=create','','NewMailing','mails',1,'','$user->rights->mailing->creer','$conf->mailing->enabled',0,'2013-02-24 18:29:15'),(91323,'smartphone',1,NULL,'left','tools',91321,NULL,NULL,1,'/comm/mailing/list.php?leftmenu=mailing','','List','mails',1,'','$user->rights->mailing->lire','$conf->mailing->enabled',0,'2013-02-24 18:29:15'),(91521,'smartphone',1,NULL,'left','tools',87429,NULL,NULL,2,'/exports/index.php?leftmenu=export','','FormatedExport','exports',0,'','$user->rights->export->lire','$conf->export->enabled',2,'2013-02-24 18:29:15'),(91522,'smartphone',1,NULL,'left','tools',91521,NULL,NULL,0,'/exports/export.php?leftmenu=export','','NewExport','exports',1,'','$user->rights->export->creer','$conf->export->enabled',2,'2013-02-24 18:29:15'),(91551,'smartphone',1,NULL,'left','tools',87429,NULL,NULL,2,'/imports/index.php?leftmenu=import','','FormatedImport','exports',0,'','$user->rights->import->run','$conf->import->enabled',2,'2013-02-24 18:29:15'),(91552,'smartphone',1,NULL,'left','tools',91551,NULL,NULL,0,'/imports/import.php?leftmenu=import','','NewImport','exports',1,'','$user->rights->import->run','$conf->import->enabled',2,'2013-02-24 18:29:15'),(91621,'smartphone',1,NULL,'left','members',87434,NULL,NULL,0,'/adherents/index.php?leftmenu=members&mainmenu=members','','Members','members',0,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91622,'smartphone',1,NULL,'left','members',91621,NULL,NULL,0,'/adherents/card.php?action=create','','NewMember','members',1,'','$user->rights->adherent->creer','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91623,'smartphone',1,NULL,'left','members',91621,NULL,NULL,1,'/adherents/list.php','','List','members',1,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91624,'smartphone',1,NULL,'left','members',91623,NULL,NULL,2,'/adherents/list.php?statut=-1','','MenuMembersToValidate','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91625,'smartphone',1,NULL,'left','members',91623,NULL,NULL,3,'/adherents/list.php?statut=1','','MenuMembersValidated','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91626,'smartphone',1,NULL,'left','members',91623,NULL,NULL,4,'/adherents/list.php?statut=1&filter=outofdate','','MenuMembersNotUpToDate','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91627,'smartphone',1,NULL,'left','members',91623,NULL,NULL,5,'/adherents/list.php?statut=1&filter=uptodate','','MenuMembersUpToDate','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91628,'smartphone',1,NULL,'left','members',91623,NULL,NULL,6,'/adherents/list.php?statut=0','','MenuMembersResiliated','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91721,'smartphone',1,NULL,'left','members',87434,NULL,NULL,1,'/adherents/index.php?leftmenu=accountancy&mainmenu=members','','Subscriptions','compta',0,'','$user->rights->adherent->cotisation->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91722,'smartphone',1,NULL,'left','members',91721,NULL,NULL,0,'/adherents/list.php?statut=-1&leftmenu=accountancy&mainmenu=members','','NewSubscription','compta',1,'','$user->rights->adherent->cotisation->creer','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91723,'smartphone',1,NULL,'left','members',91721,NULL,NULL,1,'/adherents/cotisations.php?leftmenu=accountancy','','List','compta',1,'','$user->rights->adherent->cotisation->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91921,'smartphone',1,NULL,'left','members',87434,NULL,NULL,3,'/adherents/index.php?leftmenu=export&mainmenu=members','','Exports','members',0,'','$user->rights->adherent->export','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91922,'smartphone',1,NULL,'left','members',91921,NULL,NULL,0,'/exports/index.php?leftmenu=export','','Datas','members',1,'','$user->rights->adherent->export','$conf->adherent->enabled && $conf->export->enabled',2,'2013-02-24 18:29:15'),(91923,'smartphone',1,NULL,'left','members',91921,NULL,NULL,1,'/adherents/htpasswd.php?leftmenu=export','','Filehtpasswd','members',1,'','$user->rights->adherent->export','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91924,'smartphone',1,NULL,'left','members',91921,NULL,NULL,2,'/adherents/cartes/carte.php?leftmenu=export','','MembersCards','members',1,'','$user->rights->adherent->export','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(92121,'smartphone',1,NULL,'left','members',87434,NULL,NULL,5,'/adherents/index.php?leftmenu=setup&mainmenu=members','','Setup','members',0,'','$user->rights->adherent->configurer','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(92122,'smartphone',1,NULL,'left','members',92121,NULL,NULL,0,'/adherents/type.php?leftmenu=setup','','MembersTypes','members',1,'','$user->rights->adherent->configurer','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(92123,'smartphone',1,NULL,'left','members',92121,NULL,NULL,1,'/adherents/options.php?leftmenu=setup','','MembersAttributes','members',1,'','$user->rights->adherent->configurer','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(92421,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,0,'/compta/index.php?leftmenu=suppliers','','Suppliers','companies',0,'','$user->rights->societe->lire && $user->rights->fournisseur->lire','$conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(92422,'smartphone',1,NULL,'left','commercial',92421,NULL,NULL,0,'/societe/soc.php?leftmenu=suppliers&action=create&type=f','','NewSupplier','companies',1,'','$user->rights->societe->creer && $user->rights->fournisseur->lire','$conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(92423,'smartphone',1,NULL,'left','commercial',92421,NULL,NULL,1,'/fourn/list.php?leftmenu=suppliers','','List','companies',1,'','$user->rights->societe->lire && $user->rights->fournisseur->lire','$conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(92424,'smartphone',1,NULL,'left','commercial',92421,NULL,NULL,2,'/contact/list.php?leftmenu=suppliers&type=f','','Contacts','companies',1,'','$user->rights->societe->lire && $user->rights->fournisseur->lire','$conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(92521,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,6,'/fourn/commande/index.php?leftmenu=orders_suppliers','','SuppliersOrders','orders',0,'','$user->rights->fournisseur->commande->lire','$conf->commande->enabled',2,'2013-02-24 18:29:15'),(92522,'smartphone',1,NULL,'left','commercial',92521,NULL,NULL,0,'/societe/societe.php?leftmenu=orders_suppliers','','NewOrder','orders',1,'','$user->rights->fournisseur->commande->creer','$conf->commande->enabled && $leftmenu==\"orders_suppliers\"',2,'2013-02-24 18:29:15'),(92523,'smartphone',1,NULL,'left','commercial',92521,NULL,NULL,1,'/fourn/commande/list.php?leftmenu=orders_suppliers&viewstatut=0','','List','orders',1,'','$user->rights->fournisseur->commande->lire','$conf->commande->enabled && $leftmenu==\"orders_suppliers\"',2,'2013-02-24 18:29:15'),(92529,'smartphone',1,NULL,'left','commercial',92521,NULL,NULL,7,'/commande/stats/index.php?leftmenu=orders_suppliers&mode=supplier','','Statistics','orders',1,'','$user->rights->fournisseur->commande->lire','$conf->commande->enabled && $leftmenu==\"orders_suppliers\"',2,'2013-02-24 18:29:15'),(92621,'smartphone',1,NULL,'left','members',87434,NULL,NULL,3,'/categories/index.php?leftmenu=cat&type=3','','MembersCategoriesShort','categories',0,'','$user->rights->categorie->lire','$conf->adherent->enabled && $conf->categorie->enabled',2,'2013-02-24 18:29:15'),(92622,'smartphone',1,NULL,'left','members',92621,NULL,NULL,0,'/categories/card.php?action=create&type=3','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->adherent->enabled && $conf->categorie->enabled',2,'2013-02-24 18:29:15'),(103094,'all',2,'agenda','top','agenda',0,NULL,NULL,100,'/comm/action/index.php','','Agenda','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103095,'all',2,'agenda','left','agenda',103094,NULL,NULL,100,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda','','Actions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103096,'all',2,'agenda','left','agenda',103095,NULL,NULL,101,'/comm/action/card.php?mainmenu=agenda&leftmenu=agenda&action=create','','NewAction','commercial',NULL,NULL,'($user->rights->agenda->myactions->create||$user->rights->agenda->allactions->create)','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103097,'all',2,'agenda','left','agenda',103095,NULL,NULL,102,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda','','Calendar','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103098,'all',2,'agenda','left','agenda',103097,NULL,NULL,103,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=todo&filter=mine','','MenuToDoMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103099,'all',2,'agenda','left','agenda',103097,NULL,NULL,104,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=done&filter=mine','','MenuDoneMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103100,'all',2,'agenda','left','agenda',103097,NULL,NULL,105,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=todo','','MenuToDoActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2013-03-13 15:29:19'),(103101,'all',2,'agenda','left','agenda',103097,NULL,NULL,106,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=done','','MenuDoneActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2013-03-13 15:29:19'),(103102,'all',2,'agenda','left','agenda',103095,NULL,NULL,112,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda','','List','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103103,'all',2,'agenda','left','agenda',103102,NULL,NULL,113,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=todo&filter=mine','','MenuToDoMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103104,'all',2,'agenda','left','agenda',103102,NULL,NULL,114,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=done&filter=mine','','MenuDoneMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103105,'all',2,'agenda','left','agenda',103102,NULL,NULL,115,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=todo','','MenuToDoActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2013-03-13 15:29:19'),(103106,'all',2,'agenda','left','agenda',103102,NULL,NULL,116,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=done','','MenuDoneActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2013-03-13 15:29:19'),(103107,'all',2,'agenda','left','agenda',103095,NULL,NULL,120,'/comm/action/rapport/index.php?mainmenu=agenda&leftmenu=agenda','','Reportings','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103108,'all',2,'pos','top','pos',0,NULL,NULL,100,'/pos/backend/listefac.php','','POS','pos@pos',NULL,'1','1','1',2,'2013-03-13 20:33:09'),(103109,'all',2,'pos','left','pos',103108,NULL,NULL,100,'/pos/backend/list.php','','Tickets','pos@pos',NULL,NULL,'$user->rights->pos->backend','$conf->global->POS_USE_TICKETS',0,'2013-03-13 20:33:09'),(103110,'all',2,'pos','left','pos',103109,NULL,NULL,100,'/pos/backend/list.php','','List','main',NULL,NULL,'$user->rights->pos->backend','$conf->global->POS_USE_TICKETS',0,'2013-03-13 20:33:09'),(103111,'all',2,'pos','left','pos',103110,NULL,NULL,100,'/pos/backend/list.php?viewstatut=0','','StatusTicketDraft','pos@pos',NULL,NULL,'$user->rights->pos->backend','$conf->global->POS_USE_TICKETS',0,'2013-03-13 20:33:09'),(103112,'all',2,'pos','left','@pos',103110,NULL,NULL,100,'/pos/backend/list.php?viewstatut=1','','StatusTicketClosed','main',NULL,NULL,'$user->rights->pos->backend','$conf->global->POS_USE_TICKETS',0,'2013-03-13 20:33:09'),(103113,'all',2,'pos','left','@pos',103110,NULL,NULL,100,'/pos/backend/list.php?viewstatut=2','','StatusTicketProcessed','main',NULL,NULL,'$user->rights->pos->backend','$conf->global->POS_USE_TICKETS',0,'2013-03-13 20:33:09'),(103114,'all',2,'pos','left','@pos',103110,NULL,NULL,100,'/pos/backend/list.php?viewtype=1','','StatusTicketReturned','main',NULL,NULL,'$user->rights->pos->backend','$conf->global->POS_USE_TICKETS',0,'2013-03-13 20:33:09'),(103115,'all',2,'pos','left','pos',103108,NULL,NULL,100,'/pos/backend/listefac.php','','Factures','pos@pos',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103116,'all',2,'pos','left','pos',103115,NULL,NULL,100,'/pos/backend/listefac.php','','List','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103117,'all',2,'pos','left','pos',103116,NULL,NULL,100,'/pos/backend/listefac.php?viewstatut=0','','BillStatusDraft','bills',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103118,'all',2,'pos','left','@pos',103116,NULL,NULL,100,'/pos/backend/listefac.php?viewstatut=1','','BillStatusValidated','bills',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103119,'all',2,'pos','left','@pos',103116,NULL,NULL,100,'/pos/backend/listefac.php?viewstatut=2&viewtype=0','','BillStatusPaid','bills',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103120,'all',2,'pos','left','@pos',103116,NULL,NULL,100,'/pos/backend/listefac.php?viewtype=2','','BillStatusReturned','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103121,'all',2,'pos','left','@pos',103108,NULL,NULL,100,'/pos/frontend/index.php','','POS','main',NULL,NULL,'$user->rights->pos->frontend','1',0,'2013-03-13 20:33:09'),(103122,'all',2,'pos','left','@pos',103121,NULL,NULL,100,'/pos/frontend/index.php','','NewTicket','main',NULL,NULL,'$user->rights->pos->frontend','1',0,'2013-03-13 20:33:09'),(103123,'all',2,'pos','left','@pos',103121,NULL,NULL,101,'/pos/backend/closes.php','','CloseandArching','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103124,'all',2,'pos','left','@pos',103108,NULL,NULL,100,'/pos/backend/terminal/cash.php','','Terminal','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103125,'all',2,'pos','left','@pos',103124,NULL,NULL,100,'/pos/backend/terminal/card.php?action=create','','NewCash','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103126,'all',2,'pos','left','@pos',103124,NULL,NULL,101,'/pos/backend/terminal/cash.php','','List','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103127,'all',2,'pos','left','@pos',103123,NULL,NULL,101,'/pos/backend/closes.php?viewstatut=0','','Arqueo','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103128,'all',2,'pos','left','@pos',103123,NULL,NULL,102,'/pos/backend/closes.php?viewstatut=1','','Closes','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103129,'all',2,'pos','left','@pos',103108,NULL,NULL,102,'/pos/backend/transfers.php','','Transfer','main',NULL,NULL,'$user->rights->pos->transfer','1',0,'2013-03-13 20:33:09'),(103130,'all',2,'pos','left','@pos',103108,NULL,NULL,102,'/pos/backend/resultat/index.php','','Rapport','main',NULL,NULL,'$user->rights->pos->stats','1',0,'2013-03-13 20:33:09'),(103131,'all',2,'pos','left','@pos',103130,NULL,NULL,102,'/pos/backend/resultat/casoc.php','','ReportsCustomer','main',NULL,NULL,'$user->rights->pos->stats','1',0,'2013-03-13 20:33:09'),(103132,'all',2,'pos','left','@pos',103130,NULL,NULL,102,'/pos/backend/resultat/causer.php','','ReportsUser','main',NULL,NULL,'$user->rights->pos->stats','1',0,'2013-03-13 20:33:09'),(103133,'all',2,'pos','left','@pos',103130,NULL,NULL,102,'/pos/backend/resultat/sellsjournal.php','','ReportsSells','main',NULL,NULL,'$user->rights->pos->stats','1',0,'2013-03-13 20:33:09'),(103134,'all',2,'opensurvey','top','opensurvey',0,NULL,NULL,200,'/opensurvey/index.php','','Surveys','opensurvey',NULL,NULL,'$user->rights->opensurvey->survey->read','$conf->opensurvey->enabled',0,'2013-03-13 20:33:42'),(103135,'all',2,'opensurvey','left','opensurvey',-1,NULL,'opensurvey',200,'/opensurvey/index.php?mainmenu=opensurvey&leftmenu=opensurvey','','Survey','opensurvey@opensurvey',NULL,'opensurvey','','$conf->opensurvey->enabled',0,'2013-03-13 20:33:42'),(103136,'all',2,'opensurvey','left','opensurvey',-1,'opensurvey','opensurvey',210,'/opensurvey/public/index.php','_blank','NewSurvey','opensurvey@opensurvey',NULL,'opensurvey_new','','$conf->opensurvey->enabled',0,'2013-03-13 20:33:42'),(103137,'all',2,'opensurvey','left','opensurvey',-1,'opensurvey','opensurvey',220,'/opensurvey/list.php','','List','opensurvey@opensurvey',NULL,'opensurvey_list','','$conf->opensurvey->enabled',0,'2013-03-13 20:33:42'),(108504,'all',1,'agenda','top','agenda',0,NULL,NULL,100,'/comm/action/index.php','','Agenda','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2015-10-03 08:46:14'),(108505,'all',1,'agenda','left','agenda',108504,NULL,NULL,100,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda','','Actions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2015-10-03 08:46:14'),(108506,'all',1,'agenda','left','agenda',108505,NULL,NULL,101,'/comm/action/card.php?mainmenu=agenda&leftmenu=agenda&action=create','','NewAction','commercial',NULL,NULL,'($user->rights->agenda->myactions->create||$user->rights->agenda->allactions->create)','$conf->agenda->enabled',2,'2015-10-03 08:46:14'),(108507,'all',1,'agenda','left','agenda',108505,NULL,NULL,102,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda','','Agenda','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2015-10-03 08:46:14'),(108508,'all',1,'agenda','left','agenda',108507,NULL,NULL,103,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=todo&filter=mine','','MenuToDoMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2015-10-03 08:46:14'),(108509,'all',1,'agenda','left','agenda',108507,NULL,NULL,104,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=done&filter=mine','','MenuDoneMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2015-10-03 08:46:14'),(108510,'all',1,'agenda','left','agenda',108507,NULL,NULL,105,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=todo','','MenuToDoActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2015-10-03 08:46:14'),(108511,'all',1,'agenda','left','agenda',108507,NULL,NULL,106,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=done','','MenuDoneActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2015-10-03 08:46:14'),(108512,'all',1,'agenda','left','agenda',108505,NULL,NULL,112,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda','','List','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2015-10-03 08:46:14'),(108513,'all',1,'agenda','left','agenda',108512,NULL,NULL,113,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=todo&filter=mine','','MenuToDoMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2015-10-03 08:46:14'),(108514,'all',1,'agenda','left','agenda',108512,NULL,NULL,114,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=done&filter=mine','','MenuDoneMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2015-10-03 08:46:14'),(108515,'all',1,'agenda','left','agenda',108512,NULL,NULL,115,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=todo','','MenuToDoActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2015-10-03 08:46:14'),(108516,'all',1,'agenda','left','agenda',108512,NULL,NULL,116,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=done','','MenuDoneActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2015-10-03 08:46:14'),(108517,'all',1,'agenda','left','agenda',108505,NULL,NULL,120,'/comm/action/rapport/index.php?mainmenu=agenda&leftmenu=agenda','','Reportings','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$conf->agenda->enabled',2,'2015-10-03 08:46:14'),(108518,'all',1,'barcode','left','tools',-1,NULL,'tools',200,'/barcode/printsheet.php?mainmenu=tools&leftmenu=barcodeprint','','BarCodePrintsheet','products',NULL,'barcodeprint','($conf->global->MAIN_USE_ADVANCED_PERMS && $user->rights->barcode->lire_advance) || (! $conf->global->MAIN_USE_ADVANCED_PERMS)','$conf->barcode->enabled',2,'2015-10-03 08:46:14'),(108519,'all',1,'barcode','left','home',-1,'modulesadmintools','home',300,'/barcode/codeinit.php?mainmenu=home&leftmenu=modulesadmintools','','MassBarcodeInit','products',NULL,NULL,'($conf->global->MAIN_USE_ADVANCED_PERMS && $user->rights->barcode->creer_advance) || (! $conf->global->MAIN_USE_ADVANCED_PERMS)','$conf->barcode->enabled && $leftmenu==\"modulesadmintools\"',0,'2015-10-03 08:46:14'),(108520,'all',1,'cron','left','home',-1,'modulesadmintools','home',200,'/cron/list.php?status=-1','','CronList','cron',NULL,NULL,'$user->rights->cron->read','$leftmenu==\'modulesadmintools\'',2,'2015-10-03 08:46:15'),(108521,'all',1,'ecm','top','ecm',0,NULL,NULL,100,'/ecm/index.php','','MenuECM','ecm',NULL,NULL,'$user->rights->ecm->read || $user->rights->ecm->upload || $user->rights->ecm->setup','$conf->ecm->enabled',2,'2015-10-03 08:46:15'),(108522,'all',1,'ecm','left','ecm',-1,NULL,'ecm',101,'/ecm/index.php?mainmenu=ecm&leftmenu=ecm','','ECMArea','ecm',NULL,'ecm','$user->rights->ecm->read || $user->rights->ecm->upload','$user->rights->ecm->read || $user->rights->ecm->upload',2,'2015-10-03 08:46:15'),(108523,'all',1,'ecm','left','ecm',-1,'ecm','ecm',102,'/ecm/index.php?action=file_manager&mainmenu=ecm&leftmenu=ecm','','ECMSectionsManual','ecm',NULL,'ecm_manual','$user->rights->ecm->read || $user->rights->ecm->upload','$user->rights->ecm->read || $user->rights->ecm->upload',2,'2015-10-03 08:46:15'),(108524,'all',1,'ecm','left','ecm',-1,'ecm','ecm',103,'/ecm/index_auto.php?action=file_manager&mainmenu=ecm&leftmenu=ecm','','ECMSectionsAuto','ecm',NULL,NULL,'$user->rights->ecm->read || $user->rights->ecm->upload','$user->rights->ecm->read || $user->rights->ecm->upload',2,'2015-10-03 08:46:15'),(108525,'all',1,'opensurvey','left','tools',-1,NULL,'tools',200,'/opensurvey/index.php?mainmenu=tools&leftmenu=opensurvey','','Survey','opensurvey',NULL,'opensurvey','','$conf->opensurvey->enabled',0,'2015-10-03 08:46:16'),(108526,'all',1,'opensurvey','left','tools',-1,'opensurvey','tools',210,'/opensurvey/wizard/index.php','','NewSurvey','opensurvey',NULL,'opensurvey_new','$user->rights->opensurvey->write','$conf->opensurvey->enabled',0,'2015-10-03 08:46:16'),(108527,'all',1,'opensurvey','left','tools',-1,'opensurvey','tools',220,'/opensurvey/list.php','','List','opensurvey',NULL,'opensurvey_list','','$conf->opensurvey->enabled',0,'2015-10-03 08:46:16'),(108528,'auguria',1,'','top','home',0,NULL,NULL,10,'/index.php?mainmenu=home&leftmenu=','','Home','',-1,'','','1',2,'2015-10-03 08:46:16'),(108529,'auguria',1,'societe|fournisseur','top','companies',0,NULL,NULL,20,'/societe/index.php?mainmenu=companies&leftmenu=','','ThirdParties','companies',-1,'','$user->rights->societe->lire || $user->rights->societe->contact->lire','( ! empty($conf->societe->enabled) && (empty($conf->global->SOCIETE_DISABLE_PROSPECTS) || empty($conf->global->SOCIETE_DISABLE_CUSTOMERS))) || ! empty($conf->fournisseur->enabled)',2,'2015-10-03 08:46:16'),(108530,'auguria',1,'product|service','top','products',0,NULL,NULL,30,'/product/index.php?mainmenu=products&leftmenu=','','Products/Services','products',-1,'','$user->rights->produit->lire||$user->rights->service->lire','$conf->product->enabled || $conf->service->enabled',0,'2015-10-03 08:46:16'),(108532,'auguria',1,'propal|commande|fournisseur|contrat|ficheinter','top','commercial',0,NULL,NULL,40,'/comm/index.php?mainmenu=commercial&leftmenu=','','Commercial','commercial',-1,'','$user->rights->societe->lire || $user->rights->societe->contact->lire','$conf->propal->enabled || $conf->commande->enabled || $conf->fournisseur->enabled || $conf->contrat->enabled || $conf->ficheinter->enabled',2,'2015-10-03 08:46:16'),(108533,'auguria',1,'comptabilite|accounting|facture|deplacement|don|tax|salaries|loa','top','accountancy',0,NULL,NULL,50,'/compta/index.php?mainmenu=accountancy&leftmenu=','','MenuFinancial','compta',-1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->plancompte->lire || $user->rights->facture->lire|| $user->rights->deplacement->lire || $user->rights->don->lire || $user->rights->tax->charges->lire || $user->rights->salaries->read || $u','$conf->comptabilite->enabled || $conf->accounting->enabled || $conf->facture->enabled || $conf->deplacement->enabled || $conf->don->enabled || $conf->tax->enabled || $conf->salaries->enabled || $conf->loan->enabled',2,'2015-10-03 08:46:16'),(108534,'auguria',1,'projet','top','project',0,NULL,NULL,70,'/projet/index.php?mainmenu=project&leftmenu=','','Projects','projects',-1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2015-10-03 08:46:16'),(108535,'auguria',1,'mailing|export|import|opensurvey','top','tools',0,NULL,NULL,90,'/core/tools.php?mainmenu=tools&leftmenu=','','Tools','other',-1,'','$user->rights->mailing->lire || $user->rights->export->lire || $user->rights->import->run || $user->rights->opensurvey->read','$conf->mailing->enabled || $conf->export->enabled || $conf->import->enabled || $conf->opensurvey->enabled',2,'2015-10-03 08:46:16'),(108540,'auguria',1,'adherent','top','members',0,NULL,NULL,110,'/adherents/index.php?mainmenu=members&leftmenu=','','Members','members',-1,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2015-10-03 08:46:16'),(108541,'auguria',1,'banque|prelevement','top','bank',0,NULL,NULL,60,'/compta/bank/index.php?mainmenu=bank&leftmenu=bank','','MenuBankCash','banks',-1,'','$user->rights->banque->lire || $user->rights->prelevement->bons->lire','$conf->banque->enabled || $conf->prelevement->enabled',0,'2015-10-03 08:46:16'),(108542,'auguria',1,'hrm','top','hrm',0,NULL,NULL,80,'/compta/hrm.php?mainmenu=hrm&leftmenu=','','HRM','holiday',-1,'','$user->rights->holiday->write || $user->rights->deplacement->lire || $user->rights->expensereport->lire','$conf->holiday->enabled || $conf->deplacement->enabled || $conf->expensereport->enabled',0,'2015-10-03 08:46:16'),(108627,'auguria',1,'','left','home',108528,NULL,NULL,0,'/admin/index.php?leftmenu=setup','','Setup','admin',0,'setup','','$user->admin',2,'2015-10-03 08:46:16'),(108628,'auguria',1,'','left','home',108627,NULL,NULL,1,'/admin/company.php?leftmenu=setup','','MenuCompanySetup','admin',1,'','','$leftmenu==\"setup\"',2,'2015-10-03 08:46:16'),(108629,'auguria',1,'','left','home',108627,NULL,NULL,4,'/admin/ihm.php?leftmenu=setup','','GUISetup','admin',1,'','','$leftmenu==\"setup\"',2,'2015-10-03 08:46:16'),(108630,'auguria',1,'','left','home',108627,NULL,NULL,2,'/admin/modules.php?leftmenu=setup','','Modules','admin',1,'','','$leftmenu==\"setup\"',2,'2015-10-03 08:46:16'),(108631,'auguria',1,'','left','home',108627,NULL,NULL,6,'/admin/boxes.php?leftmenu=setup','','Boxes','admin',1,'','','$leftmenu==\"setup\"',2,'2015-10-03 08:46:16'),(108632,'auguria',1,'','left','home',108627,NULL,NULL,3,'/admin/menus.php?leftmenu=setup','','Menus','admin',1,'','','$leftmenu==\"setup\"',2,'2015-10-03 08:46:16'),(108633,'auguria',1,'','left','home',108627,NULL,NULL,7,'/admin/delais.php?leftmenu=setup','','Alerts','admin',1,'','','$leftmenu==\"setup\"',2,'2015-10-03 08:46:16'),(108634,'auguria',1,'','left','home',108627,NULL,NULL,10,'/admin/pdf.php?leftmenu=setup','','PDF','admin',1,'','','$leftmenu==\"setup\"',2,'2015-10-03 08:46:16'),(108635,'auguria',1,'','left','home',108627,NULL,NULL,8,'/admin/security_other.php?leftmenu=setup','','Security','admin',1,'','','$leftmenu==\"setup\"',2,'2015-10-03 08:46:16'),(108636,'auguria',1,'','left','home',108627,NULL,NULL,11,'/admin/mails.php?leftmenu=setup','','Emails','admin',1,'','','$leftmenu==\"setup\"',2,'2015-10-03 08:46:16'),(108637,'auguria',1,'','left','home',108627,NULL,NULL,9,'/admin/limits.php?leftmenu=setup','','MenuLimits','admin',1,'','','$leftmenu==\"setup\"',2,'2015-10-03 08:46:16'),(108638,'auguria',1,'','left','home',108627,NULL,NULL,13,'/admin/dict.php?leftmenu=setup','','Dictionary','admin',1,'','','$leftmenu==\"setup\"',2,'2015-10-03 08:46:16'),(108639,'auguria',1,'','left','home',108627,NULL,NULL,14,'/admin/const.php?leftmenu=setup','','OtherSetup','admin',1,'','','$leftmenu==\"setup\"',2,'2015-10-03 08:46:16'),(108640,'auguria',1,'','left','home',108627,NULL,NULL,12,'/admin/sms.php?leftmenu=setup','','SMS','admin',1,'','','$leftmenu==\"setup\"',2,'2015-10-03 08:46:16'),(108641,'auguria',1,'','left','home',108627,NULL,NULL,4,'/admin/translation.php?leftmenu=setup','','Translation','admin',1,'','','$leftmenu==\"setup\"',2,'2015-10-03 08:46:16'),(108728,'auguria',1,'','left','home',108827,NULL,NULL,0,'/admin/system/dolibarr.php?leftmenu=admintools','','InfoDolibarr','admin',1,'','','$leftmenu==\"admintools\"',2,'2015-10-03 08:46:16'),(108729,'auguria',1,'','left','home',108728,NULL,NULL,2,'/admin/system/modules.php?leftmenu=admintools','','Modules','admin',2,'','','$leftmenu==\"admintools\"',2,'2015-10-03 08:46:16'),(108730,'auguria',1,'','left','home',108728,NULL,NULL,3,'/admin/triggers.php?leftmenu=admintools','','Triggers','admin',2,'','','$leftmenu==\"admintools\"',2,'2015-10-03 08:46:16'),(108732,'auguria',1,'','left','home',108827,NULL,NULL,1,'/admin/system/browser.php?leftmenu=admintools','','InfoBrowser','admin',1,'','','$leftmenu==\"admintools\"',2,'2015-10-03 08:46:16'),(108733,'auguria',1,'','left','home',108827,NULL,NULL,2,'/admin/system/os.php?leftmenu=admintools','','InfoOS','admin',1,'','','$leftmenu==\"admintools\"',2,'2015-10-03 08:46:16'),(108734,'auguria',1,'','left','home',108827,NULL,NULL,3,'/admin/system/web.php?leftmenu=admintools','','InfoWebServer','admin',1,'','','$leftmenu==\"admintools\"',2,'2015-10-03 08:46:16'),(108735,'auguria',1,'','left','home',108827,NULL,NULL,4,'/admin/system/phpinfo.php?leftmenu=admintools','','InfoPHP','admin',1,'','','$leftmenu==\"admintools\"',2,'2015-10-03 08:46:16'),(108737,'auguria',1,'','left','home',108827,NULL,NULL,5,'/admin/system/database.php?leftmenu=admintools','','InfoDatabase','admin',1,'','','$leftmenu==\"admintools\"',2,'2015-10-03 08:46:16'),(108827,'auguria',1,'','left','home',108528,NULL,NULL,2,'/admin/tools/index.php?leftmenu=admintools','','SystemTools','admin',0,'admintools','','$user->admin',2,'2015-10-03 08:46:16'),(108828,'auguria',1,'','left','home',108827,NULL,NULL,6,'/admin/tools/dolibarr_export.php?leftmenu=admintools','','Backup','admin',1,'','','$leftmenu==\"admintools\"',2,'2015-10-03 08:46:16'),(108829,'auguria',1,'','left','home',108827,NULL,NULL,7,'/admin/tools/dolibarr_import.php?leftmenu=admintools','','Restore','admin',1,'','','$leftmenu==\"admintools\"',2,'2015-10-03 08:46:16'),(108832,'auguria',1,'','left','home',108827,NULL,NULL,8,'/admin/tools/update.php?leftmenu=admintools','','MenuUpgrade','admin',1,'','','$leftmenu==\"admintools\"',2,'2015-10-03 08:46:16'),(108833,'auguria',1,'','left','home',108827,NULL,NULL,9,'/admin/tools/eaccelerator.php?leftmenu=admintools','','EAccelerator','admin',1,'','','$leftmenu==\"admintools\" && function_exists(\"eaccelerator_info\")',2,'2015-10-03 08:46:16'),(108834,'auguria',1,'','left','home',108827,NULL,NULL,10,'/admin/tools/listevents.php?leftmenu=admintools','','Audit','admin',1,'','','$leftmenu==\"admintools\"',2,'2015-10-03 08:46:16'),(108835,'auguria',1,'','left','home',108827,NULL,NULL,11,'/admin/tools/listsessions.php?leftmenu=admintools','','Sessions','admin',1,'','','$leftmenu==\"admintools\"',2,'2015-10-03 08:46:16'),(108836,'auguria',1,'','left','home',108827,NULL,NULL,12,'/admin/tools/purge.php?leftmenu=admintools','','Purge','admin',1,'','','$leftmenu==\"admintools\"',2,'2015-10-03 08:46:16'),(108837,'auguria',1,'','left','home',108827,NULL,NULL,13,'/support/index.php?leftmenu=admintools','_blank','HelpCenter','help',1,'','','$leftmenu==\"admintools\"',2,'2015-10-03 08:46:16'),(108838,'auguria',1,'','left','home',108827,NULL,NULL,14,'/admin/system/about.php?leftmenu=admintools','','About','admin',1,'','','$leftmenu==\"admintools\"',2,'2015-10-03 08:46:16'),(108927,'auguria',1,'','left','home',108528,NULL,NULL,4,'/user/home.php?leftmenu=users','','MenuUsersAndGroups','users',0,'users','','1',2,'2015-10-03 08:46:16'),(108928,'auguria',1,'','left','home',108927,NULL,NULL,0,'/user/index.php?leftmenu=users','','Users','users',1,'','$user->rights->user->user->lire || $user->admin','$leftmenu==\"users\"',2,'2015-10-03 08:46:16'),(108929,'auguria',1,'','left','home',108928,NULL,NULL,0,'/user/card.php?leftmenu=users&action=create','','NewUser','users',2,'','$user->rights->user->user->creer || $user->admin','$leftmenu==\"users\"',2,'2015-10-03 08:46:16'),(108930,'auguria',1,'','left','home',108927,NULL,NULL,1,'/user/group/index.php?leftmenu=users','','Groups','users',1,'','($conf->global->MAIN_USE_ADVANCED_PERMS?$user->rights->user->group_advance->read:$user->rights->user->user->lire) || $user->admin','$leftmenu==\"users\"',2,'2015-10-03 08:46:16'),(108931,'auguria',1,'','left','home',108930,NULL,NULL,0,'/user/group/card.php?leftmenu=users&action=create','','NewGroup','users',2,'','($conf->global->MAIN_USE_ADVANCED_PERMS?$user->rights->user->group_advance->write:$user->rights->user->user->creer) || $user->admin','$leftmenu==\"users\"',2,'2015-10-03 08:46:16'),(109027,'auguria',1,'','left','companies',108529,NULL,NULL,0,'/societe/index.php?leftmenu=thirdparties','','ThirdParty','companies',0,'thirdparties','$user->rights->societe->lire','$conf->societe->enabled',2,'2015-10-03 08:46:16'),(109028,'auguria',1,'','left','companies',109027,NULL,NULL,0,'/societe/soc.php?action=create','','MenuNewThirdParty','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2015-10-03 08:46:16'),(109030,'auguria',1,'','left','companies',109027,NULL,NULL,5,'/fourn/list.php?leftmenu=suppliers','','ListSuppliersShort','suppliers',1,'','$user->rights->societe->lire && $user->rights->fournisseur->lire','$conf->societe->enabled && $conf->fournisseur->enabled',2,'2015-10-03 08:46:16'),(109031,'auguria',1,'','left','companies',109030,NULL,NULL,0,'/societe/soc.php?leftmenu=supplier&action=create&type=f','','NewSupplier','suppliers',2,'','$user->rights->societe->creer','$conf->societe->enabled && $conf->fournisseur->enabled',2,'2015-10-03 08:46:16'),(109033,'auguria',1,'','left','companies',109027,NULL,NULL,3,'/comm/prospect/list.php?leftmenu=prospects','','ListProspectsShort','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2015-10-03 08:46:16'),(109034,'auguria',1,'','left','companies',109033,NULL,NULL,0,'/societe/soc.php?leftmenu=prospects&action=create&type=p','','MenuNewProspect','companies',2,'','$user->rights->societe->creer','$conf->societe->enabled',2,'2015-10-03 08:46:16'),(109036,'auguria',1,'','left','companies',109027,NULL,NULL,4,'/comm/list.php?leftmenu=customers','','ListCustomersShort','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2015-10-03 08:46:16'),(109037,'auguria',1,'','left','companies',109036,NULL,NULL,0,'/societe/soc.php?leftmenu=customers&action=create&type=c','','MenuNewCustomer','companies',2,'','$user->rights->societe->creer','$conf->societe->enabled',2,'2015-10-03 08:46:16'),(109127,'auguria',1,'','left','companies',108529,NULL,NULL,1,'/contact/list.php?leftmenu=contacts','','ContactsAddresses','companies',0,'contacts','$user->rights->societe->lire','$conf->societe->enabled',2,'2015-10-03 08:46:16'),(109128,'auguria',1,'','left','companies',109127,NULL,NULL,0,'/contact/card.php?leftmenu=contacts&action=create','','NewContactAddress','companies',1,'','$user->rights->societe->creer','$conf->societe->enabled',2,'2015-10-03 08:46:16'),(109129,'auguria',1,'','left','companies',109127,NULL,NULL,1,'/contact/list.php?leftmenu=contacts','','List','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2015-10-03 08:46:16'),(109131,'auguria',1,'','left','companies',109129,NULL,NULL,1,'/contact/list.php?leftmenu=contacts&type=p','','ThirdPartyProspects','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled',2,'2015-10-03 08:46:16'),(109132,'auguria',1,'','left','companies',109129,NULL,NULL,2,'/contact/list.php?leftmenu=contacts&type=c','','ThirdPartyCustomers','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled',2,'2015-10-03 08:46:16'),(109133,'auguria',1,'','left','companies',109129,NULL,NULL,3,'/contact/list.php?leftmenu=contacts&type=f','','ThirdPartySuppliers','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled && $conf->fournisseur->enabled',2,'2015-10-03 08:46:16'),(109134,'auguria',1,'','left','companies',109129,NULL,NULL,4,'/contact/list.php?leftmenu=contacts&type=o','','Others','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled',2,'2015-10-03 08:46:16'),(109177,'auguria',1,'','left','companies',108529,NULL,NULL,3,'/categories/index.php?leftmenu=cat&type=1','','SuppliersCategoriesShort','categories',0,'cat','$user->rights->categorie->lire','$conf->societe->enabled && $conf->categorie->enabled',2,'2015-10-03 08:46:16'),(109178,'auguria',1,'','left','companies',109177,NULL,NULL,0,'/categories/card.php?action=create&type=1','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->societe->enabled && $conf->categorie->enabled',2,'2015-10-03 08:46:16'),(109187,'auguria',1,'','left','companies',108529,NULL,NULL,4,'/categories/index.php?leftmenu=cat&type=2','','CustomersProspectsCategoriesShort','categories',0,'cat','$user->rights->categorie->lire','$conf->fournisseur->enabled && $conf->categorie->enabled',2,'2015-10-03 08:46:16'),(109188,'auguria',1,'','left','companies',109187,NULL,NULL,0,'/categories/card.php?action=create&type=2','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->fournisseur->enabled && $conf->categorie->enabled',2,'2015-10-03 08:46:16'),(109197,'auguria',1,'','left','companies',108529,NULL,NULL,3,'/categories/index.php?leftmenu=cat&type=4','','ContactCategoriesShort','categories',0,'cat','$user->rights->categorie->lire','$conf->societe->enabled && $conf->categorie->enabled',2,'2015-10-03 08:46:16'),(109198,'auguria',1,'','left','companies',109197,NULL,NULL,0,'/categories/card.php?action=create&type=4','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->societe->enabled && $conf->categorie->enabled',2,'2015-10-03 08:46:16'),(109627,'auguria',1,'','left','commercial',108532,NULL,NULL,4,'/comm/propal/index.php?leftmenu=propals','','Prop','propal',0,'propals','$user->rights->propale->lire','$conf->propal->enabled',2,'2015-10-03 08:46:16'),(109628,'auguria',1,'','left','commercial',109627,NULL,NULL,0,'/comm/propal.php?action=create&leftmenu=propals','','NewPropal','propal',1,'','$user->rights->propale->creer','$conf->propal->enabled',2,'2015-10-03 08:46:16'),(109629,'auguria',1,'','left','commercial',109627,NULL,NULL,1,'/comm/propal/list.php?leftmenu=propals','','List','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled',2,'2015-10-03 08:46:16'),(109630,'auguria',1,'','left','commercial',109629,NULL,NULL,2,'/comm/propal/list.php?leftmenu=propals&viewstatut=0','','PropalsDraft','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2015-10-03 08:46:16'),(109631,'auguria',1,'','left','commercial',109629,NULL,NULL,3,'/comm/propal/list.php?leftmenu=propals&viewstatut=1','','PropalsOpened','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2015-10-03 08:46:16'),(109632,'auguria',1,'','left','commercial',109629,NULL,NULL,4,'/comm/propal/list.php?leftmenu=propals&viewstatut=2','','PropalStatusSigned','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2015-10-03 08:46:16'),(109633,'auguria',1,'','left','commercial',109629,NULL,NULL,5,'/comm/propal/list.php?leftmenu=propals&viewstatut=3','','PropalStatusNotSigned','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2015-10-03 08:46:16'),(109634,'auguria',1,'','left','commercial',109629,NULL,NULL,6,'/comm/propal/list.php?leftmenu=propals&viewstatut=4','','PropalStatusBilled','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2015-10-03 08:46:16'),(109637,'auguria',1,'','left','commercial',109627,NULL,NULL,4,'/comm/propal/stats/index.php?leftmenu=propals','','Statistics','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled',2,'2015-10-03 08:46:16'),(109727,'auguria',1,'','left','commercial',108532,NULL,NULL,5,'/commande/index.php?leftmenu=orders','','CustomersOrders','orders',0,'orders','$user->rights->commande->lire','$conf->commande->enabled',2,'2015-10-03 08:46:16'),(109728,'auguria',1,'','left','commercial',109727,NULL,NULL,0,'/commande/card.php?action=create&leftmenu=orders','','NewOrder','orders',1,'','$user->rights->commande->creer','$conf->commande->enabled',2,'2015-10-03 08:46:16'),(109729,'auguria',1,'','left','commercial',109727,NULL,NULL,1,'/commande/list.php?leftmenu=orders','','List','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled',2,'2015-10-03 08:46:16'),(109730,'auguria',1,'','left','commercial',109729,NULL,NULL,2,'/commande/list.php?leftmenu=orders&viewstatut=0','','StatusOrderDraftShort','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2015-10-03 08:46:16'),(109731,'auguria',1,'','left','commercial',109729,NULL,NULL,3,'/commande/list.php?leftmenu=orders&viewstatut=1','','StatusOrderValidated','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2015-10-03 08:46:16'),(109732,'auguria',1,'','left','commercial',109729,NULL,NULL,4,'/commande/list.php?leftmenu=orders&viewstatut=2','','StatusOrderOnProcessShort','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2015-10-03 08:46:16'),(109733,'auguria',1,'','left','commercial',109729,NULL,NULL,5,'/commande/list.php?leftmenu=orders&viewstatut=3','','StatusOrderToBill','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2015-10-03 08:46:16'),(109734,'auguria',1,'','left','commercial',109729,NULL,NULL,6,'/commande/list.php?leftmenu=orders&viewstatut=4','','StatusOrderProcessed','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2015-10-03 08:46:16'),(109735,'auguria',1,'','left','commercial',109729,NULL,NULL,7,'/commande/list.php?leftmenu=orders&viewstatut=-1','','StatusOrderCanceledShort','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2015-10-03 08:46:16'),(109736,'auguria',1,'','left','commercial',109727,NULL,NULL,4,'/commande/stats/index.php?leftmenu=orders','','Statistics','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled',2,'2015-10-03 08:46:16'),(109827,'auguria',1,'','left','commercial',108530,NULL,NULL,6,'/expedition/index.php?leftmenu=sendings','','Shipments','sendings',0,'sendings','$user->rights->expedition->lire','$conf->expedition->enabled',2,'2015-10-03 08:46:16'),(109828,'auguria',1,'','left','commercial',109827,NULL,NULL,0,'/expedition/card.php?action=create2&leftmenu=sendings','','NewSending','sendings',1,'','$user->rights->expedition->creer','$conf->expedition->enabled && $leftmenu==\"sendings\"',2,'2015-10-03 08:46:16'),(109829,'auguria',1,'','left','commercial',109827,NULL,NULL,1,'/expedition/list.php?leftmenu=sendings','','List','sendings',1,'','$user->rights->expedition->lire','$conf->expedition->enabled && $leftmenu==\"sendings\"',2,'2015-10-03 08:46:16'),(109830,'auguria',1,'','left','commercial',109827,NULL,NULL,2,'/expedition/stats/index.php?leftmenu=sendings','','Statistics','sendings',1,'','$user->rights->expedition->lire','$conf->expedition->enabled && $leftmenu==\"sendings\"',2,'2015-10-03 08:46:16'),(109927,'auguria',1,'','left','commercial',108532,NULL,NULL,7,'/contrat/index.php?leftmenu=contracts','','Contracts','contracts',0,'contracts','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2015-10-03 08:46:16'),(109928,'auguria',1,'','left','commercial',109927,NULL,NULL,0,'/contrat/card.php?&action=create&leftmenu=contracts','','NewContract','contracts',1,'','$user->rights->contrat->creer','$conf->contrat->enabled',2,'2015-10-03 08:46:16'),(109929,'auguria',1,'','left','commercial',109927,NULL,NULL,1,'/contrat/list.php?leftmenu=contracts','','List','contracts',1,'','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2015-10-03 08:46:16'),(109930,'auguria',1,'','left','commercial',109927,NULL,NULL,2,'/contrat/services.php?leftmenu=contracts','','MenuServices','contracts',1,'','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2015-10-03 08:46:16'),(109931,'auguria',1,'','left','commercial',109930,NULL,NULL,0,'/contrat/services.php?leftmenu=contracts&mode=0','','MenuInactiveServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2015-10-03 08:46:16'),(109932,'auguria',1,'','left','commercial',109930,NULL,NULL,1,'/contrat/services.php?leftmenu=contracts&mode=4','','MenuRunningServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2015-10-03 08:46:16'),(109933,'auguria',1,'','left','commercial',109930,NULL,NULL,2,'/contrat/services.php?leftmenu=contracts&mode=4&filter=expired','','MenuExpiredServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2015-10-03 08:46:16'),(109934,'auguria',1,'','left','commercial',109930,NULL,NULL,3,'/contrat/services.php?leftmenu=contracts&mode=5','','MenuClosedServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2015-10-03 08:46:16'),(110027,'auguria',1,'','left','commercial',108532,NULL,NULL,8,'/fichinter/list.php?leftmenu=ficheinter','','Interventions','interventions',0,'ficheinter','$user->rights->ficheinter->lire','$conf->ficheinter->enabled',2,'2015-10-03 08:46:16'),(110028,'auguria',1,'','left','commercial',110027,NULL,NULL,0,'/fichinter/card.php?action=create&leftmenu=ficheinter','','NewIntervention','interventions',1,'','$user->rights->ficheinter->creer','$conf->ficheinter->enabled',2,'2015-10-03 08:46:16'),(110029,'auguria',1,'','left','commercial',110027,NULL,NULL,1,'/fichinter/list.php?leftmenu=ficheinter','','List','interventions',1,'','$user->rights->ficheinter->lire','$conf->ficheinter->enabled',2,'2015-10-03 08:46:16'),(110127,'auguria',1,'','left','accountancy',108533,NULL,NULL,3,'/fourn/facture/list.php?leftmenu=suppliers_bills','','BillsSuppliers','bills',0,'supplier_bills','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled',2,'2015-10-03 08:46:16'),(110128,'auguria',1,'','left','accountancy',110127,NULL,NULL,0,'/fourn/facture/card.php?action=create&leftmenu=suppliers_bills','','NewBill','bills',1,'','$user->rights->fournisseur->facture->creer','$conf->fournisseur->enabled',2,'2015-10-03 08:46:16'),(110129,'auguria',1,'','left','accountancy',110127,NULL,NULL,1,'/fourn/facture/impayees.php?leftmenu=suppliers_bills','','Unpaid','bills',1,'','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled',2,'2015-10-03 08:46:16'),(110130,'auguria',1,'','left','accountancy',110127,NULL,NULL,2,'/fourn/facture/paiement.php?leftmenu=suppliers_bills','','Payments','bills',1,'','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled',2,'2015-10-03 08:46:16'),(110131,'auguria',1,'','left','accountancy',110127,NULL,NULL,8,'/compta/facture/stats/index.php?leftmenu=customers_bills&mode=supplier','','Statistics','bills',1,'','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled',2,'2015-10-03 08:46:16'),(110227,'auguria',1,'','left','accountancy',108533,NULL,NULL,3,'/compta/facture/list.php?leftmenu=customers_bills','','BillsCustomers','bills',0,'customer_bills','$user->rights->facture->lire','$conf->facture->enabled',2,'2015-10-03 08:46:16'),(110228,'auguria',1,'','left','accountancy',110227,NULL,NULL,3,'/compta/facture.php?action=create&leftmenu=customers_bills','','NewBill','bills',1,'','$user->rights->facture->creer','$conf->facture->enabled',2,'2015-10-03 08:46:16'),(110229,'auguria',1,'','left','accountancy',110227,NULL,NULL,5,'/compta/facture/fiche-rec.php?leftmenu=customers_bills','','ListOfTemplates','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2015-10-03 08:46:16'),(110230,'auguria',1,'','left','accountancy',110227,NULL,NULL,7,'/compta/facture/mergepdftool.php?action=facturer&leftmenu=customers_bills','','MergingPDFTool','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2015-10-03 08:46:16'),(110231,'auguria',1,'','left','accountancy',110227,NULL,NULL,6,'/compta/paiement/list.php?leftmenu=customers_bills','','Payments','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2015-10-03 08:46:16'),(110232,'auguria',1,'','left','accountancy',110227,NULL,NULL,4,'/compta/facture/list.php?leftmenu=customers_bills','','List','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2015-10-03 08:46:16'),(110237,'auguria',1,'','left','accountancy',110231,NULL,NULL,1,'/compta/paiement/rapport.php?leftmenu=customers_bills','','Reportings','bills',2,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2015-10-03 08:46:16'),(110238,'auguria',1,'','left','accountancy',108541,NULL,NULL,9,'/compta/paiement/cheque/index.php?leftmenu=checks&mainmenu=bank','','MenuChequeDeposits','bills',0,'checks','$user->rights->banque->lire','! empty($conf->banque->enabled) && (! empty($conf->facture->enabled)) || ! empty($conf->global->MAIN_MENU_CHEQUE_DEPOSIT_ON)',2,'2015-10-03 08:46:16'),(110239,'auguria',1,'','left','accountancy',110238,NULL,NULL,0,'/compta/paiement/cheque/card.php?leftmenu=checks&action=new','','NewCheckDeposit','compta',1,'','$user->rights->banque->lire','! empty($conf->banque->enabled) && (! empty($conf->facture->enabled)) || ! empty($conf->global->MAIN_MENU_CHEQUE_DEPOSIT_ON)',2,'2015-10-03 08:46:16'),(110240,'auguria',1,'','left','accountancy',110238,NULL,NULL,1,'/compta/paiement/cheque/list.php?leftmenu=checks','','List','bills',1,'','$user->rights->banque->lire','! empty($conf->banque->enabled) && (! empty($conf->facture->enabled)) || ! empty($conf->global->MAIN_MENU_CHEQUE_DEPOSIT_ON)',2,'2015-10-03 08:46:16'),(110241,'auguria',1,'','left','accountancy',110227,NULL,NULL,8,'/compta/facture/stats/index.php?leftmenu=customers_bills','','Statistics','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2015-10-03 08:46:16'),(110247,'auguria',1,'','left','accountancy',110232,NULL,NULL,1,'/compta/facture/list.php?leftmenu=customers_bills&search_status=0','','BillShortStatusDraft','bills',2,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2015-10-03 08:46:16'),(110248,'auguria',1,'','left','accountancy',110232,NULL,NULL,2,'/compta/facture/list.php?leftmenu=customers_bills&search_status=1','','BillShortStatusNotPaid','bills',2,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2015-10-03 08:46:16'),(110249,'auguria',1,'','left','accountancy',110232,NULL,NULL,3,'/compta/facture/list.php?leftmenu=customers_bills&search_status=2','','BillShortStatusPaid','bills',2,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2015-10-03 08:46:16'),(110250,'auguria',1,'','left','accountancy',110232,NULL,NULL,4,'/compta/facture/list.php?leftmenu=customers_bills&search_status=3','','BillShortStatusCanceled','bills',2,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2015-10-03 08:46:16'),(110427,'auguria',1,'','left','accountancy',108533,NULL,NULL,3,'/commande/list.php?leftmenu=orders&viewstatut=3','','MenuOrdersToBill','orders',0,'orders','$user->rights->commande->lire','$conf->commande->enabled',0,'2015-10-03 08:46:16'),(110527,'auguria',1,'','left','accountancy',108533,NULL,NULL,4,'/don/index.php?leftmenu=donations&mainmenu=accountancy','','Donations','donations',0,'donations','$user->rights->don->lire','$conf->don->enabled',2,'2015-10-03 08:46:16'),(110528,'auguria',1,'','left','accountancy',110527,NULL,NULL,0,'/don/card.php?leftmenu=donations&mainmenu=accountancy&action=create','','NewDonation','donations',1,'','$user->rights->don->creer','$conf->don->enabled && $leftmenu==\"donations\"',2,'2015-10-03 08:46:16'),(110529,'auguria',1,'','left','accountancy',110527,NULL,NULL,1,'/don/list.php?leftmenu=donations&mainmenu=accountancy','','List','donations',1,'','$user->rights->don->lire','$conf->don->enabled && $leftmenu==\"donations\"',2,'2015-10-03 08:46:16'),(110627,'auguria',1,'','left','accountancy',108542,NULL,NULL,5,'/compta/deplacement/index.php?leftmenu=tripsandexpenses','','TripsAndExpenses','trips',0,'tripsandexpenses','$user->rights->deplacement->lire','$conf->deplacement->enabled',0,'2015-10-03 08:46:17'),(110628,'auguria',1,'','left','accountancy',110627,NULL,NULL,1,'/compta/deplacement/card.php?action=create&leftmenu=tripsandexpenses','','New','trips',1,'','$user->rights->deplacement->creer','$conf->deplacement->enabled',0,'2015-10-03 08:46:17'),(110629,'auguria',1,'','left','accountancy',110627,NULL,NULL,2,'/compta/deplacement/list.php?leftmenu=tripsandexpenses','','List','trips',1,'','$user->rights->deplacement->lire','$conf->deplacement->enabled',0,'2015-10-03 08:46:17'),(110630,'auguria',1,'','left','accountancy',110627,NULL,NULL,2,'/compta/deplacement/stats/index.php?leftmenu=tripsandexpenses','','Statistics','trips',1,'','$user->rights->deplacement->lire','$conf->deplacement->enabled',0,'2015-10-03 08:46:17'),(110727,'auguria',1,'','left','accountancy',108533,NULL,NULL,6,'/compta/charges/index.php?leftmenu=tax&mainmenu=accountancy','','MenuSpecialExpenses','compta',0,'tax','(! empty($conf->tax->enabled) && $user->rights->tax->charges->lire) || (! empty($conf->salaries->enabled) && $user->rights->salaries->read)','$conf->tax->enabled || $conf->salaries->enabled',0,'2015-10-03 08:46:16'),(110737,'auguria',1,'','left','accountancy',110727,NULL,NULL,1,'/compta/salaries/index.php?leftmenu=tax_salary&mainmenu=accountancy','','Salaries','salaries',1,'tax_sal','$user->rights->salaries->read','$conf->salaries->enabled',0,'2015-10-03 08:46:16'),(110738,'auguria',1,'','left','accountancy',110737,NULL,NULL,2,'/compta/salaries/card.php?leftmenu=tax_salary&action=create','','NewPayment','companies',2,'','$user->rights->salaries->write','$conf->salaries->enabled && $leftmenu==\"tax_salary\"',0,'2015-10-03 08:46:16'),(110739,'auguria',1,'','left','accountancy',110737,NULL,NULL,3,'/compta/salaries/index.php?leftmenu=tax_salary','','Payments','companies',2,'','$user->rights->salaries->read','$conf->salaries->enabled && $leftmenu==\"tax_salary\"',0,'2015-10-03 08:46:16'),(110747,'auguria',1,'','left','accountancy',110727,NULL,NULL,1,'/loan/index.php?leftmenu=tax_loan&mainmenu=accountancy','','Loans','loan',1,'tax_loan','$user->rights->loan->read','$conf->loan->enabled',0,'2015-10-03 08:46:16'),(110748,'auguria',1,'','left','accountancy',110747,NULL,NULL,2,'/loan/card.php?leftmenu=tax_loan&action=create','','NewLoan','loan',2,'','$user->rights->loan->write','$conf->loan->enabled && $leftmenu==\"tax_loan\"',0,'2015-10-03 08:46:16'),(110749,'auguria',1,'','left','accountancy',110747,NULL,NULL,3,'/loan/index.php?leftmenu=tax_loan','','Payments','companies',2,'','$user->rights->loan->read','$conf->loan->enabled && $leftmenu==\"tax_loan\"',0,'2015-10-03 08:46:16'),(110750,'auguria',1,'','left','accountancy',110747,NULL,NULL,4,'/loan/calc.php?leftmenu=tax_loan','','Calculator','companies',2,'','$user->rights->loan->calc','$conf->loan->enabled && $leftmenu==\"tax_loan\"',0,'2015-10-03 08:46:16'),(110777,'auguria',1,'','left','accountancy',110727,NULL,NULL,1,'/compta/sociales/index.php?leftmenu=tax_social','','SocialContributions','',1,'tax_social','$user->rights->tax->charges->lire','$conf->tax->enabled',0,'2015-10-03 08:46:16'),(110778,'auguria',1,'','left','accountancy',110777,NULL,NULL,2,'/compta/sociales/charges.php?leftmenu=tax_social&action=create','','MenuNewSocialContribution','',2,'','$user->rights->tax->charges->creer','$conf->tax->enabled && $leftmenu==\"tax_social\"',0,'2015-10-03 08:46:16'),(110779,'auguria',1,'','left','accountancy',110777,NULL,NULL,3,'/compta/charges/index.php?leftmenu=tax_social&mainmenu=accountancy&mode=sconly','','Payments','',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && $leftmenu==\"tax_social\"',0,'2015-10-03 08:46:16'),(110827,'auguria',1,'','left','accountancy',110727,NULL,NULL,7,'/compta/tva/index.php?leftmenu=tax_vat&mainmenu=accountancy','','VAT','companies',1,'tax_vat','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS)',0,'2015-10-03 08:46:16'),(110828,'auguria',1,'','left','accountancy',110827,NULL,NULL,0,'/compta/tva/card.php?leftmenu=tax_vat&action=create','','NewPayment','companies',2,'','$user->rights->tax->charges->creer','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2015-10-03 08:46:16'),(110829,'auguria',1,'','left','accountancy',110827,NULL,NULL,1,'/compta/tva/reglement.php?leftmenu=tax_vat','','Payments','companies',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2015-10-03 08:46:16'),(110830,'auguria',1,'','left','accountancy',110827,NULL,NULL,2,'/compta/tva/clients.php?leftmenu=tax_vat','','ReportByCustomers','companies',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2015-10-03 08:46:16'),(110831,'auguria',1,'','left','accountancy',110827,NULL,NULL,3,'/compta/tva/quadri_detail.php?leftmenu=tax_vat','','ReportByQuarter','companies',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2015-10-03 08:46:16'),(110927,'auguria',1,'','left','accountancy',108533,NULL,NULL,8,'/accountancy/customer/index.php?leftmenu=ventil_customer','','CustomersVentilation','accountancy',0,'ventil_customer','$user->rights->accounting->ventilation->read','$conf->accounting->enabled',0,'2015-10-03 08:46:16'),(110928,'auguria',1,'','left','accountancy',110927,NULL,NULL,0,'/accountancy/customer/list.php','','ToDispatch','accountancy',1,'','$user->rights->accounting->ventilation->dispatch','$conf->accounting->enabled && $leftmenu==\"ventil_customer\"',0,'2015-10-03 08:46:16'),(110929,'auguria',1,'','left','accountancy',110927,NULL,NULL,1,'/accountancy/customer/lines.php','','Dispatched','accountancy',1,'','$user->rights->accounting->ventilation->read','$conf->accounting->enabled && $leftmenu==\"ventil_customer\"',0,'2015-10-03 08:46:16'),(110937,'auguria',1,'','left','accountancy',108533,NULL,NULL,9,'/accountancy/supplier/index.php?leftmenu=ventil_supplier','','SuppliersVentilation','accountancy',0,'ventil_supplier','$user->rights->accounting->ventilation->read','$conf->accounting->enabled && $conf->fournisseur->enabled',0,'2015-10-03 08:46:16'),(110938,'auguria',1,'','left','accountancy',110937,NULL,NULL,0,'/accountancy/supplier/list.php','','ToDispatch','accountancy',1,'','$user->rights->accounting->ventilation->dispatch','$conf->accounting->enabled && $conf->fournisseur->enabled && $leftmenu==\"ventil_supplier\"',0,'2015-10-03 08:46:16'),(110939,'auguria',1,'','left','accountancy',110937,NULL,NULL,1,'/accountancy/supplier/lines.php','','Dispatched','accountancy',1,'','$user->rights->accounting->ventilation->read','$conf->accounting->enabled && $conf->fournisseur->enabled && $leftmenu==\"ventil_supplier\"',0,'2015-10-03 08:46:16'),(111027,'auguria',1,'','left','accountancy',108541,NULL,NULL,9,'/compta/prelevement/index.php?leftmenu=withdraw&mainmenu=bank','','StandingOrders','withdrawals',0,'withdraw','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled',2,'2015-10-03 08:46:16'),(111029,'auguria',1,'','left','accountancy',111027,NULL,NULL,0,'/compta/prelevement/create.php?leftmenu=withdraw','','NewStandingOrder','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2015-10-03 08:46:16'),(111030,'auguria',1,'','left','accountancy',111027,NULL,NULL,2,'/compta/prelevement/bons.php?leftmenu=withdraw','','WithdrawalsReceipts','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2015-10-03 08:46:16'),(111031,'auguria',1,'','left','accountancy',111027,NULL,NULL,3,'/compta/prelevement/list.php?leftmenu=withdraw','','WithdrawalsLines','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2015-10-03 08:46:16'),(111033,'auguria',1,'','left','accountancy',111027,NULL,NULL,5,'/compta/prelevement/rejets.php?leftmenu=withdraw','','Rejects','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2015-10-03 08:46:16'),(111034,'auguria',1,'','left','accountancy',111027,NULL,NULL,6,'/compta/prelevement/stats.php?leftmenu=withdraw','','Statistics','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2015-10-03 08:46:16'),(111127,'auguria',1,'','left','accountancy',108541,NULL,NULL,1,'/compta/bank/index.php?leftmenu=bank&mainmenu=bank','','MenuBankCash','banks',0,'bank','$user->rights->banque->lire','$conf->banque->enabled',0,'2015-10-03 08:46:16'),(111128,'auguria',1,'','left','accountancy',111127,NULL,NULL,0,'/compta/bank/card.php?action=create&leftmenu=bank','','MenuNewFinancialAccount','banks',1,'','$user->rights->banque->configurer','$conf->banque->enabled && ($leftmenu==\"bank\" || $leftmenu==\"checks\" || $leftmenu==\"withdraw\")',0,'2015-10-03 08:46:16'),(111129,'auguria',1,'','left','accountancy',111127,NULL,NULL,1,'/compta/bank/categ.php?leftmenu=bank','','Rubriques','categories',1,'','$user->rights->banque->configurer','$conf->banque->enabled && ($leftmenu==\"bank\" || $leftmenu==\"checks\" || $leftmenu==\"withdraw\")',0,'2015-10-03 08:46:16'),(111130,'auguria',1,'','left','accountancy',111127,NULL,NULL,2,'/compta/bank/search.php?leftmenu=bank','','ListTransactions','banks',1,'','$user->rights->banque->lire','$conf->banque->enabled && ($leftmenu==\"bank\" || $leftmenu==\"checks\" || $leftmenu==\"withdraw\")',0,'2015-10-03 08:46:16'),(111131,'auguria',1,'','left','accountancy',111127,NULL,NULL,3,'/compta/bank/budget.php?leftmenu=bank','','ListTransactionsByCategory','banks',1,'','$user->rights->banque->lire','$conf->banque->enabled && ($leftmenu==\"bank\" || $leftmenu==\"checks\" || $leftmenu==\"withdraw\")',0,'2015-10-03 08:46:16'),(111133,'auguria',1,'','left','accountancy',111127,NULL,NULL,5,'/compta/bank/virement.php?leftmenu=bank','','BankTransfers','banks',1,'','$user->rights->banque->transfer','$conf->banque->enabled && ($leftmenu==\"bank\" || $leftmenu==\"checks\" || $leftmenu==\"withdraw\")',0,'2015-10-03 08:46:16'),(111227,'auguria',1,'','left','accountancy',108533,NULL,NULL,11,'/compta/resultat/index.php?leftmenu=ca&mainmenu=accountancy','','Reportings','main',0,'ca','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2015-10-03 08:46:16'),(111228,'auguria',1,'','left','accountancy',111227,NULL,NULL,0,'/compta/resultat/index.php?leftmenu=ca','','ReportInOut','main',1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled && $leftmenu==\"ca\"',0,'2015-10-03 08:46:16'),(111229,'auguria',1,'','left','accountancy',111228,NULL,NULL,0,'/compta/resultat/clientfourn.php?leftmenu=ca','','ByCompanies','main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled && $leftmenu==\"ca\"',0,'2015-10-03 08:46:16'),(111230,'auguria',1,'','left','accountancy',111227,NULL,NULL,1,'/compta/stats/index.php?leftmenu=ca','','ReportTurnover','main',1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled && $leftmenu==\"ca\"',0,'2015-10-03 08:46:16'),(111231,'auguria',1,'','left','accountancy',111230,NULL,NULL,0,'/compta/stats/casoc.php?leftmenu=ca','','ByCompanies','main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled && $leftmenu==\"ca\"',0,'2015-10-03 08:46:16'),(111232,'auguria',1,'','left','accountancy',111230,NULL,NULL,1,'/compta/stats/cabyuser.php?leftmenu=ca','','ByUsers','main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled && $leftmenu==\"ca\"',0,'2015-10-03 08:46:16'),(111233,'auguria',1,'','left','accountancy',111227,NULL,NULL,1,'/compta/journal/sellsjournal.php?leftmenu=ca','','SellsJournal','main',1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled && $leftmenu==\"ca\"',0,'2015-10-03 08:46:16'),(111234,'auguria',1,'','left','accountancy',111227,NULL,NULL,1,'/compta/journal/purchasesjournal.php?leftmenu=ca','','PurchasesJournal','main',1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled && $leftmenu==\"ca\"',0,'2015-10-03 08:46:16'),(111235,'auguria',1,'','left','accountancy',111230,NULL,NULL,1,'/compta/stats/cabyprodserv.php?leftmenu=ca','','ByProductsAndServices','main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled && $leftmenu==\"ca\"',0,'2015-10-03 08:46:16'),(111247,'auguria',1,'','left','accountancy',108533,NULL,NULL,12,'/accountancy/bookkeeping/list.php?leftmenu=bookkeeping','','Bookkeeping','accountancy',0,'bookkeeping','$user->rights->accounting->mouvements->lire','$conf->accounting->enabled',0,'2015-10-03 08:46:16'),(111248,'auguria',1,'','left','accountancy',111247,NULL,NULL,0,'/accountancy/bookkeeping/listbyyear.php','','ByYear','accountancy',1,'','$user->rights->accounting->mouvements->lire','$conf->accounting->enabled && $leftmenu==\"bookkeeping\"',0,'2015-10-03 08:46:16'),(111249,'auguria',1,'','left','accountancy',111247,NULL,NULL,1,'/accountancy/bookkeeping/balancebymonth.php','','AccountBalanceByMonth','accountancy',1,'','$user->rights->accounting->mouvements->lire','$conf->accounting->enabled && $leftmenu==\"bookkeeping\"',0,'2015-10-03 08:46:16'),(111277,'auguria',1,'','left','home',108533,NULL,NULL,20,'/accountancy/admin/fiscalyear.php?leftmenu=setup','','Fiscalyear','accountancy',1,'','$user->rights->accounting->fiscalyear','$conf->accounting->enabled',2,'2015-10-03 08:46:16'),(111278,'auguria',1,'','left','home',108533,NULL,NULL,21,'/accountancy/admin/account.php?mainmenu=accountancy','','Chartofaccounts','accountancy',1,'','$user->rights->accounting->chartofaccount','$conf->accounting->enabled',2,'2015-10-03 08:46:16'),(111327,'auguria',1,'','left','products',108530,NULL,NULL,0,'/product/index.php?leftmenu=product&type=0','','Products','products',0,'product','$user->rights->produit->lire','$conf->product->enabled',2,'2015-10-03 08:46:16'),(111328,'auguria',1,'','left','products',111327,NULL,NULL,0,'/product/card.php?leftmenu=product&action=create&type=0','','NewProduct','products',1,'','$user->rights->produit->creer','$conf->product->enabled',2,'2015-10-03 08:46:16'),(111329,'auguria',1,'','left','products',111327,NULL,NULL,1,'/product/list.php?leftmenu=product&type=0','','List','products',1,'','$user->rights->produit->lire','$conf->product->enabled',2,'2015-10-03 08:46:16'),(111330,'auguria',1,'','left','products',111327,NULL,NULL,4,'/product/reassort.php?type=0','','Stocks','products',1,'','$user->rights->produit->lire && $user->rights->stock->lire','$conf->product->enabled',2,'2015-10-03 08:46:16'),(111331,'auguria',1,'','left','products',111327,NULL,NULL,6,'/product/popuprop.php?leftmenu=stats&type=0','','Statistics','main',1,'','$user->rights->produit->lire','$conf->propal->enabled',2,'2015-10-03 08:46:16'),(111332,'auguria',1,'','left','products',111327,NULL,NULL,5,'/product/reassortlot.php?type=0','','StocksByLotSerial','products',1,'','$user->rights->produit->lire && $user->rights->stock->lire','$conf->productbatch->enabled',2,'2015-10-03 08:46:16'),(111427,'auguria',1,'','left','products',108530,NULL,NULL,1,'/product/index.php?leftmenu=service&type=1','','Services','products',0,'service','$user->rights->service->lire','$conf->service->enabled',2,'2015-10-03 08:46:16'),(111428,'auguria',1,'','left','products',111427,NULL,NULL,0,'/product/card.php?leftmenu=service&action=create&type=1','','NewService','products',1,'','$user->rights->service->creer','$conf->service->enabled',2,'2015-10-03 08:46:16'),(111429,'auguria',1,'','left','products',111427,NULL,NULL,1,'/product/list.php?leftmenu=service&type=1','','List','products',1,'','$user->rights->service->lire','$conf->service->enabled',2,'2015-10-03 08:46:16'),(111430,'auguria',1,'','left','products',111427,NULL,NULL,5,'/product/popuprop.php?leftmenu=stats&type=1','','Statistics','main',1,'','$user->rights->service->lire','$conf->propal->enabled',2,'2015-10-03 08:46:16'),(111627,'auguria',1,'','left','products',108530,NULL,NULL,3,'/product/stock/index.php?leftmenu=stock','','Stock','stocks',0,'stock','$user->rights->stock->lire','$conf->stock->enabled',2,'2015-10-03 08:46:16'),(111628,'auguria',1,'','left','products',111627,NULL,NULL,0,'/product/stock/card.php?action=create','','MenuNewWarehouse','stocks',1,'','$user->rights->stock->creer','$conf->stock->enabled',2,'2015-10-03 08:46:16'),(111629,'auguria',1,'','left','products',111627,NULL,NULL,1,'/product/stock/list.php','','List','stocks',1,'','$user->rights->stock->lire','$conf->stock->enabled',2,'2015-10-03 08:46:16'),(111631,'auguria',1,'','left','products',111627,NULL,NULL,3,'/product/stock/mouvement.php','','Movements','stocks',1,'','$user->rights->stock->mouvement->lire','$conf->stock->enabled',2,'2015-10-03 08:46:16'),(111632,'auguria',1,'','left','products',111627,NULL,NULL,4,'/product/stock/replenish.php','','Replenishments','stocks',1,'','$user->rights->stock->mouvement->creer && $user->rights->fournisseur->lire','$conf->stock->enabled && $conf->fournisseur->enabled',2,'2015-10-03 08:46:16'),(111633,'auguria',1,'','left','products',111627,NULL,NULL,5,'/product/stock/massstockmove.php','','StockTransfer','stocks',1,'','$user->rights->stock->mouvement->creer','$conf->stock->enabled',2,'2015-10-03 08:46:16'),(111727,'auguria',1,'','left','products',108530,NULL,NULL,4,'/categories/index.php?leftmenu=cat&type=0','','Categories','categories',0,'cat','$user->rights->categorie->lire','$conf->categorie->enabled',2,'2015-10-03 08:46:16'),(111728,'auguria',1,'','left','products',111727,NULL,NULL,0,'/categories/card.php?action=create&type=0','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->categorie->enabled',2,'2015-10-03 08:46:16'),(112127,'auguria',1,'','left','project',108534,NULL,NULL,0,'/projet/index.php?leftmenu=projects','','Projects','projects',0,'projects','$user->rights->projet->lire','$conf->projet->enabled',2,'2015-10-03 08:46:16'),(112128,'auguria',1,'','left','project',112127,NULL,NULL,1,'/projet/card.php?leftmenu=projects&action=create','','NewProject','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2015-10-03 08:46:16'),(112129,'auguria',1,'','left','project',112127,NULL,NULL,2,'/projet/list.php?leftmenu=projects','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2015-10-03 08:46:16'),(112137,'auguria',1,'','left','project',108534,NULL,NULL,0,'/projet/index.php?leftmenu=projects&mode=mine','','MyProjects','projects',0,'myprojects','$user->rights->projet->lire','$conf->projet->enabled',2,'2015-10-03 08:46:16'),(112138,'auguria',1,'','left','project',112137,NULL,NULL,1,'/projet/card.php?leftmenu=projects&action=create&mode=mine','','NewProject','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2015-10-03 08:46:16'),(112139,'auguria',1,'','left','project',112137,NULL,NULL,2,'/projet/list.php?leftmenu=projects&mode=mine','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2015-10-03 08:46:16'),(112227,'auguria',1,'','left','project',108534,NULL,NULL,0,'/projet/activity/index.php?leftmenu=projects','','Activities','projects',0,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2015-10-03 08:46:16'),(112228,'auguria',1,'','left','project',112227,NULL,NULL,1,'/projet/tasks.php?leftmenu=projects&action=create','','NewTask','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2015-10-03 08:46:16'),(112229,'auguria',1,'','left','project',112227,NULL,NULL,2,'/projet/tasks/index.php?leftmenu=projects','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2015-10-03 08:46:16'),(112230,'auguria',1,'','left','project',112227,NULL,NULL,3,'/projet/activity/perweek.php?leftmenu=projects','','NewTimeSpent','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2015-10-03 08:46:16'),(112327,'auguria',1,'','left','project',108534,NULL,NULL,0,'/projet/activity/index.php?leftmenu=projects&mode=mine','','MyActivities','projects',0,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2015-10-03 08:46:16'),(112328,'auguria',1,'','left','project',112327,NULL,NULL,1,'/projet/tasks.php?leftmenu=projects&action=create&mode=mine','','NewTask','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2015-10-03 08:46:16'),(112329,'auguria',1,'','left','project',112327,NULL,NULL,2,'/projet/tasks/index.php?leftmenu=projects&mode=mine','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2015-10-03 08:46:16'),(112330,'auguria',1,'','left','project',112327,NULL,NULL,3,'/projet/activity/perweek.php?leftmenu=projects&mode=mine','','NewTimeSpent','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2015-10-03 08:46:16'),(112427,'auguria',1,'','left','tools',108535,NULL,NULL,0,'/comm/mailing/index.php?leftmenu=mailing','','EMailings','mails',0,'mailing','$user->rights->mailing->lire','$conf->mailing->enabled',0,'2015-10-03 08:46:16'),(112428,'auguria',1,'','left','tools',112427,NULL,NULL,0,'/comm/mailing/card.php?leftmenu=mailing&action=create','','NewMailing','mails',1,'','$user->rights->mailing->creer','$conf->mailing->enabled',0,'2015-10-03 08:46:16'),(112429,'auguria',1,'','left','tools',112427,NULL,NULL,1,'/comm/mailing/list.php?leftmenu=mailing','','List','mails',1,'','$user->rights->mailing->lire','$conf->mailing->enabled',0,'2015-10-03 08:46:16'),(112627,'auguria',1,'','left','tools',108535,NULL,NULL,2,'/exports/index.php?leftmenu=export','','FormatedExport','exports',0,'export','$user->rights->export->lire','$conf->export->enabled',2,'2015-10-03 08:46:16'),(112628,'auguria',1,'','left','tools',112627,NULL,NULL,0,'/exports/export.php?leftmenu=export','','NewExport','exports',1,'','$user->rights->export->creer','$conf->export->enabled',2,'2015-10-03 08:46:16'),(112657,'auguria',1,'','left','tools',108535,NULL,NULL,2,'/imports/index.php?leftmenu=import','','FormatedImport','exports',0,'import','$user->rights->import->run','$conf->import->enabled',2,'2015-10-03 08:46:16'),(112658,'auguria',1,'','left','tools',112657,NULL,NULL,0,'/imports/import.php?leftmenu=import','','NewImport','exports',1,'','$user->rights->import->run','$conf->import->enabled',2,'2015-10-03 08:46:16'),(112727,'auguria',1,'','left','members',108540,NULL,NULL,0,'/adherents/index.php?leftmenu=members&mainmenu=members','','Members','members',0,'members','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2015-10-03 08:46:16'),(112728,'auguria',1,'','left','members',112727,NULL,NULL,0,'/adherents/card.php?leftmenu=members&action=create','','NewMember','members',1,'','$user->rights->adherent->creer','$conf->adherent->enabled',2,'2015-10-03 08:46:16'),(112729,'auguria',1,'','left','members',112727,NULL,NULL,1,'/adherents/list.php','','List','members',1,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2015-10-03 08:46:16'),(112730,'auguria',1,'','left','members',112729,NULL,NULL,2,'/adherents/list.php?leftmenu=members&statut=-1','','MenuMembersToValidate','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2015-10-03 08:46:16'),(112731,'auguria',1,'','left','members',112729,NULL,NULL,3,'/adherents/list.php?leftmenu=members&statut=1','','MenuMembersValidated','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2015-10-03 08:46:16'),(112732,'auguria',1,'','left','members',112729,NULL,NULL,4,'/adherents/list.php?leftmenu=members&statut=1&filter=outofdate','','MenuMembersNotUpToDate','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2015-10-03 08:46:16'),(112733,'auguria',1,'','left','members',112729,NULL,NULL,5,'/adherents/list.php?leftmenu=members&statut=1&filter=uptodate','','MenuMembersUpToDate','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2015-10-03 08:46:16'),(112734,'auguria',1,'','left','members',112729,NULL,NULL,6,'/adherents/list.php?leftmenu=members&statut=0','','MenuMembersResiliated','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2015-10-03 08:46:16'),(112735,'auguria',1,'','left','members',112727,NULL,NULL,7,'/adherents/stats/geo.php?leftmenu=members&mode=memberbycountry','','MenuMembersStats','members',1,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2015-10-03 08:46:17'),(112827,'auguria',1,'','left','members',108540,NULL,NULL,1,'/adherents/index.php?leftmenu=members&mainmenu=members','','Subscriptions','compta',0,'','$user->rights->adherent->cotisation->lire','$conf->adherent->enabled',2,'2015-10-03 08:46:17'),(112828,'auguria',1,'','left','members',112827,NULL,NULL,0,'/adherents/list.php?statut=-1&leftmenu=accountancy&mainmenu=members','','NewSubscription','compta',1,'','$user->rights->adherent->cotisation->creer','$conf->adherent->enabled',2,'2015-10-03 08:46:17'),(112829,'auguria',1,'','left','members',112827,NULL,NULL,1,'/adherents/cotisations.php?leftmenu=members','','List','compta',1,'','$user->rights->adherent->cotisation->lire','$conf->adherent->enabled',2,'2015-10-03 08:46:17'),(112830,'auguria',1,'','left','members',112827,NULL,NULL,7,'/adherents/stats/index.php?leftmenu=members','','MenuMembersStats','members',1,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2015-10-03 08:46:17'),(113027,'auguria',1,'','left','members',108540,NULL,NULL,3,'/adherents/index.php?leftmenu=export&mainmenu=members','','Exports','members',0,'export','$user->rights->adherent->export','$conf->adherent->enabled',2,'2015-10-03 08:46:17'),(113028,'auguria',1,'','left','members',113027,NULL,NULL,0,'/exports/index.php?leftmenu=export','','Datas','members',1,'','$user->rights->adherent->export','$conf->adherent->enabled && $conf->export->enabled',2,'2015-10-03 08:46:17'),(113029,'auguria',1,'','left','members',113027,NULL,NULL,1,'/adherents/htpasswd.php?leftmenu=export','','Filehtpasswd','members',1,'','$user->rights->adherent->export','$conf->adherent->enabled',2,'2015-10-03 08:46:17'),(113030,'auguria',1,'','left','members',113027,NULL,NULL,2,'/adherents/cartes/carte.php?leftmenu=export','','MembersCards','members',1,'','$user->rights->adherent->export','$conf->adherent->enabled',2,'2015-10-03 08:46:17'),(113227,'auguria',1,'','left','members',108540,NULL,NULL,5,'/adherents/type.php?leftmenu=setup&mainmenu=members','','MembersTypes','members',0,'setup','$user->rights->adherent->configurer','$conf->adherent->enabled',2,'2015-10-03 08:46:17'),(113228,'auguria',1,'','left','members',113227,NULL,NULL,0,'/adherents/type.php?leftmenu=setup&mainmenu=members&action=create','','New','members',1,'','$user->rights->adherent->configurer','$conf->adherent->enabled',2,'2015-10-03 08:46:17'),(113229,'auguria',1,'','left','members',113227,NULL,NULL,1,'/adherents/type.php?leftmenu=setup&mainmenu=members','','List','members',1,'','$user->rights->adherent->configurer','$conf->adherent->enabled',2,'2015-10-03 08:46:17'),(113527,'auguria',1,'','left','hrm',108542,NULL,NULL,1,'/holiday/list.php?&leftmenu=hrm','','CPTitreMenu','holiday',0,'hrm','$user->rights->holiday->write','$conf->holiday->enabled',0,'2015-10-03 08:46:17'),(113528,'auguria',1,'','left','hrm',113527,NULL,NULL,1,'/holiday/card.php?&action=request','','MenuAddCP','holiday',1,'','$user->rights->holiday->write','$conf->holiday->enabled',0,'2015-10-03 08:46:17'),(113529,'auguria',1,'','left','hrm',113527,NULL,NULL,2,'/holiday/define_holiday.php?&action=request','','MenuConfCP','holiday',1,'','$user->rights->holiday->define_holiday','$conf->holiday->enabled',0,'2015-10-03 08:46:17'),(113530,'auguria',1,'','left','hrm',113527,NULL,NULL,3,'/holiday/view_log.php?&action=request','','MenuLogCP','holiday',1,'','$user->rights->holiday->view_log','$conf->holiday->enabled',0,'2015-10-03 08:46:17'),(113531,'auguria',1,'','left','hrm',113527,NULL,NULL,4,'/holiday/month_report.php?&action=request','','MenuReportMonth','holiday',1,'','$user->rights->holiday->month_report','$conf->holiday->enabled',0,'2015-10-03 08:46:17'),(113627,'auguria',1,'','left','commercial',108532,NULL,NULL,6,'/fourn/commande/index.php?leftmenu=orders_suppliers','','SuppliersOrders','orders',0,'orders_suppliers','$user->rights->fournisseur->commande->lire','$conf->fournisseur->enabled',2,'2015-10-03 08:46:16'),(113628,'auguria',1,'','left','commercial',113627,NULL,NULL,0,'/fourn/commande/card.php?action=create&leftmenu=orders_suppliers','','NewOrder','orders',1,'','$user->rights->fournisseur->commande->creer','$conf->fournisseur->enabled',2,'2015-10-03 08:46:16'),(113629,'auguria',1,'','left','commercial',113627,NULL,NULL,1,'/fourn/commande/list.php?leftmenu=orders_suppliers&viewstatut=0','','List','orders',1,'','$user->rights->fournisseur->commande->lire','$conf->fournisseur->enabled',2,'2015-10-03 08:46:16'),(113635,'auguria',1,'','left','commercial',113627,NULL,NULL,7,'/commande/stats/index.php?leftmenu=orders_suppliers&mode=supplier','','Statistics','orders',1,'','$user->rights->fournisseur->commande->lire','$conf->fournisseur->enabled',2,'2015-10-03 08:46:16'),(113727,'auguria',1,'','left','members',108540,NULL,NULL,3,'/categories/index.php?leftmenu=cat&type=3','','MembersCategoriesShort','categories',0,'cat','$user->rights->categorie->lire','$conf->adherent->enabled && $conf->categorie->enabled',2,'2015-10-03 08:46:17'),(113728,'auguria',1,'','left','members',113727,NULL,NULL,0,'/categories/card.php?action=create&type=3','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->adherent->enabled && $conf->categorie->enabled',2,'2015-10-03 08:46:17'); +INSERT INTO `llx_menu` VALUES (19289,'all',1,'cashdesk','top','cashdesk',0,NULL,NULL,100,'/cashdesk/index.php?user=__LOGIN__','pointofsale','CashDeskMenu','cashdesk',NULL,NULL,'1','$conf->cashdesk->enabled',0,'2012-12-08 13:11:09'),(87422,'smartphone',1,NULL,'top','home',0,NULL,NULL,1,'/index.php?mainmenu=home&leftmenu=','','Home','',-1,'','','1',2,'2013-02-24 18:29:15'),(87423,'smartphone',1,NULL,'top','companies',0,NULL,NULL,2,'/societe/index.php?mainmenu=companies&leftmenu=','','ThirdParties','companies',-1,'','$user->rights->societe->lire || $user->rights->societe->contact->lire','$conf->societe->enabled || $conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(87424,'smartphone',1,NULL,'top','products',0,NULL,NULL,3,'/product/index.php?mainmenu=products&leftmenu=','','Products/Services','products',-1,'','$user->rights->produit->lire||$user->rights->service->lire','$conf->product->enabled || $conf->service->enabled',0,'2013-02-24 18:29:15'),(87426,'smartphone',1,NULL,'top','commercial',0,NULL,NULL,5,'/comm/index.php?mainmenu=commercial&leftmenu=','','Commercial','commercial',-1,'','$user->rights->societe->lire || $user->rights->societe->contact->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(87427,'smartphone',1,NULL,'top','accountancy',0,NULL,NULL,6,'/compta/index.php?mainmenu=accountancy&leftmenu=','','MenuFinancial','compta',-1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->plancompte->lire || $user->rights->commande->lire || $user->rights->facture->lire','$conf->comptabilite->enabled || $conf->accounting->enabled || $conf->facture->enabled || $conf->deplacement->enabled || $conf->don->enabled',2,'2013-02-24 18:29:15'),(87428,'smartphone',1,NULL,'top','project',0,NULL,NULL,7,'/projet/index.php?mainmenu=project&leftmenu=','','Projects','projects',-1,'','$user->rights->projet->lire','$conf->projet->enabled',0,'2013-02-24 18:29:15'),(87429,'smartphone',1,NULL,'top','tools',0,NULL,NULL,8,'/core/tools.php?mainmenu=tools&leftmenu=','','Tools','other',-1,'','$user->rights->mailing->lire || $user->rights->export->lire || $user->rights->import->run','$conf->mailing->enabled || $conf->export->enabled || $conf->import->enabled',2,'2013-02-24 18:29:15'),(87432,'smartphone',1,NULL,'top','shop',0,NULL,NULL,11,'/boutique/index.php?mainmenu=shop&leftmenu=','','OSCommerce','shop',-1,'','','! empty($conf->boutique->enabled)',0,'2013-02-24 18:29:15'),(87434,'smartphone',1,NULL,'top','members',0,NULL,NULL,15,'/adherents/index.php?mainmenu=members&leftmenu=','','Members','members',-1,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(87435,'smartphone',1,NULL,'top','bank',0,NULL,NULL,6,'/compta/bank/index.php?mainmenu=bank&leftmenu=bank','','MenuBankCash','banks',-1,'','$user->rights->banque->lire || $user->rights->prelevement->bons->lire','$conf->banque->enabled || $conf->prelevement->enabled',2,'2013-02-24 18:29:15'),(87521,'smartphone',1,NULL,'left','home',87422,NULL,NULL,0,'/admin/index.php?leftmenu=setup','','Setup','admin',0,'','','$user->admin',2,'2013-02-24 18:29:15'),(87522,'smartphone',1,NULL,'left','home',87521,NULL,NULL,1,'/admin/company.php?leftmenu=setup','','MenuCompanySetup','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87523,'smartphone',1,NULL,'left','home',87521,NULL,NULL,4,'/admin/ihm.php?leftmenu=setup','','GUISetup','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87524,'smartphone',1,NULL,'left','home',87521,NULL,NULL,2,'/admin/modules.php?leftmenu=setup','','Modules','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87525,'smartphone',1,NULL,'left','home',87521,NULL,NULL,5,'/admin/boxes.php?leftmenu=setup','','Boxes','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87526,'smartphone',1,NULL,'left','home',87521,NULL,NULL,3,'/admin/menus.php?leftmenu=setup','','Menus','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87527,'smartphone',1,NULL,'left','home',87521,NULL,NULL,6,'/admin/delais.php?leftmenu=setup','','Alerts','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87529,'smartphone',1,NULL,'left','home',87521,NULL,NULL,7,'/admin/perms.php?leftmenu=setup','','Security','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87530,'smartphone',1,NULL,'left','home',87521,NULL,NULL,9,'/admin/mails.php?leftmenu=setup','','Emails','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87531,'smartphone',1,NULL,'left','home',87521,NULL,NULL,8,'/admin/limits.php?leftmenu=setup','','MenuLimits','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87532,'smartphone',1,NULL,'left','home',87521,NULL,NULL,10,'/admin/dict.php?leftmenu=setup','','DictionarySetup','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87533,'smartphone',1,NULL,'left','home',87521,NULL,NULL,11,'/admin/const.php?leftmenu=setup','','OtherSetup','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87621,'smartphone',1,NULL,'left','home',87422,NULL,NULL,1,'/admin/system/index.php?leftmenu=system','','SystemInfo','admin',0,'','','$user->admin',2,'2013-02-24 18:29:15'),(87622,'smartphone',1,NULL,'left','home',87621,NULL,NULL,0,'/admin/system/dolibarr.php?leftmenu=system','','Dolibarr','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87623,'smartphone',1,NULL,'left','home',87622,NULL,NULL,1,'/admin/system/constall.php?leftmenu=system','','AllParameters','admin',2,'','','1',2,'2013-02-24 18:29:15'),(87624,'smartphone',1,NULL,'left','home',87622,NULL,NULL,4,'/admin/system/about.php?leftmenu=system','','About','admin',2,'','','1',2,'2013-02-24 18:29:15'),(87625,'smartphone',1,NULL,'left','home',87621,NULL,NULL,1,'/admin/system/os.php?leftmenu=system','','OS','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87626,'smartphone',1,NULL,'left','home',87621,NULL,NULL,2,'/admin/system/web.php?leftmenu=system','','WebServer','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87627,'smartphone',1,NULL,'left','home',87621,NULL,NULL,3,'/admin/system/phpinfo.php?leftmenu=system','','Php','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87628,'smartphone',1,NULL,'left','home',87622,NULL,NULL,3,'/admin/triggers.php?leftmenu=system','','Triggers','admin',2,'','','1',2,'2013-02-24 18:29:15'),(87629,'smartphone',1,NULL,'left','home',87622,NULL,NULL,2,'/admin/system/modules.php?leftmenu=system','','Modules','admin',2,'','','1',2,'2013-02-24 18:29:15'),(87631,'smartphone',1,NULL,'left','home',87621,NULL,NULL,4,'/admin/system/database.php?leftmenu=system','','Database','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87632,'smartphone',1,NULL,'left','home',87631,NULL,NULL,0,'/admin/system/database-tables.php?leftmenu=system','','Tables','admin',2,'','','1',2,'2013-02-24 18:29:15'),(87721,'smartphone',1,NULL,'left','home',87422,NULL,NULL,2,'/admin/tools/index.php?leftmenu=admintools','','SystemTools','admin',0,'','','$user->admin',2,'2013-02-24 18:29:15'),(87722,'smartphone',1,NULL,'left','home',87721,NULL,NULL,0,'/admin/tools/dolibarr_export.php?leftmenu=admintools','','Backup','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87723,'smartphone',1,NULL,'left','home',87721,NULL,NULL,1,'/admin/tools/dolibarr_import.php?leftmenu=admintools','','Restore','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87724,'smartphone',1,NULL,'left','home',87721,NULL,NULL,6,'/admin/tools/purge.php?leftmenu=admintools','','Purge','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87725,'smartphone',1,NULL,'left','home',87721,NULL,NULL,3,'/admin/tools/eaccelerator.php?leftmenu=admintools','','EAccelerator','admin',1,'','','1 && function_exists(\'eaccelerator_info\')',2,'2013-02-24 18:29:15'),(87726,'smartphone',1,NULL,'left','home',87721,NULL,NULL,2,'/admin/tools/update.php?leftmenu=admintools','','MenuUpgrade','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87727,'smartphone',1,NULL,'left','home',87721,NULL,NULL,4,'/admin/tools/listevents.php?leftmenu=admintools','','Audit','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87728,'smartphone',1,NULL,'left','home',87721,NULL,NULL,7,'/support/index.php?leftmenu=admintools','_blank','HelpCenter','help',1,'','','1',2,'2013-02-24 18:29:15'),(87729,'smartphone',1,NULL,'left','home',87721,NULL,NULL,5,'/admin/tools/listsessions.php?leftmenu=admintools','','Sessions','admin',1,'','','1',2,'2013-02-24 18:29:15'),(87821,'smartphone',1,NULL,'left','home',87422,NULL,NULL,3,'/user/home.php?leftmenu=users','','MenuUsersAndGroups','users',0,'','','1',2,'2013-02-24 18:29:15'),(87822,'smartphone',1,NULL,'left','home',87821,NULL,NULL,0,'/user/index.php?leftmenu=users','','Users','users',1,'','$user->rights->user->user->lire || $user->admin','1',2,'2013-02-24 18:29:15'),(87823,'smartphone',1,NULL,'left','home',87822,NULL,NULL,0,'/user/card.php?leftmenu=users&action=create','','NewUser','users',2,'','$user->rights->user->user->creer || $user->admin','1',2,'2013-02-24 18:29:15'),(87824,'smartphone',1,NULL,'left','home',87821,NULL,NULL,1,'/user/group/index.php?leftmenu=users','','Groups','users',1,'','($conf->global->MAIN_USE_ADVANCED_PERMS?$user->rights->user->group_advance->read:$user->rights->user->user->lire) || $user->admin','1',2,'2013-02-24 18:29:15'),(87825,'smartphone',1,NULL,'left','home',87824,NULL,NULL,0,'/user/group/card.php?leftmenu=users&action=create','','NewGroup','users',2,'','($conf->global->MAIN_USE_ADVANCED_PERMS?$user->rights->user->group_advance->write:$user->rights->user->user->creer) || $user->admin','1',2,'2013-02-24 18:29:15'),(87921,'smartphone',1,NULL,'left','companies',87423,NULL,NULL,0,'/societe/societe.php','','ThirdParty','companies',0,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(87922,'smartphone',1,NULL,'left','companies',87921,NULL,NULL,0,'/societe/soc.php?action=create','','MenuNewThirdParty','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(87924,'smartphone',1,NULL,'left','companies',87921,NULL,NULL,5,'/fourn/list.php?leftmenu=suppliers','','ListSuppliersShort','suppliers',1,'','$user->rights->societe->lire && $user->rights->fournisseur->lire','$conf->societe->enabled && $conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(87925,'smartphone',1,NULL,'left','companies',87924,NULL,NULL,0,'/societe/soc.php?leftmenu=supplier&action=create&type=f','','NewSupplier','suppliers',2,'','$user->rights->societe->creer','$conf->societe->enabled && $conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(87927,'smartphone',1,NULL,'left','companies',87921,NULL,NULL,3,'/comm/prospect/list.php?leftmenu=prospects','','ListProspectsShort','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(87928,'smartphone',1,NULL,'left','companies',87927,NULL,NULL,0,'/societe/soc.php?leftmenu=prospects&action=create&type=p','','MenuNewProspect','companies',2,'','$user->rights->societe->creer','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(87930,'smartphone',1,NULL,'left','companies',87921,NULL,NULL,4,'/comm/list.php?leftmenu=customers','','ListCustomersShort','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(87931,'smartphone',1,NULL,'left','companies',87930,NULL,NULL,0,'/societe/soc.php?leftmenu=customers&action=create&type=c','','MenuNewCustomer','companies',2,'','$user->rights->societe->creer','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(88021,'smartphone',1,NULL,'left','companies',87423,NULL,NULL,1,'/contact/list.php?leftmenu=contacts','','ContactsAddresses||Contacts@$conf->global->SOCIETE_ADDRESSES_MANAGEMENT','companies',0,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(88022,'smartphone',1,NULL,'left','companies',88021,NULL,NULL,0,'/contact/card.php?leftmenu=contacts&action=create','','NewContactAddress||NewContact@$conf->global->SOCIETE_ADDRESSES_MANAGEMENT','companies',1,'','$user->rights->societe->creer','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(88023,'smartphone',1,NULL,'left','companies',88021,NULL,NULL,1,'/contact/list.php?leftmenu=contacts','','List','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(88025,'smartphone',1,NULL,'left','companies',88023,NULL,NULL,1,'/contact/list.php?leftmenu=contacts&type=p','','Prospects','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(88026,'smartphone',1,NULL,'left','companies',88023,NULL,NULL,2,'/contact/list.php?leftmenu=contacts&type=c','','Customers','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(88027,'smartphone',1,NULL,'left','companies',88023,NULL,NULL,3,'/contact/list.php?leftmenu=contacts&type=f','','Suppliers','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled && $conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(88028,'smartphone',1,NULL,'left','companies',88023,NULL,NULL,4,'/contact/list.php?leftmenu=contacts&type=o','','Others','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(88071,'smartphone',1,NULL,'left','companies',87423,NULL,NULL,3,'/categories/index.php?leftmenu=cat&type=1','','SuppliersCategoriesShort','categories',0,'','$user->rights->categorie->lire','$conf->societe->enabled && $conf->categorie->enabled',2,'2013-02-24 18:29:15'),(88072,'smartphone',1,NULL,'left','companies',88071,NULL,NULL,0,'/categories/card.php?action=create&type=1','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->societe->enabled && $conf->categorie->enabled',2,'2013-02-24 18:29:15'),(88081,'smartphone',1,NULL,'left','companies',87423,NULL,NULL,4,'/categories/index.php?leftmenu=cat&type=2','','CustomersProspectsCategoriesShort','categories',0,'','$user->rights->categorie->lire','$conf->fournisseur->enabled && $conf->categorie->enabled',2,'2013-02-24 18:29:15'),(88082,'smartphone',1,NULL,'left','companies',88081,NULL,NULL,0,'/categories/card.php?action=create&type=2','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->fournisseur->enabled && $conf->categorie->enabled',2,'2013-02-24 18:29:15'),(88121,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,1,'/comm/prospect/index.php?leftmenu=prospects','','Prospects','companies',0,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88122,'smartphone',1,NULL,'left','commercial',88121,NULL,NULL,0,'/societe/soc.php?leftmenu=prospects&action=create&type=p','','MenuNewProspect','companies',1,'','$user->rights->societe->creer','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88123,'smartphone',1,NULL,'left','commercial',88121,NULL,NULL,1,'/comm/prospect/list.php?leftmenu=prospects','','List','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88124,'smartphone',1,NULL,'left','commercial',88123,NULL,NULL,0,'/comm/prospect/list.php?sortfield=s.datec&sortorder=desc&begin=&stcomm=-1','','LastProspectDoNotContact','companies',2,'','$user->rights->societe->lire','$conf->societe->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88125,'smartphone',1,NULL,'left','commercial',88123,NULL,NULL,1,'/comm/prospect/list.php?sortfield=s.datec&sortorder=desc&begin=&stcomm=0','','LastProspectNeverContacted','companies',2,'','$user->rights->societe->lire','$conf->societe->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88126,'smartphone',1,NULL,'left','commercial',88123,NULL,NULL,2,'/comm/prospect/list.php?sortfield=s.datec&sortorder=desc&begin=&stcomm=1','','LastProspectToContact','companies',2,'','$user->rights->societe->lire','$conf->societe->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88127,'smartphone',1,NULL,'left','commercial',88123,NULL,NULL,3,'/comm/prospect/list.php?sortfield=s.datec&sortorder=desc&begin=&stcomm=2','','LastProspectContactInProcess','companies',2,'','$user->rights->societe->lire','$conf->societe->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88128,'smartphone',1,NULL,'left','commercial',88123,NULL,NULL,4,'/comm/prospect/list.php?sortfield=s.datec&sortorder=desc&begin=&stcomm=3','','LastProspectContactDone','companies',2,'','$user->rights->societe->lire','$conf->societe->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88129,'smartphone',1,NULL,'left','commercial',88121,NULL,NULL,2,'/contact/list.php?leftmenu=prospects&type=p','','Contacts','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88221,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,2,'/comm/index.php?leftmenu=customers','','Customers','companies',0,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88222,'smartphone',1,NULL,'left','commercial',88221,NULL,NULL,0,'/societe/soc.php?leftmenu=customers&action=create&type=c','','MenuNewCustomer','companies',1,'','$user->rights->societe->creer','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88223,'smartphone',1,NULL,'left','commercial',88221,NULL,NULL,1,'/comm/list.php?leftmenu=customers','','List','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88224,'smartphone',1,NULL,'left','commercial',88221,NULL,NULL,2,'/contact/list.php?leftmenu=customers&type=c','','Contacts','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88321,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,3,'/contact/list.php?leftmenu=contacts','','Contacts','companies',0,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88322,'smartphone',1,NULL,'left','commercial',88321,NULL,NULL,0,'/contact/card.php?leftmenu=contacts&action=create','','NewContactAddress||NewContact@$conf->global->SOCIETE_ADDRESSES_MANAGEMENT','companies',1,'','$user->rights->societe->creer','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88323,'smartphone',1,NULL,'left','commercial',88321,NULL,NULL,1,'/contact/list.php?leftmenu=contacts&action=create','','List','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',0,'2013-02-24 18:29:15'),(88331,'smartphone',1,NULL,'left','commercial',88323,NULL,NULL,1,'/contact/list.php?leftmenu=contacts&type=p','','Prospects','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88332,'smartphone',1,NULL,'left','commercial',88323,NULL,NULL,1,'/contact/list.php?leftmenu=contacts&type=c','','Customers','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88333,'smartphone',1,NULL,'left','commercial',88323,NULL,NULL,1,'/contact/list.php?leftmenu=contacts&type=f','','Suppliers','companies',1,'','$user->rights->societe->lire && $user->rights->fournisseur->lire','$conf->societe->enabled && $conf->fournisseur->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88334,'smartphone',1,NULL,'left','commercial',88323,NULL,NULL,1,'/contact/list.php?leftmenu=contacts&type=o','','Other','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled && $leftmenu==\"prospects\"',0,'2013-02-24 18:29:15'),(88521,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,4,'/comm/propal.php?leftmenu=propals','','Prop','propal',0,'','$user->rights->propale->lire','$conf->propal->enabled',2,'2013-02-24 18:29:15'),(88522,'smartphone',1,NULL,'left','commercial',88521,NULL,NULL,0,'/societe/societe.php?leftmenu=propals','','NewPropal','propal',1,'','$user->rights->propale->creer','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2013-02-24 18:29:15'),(88523,'smartphone',1,NULL,'left','commercial',88521,NULL,NULL,1,'/comm/propal.php?viewstatut=0','','PropalsDraft','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2013-02-24 18:29:15'),(88524,'smartphone',1,NULL,'left','commercial',88521,NULL,NULL,2,'/comm/propal.php?viewstatut=1','','PropalsOpened','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2013-02-24 18:29:15'),(88525,'smartphone',1,NULL,'left','commercial',88521,NULL,NULL,3,'/comm/propal.php?viewstatut=2,3,4','','PropalStatusClosedShort','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2013-02-24 18:29:15'),(88526,'smartphone',1,NULL,'left','commercial',88521,NULL,NULL,4,'/comm/propal/stats/index.php?leftmenu=propals','','Statistics','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2013-02-24 18:29:15'),(88621,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,5,'/commande/index.php?leftmenu=orders','','CustomersOrders','orders',0,'','$user->rights->commande->lire','$conf->commande->enabled',2,'2013-02-24 18:29:15'),(88622,'smartphone',1,NULL,'left','commercial',88621,NULL,NULL,0,'/societe/societe.php?leftmenu=orders','','NewOrder','orders',1,'','$user->rights->commande->creer','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88623,'smartphone',1,NULL,'left','commercial',88621,NULL,NULL,1,'/commande/list.php?leftmenu=orders','','List','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88624,'smartphone',1,NULL,'left','commercial',88623,NULL,NULL,2,'/commande/list.php?leftmenu=orders&viewstatut=0','','StatusOrderDraftShort','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88625,'smartphone',1,NULL,'left','commercial',88623,NULL,NULL,3,'/commande/list.php?leftmenu=orders&viewstatut=1','','StatusOrderValidated','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88626,'smartphone',1,NULL,'left','commercial',88623,NULL,NULL,4,'/commande/list.php?leftmenu=orders&viewstatut=2','','StatusOrderOnProcessShort','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88627,'smartphone',1,NULL,'left','commercial',88623,NULL,NULL,5,'/commande/list.php?leftmenu=orders&viewstatut=3','','StatusOrderToBill','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88628,'smartphone',1,NULL,'left','commercial',88623,NULL,NULL,6,'/commande/list.php?leftmenu=orders&viewstatut=4','','StatusOrderProcessed','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88629,'smartphone',1,NULL,'left','commercial',88623,NULL,NULL,7,'/commande/list.php?leftmenu=orders&viewstatut=-1','','StatusOrderCanceledShort','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88630,'smartphone',1,NULL,'left','commercial',88621,NULL,NULL,4,'/commande/stats/index.php?leftmenu=orders','','Statistics','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2013-02-24 18:29:15'),(88721,'smartphone',1,NULL,'left','commercial',87424,NULL,NULL,6,'/expedition/index.php?leftmenu=sendings','','Shipments','orders',0,'','$user->rights->expedition->lire','$conf->expedition->enabled',2,'2013-02-24 18:29:15'),(88722,'smartphone',1,NULL,'left','commercial',88721,NULL,NULL,0,'/expedition/list.php?leftmenu=sendings','','List','orders',1,'','$user->rights->expedition->lire','$conf->expedition->enabled && $leftmenu==\"sendings\"',2,'2013-02-24 18:29:15'),(88723,'smartphone',1,NULL,'left','commercial',88721,NULL,NULL,1,'/expedition/stats/index.php?leftmenu=sendings','','Statistics','orders',1,'','$user->rights->expedition->lire','$conf->expedition->enabled && $leftmenu==\"sendings\"',2,'2013-02-24 18:29:15'),(88821,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,7,'/contrat/index.php?leftmenu=contracts','','Contracts','contracts',0,'','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2013-02-24 18:29:15'),(88822,'smartphone',1,NULL,'left','commercial',88821,NULL,NULL,0,'/societe/societe.php?leftmenu=contracts','','NewContract','contracts',1,'','$user->rights->contrat->creer','$conf->contrat->enabled',2,'2013-02-24 18:29:15'),(88823,'smartphone',1,NULL,'left','commercial',88821,NULL,NULL,1,'/contrat/list.php?leftmenu=contracts','','List','contracts',1,'','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2013-02-24 18:29:15'),(88824,'smartphone',1,NULL,'left','commercial',88821,NULL,NULL,2,'/contrat/services.php?leftmenu=contracts','','MenuServices','contracts',1,'','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2013-02-24 18:29:15'),(88825,'smartphone',1,NULL,'left','commercial',88824,NULL,NULL,0,'/contrat/services.php?leftmenu=contracts&mode=0','','MenuInactiveServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2013-02-24 18:29:15'),(88826,'smartphone',1,NULL,'left','commercial',88824,NULL,NULL,1,'/contrat/services.php?leftmenu=contracts&mode=4','','MenuRunningServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2013-02-24 18:29:15'),(88827,'smartphone',1,NULL,'left','commercial',88824,NULL,NULL,2,'/contrat/services.php?leftmenu=contracts&mode=4&filter=expired','','MenuExpiredServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2013-02-24 18:29:15'),(88828,'smartphone',1,NULL,'left','commercial',88824,NULL,NULL,3,'/contrat/services.php?leftmenu=contracts&mode=5','','MenuClosedServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2013-02-24 18:29:15'),(88921,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,8,'/fichinter/list.php?leftmenu=ficheinter','','Interventions','interventions',0,'','$user->rights->ficheinter->lire','$conf->ficheinter->enabled',2,'2013-02-24 18:29:15'),(88922,'smartphone',1,NULL,'left','commercial',88921,NULL,NULL,0,'/fichinter/card.php?action=create&leftmenu=ficheinter','','NewIntervention','interventions',1,'','$user->rights->ficheinter->creer','$conf->ficheinter->enabled && $leftmenu==\"ficheinter\"',2,'2013-02-24 18:29:15'),(88923,'smartphone',1,NULL,'left','commercial',88921,NULL,NULL,1,'/fichinter/list.php?leftmenu=ficheinter','','List','interventions',1,'','$user->rights->ficheinter->lire','$conf->ficheinter->enabled && $leftmenu==\"ficheinter\"',2,'2013-02-24 18:29:15'),(89021,'smartphone',1,NULL,'left','accountancy',87427,NULL,NULL,3,'/fourn/facture/index.php?leftmenu=suppliers_bills','','BillsSuppliers','bills',0,'','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(89022,'smartphone',1,NULL,'left','accountancy',89021,NULL,NULL,0,'/fourn/facture/card.php?action=create&leftmenu=suppliers_bills','','NewBill','bills',1,'','$user->rights->fournisseur->facture->creer','$conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(89023,'smartphone',1,NULL,'left','accountancy',89021,NULL,NULL,1,'/fourn/facture/impayees.php?leftmenu=suppliers_bills','','Unpaid','bills',1,'','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(89024,'smartphone',1,NULL,'left','accountancy',89021,NULL,NULL,2,'/fourn/facture/paiement.php?leftmenu=suppliers_bills','','Payments','bills',1,'','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(89121,'smartphone',1,NULL,'left','accountancy',87427,NULL,NULL,3,'/compta/facture/list.php?leftmenu=customers_bills','','BillsCustomers','bills',0,'','$user->rights->facture->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(89122,'smartphone',1,NULL,'left','accountancy',89121,NULL,NULL,3,'/compta/clients.php?action=facturer&leftmenu=customers_bills','','NewBill','bills',1,'','$user->rights->facture->creer','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(89123,'smartphone',1,NULL,'left','accountancy',89121,NULL,NULL,4,'/compta/facture/fiche-rec.php?leftmenu=customers_bills','','Repeatable','bills',1,'','$user->rights->facture->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(89124,'smartphone',1,NULL,'left','accountancy',89121,NULL,NULL,5,'/compta/facture/impayees.php?action=facturer&leftmenu=customers_bills','','Unpaid','bills',1,'','$user->rights->facture->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(89125,'smartphone',1,NULL,'left','accountancy',89121,NULL,NULL,6,'/compta/paiement/list.php?leftmenu=customers_bills','','Payments','bills',1,'','$user->rights->facture->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(89131,'smartphone',1,NULL,'left','accountancy',89125,NULL,NULL,1,'/compta/paiement/rapport.php?leftmenu=customers_bills','','Reportings','bills',2,'','$user->rights->facture->lire','$conf->societe->enabled',2,'2013-02-24 18:29:15'),(89132,'smartphone',1,NULL,'left','accountancy',87435,NULL,NULL,9,'/compta/paiement/cheque/index.php?leftmenu=checks&mainmenu=bank','','MenuChequeDeposits','bills',0,'','$user->rights->facture->lire','$conf->facture->enabled && $conf->banque->enabled',2,'2013-02-24 18:29:15'),(89133,'smartphone',1,NULL,'left','accountancy',89132,NULL,NULL,0,'/compta/paiement/cheque/card.php?leftmenu=checks&action=new','','NewCheckDeposit','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled && $conf->banque->enabled',2,'2013-02-24 18:29:15'),(89134,'smartphone',1,NULL,'left','accountancy',89132,NULL,NULL,1,'/compta/paiement/cheque/list.php?leftmenu=checks','','List','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled && $conf->banque->enabled',2,'2013-02-24 18:29:15'),(89135,'smartphone',1,NULL,'left','accountancy',89121,NULL,NULL,8,'/compta/facture/stats/index.php?leftmenu=customers_bills','','Statistics','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled && $conf->banque->enabled',2,'2013-02-24 18:29:15'),(89321,'smartphone',1,NULL,'left','accountancy',87427,NULL,NULL,3,'/commande/list.php?leftmenu=orders&viewstatut=3','','MenuOrdersToBill','orders',0,'','$user->rights->commande->lire','$conf->commande->enabled',0,'2013-02-24 18:29:15'),(89421,'smartphone',1,NULL,'left','accountancy',87427,NULL,NULL,4,'/compta/dons/index.php?leftmenu=donations&mainmenu=accountancy','','Donations','donations',0,'','$user->rights->don->lire','$conf->don->enabled',2,'2013-02-24 18:29:15'),(89422,'smartphone',1,NULL,'left','accountancy',89421,NULL,NULL,0,'/compta/dons/card.php?leftmenu=donations&mainmenu=accountancy&action=create','','NewDonation','donations',1,'','$user->rights->don->creer','$conf->don->enabled && $leftmenu==\"donations\"',2,'2013-02-24 18:29:15'),(89423,'smartphone',1,NULL,'left','accountancy',89421,NULL,NULL,1,'/compta/dons/list.php?leftmenu=donations&mainmenu=accountancy','','List','donations',1,'','$user->rights->don->lire','$conf->don->enabled && $leftmenu==\"donations\"',2,'2013-02-24 18:29:15'),(89521,'smartphone',1,NULL,'left','accountancy',87427,NULL,NULL,5,'/compta/deplacement/index.php?leftmenu=tripsandexpenses','','TripsAndExpenses','trips',0,'','$user->rights->deplacement->lire','$conf->deplacement->enabled',0,'2013-02-24 18:29:15'),(89522,'smartphone',1,NULL,'left','accountancy',89521,NULL,NULL,1,'/compta/deplacement/card.php?action=create&leftmenu=tripsandexpenses','','New','trips',1,'','$user->rights->deplacement->creer','$conf->deplacement->enabled && $leftmenu==\"tripsandexpenses\"',0,'2013-02-24 18:29:15'),(89523,'smartphone',1,NULL,'left','accountancy',89521,NULL,NULL,2,'/compta/deplacement/index.php?leftmenu=tripsandexpenses','','List','trips',1,'','$user->rights->deplacement->lire','$conf->deplacement->enabled && $leftmenu==\"tripsandexpenses\"',0,'2013-02-24 18:29:15'),(89524,'smartphone',1,NULL,'left','accountancy',89521,NULL,NULL,2,'/compta/deplacement/stats/index.php?leftmenu=tripsandexpenses','','Statistics','trips',1,'','$user->rights->deplacement->lire','$conf->deplacement->enabled && $leftmenu==\"tripsandexpenses\"',0,'2013-02-24 18:29:15'),(89621,'smartphone',1,NULL,'left','accountancy',87427,NULL,NULL,6,'/compta/charges/index.php?leftmenu=tax&mainmenu=accountancy','','MenuTaxAndDividends','compta',0,'','$user->rights->tax->charges->lire','$conf->tax->enabled',0,'2013-02-24 18:29:15'),(89622,'smartphone',1,NULL,'left','accountancy',89621,NULL,NULL,1,'/compta/sociales/index.php?leftmenu=tax_social','','SocialContributions','',1,'','$user->rights->tax->charges->lire','$conf->tax->enabled',0,'2013-02-24 18:29:15'),(89623,'smartphone',1,NULL,'left','accountancy',89622,NULL,NULL,2,'/compta/sociales/charges.php?leftmenu=tax_social&action=create','','MenuNewSocialContribution','',2,'','$user->rights->tax->charges->creer','$conf->tax->enabled && $leftmenu==\"tax_social\"',0,'2013-02-24 18:29:15'),(89624,'smartphone',1,NULL,'left','accountancy',89622,NULL,NULL,3,'/compta/charges/index.php?leftmenu=tax_social&mainmenu=accountancy&mode=sconly','','Payments','',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && $leftmenu==\"tax_social\"',0,'2013-02-24 18:29:15'),(89721,'smartphone',1,NULL,'left','accountancy',89621,NULL,NULL,7,'/compta/tva/index.php?leftmenu=tax_vat&mainmenu=accountancy','','VAT','companies',1,'','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS)',0,'2013-02-24 18:29:15'),(89722,'smartphone',1,NULL,'left','accountancy',89721,NULL,NULL,0,'/compta/tva/card.php?leftmenu=tax_vat&action=create','','NewPayment','companies',2,'','$user->rights->tax->charges->creer','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2013-02-24 18:29:15'),(89723,'smartphone',1,NULL,'left','accountancy',89721,NULL,NULL,1,'/compta/tva/reglement.php?leftmenu=tax_vat','','Payments','companies',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2013-02-24 18:29:15'),(89724,'smartphone',1,NULL,'left','accountancy',89721,NULL,NULL,2,'/compta/tva/clients.php?leftmenu=tax_vat','','ReportByCustomers','companies',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2013-02-24 18:29:15'),(89725,'smartphone',1,NULL,'left','accountancy',89721,NULL,NULL,3,'/compta/tva/quadri_detail.php?leftmenu=tax_vat','','ReportByQuarter','companies',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2013-02-24 18:29:15'),(89821,'smartphone',1,NULL,'left','accountancy',87427,NULL,NULL,8,'/compta/ventilation/index.php?leftmenu=ventil','','Ventilation','companies',0,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89822,'smartphone',1,NULL,'left','accountancy',89821,NULL,NULL,0,'/compta/ventilation/list.php','','ToDispatch','companies',1,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89823,'smartphone',1,NULL,'left','accountancy',89821,NULL,NULL,1,'/compta/ventilation/lignes.php','','Dispatched','companies',1,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89824,'smartphone',1,NULL,'left','accountancy',89821,NULL,NULL,2,'/compta/param/','','Setup','companies',1,'','$user->rights->compta->ventilation->parametrer','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89825,'smartphone',1,NULL,'left','accountancy',89824,NULL,NULL,0,'/compta/param/comptes/list.php','','List','companies',2,'','$user->rights->compta->ventilation->parametrer','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89826,'smartphone',1,NULL,'left','accountancy',89824,NULL,NULL,1,'/compta/param/comptes/card.php?action=create','','New','companies',2,'','$user->rights->compta->ventilation->parametrer','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89827,'smartphone',1,NULL,'left','accountancy',89821,NULL,NULL,3,'/compta/export/','','Export','companies',1,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89828,'smartphone',1,NULL,'left','accountancy',89827,NULL,NULL,0,'/compta/export/index.php','','New','companies',2,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89829,'smartphone',1,NULL,'left','accountancy',89827,NULL,NULL,1,'/compta/export/list.php','','List','companies',2,'','$user->rights->compta->ventilation->lire','$conf->comptabilite->enabled && $conf->global->FACTURE_VENTILATION',0,'2013-02-24 18:29:15'),(89921,'smartphone',1,NULL,'left','accountancy',87435,NULL,NULL,9,'/compta/prelevement/index.php?leftmenu=withdraw&mainmenu=bank','','StandingOrders','withdrawals',0,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled',2,'2013-02-24 18:29:15'),(89922,'smartphone',1,NULL,'left','accountancy',89921,NULL,NULL,1,'/compta/prelevement/demandes.php?status=0&leftmenu=withdraw','','StandingOrderToProcess','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-02-24 18:29:15'),(89923,'smartphone',1,NULL,'left','accountancy',89921,NULL,NULL,0,'/compta/prelevement/create.php?leftmenu=withdraw','','NewStandingOrder','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-02-24 18:29:15'),(89924,'smartphone',1,NULL,'left','accountancy',89921,NULL,NULL,2,'/compta/prelevement/bons.php?leftmenu=withdraw','','WithdrawalsReceipts','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-02-24 18:29:15'),(89925,'smartphone',1,NULL,'left','accountancy',89921,NULL,NULL,3,'/compta/prelevement/list.php?leftmenu=withdraw','','WithdrawalsLines','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-02-24 18:29:15'),(89927,'smartphone',1,NULL,'left','accountancy',89921,NULL,NULL,5,'/compta/prelevement/rejets.php?leftmenu=withdraw','','Rejects','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-02-24 18:29:15'),(89928,'smartphone',1,NULL,'left','accountancy',89921,NULL,NULL,6,'/compta/prelevement/stats.php?leftmenu=withdraw','','Statistics','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2013-02-24 18:29:15'),(90021,'smartphone',1,NULL,'left','accountancy',87435,NULL,NULL,1,'/compta/bank/index.php?leftmenu=bank&mainmenu=bank','','MenuBankCash','banks',0,'','$user->rights->banque->lire','$conf->banque->enabled',0,'2013-02-24 18:29:15'),(90022,'smartphone',1,NULL,'left','accountancy',90021,NULL,NULL,0,'/compta/bank/card.php?action=create&leftmenu=bank','','MenuNewFinancialAccount','banks',1,'','$user->rights->banque->configurer','$conf->banque->enabled && $leftmenu==bank',0,'2013-02-24 18:29:15'),(90023,'smartphone',1,NULL,'left','accountancy',90021,NULL,NULL,1,'/compta/bank/categ.php?leftmenu=bank','','Rubriques','categories',1,'','$user->rights->banque->configurer','$conf->banque->enabled && $leftmenu==bank',0,'2013-02-24 18:29:15'),(90024,'smartphone',1,NULL,'left','accountancy',90021,NULL,NULL,2,'/compta/bank/search.php?leftmenu=bank','','ListTransactions','banks',1,'','$user->rights->banque->lire','$conf->banque->enabled && $leftmenu==bank',0,'2013-02-24 18:29:15'),(90025,'smartphone',1,NULL,'left','accountancy',90021,NULL,NULL,3,'/compta/bank/budget.php?leftmenu=bank','','ListTransactionsByCategory','banks',1,'','$user->rights->banque->lire','$conf->banque->enabled && $leftmenu==bank',0,'2013-02-24 18:29:15'),(90027,'smartphone',1,NULL,'left','accountancy',90021,NULL,NULL,5,'/compta/bank/virement.php?leftmenu=bank','','BankTransfers','banks',1,'','$user->rights->banque->transfer','$conf->banque->enabled && $leftmenu==bank',0,'2013-02-24 18:29:15'),(90121,'smartphone',1,NULL,'left','accountancy',87427,NULL,NULL,11,'/compta/resultat/index.php?leftmenu=ca&mainmenu=accountancy','','Reportings','main',0,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-02-24 18:29:15'),(90122,'smartphone',1,NULL,'left','accountancy',90121,NULL,NULL,0,'/compta/resultat/index.php?leftmenu=ca','','ReportInOut','main',1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-02-24 18:29:15'),(90123,'smartphone',1,NULL,'left','accountancy',90122,NULL,NULL,0,'/compta/resultat/clientfourn.php?leftmenu=ca','','ByCompanies','main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-02-24 18:29:15'),(90124,'smartphone',1,NULL,'left','accountancy',90121,NULL,NULL,1,'/compta/stats/index.php?leftmenu=ca','','ReportTurnover','main',1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-02-24 18:29:15'),(90125,'smartphone',1,NULL,'left','accountancy',90124,NULL,NULL,0,'/compta/stats/casoc.php?leftmenu=ca','','ByCompanies','main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-02-24 18:29:15'),(90126,'smartphone',1,NULL,'left','accountancy',90124,NULL,NULL,1,'/compta/stats/cabyuser.php?leftmenu=ca','','ByUsers','main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2013-02-24 18:29:15'),(90221,'smartphone',1,NULL,'left','products',87424,NULL,NULL,0,'/product/index.php?leftmenu=product&type=0','','Products','products',0,'','$user->rights->produit->lire','$conf->product->enabled',2,'2013-02-24 18:29:15'),(90222,'smartphone',1,NULL,'left','products',90221,NULL,NULL,0,'/product/card.php?leftmenu=product&action=create&type=0','','NewProduct','products',1,'','$user->rights->produit->creer','$conf->product->enabled',2,'2013-02-24 18:29:15'),(90223,'smartphone',1,NULL,'left','products',90221,NULL,NULL,1,'/product/list.php?leftmenu=product&type=0','','List','products',1,'','$user->rights->produit->lire','$conf->product->enabled',2,'2013-02-24 18:29:15'),(90224,'smartphone',1,NULL,'left','products',90221,NULL,NULL,4,'/product/reassort.php?type=0','','Stocks','products',1,'','$user->rights->produit->lire && $user->rights->stock->lire','$conf->product->enabled',2,'2013-02-24 18:29:15'),(90321,'smartphone',1,NULL,'left','products',87424,NULL,NULL,1,'/product/index.php?leftmenu=service&type=1','','Services','products',0,'','$user->rights->service->lire','$conf->service->enabled',2,'2013-02-24 18:29:15'),(90322,'smartphone',1,NULL,'left','products',90321,NULL,NULL,0,'/product/card.php?leftmenu=service&action=create&type=1','','NewService','products',1,'','$user->rights->service->creer','$conf->service->enabled',2,'2013-02-24 18:29:15'),(90323,'smartphone',1,NULL,'left','products',90321,NULL,NULL,1,'/product/list.php?leftmenu=service&type=1','','List','products',1,'','$user->rights->service->lire','$conf->service->enabled',2,'2013-02-24 18:29:15'),(90421,'smartphone',1,NULL,'left','products',87424,NULL,NULL,2,'/product/stats/index.php?leftmenu=stats','','Statistics','main',0,'','$user->rights->service->lire','$conf->product->enabled || $conf->service->enabled',2,'2013-02-24 18:29:15'),(90422,'smartphone',1,NULL,'left','products',90421,NULL,NULL,0,'/product/popuprop.php?leftmenu=stats','','Popularity','main',1,'','$user->rights->produit->lire && $user->rights->produit>lire','$conf->propal->enabled',2,'2013-02-24 18:29:15'),(90521,'smartphone',1,NULL,'left','products',87424,NULL,NULL,3,'/product/stock/index.php?leftmenu=stock','','Stock','stocks',0,'','$user->rights->stock->lire','$conf->stock->enabled',2,'2013-02-24 18:29:15'),(90522,'smartphone',1,NULL,'left','products',90521,NULL,NULL,0,'/product/stock/card.php?action=create','','MenuNewWarehouse','stocks',1,'','$user->rights->stock->creer','$conf->stock->enabled',2,'2013-02-24 18:29:15'),(90523,'smartphone',1,NULL,'left','products',90521,NULL,NULL,1,'/product/stock/list.php','','List','stocks',1,'','$user->rights->stock->lire','$conf->stock->enabled',2,'2013-02-24 18:29:15'),(90524,'smartphone',1,NULL,'left','products',90521,NULL,NULL,2,'/product/stock/valo.php','','EnhancedValue','stocks',1,'','$user->rights->stock->lire','$conf->stock->enabled',2,'2013-02-24 18:29:15'),(90525,'smartphone',1,NULL,'left','products',90521,NULL,NULL,3,'/product/stock/mouvement.php','','Movements','stocks',1,'','$user->rights->stock->mouvement->lire','$conf->stock->enabled',2,'2013-02-24 18:29:15'),(90621,'smartphone',1,NULL,'left','products',87424,NULL,NULL,4,'/categories/index.php?leftmenu=cat&type=0','','Categories','categories',0,'','$user->rights->categorie->lire','$conf->categorie->enabled',2,'2013-02-24 18:29:15'),(90622,'smartphone',1,NULL,'left','products',90621,NULL,NULL,0,'/categories/card.php?action=create&type=0','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->categorie->enabled',2,'2013-02-24 18:29:15'),(91021,'smartphone',1,NULL,'left','project',87428,NULL,NULL,0,'/projet/index.php?leftmenu=projects','','Projects','projects',0,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91022,'smartphone',1,NULL,'left','project',91021,NULL,NULL,1,'/projet/card.php?leftmenu=projects&action=create','','NewProject','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91023,'smartphone',1,NULL,'left','project',91021,NULL,NULL,2,'/projet/list.php?leftmenu=projects','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91031,'smartphone',1,NULL,'left','project',87428,NULL,NULL,0,'/projet/index.php?leftmenu=projects&mode=mine','','MyProjects','projects',0,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91032,'smartphone',1,NULL,'left','project',91031,NULL,NULL,1,'/projet/card.php?leftmenu=projects&action=create&mode=mine','','NewProject','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91033,'smartphone',1,NULL,'left','project',91031,NULL,NULL,2,'/projet/list.php?leftmenu=projects&mode=mine','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91121,'smartphone',1,NULL,'left','project',87428,NULL,NULL,0,'/projet/activity/index.php?leftmenu=projects','','Activities','projects',0,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91122,'smartphone',1,NULL,'left','project',91121,NULL,NULL,1,'/projet/tasks.php?leftmenu=projects&action=create','','NewTask','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91123,'smartphone',1,NULL,'left','project',91121,NULL,NULL,2,'/projet/tasks/index.php?leftmenu=projects','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91124,'smartphone',1,NULL,'left','project',91121,NULL,NULL,3,'/projet/activity/list.php?leftmenu=projects','','NewTimeSpent','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91221,'smartphone',1,NULL,'left','project',87428,NULL,NULL,0,'/projet/activity/index.php?leftmenu=projects&mode=mine','','MyActivities','projects',0,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91222,'smartphone',1,NULL,'left','project',91221,NULL,NULL,1,'/projet/tasks.php?leftmenu=projects&action=create&mode=mine','','NewTask','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91223,'smartphone',1,NULL,'left','project',91221,NULL,NULL,2,'/projet/tasks/index.php?leftmenu=projects&mode=mine','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91224,'smartphone',1,NULL,'left','project',91221,NULL,NULL,3,'/projet/activity/list.php?leftmenu=projects&mode=mine','','NewTimeSpent','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2013-02-24 18:29:15'),(91321,'smartphone',1,NULL,'left','tools',87429,NULL,NULL,0,'/comm/mailing/index.php?leftmenu=mailing','','EMailings','mails',0,'','$user->rights->mailing->lire','$conf->mailing->enabled',0,'2013-02-24 18:29:15'),(91322,'smartphone',1,NULL,'left','tools',91321,NULL,NULL,0,'/comm/mailing/card.php?leftmenu=mailing&action=create','','NewMailing','mails',1,'','$user->rights->mailing->creer','$conf->mailing->enabled',0,'2013-02-24 18:29:15'),(91323,'smartphone',1,NULL,'left','tools',91321,NULL,NULL,1,'/comm/mailing/list.php?leftmenu=mailing','','List','mails',1,'','$user->rights->mailing->lire','$conf->mailing->enabled',0,'2013-02-24 18:29:15'),(91521,'smartphone',1,NULL,'left','tools',87429,NULL,NULL,2,'/exports/index.php?leftmenu=export','','FormatedExport','exports',0,'','$user->rights->export->lire','$conf->export->enabled',2,'2013-02-24 18:29:15'),(91522,'smartphone',1,NULL,'left','tools',91521,NULL,NULL,0,'/exports/export.php?leftmenu=export','','NewExport','exports',1,'','$user->rights->export->creer','$conf->export->enabled',2,'2013-02-24 18:29:15'),(91551,'smartphone',1,NULL,'left','tools',87429,NULL,NULL,2,'/imports/index.php?leftmenu=import','','FormatedImport','exports',0,'','$user->rights->import->run','$conf->import->enabled',2,'2013-02-24 18:29:15'),(91552,'smartphone',1,NULL,'left','tools',91551,NULL,NULL,0,'/imports/import.php?leftmenu=import','','NewImport','exports',1,'','$user->rights->import->run','$conf->import->enabled',2,'2013-02-24 18:29:15'),(91621,'smartphone',1,NULL,'left','members',87434,NULL,NULL,0,'/adherents/index.php?leftmenu=members&mainmenu=members','','Members','members',0,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91622,'smartphone',1,NULL,'left','members',91621,NULL,NULL,0,'/adherents/card.php?action=create','','NewMember','members',1,'','$user->rights->adherent->creer','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91623,'smartphone',1,NULL,'left','members',91621,NULL,NULL,1,'/adherents/list.php','','List','members',1,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91624,'smartphone',1,NULL,'left','members',91623,NULL,NULL,2,'/adherents/list.php?statut=-1','','MenuMembersToValidate','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91625,'smartphone',1,NULL,'left','members',91623,NULL,NULL,3,'/adherents/list.php?statut=1','','MenuMembersValidated','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91626,'smartphone',1,NULL,'left','members',91623,NULL,NULL,4,'/adherents/list.php?statut=1&filter=outofdate','','MenuMembersNotUpToDate','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91627,'smartphone',1,NULL,'left','members',91623,NULL,NULL,5,'/adherents/list.php?statut=1&filter=uptodate','','MenuMembersUpToDate','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91628,'smartphone',1,NULL,'left','members',91623,NULL,NULL,6,'/adherents/list.php?statut=0','','MenuMembersResiliated','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91721,'smartphone',1,NULL,'left','members',87434,NULL,NULL,1,'/adherents/index.php?leftmenu=accountancy&mainmenu=members','','Subscriptions','compta',0,'','$user->rights->adherent->cotisation->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91722,'smartphone',1,NULL,'left','members',91721,NULL,NULL,0,'/adherents/list.php?statut=-1&leftmenu=accountancy&mainmenu=members','','NewSubscription','compta',1,'','$user->rights->adherent->cotisation->creer','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91723,'smartphone',1,NULL,'left','members',91721,NULL,NULL,1,'/adherents/cotisations.php?leftmenu=accountancy','','List','compta',1,'','$user->rights->adherent->cotisation->lire','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91921,'smartphone',1,NULL,'left','members',87434,NULL,NULL,3,'/adherents/index.php?leftmenu=export&mainmenu=members','','Exports','members',0,'','$user->rights->adherent->export','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91922,'smartphone',1,NULL,'left','members',91921,NULL,NULL,0,'/exports/index.php?leftmenu=export','','Datas','members',1,'','$user->rights->adherent->export','$conf->adherent->enabled && $conf->export->enabled',2,'2013-02-24 18:29:15'),(91923,'smartphone',1,NULL,'left','members',91921,NULL,NULL,1,'/adherents/htpasswd.php?leftmenu=export','','Filehtpasswd','members',1,'','$user->rights->adherent->export','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(91924,'smartphone',1,NULL,'left','members',91921,NULL,NULL,2,'/adherents/cartes/carte.php?leftmenu=export','','MembersCards','members',1,'','$user->rights->adherent->export','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(92121,'smartphone',1,NULL,'left','members',87434,NULL,NULL,5,'/adherents/index.php?leftmenu=setup&mainmenu=members','','Setup','members',0,'','$user->rights->adherent->configurer','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(92122,'smartphone',1,NULL,'left','members',92121,NULL,NULL,0,'/adherents/type.php?leftmenu=setup','','MembersTypes','members',1,'','$user->rights->adherent->configurer','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(92123,'smartphone',1,NULL,'left','members',92121,NULL,NULL,1,'/adherents/options.php?leftmenu=setup','','MembersAttributes','members',1,'','$user->rights->adherent->configurer','$conf->adherent->enabled',2,'2013-02-24 18:29:15'),(92421,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,0,'/compta/index.php?leftmenu=suppliers','','Suppliers','companies',0,'','$user->rights->societe->lire && $user->rights->fournisseur->lire','$conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(92422,'smartphone',1,NULL,'left','commercial',92421,NULL,NULL,0,'/societe/soc.php?leftmenu=suppliers&action=create&type=f','','NewSupplier','companies',1,'','$user->rights->societe->creer && $user->rights->fournisseur->lire','$conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(92423,'smartphone',1,NULL,'left','commercial',92421,NULL,NULL,1,'/fourn/list.php?leftmenu=suppliers','','List','companies',1,'','$user->rights->societe->lire && $user->rights->fournisseur->lire','$conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(92424,'smartphone',1,NULL,'left','commercial',92421,NULL,NULL,2,'/contact/list.php?leftmenu=suppliers&type=f','','Contacts','companies',1,'','$user->rights->societe->lire && $user->rights->fournisseur->lire','$conf->fournisseur->enabled',2,'2013-02-24 18:29:15'),(92521,'smartphone',1,NULL,'left','commercial',87426,NULL,NULL,6,'/fourn/commande/index.php?leftmenu=orders_suppliers','','SuppliersOrders','orders',0,'','$user->rights->fournisseur->commande->lire','$conf->commande->enabled',2,'2013-02-24 18:29:15'),(92522,'smartphone',1,NULL,'left','commercial',92521,NULL,NULL,0,'/societe/societe.php?leftmenu=orders_suppliers','','NewOrder','orders',1,'','$user->rights->fournisseur->commande->creer','$conf->commande->enabled && $leftmenu==\"orders_suppliers\"',2,'2013-02-24 18:29:15'),(92523,'smartphone',1,NULL,'left','commercial',92521,NULL,NULL,1,'/fourn/commande/list.php?leftmenu=orders_suppliers&viewstatut=0','','List','orders',1,'','$user->rights->fournisseur->commande->lire','$conf->commande->enabled && $leftmenu==\"orders_suppliers\"',2,'2013-02-24 18:29:15'),(92529,'smartphone',1,NULL,'left','commercial',92521,NULL,NULL,7,'/commande/stats/index.php?leftmenu=orders_suppliers&mode=supplier','','Statistics','orders',1,'','$user->rights->fournisseur->commande->lire','$conf->commande->enabled && $leftmenu==\"orders_suppliers\"',2,'2013-02-24 18:29:15'),(92621,'smartphone',1,NULL,'left','members',87434,NULL,NULL,3,'/categories/index.php?leftmenu=cat&type=3','','MembersCategoriesShort','categories',0,'','$user->rights->categorie->lire','$conf->adherent->enabled && $conf->categorie->enabled',2,'2013-02-24 18:29:15'),(92622,'smartphone',1,NULL,'left','members',92621,NULL,NULL,0,'/categories/card.php?action=create&type=3','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->adherent->enabled && $conf->categorie->enabled',2,'2013-02-24 18:29:15'),(103094,'all',2,'agenda','top','agenda',0,NULL,NULL,100,'/comm/action/index.php','','Agenda','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103095,'all',2,'agenda','left','agenda',103094,NULL,NULL,100,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda','','Actions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103096,'all',2,'agenda','left','agenda',103095,NULL,NULL,101,'/comm/action/card.php?mainmenu=agenda&leftmenu=agenda&action=create','','NewAction','commercial',NULL,NULL,'($user->rights->agenda->myactions->create||$user->rights->agenda->allactions->create)','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103097,'all',2,'agenda','left','agenda',103095,NULL,NULL,102,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda','','Calendar','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103098,'all',2,'agenda','left','agenda',103097,NULL,NULL,103,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=todo&filter=mine','','MenuToDoMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103099,'all',2,'agenda','left','agenda',103097,NULL,NULL,104,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=done&filter=mine','','MenuDoneMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103100,'all',2,'agenda','left','agenda',103097,NULL,NULL,105,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=todo','','MenuToDoActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2013-03-13 15:29:19'),(103101,'all',2,'agenda','left','agenda',103097,NULL,NULL,106,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=done','','MenuDoneActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2013-03-13 15:29:19'),(103102,'all',2,'agenda','left','agenda',103095,NULL,NULL,112,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda','','List','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103103,'all',2,'agenda','left','agenda',103102,NULL,NULL,113,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=todo&filter=mine','','MenuToDoMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103104,'all',2,'agenda','left','agenda',103102,NULL,NULL,114,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=done&filter=mine','','MenuDoneMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103105,'all',2,'agenda','left','agenda',103102,NULL,NULL,115,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=todo','','MenuToDoActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2013-03-13 15:29:19'),(103106,'all',2,'agenda','left','agenda',103102,NULL,NULL,116,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=done','','MenuDoneActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2013-03-13 15:29:19'),(103107,'all',2,'agenda','left','agenda',103095,NULL,NULL,120,'/comm/action/rapport/index.php?mainmenu=agenda&leftmenu=agenda','','Reportings','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$conf->agenda->enabled',2,'2013-03-13 15:29:19'),(103108,'all',2,'pos','top','pos',0,NULL,NULL,100,'/pos/backend/listefac.php','','POS','pos@pos',NULL,'1','1','1',2,'2013-03-13 20:33:09'),(103109,'all',2,'pos','left','pos',103108,NULL,NULL,100,'/pos/backend/list.php','','Tickets','pos@pos',NULL,NULL,'$user->rights->pos->backend','$conf->global->POS_USE_TICKETS',0,'2013-03-13 20:33:09'),(103110,'all',2,'pos','left','pos',103109,NULL,NULL,100,'/pos/backend/list.php','','List','main',NULL,NULL,'$user->rights->pos->backend','$conf->global->POS_USE_TICKETS',0,'2013-03-13 20:33:09'),(103111,'all',2,'pos','left','pos',103110,NULL,NULL,100,'/pos/backend/list.php?viewstatut=0','','StatusTicketDraft','pos@pos',NULL,NULL,'$user->rights->pos->backend','$conf->global->POS_USE_TICKETS',0,'2013-03-13 20:33:09'),(103112,'all',2,'pos','left','@pos',103110,NULL,NULL,100,'/pos/backend/list.php?viewstatut=1','','StatusTicketClosed','main',NULL,NULL,'$user->rights->pos->backend','$conf->global->POS_USE_TICKETS',0,'2013-03-13 20:33:09'),(103113,'all',2,'pos','left','@pos',103110,NULL,NULL,100,'/pos/backend/list.php?viewstatut=2','','StatusTicketProcessed','main',NULL,NULL,'$user->rights->pos->backend','$conf->global->POS_USE_TICKETS',0,'2013-03-13 20:33:09'),(103114,'all',2,'pos','left','@pos',103110,NULL,NULL,100,'/pos/backend/list.php?viewtype=1','','StatusTicketReturned','main',NULL,NULL,'$user->rights->pos->backend','$conf->global->POS_USE_TICKETS',0,'2013-03-13 20:33:09'),(103115,'all',2,'pos','left','pos',103108,NULL,NULL,100,'/pos/backend/listefac.php','','Factures','pos@pos',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103116,'all',2,'pos','left','pos',103115,NULL,NULL,100,'/pos/backend/listefac.php','','List','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103117,'all',2,'pos','left','pos',103116,NULL,NULL,100,'/pos/backend/listefac.php?viewstatut=0','','BillStatusDraft','bills',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103118,'all',2,'pos','left','@pos',103116,NULL,NULL,100,'/pos/backend/listefac.php?viewstatut=1','','BillStatusValidated','bills',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103119,'all',2,'pos','left','@pos',103116,NULL,NULL,100,'/pos/backend/listefac.php?viewstatut=2&viewtype=0','','BillStatusPaid','bills',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103120,'all',2,'pos','left','@pos',103116,NULL,NULL,100,'/pos/backend/listefac.php?viewtype=2','','BillStatusReturned','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103121,'all',2,'pos','left','@pos',103108,NULL,NULL,100,'/pos/frontend/index.php','','POS','main',NULL,NULL,'$user->rights->pos->frontend','1',0,'2013-03-13 20:33:09'),(103122,'all',2,'pos','left','@pos',103121,NULL,NULL,100,'/pos/frontend/index.php','','NewTicket','main',NULL,NULL,'$user->rights->pos->frontend','1',0,'2013-03-13 20:33:09'),(103123,'all',2,'pos','left','@pos',103121,NULL,NULL,101,'/pos/backend/closes.php','','CloseandArching','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103124,'all',2,'pos','left','@pos',103108,NULL,NULL,100,'/pos/backend/terminal/cash.php','','Terminal','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103125,'all',2,'pos','left','@pos',103124,NULL,NULL,100,'/pos/backend/terminal/card.php?action=create','','NewCash','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103126,'all',2,'pos','left','@pos',103124,NULL,NULL,101,'/pos/backend/terminal/cash.php','','List','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103127,'all',2,'pos','left','@pos',103123,NULL,NULL,101,'/pos/backend/closes.php?viewstatut=0','','Arqueo','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103128,'all',2,'pos','left','@pos',103123,NULL,NULL,102,'/pos/backend/closes.php?viewstatut=1','','Closes','main',NULL,NULL,'$user->rights->pos->backend','1',0,'2013-03-13 20:33:09'),(103129,'all',2,'pos','left','@pos',103108,NULL,NULL,102,'/pos/backend/transfers.php','','Transfer','main',NULL,NULL,'$user->rights->pos->transfer','1',0,'2013-03-13 20:33:09'),(103130,'all',2,'pos','left','@pos',103108,NULL,NULL,102,'/pos/backend/resultat/index.php','','Rapport','main',NULL,NULL,'$user->rights->pos->stats','1',0,'2013-03-13 20:33:09'),(103131,'all',2,'pos','left','@pos',103130,NULL,NULL,102,'/pos/backend/resultat/casoc.php','','ReportsCustomer','main',NULL,NULL,'$user->rights->pos->stats','1',0,'2013-03-13 20:33:09'),(103132,'all',2,'pos','left','@pos',103130,NULL,NULL,102,'/pos/backend/resultat/causer.php','','ReportsUser','main',NULL,NULL,'$user->rights->pos->stats','1',0,'2013-03-13 20:33:09'),(103133,'all',2,'pos','left','@pos',103130,NULL,NULL,102,'/pos/backend/resultat/sellsjournal.php','','ReportsSells','main',NULL,NULL,'$user->rights->pos->stats','1',0,'2013-03-13 20:33:09'),(103134,'all',2,'opensurvey','top','opensurvey',0,NULL,NULL,200,'/opensurvey/index.php','','Surveys','opensurvey',NULL,NULL,'$user->rights->opensurvey->survey->read','$conf->opensurvey->enabled',0,'2013-03-13 20:33:42'),(103135,'all',2,'opensurvey','left','opensurvey',-1,NULL,'opensurvey',200,'/opensurvey/index.php?mainmenu=opensurvey&leftmenu=opensurvey','','Survey','opensurvey@opensurvey',NULL,'opensurvey','','$conf->opensurvey->enabled',0,'2013-03-13 20:33:42'),(103136,'all',2,'opensurvey','left','opensurvey',-1,'opensurvey','opensurvey',210,'/opensurvey/public/index.php','_blank','NewSurvey','opensurvey@opensurvey',NULL,'opensurvey_new','','$conf->opensurvey->enabled',0,'2013-03-13 20:33:42'),(103137,'all',2,'opensurvey','left','opensurvey',-1,'opensurvey','opensurvey',220,'/opensurvey/list.php','','List','opensurvey@opensurvey',NULL,'opensurvey_list','','$conf->opensurvey->enabled',0,'2013-03-13 20:33:42'),(113729,'all',1,'agenda','top','agenda',0,NULL,NULL,100,'/comm/action/index.php','','Agenda','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2015-10-29 18:14:51'),(113730,'all',1,'agenda','left','agenda',113729,NULL,NULL,100,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda','','Actions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2015-10-29 18:14:51'),(113731,'all',1,'agenda','left','agenda',113730,NULL,NULL,101,'/comm/action/card.php?mainmenu=agenda&leftmenu=agenda&action=create','','NewAction','commercial',NULL,NULL,'($user->rights->agenda->myactions->create||$user->rights->agenda->allactions->create)','$conf->agenda->enabled',2,'2015-10-29 18:14:51'),(113732,'all',1,'agenda','left','agenda',113730,NULL,NULL,102,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda','','Agenda','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2015-10-29 18:14:51'),(113733,'all',1,'agenda','left','agenda',113732,NULL,NULL,103,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=todo&filter=mine','','MenuToDoMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2015-10-29 18:14:51'),(113734,'all',1,'agenda','left','agenda',113732,NULL,NULL,104,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=done&filter=mine','','MenuDoneMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2015-10-29 18:14:51'),(113735,'all',1,'agenda','left','agenda',113732,NULL,NULL,105,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=todo','','MenuToDoActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2015-10-29 18:14:51'),(113736,'all',1,'agenda','left','agenda',113732,NULL,NULL,106,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=done','','MenuDoneActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2015-10-29 18:14:51'),(113737,'all',1,'agenda','left','agenda',113730,NULL,NULL,112,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda','','List','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2015-10-29 18:14:51'),(113738,'all',1,'agenda','left','agenda',113737,NULL,NULL,113,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=todo&filter=mine','','MenuToDoMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2015-10-29 18:14:51'),(113739,'all',1,'agenda','left','agenda',113737,NULL,NULL,114,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=done&filter=mine','','MenuDoneMyActions','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2015-10-29 18:14:51'),(113740,'all',1,'agenda','left','agenda',113737,NULL,NULL,115,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=todo','','MenuToDoActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2015-10-29 18:14:51'),(113741,'all',1,'agenda','left','agenda',113737,NULL,NULL,116,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=done','','MenuDoneActions','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2015-10-29 18:14:51'),(113742,'all',1,'agenda','left','agenda',113730,NULL,NULL,120,'/comm/action/rapport/index.php?mainmenu=agenda&leftmenu=agenda','','Reportings','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$conf->agenda->enabled',2,'2015-10-29 18:14:51'),(113743,'all',1,'barcode','left','tools',-1,NULL,'tools',200,'/barcode/printsheet.php?mainmenu=tools&leftmenu=barcodeprint','','BarCodePrintsheet','products',NULL,'barcodeprint','($conf->global->MAIN_USE_ADVANCED_PERMS && $user->rights->barcode->lire_advance) || (! $conf->global->MAIN_USE_ADVANCED_PERMS)','$conf->barcode->enabled',2,'2015-10-29 18:14:51'),(113744,'all',1,'barcode','left','home',-1,'modulesadmintools','home',300,'/barcode/codeinit.php?mainmenu=home&leftmenu=modulesadmintools','','MassBarcodeInit','products',NULL,NULL,'($conf->global->MAIN_USE_ADVANCED_PERMS && $user->rights->barcode->creer_advance) || (! $conf->global->MAIN_USE_ADVANCED_PERMS)','$conf->barcode->enabled && $leftmenu==\"modulesadmintools\"',0,'2015-10-29 18:14:51'),(113745,'all',1,'cron','left','home',-1,'modulesadmintools','home',200,'/cron/list.php?status=-1','','CronList','cron',NULL,NULL,'$user->rights->cron->read','$leftmenu==\'modulesadmintools\'',2,'2015-10-29 18:14:51'),(113746,'all',1,'ecm','top','ecm',0,NULL,NULL,100,'/ecm/index.php','','MenuECM','ecm',NULL,NULL,'$user->rights->ecm->read || $user->rights->ecm->upload || $user->rights->ecm->setup','$conf->ecm->enabled',2,'2015-10-29 18:14:51'),(113747,'all',1,'ecm','left','ecm',-1,NULL,'ecm',101,'/ecm/index.php?mainmenu=ecm&leftmenu=ecm','','ECMArea','ecm',NULL,'ecm','$user->rights->ecm->read || $user->rights->ecm->upload','$user->rights->ecm->read || $user->rights->ecm->upload',2,'2015-10-29 18:14:51'),(113748,'all',1,'ecm','left','ecm',-1,'ecm','ecm',102,'/ecm/index.php?action=file_manager&mainmenu=ecm&leftmenu=ecm','','ECMSectionsManual','ecm',NULL,'ecm_manual','$user->rights->ecm->read || $user->rights->ecm->upload','$user->rights->ecm->read || $user->rights->ecm->upload',2,'2015-10-29 18:14:51'),(113749,'all',1,'ecm','left','ecm',-1,'ecm','ecm',103,'/ecm/index_auto.php?action=file_manager&mainmenu=ecm&leftmenu=ecm','','ECMSectionsAuto','ecm',NULL,NULL,'$user->rights->ecm->read || $user->rights->ecm->upload','$user->rights->ecm->read || $user->rights->ecm->upload',2,'2015-10-29 18:14:51'),(113750,'all',1,'opensurvey','left','tools',-1,NULL,'tools',200,'/opensurvey/index.php?mainmenu=tools&leftmenu=opensurvey','','Survey','opensurvey',NULL,'opensurvey','','$conf->opensurvey->enabled',0,'2015-10-29 18:14:52'),(113751,'all',1,'opensurvey','left','tools',-1,'opensurvey','tools',210,'/opensurvey/wizard/index.php','','NewSurvey','opensurvey',NULL,'opensurvey_new','$user->rights->opensurvey->write','$conf->opensurvey->enabled',0,'2015-10-29 18:14:52'),(113752,'all',1,'opensurvey','left','tools',-1,'opensurvey','tools',220,'/opensurvey/list.php','','List','opensurvey',NULL,'opensurvey_list','','$conf->opensurvey->enabled',0,'2015-10-29 18:14:52'),(113753,'auguria',1,'','top','home',0,NULL,NULL,10,'/index.php?mainmenu=home&leftmenu=','','Home','',-1,'','','1',2,'2015-10-29 18:14:52'),(113754,'auguria',1,'societe|fournisseur','top','companies',0,NULL,NULL,20,'/societe/index.php?mainmenu=companies&leftmenu=','','ThirdParties','companies',-1,'','$user->rights->societe->lire || $user->rights->societe->contact->lire','( ! empty($conf->societe->enabled) && (empty($conf->global->SOCIETE_DISABLE_PROSPECTS) || empty($conf->global->SOCIETE_DISABLE_CUSTOMERS))) || ! empty($conf->fournisseur->enabled)',2,'2015-10-29 18:14:52'),(113755,'auguria',1,'product|service','top','products',0,NULL,NULL,30,'/product/index.php?mainmenu=products&leftmenu=','','Products/Services','products',-1,'','$user->rights->produit->lire||$user->rights->service->lire','$conf->product->enabled || $conf->service->enabled',0,'2015-10-29 18:14:52'),(113757,'auguria',1,'propal|commande|fournisseur|contrat|ficheinter','top','commercial',0,NULL,NULL,40,'/comm/index.php?mainmenu=commercial&leftmenu=','','Commercial','commercial',-1,'','$user->rights->societe->lire || $user->rights->societe->contact->lire','$conf->propal->enabled || $conf->commande->enabled || $conf->fournisseur->enabled || $conf->contrat->enabled || $conf->ficheinter->enabled',2,'2015-10-29 18:14:52'),(113758,'auguria',1,'comptabilite|accounting|facture|deplacement|don|tax|salaries|loa','top','accountancy',0,NULL,NULL,50,'/compta/index.php?mainmenu=accountancy&leftmenu=','','MenuFinancial','compta',-1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->plancompte->lire || $user->rights->facture->lire|| $user->rights->deplacement->lire || $user->rights->don->lire || $user->rights->tax->charges->lire || $user->rights->salaries->read || $u','$conf->comptabilite->enabled || $conf->accounting->enabled || $conf->facture->enabled || $conf->deplacement->enabled || $conf->don->enabled || $conf->tax->enabled || $conf->salaries->enabled || $conf->loan->enabled',2,'2015-10-29 18:14:52'),(113759,'auguria',1,'projet','top','project',0,NULL,NULL,70,'/projet/index.php?mainmenu=project&leftmenu=','','Projects','projects',-1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2015-10-29 18:14:52'),(113760,'auguria',1,'mailing|export|import|opensurvey','top','tools',0,NULL,NULL,90,'/core/tools.php?mainmenu=tools&leftmenu=','','Tools','other',-1,'','$user->rights->mailing->lire || $user->rights->export->lire || $user->rights->import->run || $user->rights->opensurvey->read','$conf->mailing->enabled || $conf->export->enabled || $conf->import->enabled || $conf->opensurvey->enabled',2,'2015-10-29 18:14:52'),(113765,'auguria',1,'adherent','top','members',0,NULL,NULL,110,'/adherents/index.php?mainmenu=members&leftmenu=','','Members','members',-1,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2015-10-29 18:14:52'),(113766,'auguria',1,'banque|prelevement','top','bank',0,NULL,NULL,60,'/compta/bank/index.php?mainmenu=bank&leftmenu=bank','','MenuBankCash','banks',-1,'','$user->rights->banque->lire || $user->rights->prelevement->bons->lire','$conf->banque->enabled || $conf->prelevement->enabled',0,'2015-10-29 18:14:52'),(113767,'auguria',1,'hrm','top','hrm',0,NULL,NULL,80,'/compta/hrm.php?mainmenu=hrm&leftmenu=','','HRM','holiday',-1,'','$user->rights->holiday->write || $user->rights->deplacement->lire || $user->rights->expensereport->lire','$conf->holiday->enabled || $conf->deplacement->enabled || $conf->expensereport->enabled',0,'2015-10-29 18:14:52'),(113852,'auguria',1,'','left','home',113753,NULL,NULL,0,'/admin/index.php?leftmenu=setup','','Setup','admin',0,'setup','','$user->admin',2,'2015-10-29 18:14:52'),(113853,'auguria',1,'','left','home',113852,NULL,NULL,1,'/admin/company.php?leftmenu=setup','','MenuCompanySetup','admin',1,'','','$leftmenu==\"setup\"',2,'2015-10-29 18:14:52'),(113854,'auguria',1,'','left','home',113852,NULL,NULL,4,'/admin/ihm.php?leftmenu=setup','','GUISetup','admin',1,'','','$leftmenu==\"setup\"',2,'2015-10-29 18:14:52'),(113855,'auguria',1,'','left','home',113852,NULL,NULL,2,'/admin/modules.php?leftmenu=setup','','Modules','admin',1,'','','$leftmenu==\"setup\"',2,'2015-10-29 18:14:52'),(113856,'auguria',1,'','left','home',113852,NULL,NULL,6,'/admin/boxes.php?leftmenu=setup','','Boxes','admin',1,'','','$leftmenu==\"setup\"',2,'2015-10-29 18:14:52'),(113857,'auguria',1,'','left','home',113852,NULL,NULL,3,'/admin/menus.php?leftmenu=setup','','Menus','admin',1,'','','$leftmenu==\"setup\"',2,'2015-10-29 18:14:52'),(113858,'auguria',1,'','left','home',113852,NULL,NULL,7,'/admin/delais.php?leftmenu=setup','','Alerts','admin',1,'','','$leftmenu==\"setup\"',2,'2015-10-29 18:14:52'),(113859,'auguria',1,'','left','home',113852,NULL,NULL,10,'/admin/pdf.php?leftmenu=setup','','PDF','admin',1,'','','$leftmenu==\"setup\"',2,'2015-10-29 18:14:52'),(113860,'auguria',1,'','left','home',113852,NULL,NULL,8,'/admin/security_other.php?leftmenu=setup','','Security','admin',1,'','','$leftmenu==\"setup\"',2,'2015-10-29 18:14:52'),(113861,'auguria',1,'','left','home',113852,NULL,NULL,11,'/admin/mails.php?leftmenu=setup','','Emails','admin',1,'','','$leftmenu==\"setup\"',2,'2015-10-29 18:14:52'),(113862,'auguria',1,'','left','home',113852,NULL,NULL,9,'/admin/limits.php?leftmenu=setup','','MenuLimits','admin',1,'','','$leftmenu==\"setup\"',2,'2015-10-29 18:14:52'),(113863,'auguria',1,'','left','home',113852,NULL,NULL,13,'/admin/dict.php?leftmenu=setup','','Dictionary','admin',1,'','','$leftmenu==\"setup\"',2,'2015-10-29 18:14:52'),(113864,'auguria',1,'','left','home',113852,NULL,NULL,14,'/admin/const.php?leftmenu=setup','','OtherSetup','admin',1,'','','$leftmenu==\"setup\"',2,'2015-10-29 18:14:52'),(113865,'auguria',1,'','left','home',113852,NULL,NULL,12,'/admin/sms.php?leftmenu=setup','','SMS','admin',1,'','','$leftmenu==\"setup\"',2,'2015-10-29 18:14:52'),(113866,'auguria',1,'','left','home',113852,NULL,NULL,4,'/admin/translation.php?leftmenu=setup','','Translation','admin',1,'','','$leftmenu==\"setup\"',2,'2015-10-29 18:14:52'),(113953,'auguria',1,'','left','home',114052,NULL,NULL,0,'/admin/system/dolibarr.php?leftmenu=admintools','','InfoDolibarr','admin',1,'','','$leftmenu==\"admintools\"',2,'2015-10-29 18:14:52'),(113954,'auguria',1,'','left','home',113953,NULL,NULL,2,'/admin/system/modules.php?leftmenu=admintools','','Modules','admin',2,'','','$leftmenu==\"admintools\"',2,'2015-10-29 18:14:52'),(113955,'auguria',1,'','left','home',113953,NULL,NULL,3,'/admin/triggers.php?leftmenu=admintools','','Triggers','admin',2,'','','$leftmenu==\"admintools\"',2,'2015-10-29 18:14:52'),(113957,'auguria',1,'','left','home',114052,NULL,NULL,1,'/admin/system/browser.php?leftmenu=admintools','','InfoBrowser','admin',1,'','','$leftmenu==\"admintools\"',2,'2015-10-29 18:14:52'),(113958,'auguria',1,'','left','home',114052,NULL,NULL,2,'/admin/system/os.php?leftmenu=admintools','','InfoOS','admin',1,'','','$leftmenu==\"admintools\"',2,'2015-10-29 18:14:52'),(113959,'auguria',1,'','left','home',114052,NULL,NULL,3,'/admin/system/web.php?leftmenu=admintools','','InfoWebServer','admin',1,'','','$leftmenu==\"admintools\"',2,'2015-10-29 18:14:52'),(113960,'auguria',1,'','left','home',114052,NULL,NULL,4,'/admin/system/phpinfo.php?leftmenu=admintools','','InfoPHP','admin',1,'','','$leftmenu==\"admintools\"',2,'2015-10-29 18:14:52'),(113962,'auguria',1,'','left','home',114052,NULL,NULL,5,'/admin/system/database.php?leftmenu=admintools','','InfoDatabase','admin',1,'','','$leftmenu==\"admintools\"',2,'2015-10-29 18:14:52'),(114052,'auguria',1,'','left','home',113753,NULL,NULL,2,'/admin/tools/index.php?leftmenu=admintools','','SystemTools','admin',0,'admintools','','$user->admin',2,'2015-10-29 18:14:52'),(114053,'auguria',1,'','left','home',114052,NULL,NULL,6,'/admin/tools/dolibarr_export.php?leftmenu=admintools','','Backup','admin',1,'','','$leftmenu==\"admintools\"',2,'2015-10-29 18:14:52'),(114054,'auguria',1,'','left','home',114052,NULL,NULL,7,'/admin/tools/dolibarr_import.php?leftmenu=admintools','','Restore','admin',1,'','','$leftmenu==\"admintools\"',2,'2015-10-29 18:14:52'),(114057,'auguria',1,'','left','home',114052,NULL,NULL,8,'/admin/tools/update.php?leftmenu=admintools','','MenuUpgrade','admin',1,'','','$leftmenu==\"admintools\"',2,'2015-10-29 18:14:52'),(114058,'auguria',1,'','left','home',114052,NULL,NULL,9,'/admin/tools/eaccelerator.php?leftmenu=admintools','','EAccelerator','admin',1,'','','$leftmenu==\"admintools\" && function_exists(\"eaccelerator_info\")',2,'2015-10-29 18:14:52'),(114059,'auguria',1,'','left','home',114052,NULL,NULL,10,'/admin/tools/listevents.php?leftmenu=admintools','','Audit','admin',1,'','','$leftmenu==\"admintools\"',2,'2015-10-29 18:14:52'),(114060,'auguria',1,'','left','home',114052,NULL,NULL,11,'/admin/tools/listsessions.php?leftmenu=admintools','','Sessions','admin',1,'','','$leftmenu==\"admintools\"',2,'2015-10-29 18:14:52'),(114061,'auguria',1,'','left','home',114052,NULL,NULL,12,'/admin/tools/purge.php?leftmenu=admintools','','Purge','admin',1,'','','$leftmenu==\"admintools\"',2,'2015-10-29 18:14:52'),(114062,'auguria',1,'','left','home',114052,NULL,NULL,13,'/support/index.php?leftmenu=admintools','_blank','HelpCenter','help',1,'','','$leftmenu==\"admintools\"',2,'2015-10-29 18:14:52'),(114063,'auguria',1,'','left','home',114052,NULL,NULL,14,'/admin/system/about.php?leftmenu=admintools','','About','admin',1,'','','$leftmenu==\"admintools\"',2,'2015-10-29 18:14:52'),(114152,'auguria',1,'','left','home',113753,NULL,NULL,4,'/user/home.php?leftmenu=users','','MenuUsersAndGroups','users',0,'users','','1',2,'2015-10-29 18:14:52'),(114153,'auguria',1,'','left','home',114152,NULL,NULL,0,'/user/index.php?leftmenu=users','','Users','users',1,'','$user->rights->user->user->lire || $user->admin','$leftmenu==\"users\"',2,'2015-10-29 18:14:52'),(114154,'auguria',1,'','left','home',114153,NULL,NULL,0,'/user/card.php?leftmenu=users&action=create','','NewUser','users',2,'','$user->rights->user->user->creer || $user->admin','$leftmenu==\"users\"',2,'2015-10-29 18:14:52'),(114155,'auguria',1,'','left','home',114152,NULL,NULL,1,'/user/group/index.php?leftmenu=users','','Groups','users',1,'','($conf->global->MAIN_USE_ADVANCED_PERMS?$user->rights->user->group_advance->read:$user->rights->user->user->lire) || $user->admin','$leftmenu==\"users\"',2,'2015-10-29 18:14:52'),(114156,'auguria',1,'','left','home',114155,NULL,NULL,0,'/user/group/card.php?leftmenu=users&action=create','','NewGroup','users',2,'','($conf->global->MAIN_USE_ADVANCED_PERMS?$user->rights->user->group_advance->write:$user->rights->user->user->creer) || $user->admin','$leftmenu==\"users\"',2,'2015-10-29 18:14:52'),(114252,'auguria',1,'','left','companies',113754,NULL,NULL,0,'/societe/index.php?leftmenu=thirdparties','','ThirdParty','companies',0,'thirdparties','$user->rights->societe->lire','$conf->societe->enabled',2,'2015-10-29 18:14:52'),(114253,'auguria',1,'','left','companies',114252,NULL,NULL,0,'/societe/soc.php?action=create','','MenuNewThirdParty','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2015-10-29 18:14:52'),(114254,'auguria',1,'','left','companies',114252,NULL,NULL,0,'/societe/list.php?action=create','','List','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2015-10-29 18:14:52'),(114255,'auguria',1,'','left','companies',114252,NULL,NULL,5,'/fourn/list.php?leftmenu=suppliers','','ListSuppliersShort','suppliers',1,'','$user->rights->societe->lire && $user->rights->fournisseur->lire','$conf->societe->enabled && $conf->fournisseur->enabled',2,'2015-10-29 18:14:52'),(114256,'auguria',1,'','left','companies',114255,NULL,NULL,0,'/societe/soc.php?leftmenu=supplier&action=create&type=f','','NewSupplier','suppliers',2,'','$user->rights->societe->creer','$conf->societe->enabled && $conf->fournisseur->enabled',2,'2015-10-29 18:14:52'),(114258,'auguria',1,'','left','companies',114252,NULL,NULL,3,'/comm/prospect/list.php?leftmenu=prospects','','ListProspectsShort','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2015-10-29 18:14:52'),(114259,'auguria',1,'','left','companies',114258,NULL,NULL,0,'/societe/soc.php?leftmenu=prospects&action=create&type=p','','MenuNewProspect','companies',2,'','$user->rights->societe->creer','$conf->societe->enabled',2,'2015-10-29 18:14:52'),(114261,'auguria',1,'','left','companies',114252,NULL,NULL,4,'/comm/list.php?leftmenu=customers','','ListCustomersShort','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2015-10-29 18:14:52'),(114262,'auguria',1,'','left','companies',114261,NULL,NULL,0,'/societe/soc.php?leftmenu=customers&action=create&type=c','','MenuNewCustomer','companies',2,'','$user->rights->societe->creer','$conf->societe->enabled',2,'2015-10-29 18:14:52'),(114352,'auguria',1,'','left','companies',113754,NULL,NULL,1,'/contact/list.php?leftmenu=contacts','','ContactsAddresses','companies',0,'contacts','$user->rights->societe->lire','$conf->societe->enabled',2,'2015-10-29 18:14:52'),(114353,'auguria',1,'','left','companies',114352,NULL,NULL,0,'/contact/card.php?leftmenu=contacts&action=create','','NewContactAddress','companies',1,'','$user->rights->societe->creer','$conf->societe->enabled',2,'2015-10-29 18:14:52'),(114354,'auguria',1,'','left','companies',114352,NULL,NULL,1,'/contact/list.php?leftmenu=contacts','','List','companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2015-10-29 18:14:52'),(114356,'auguria',1,'','left','companies',114354,NULL,NULL,1,'/contact/list.php?leftmenu=contacts&type=p','','ThirdPartyProspects','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled',2,'2015-10-29 18:14:52'),(114357,'auguria',1,'','left','companies',114354,NULL,NULL,2,'/contact/list.php?leftmenu=contacts&type=c','','ThirdPartyCustomers','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled',2,'2015-10-29 18:14:52'),(114358,'auguria',1,'','left','companies',114354,NULL,NULL,3,'/contact/list.php?leftmenu=contacts&type=f','','ThirdPartySuppliers','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled && $conf->fournisseur->enabled',2,'2015-10-29 18:14:52'),(114359,'auguria',1,'','left','companies',114354,NULL,NULL,4,'/contact/list.php?leftmenu=contacts&type=o','','Others','companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled',2,'2015-10-29 18:14:52'),(114402,'auguria',1,'','left','companies',113754,NULL,NULL,3,'/categories/index.php?leftmenu=cat&type=1','','SuppliersCategoriesShort','categories',0,'cat','$user->rights->categorie->lire','$conf->societe->enabled && $conf->categorie->enabled',2,'2015-10-29 18:14:52'),(114403,'auguria',1,'','left','companies',114402,NULL,NULL,0,'/categories/card.php?action=create&type=1','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->societe->enabled && $conf->categorie->enabled',2,'2015-10-29 18:14:52'),(114412,'auguria',1,'','left','companies',113754,NULL,NULL,4,'/categories/index.php?leftmenu=cat&type=2','','CustomersProspectsCategoriesShort','categories',0,'cat','$user->rights->categorie->lire','$conf->fournisseur->enabled && $conf->categorie->enabled',2,'2015-10-29 18:14:52'),(114413,'auguria',1,'','left','companies',114412,NULL,NULL,0,'/categories/card.php?action=create&type=2','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->fournisseur->enabled && $conf->categorie->enabled',2,'2015-10-29 18:14:52'),(114422,'auguria',1,'','left','companies',113754,NULL,NULL,3,'/categories/index.php?leftmenu=cat&type=4','','ContactCategoriesShort','categories',0,'cat','$user->rights->categorie->lire','$conf->societe->enabled && $conf->categorie->enabled',2,'2015-10-29 18:14:52'),(114423,'auguria',1,'','left','companies',114422,NULL,NULL,0,'/categories/card.php?action=create&type=4','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->societe->enabled && $conf->categorie->enabled',2,'2015-10-29 18:14:52'),(114852,'auguria',1,'','left','commercial',113757,NULL,NULL,4,'/comm/propal/index.php?leftmenu=propals','','Prop','propal',0,'propals','$user->rights->propale->lire','$conf->propal->enabled',2,'2015-10-29 18:14:52'),(114853,'auguria',1,'','left','commercial',114852,NULL,NULL,0,'/comm/propal.php?action=create&leftmenu=propals','','NewPropal','propal',1,'','$user->rights->propale->creer','$conf->propal->enabled',2,'2015-10-29 18:14:52'),(114854,'auguria',1,'','left','commercial',114852,NULL,NULL,1,'/comm/propal/list.php?leftmenu=propals','','List','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled',2,'2015-10-29 18:14:52'),(114855,'auguria',1,'','left','commercial',114854,NULL,NULL,2,'/comm/propal/list.php?leftmenu=propals&viewstatut=0','','PropalsDraft','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2015-10-29 18:14:52'),(114856,'auguria',1,'','left','commercial',114854,NULL,NULL,3,'/comm/propal/list.php?leftmenu=propals&viewstatut=1','','PropalsOpened','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2015-10-29 18:14:52'),(114857,'auguria',1,'','left','commercial',114854,NULL,NULL,4,'/comm/propal/list.php?leftmenu=propals&viewstatut=2','','PropalStatusSigned','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2015-10-29 18:14:52'),(114858,'auguria',1,'','left','commercial',114854,NULL,NULL,5,'/comm/propal/list.php?leftmenu=propals&viewstatut=3','','PropalStatusNotSigned','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2015-10-29 18:14:52'),(114859,'auguria',1,'','left','commercial',114854,NULL,NULL,6,'/comm/propal/list.php?leftmenu=propals&viewstatut=4','','PropalStatusBilled','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2015-10-29 18:14:52'),(114862,'auguria',1,'','left','commercial',114852,NULL,NULL,4,'/comm/propal/stats/index.php?leftmenu=propals','','Statistics','propal',1,'','$user->rights->propale->lire','$conf->propal->enabled',2,'2015-10-29 18:14:52'),(114952,'auguria',1,'','left','commercial',113757,NULL,NULL,5,'/commande/index.php?leftmenu=orders','','CustomersOrders','orders',0,'orders','$user->rights->commande->lire','$conf->commande->enabled',2,'2015-10-29 18:14:52'),(114953,'auguria',1,'','left','commercial',114952,NULL,NULL,0,'/commande/card.php?action=create&leftmenu=orders','','NewOrder','orders',1,'','$user->rights->commande->creer','$conf->commande->enabled',2,'2015-10-29 18:14:52'),(114954,'auguria',1,'','left','commercial',114952,NULL,NULL,1,'/commande/list.php?leftmenu=orders','','List','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled',2,'2015-10-29 18:14:52'),(114955,'auguria',1,'','left','commercial',114954,NULL,NULL,2,'/commande/list.php?leftmenu=orders&viewstatut=0','','StatusOrderDraftShort','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2015-10-29 18:14:52'),(114956,'auguria',1,'','left','commercial',114954,NULL,NULL,3,'/commande/list.php?leftmenu=orders&viewstatut=1','','StatusOrderValidated','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2015-10-29 18:14:52'),(114957,'auguria',1,'','left','commercial',114954,NULL,NULL,4,'/commande/list.php?leftmenu=orders&viewstatut=2','','StatusOrderOnProcessShort','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2015-10-29 18:14:52'),(114958,'auguria',1,'','left','commercial',114954,NULL,NULL,5,'/commande/list.php?leftmenu=orders&viewstatut=3','','StatusOrderToBill','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2015-10-29 18:14:52'),(114959,'auguria',1,'','left','commercial',114954,NULL,NULL,6,'/commande/list.php?leftmenu=orders&viewstatut=4','','StatusOrderProcessed','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2015-10-29 18:14:52'),(114960,'auguria',1,'','left','commercial',114954,NULL,NULL,7,'/commande/list.php?leftmenu=orders&viewstatut=-1','','StatusOrderCanceledShort','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2015-10-29 18:14:52'),(114961,'auguria',1,'','left','commercial',114952,NULL,NULL,4,'/commande/stats/index.php?leftmenu=orders','','Statistics','orders',1,'','$user->rights->commande->lire','$conf->commande->enabled',2,'2015-10-29 18:14:52'),(115052,'auguria',1,'','left','commercial',113755,NULL,NULL,6,'/expedition/index.php?leftmenu=sendings','','Shipments','sendings',0,'sendings','$user->rights->expedition->lire','$conf->expedition->enabled',2,'2015-10-29 18:14:52'),(115053,'auguria',1,'','left','commercial',115052,NULL,NULL,0,'/expedition/card.php?action=create2&leftmenu=sendings','','NewSending','sendings',1,'','$user->rights->expedition->creer','$conf->expedition->enabled && $leftmenu==\"sendings\"',2,'2015-10-29 18:14:52'),(115054,'auguria',1,'','left','commercial',115052,NULL,NULL,1,'/expedition/list.php?leftmenu=sendings','','List','sendings',1,'','$user->rights->expedition->lire','$conf->expedition->enabled && $leftmenu==\"sendings\"',2,'2015-10-29 18:14:52'),(115055,'auguria',1,'','left','commercial',115052,NULL,NULL,2,'/expedition/stats/index.php?leftmenu=sendings','','Statistics','sendings',1,'','$user->rights->expedition->lire','$conf->expedition->enabled && $leftmenu==\"sendings\"',2,'2015-10-29 18:14:52'),(115152,'auguria',1,'','left','commercial',113757,NULL,NULL,7,'/contrat/index.php?leftmenu=contracts','','Contracts','contracts',0,'contracts','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2015-10-29 18:14:52'),(115153,'auguria',1,'','left','commercial',115152,NULL,NULL,0,'/contrat/card.php?&action=create&leftmenu=contracts','','NewContract','contracts',1,'','$user->rights->contrat->creer','$conf->contrat->enabled',2,'2015-10-29 18:14:52'),(115154,'auguria',1,'','left','commercial',115152,NULL,NULL,1,'/contrat/list.php?leftmenu=contracts','','List','contracts',1,'','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2015-10-29 18:14:52'),(115155,'auguria',1,'','left','commercial',115152,NULL,NULL,2,'/contrat/services.php?leftmenu=contracts','','MenuServices','contracts',1,'','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2015-10-29 18:14:52'),(115156,'auguria',1,'','left','commercial',115155,NULL,NULL,0,'/contrat/services.php?leftmenu=contracts&mode=0','','MenuInactiveServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2015-10-29 18:14:52'),(115157,'auguria',1,'','left','commercial',115155,NULL,NULL,1,'/contrat/services.php?leftmenu=contracts&mode=4','','MenuRunningServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2015-10-29 18:14:52'),(115158,'auguria',1,'','left','commercial',115155,NULL,NULL,2,'/contrat/services.php?leftmenu=contracts&mode=4&filter=expired','','MenuExpiredServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2015-10-29 18:14:52'),(115159,'auguria',1,'','left','commercial',115155,NULL,NULL,3,'/contrat/services.php?leftmenu=contracts&mode=5','','MenuClosedServices','contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled&&$leftmenu==\"contracts\"',2,'2015-10-29 18:14:52'),(115252,'auguria',1,'','left','commercial',113757,NULL,NULL,8,'/fichinter/list.php?leftmenu=ficheinter','','Interventions','interventions',0,'ficheinter','$user->rights->ficheinter->lire','$conf->ficheinter->enabled',2,'2015-10-29 18:14:52'),(115253,'auguria',1,'','left','commercial',115252,NULL,NULL,0,'/fichinter/card.php?action=create&leftmenu=ficheinter','','NewIntervention','interventions',1,'','$user->rights->ficheinter->creer','$conf->ficheinter->enabled',2,'2015-10-29 18:14:52'),(115254,'auguria',1,'','left','commercial',115252,NULL,NULL,1,'/fichinter/list.php?leftmenu=ficheinter','','List','interventions',1,'','$user->rights->ficheinter->lire','$conf->ficheinter->enabled',2,'2015-10-29 18:14:52'),(115352,'auguria',1,'','left','accountancy',113758,NULL,NULL,3,'/fourn/facture/list.php?leftmenu=suppliers_bills','','BillsSuppliers','bills',0,'supplier_bills','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled',2,'2015-10-29 18:14:52'),(115353,'auguria',1,'','left','accountancy',115352,NULL,NULL,0,'/fourn/facture/card.php?action=create&leftmenu=suppliers_bills','','NewBill','bills',1,'','$user->rights->fournisseur->facture->creer','$conf->fournisseur->enabled',2,'2015-10-29 18:14:52'),(115354,'auguria',1,'','left','accountancy',115352,NULL,NULL,1,'/fourn/facture/impayees.php?leftmenu=suppliers_bills','','Unpaid','bills',1,'','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled',2,'2015-10-29 18:14:52'),(115355,'auguria',1,'','left','accountancy',115352,NULL,NULL,2,'/fourn/facture/paiement.php?leftmenu=suppliers_bills','','Payments','bills',1,'','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled',2,'2015-10-29 18:14:52'),(115356,'auguria',1,'','left','accountancy',115352,NULL,NULL,8,'/compta/facture/stats/index.php?leftmenu=customers_bills&mode=supplier','','Statistics','bills',1,'','$user->rights->fournisseur->facture->lire','$conf->fournisseur->enabled',2,'2015-10-29 18:14:52'),(115452,'auguria',1,'','left','accountancy',113758,NULL,NULL,3,'/compta/facture/list.php?leftmenu=customers_bills','','BillsCustomers','bills',0,'customer_bills','$user->rights->facture->lire','$conf->facture->enabled',2,'2015-10-29 18:14:52'),(115453,'auguria',1,'','left','accountancy',115452,NULL,NULL,3,'/compta/facture.php?action=create&leftmenu=customers_bills','','NewBill','bills',1,'','$user->rights->facture->creer','$conf->facture->enabled',2,'2015-10-29 18:14:52'),(115454,'auguria',1,'','left','accountancy',115452,NULL,NULL,5,'/compta/facture/fiche-rec.php?leftmenu=customers_bills','','ListOfTemplates','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2015-10-29 18:14:52'),(115455,'auguria',1,'','left','accountancy',115452,NULL,NULL,7,'/compta/facture/mergepdftool.php?action=facturer&leftmenu=customers_bills','','MergingPDFTool','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2015-10-29 18:14:52'),(115456,'auguria',1,'','left','accountancy',115452,NULL,NULL,6,'/compta/paiement/list.php?leftmenu=customers_bills','','Payments','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2015-10-29 18:14:52'),(115457,'auguria',1,'','left','accountancy',115452,NULL,NULL,4,'/compta/facture/list.php?leftmenu=customers_bills','','List','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2015-10-29 18:14:52'),(115462,'auguria',1,'','left','accountancy',115456,NULL,NULL,1,'/compta/paiement/rapport.php?leftmenu=customers_bills','','Reportings','bills',2,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2015-10-29 18:14:52'),(115463,'auguria',1,'','left','accountancy',113766,NULL,NULL,9,'/compta/paiement/cheque/index.php?leftmenu=checks&mainmenu=bank','','MenuChequeDeposits','bills',0,'checks','$user->rights->banque->lire','! empty($conf->banque->enabled) && (! empty($conf->facture->enabled)) || ! empty($conf->global->MAIN_MENU_CHEQUE_DEPOSIT_ON)',2,'2015-10-29 18:14:52'),(115464,'auguria',1,'','left','accountancy',115463,NULL,NULL,0,'/compta/paiement/cheque/card.php?leftmenu=checks&action=new','','NewCheckDeposit','compta',1,'','$user->rights->banque->lire','! empty($conf->banque->enabled) && (! empty($conf->facture->enabled)) || ! empty($conf->global->MAIN_MENU_CHEQUE_DEPOSIT_ON)',2,'2015-10-29 18:14:52'),(115465,'auguria',1,'','left','accountancy',115463,NULL,NULL,1,'/compta/paiement/cheque/list.php?leftmenu=checks','','List','bills',1,'','$user->rights->banque->lire','! empty($conf->banque->enabled) && (! empty($conf->facture->enabled)) || ! empty($conf->global->MAIN_MENU_CHEQUE_DEPOSIT_ON)',2,'2015-10-29 18:14:52'),(115466,'auguria',1,'','left','accountancy',115452,NULL,NULL,8,'/compta/facture/stats/index.php?leftmenu=customers_bills','','Statistics','bills',1,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2015-10-29 18:14:52'),(115472,'auguria',1,'','left','accountancy',115457,NULL,NULL,1,'/compta/facture/list.php?leftmenu=customers_bills&search_status=0','','BillShortStatusDraft','bills',2,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2015-10-29 18:14:52'),(115473,'auguria',1,'','left','accountancy',115457,NULL,NULL,2,'/compta/facture/list.php?leftmenu=customers_bills&search_status=1','','BillShortStatusNotPaid','bills',2,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2015-10-29 18:14:52'),(115474,'auguria',1,'','left','accountancy',115457,NULL,NULL,3,'/compta/facture/list.php?leftmenu=customers_bills&search_status=2','','BillShortStatusPaid','bills',2,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2015-10-29 18:14:52'),(115475,'auguria',1,'','left','accountancy',115457,NULL,NULL,4,'/compta/facture/list.php?leftmenu=customers_bills&search_status=3','','BillShortStatusCanceled','bills',2,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2015-10-29 18:14:52'),(115652,'auguria',1,'','left','accountancy',113758,NULL,NULL,3,'/commande/list.php?leftmenu=orders&viewstatut=3','','MenuOrdersToBill','orders',0,'orders','$user->rights->commande->lire','$conf->commande->enabled',0,'2015-10-29 18:14:52'),(115752,'auguria',1,'','left','accountancy',113758,NULL,NULL,4,'/don/index.php?leftmenu=donations&mainmenu=accountancy','','Donations','donations',0,'donations','$user->rights->don->lire','$conf->don->enabled',2,'2015-10-29 18:14:52'),(115753,'auguria',1,'','left','accountancy',115752,NULL,NULL,0,'/don/card.php?leftmenu=donations&mainmenu=accountancy&action=create','','NewDonation','donations',1,'','$user->rights->don->creer','$conf->don->enabled && $leftmenu==\"donations\"',2,'2015-10-29 18:14:52'),(115754,'auguria',1,'','left','accountancy',115752,NULL,NULL,1,'/don/list.php?leftmenu=donations&mainmenu=accountancy','','List','donations',1,'','$user->rights->don->lire','$conf->don->enabled && $leftmenu==\"donations\"',2,'2015-10-29 18:14:52'),(115852,'auguria',1,'','left','accountancy',113767,NULL,NULL,5,'/compta/deplacement/index.php?leftmenu=tripsandexpenses','','TripsAndExpenses','trips',0,'tripsandexpenses','$user->rights->deplacement->lire','$conf->deplacement->enabled',0,'2015-10-29 18:14:52'),(115853,'auguria',1,'','left','accountancy',115852,NULL,NULL,1,'/compta/deplacement/card.php?action=create&leftmenu=tripsandexpenses','','New','trips',1,'','$user->rights->deplacement->creer','$conf->deplacement->enabled',0,'2015-10-29 18:14:52'),(115854,'auguria',1,'','left','accountancy',115852,NULL,NULL,2,'/compta/deplacement/list.php?leftmenu=tripsandexpenses','','List','trips',1,'','$user->rights->deplacement->lire','$conf->deplacement->enabled',0,'2015-10-29 18:14:52'),(115855,'auguria',1,'','left','accountancy',115852,NULL,NULL,2,'/compta/deplacement/stats/index.php?leftmenu=tripsandexpenses','','Statistics','trips',1,'','$user->rights->deplacement->lire','$conf->deplacement->enabled',0,'2015-10-29 18:14:52'),(115952,'auguria',1,'','left','accountancy',113758,NULL,NULL,6,'/compta/charges/index.php?leftmenu=tax&mainmenu=accountancy','','MenuSpecialExpenses','compta',0,'tax','(! empty($conf->tax->enabled) && $user->rights->tax->charges->lire) || (! empty($conf->salaries->enabled) && $user->rights->salaries->read)','$conf->tax->enabled || $conf->salaries->enabled',0,'2015-10-29 18:14:52'),(115962,'auguria',1,'','left','accountancy',115952,NULL,NULL,1,'/compta/salaries/index.php?leftmenu=tax_salary&mainmenu=accountancy','','Salaries','salaries',1,'tax_sal','$user->rights->salaries->read','$conf->salaries->enabled',0,'2015-10-29 18:14:52'),(115963,'auguria',1,'','left','accountancy',115962,NULL,NULL,2,'/compta/salaries/card.php?leftmenu=tax_salary&action=create','','NewPayment','companies',2,'','$user->rights->salaries->write','$conf->salaries->enabled && $leftmenu==\"tax_salary\"',0,'2015-10-29 18:14:52'),(115964,'auguria',1,'','left','accountancy',115962,NULL,NULL,3,'/compta/salaries/index.php?leftmenu=tax_salary','','Payments','companies',2,'','$user->rights->salaries->read','$conf->salaries->enabled && $leftmenu==\"tax_salary\"',0,'2015-10-29 18:14:52'),(115972,'auguria',1,'','left','accountancy',115952,NULL,NULL,1,'/loan/index.php?leftmenu=tax_loan&mainmenu=accountancy','','Loans','loan',1,'tax_loan','$user->rights->loan->read','$conf->loan->enabled',0,'2015-10-29 18:14:52'),(115973,'auguria',1,'','left','accountancy',115972,NULL,NULL,2,'/loan/card.php?leftmenu=tax_loan&action=create','','NewLoan','loan',2,'','$user->rights->loan->write','$conf->loan->enabled && $leftmenu==\"tax_loan\"',0,'2015-10-29 18:14:52'),(115974,'auguria',1,'','left','accountancy',115972,NULL,NULL,3,'/loan/index.php?leftmenu=tax_loan','','Payments','companies',2,'','$user->rights->loan->read','$conf->loan->enabled && $leftmenu==\"tax_loan\"',0,'2015-10-29 18:14:52'),(115975,'auguria',1,'','left','accountancy',115972,NULL,NULL,4,'/loan/calc.php?leftmenu=tax_loan','','Calculator','companies',2,'','$user->rights->loan->calc','$conf->loan->enabled && $leftmenu==\"tax_loan\"',0,'2015-10-29 18:14:52'),(116002,'auguria',1,'','left','accountancy',115952,NULL,NULL,1,'/compta/sociales/index.php?leftmenu=tax_social','','SocialContributions','',1,'tax_social','$user->rights->tax->charges->lire','$conf->tax->enabled',0,'2015-10-29 18:14:52'),(116003,'auguria',1,'','left','accountancy',116002,NULL,NULL,2,'/compta/sociales/charges.php?leftmenu=tax_social&action=create','','MenuNewSocialContribution','',2,'','$user->rights->tax->charges->creer','$conf->tax->enabled && $leftmenu==\"tax_social\"',0,'2015-10-29 18:14:52'),(116004,'auguria',1,'','left','accountancy',116002,NULL,NULL,3,'/compta/charges/index.php?leftmenu=tax_social&mainmenu=accountancy&mode=sconly','','Payments','',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && $leftmenu==\"tax_social\"',0,'2015-10-29 18:14:52'),(116052,'auguria',1,'','left','accountancy',115952,NULL,NULL,7,'/compta/tva/index.php?leftmenu=tax_vat&mainmenu=accountancy','','VAT','companies',1,'tax_vat','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS)',0,'2015-10-29 18:14:52'),(116053,'auguria',1,'','left','accountancy',116052,NULL,NULL,0,'/compta/tva/card.php?leftmenu=tax_vat&action=create','','NewPayment','companies',2,'','$user->rights->tax->charges->creer','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2015-10-29 18:14:52'),(116054,'auguria',1,'','left','accountancy',116052,NULL,NULL,1,'/compta/tva/reglement.php?leftmenu=tax_vat','','Payments','companies',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2015-10-29 18:14:52'),(116055,'auguria',1,'','left','accountancy',116052,NULL,NULL,2,'/compta/tva/clients.php?leftmenu=tax_vat','','ReportByCustomers','companies',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2015-10-29 18:14:52'),(116056,'auguria',1,'','left','accountancy',116052,NULL,NULL,3,'/compta/tva/quadri_detail.php?leftmenu=tax_vat','','ReportByQuarter','companies',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2015-10-29 18:14:52'),(116152,'auguria',1,'','left','accountancy',113758,NULL,NULL,8,'/accountancy/customer/index.php?leftmenu=ventil_customer','','CustomersVentilation','accountancy',0,'ventil_customer','$user->rights->accounting->ventilation->read','$conf->accounting->enabled',0,'2015-10-29 18:14:52'),(116153,'auguria',1,'','left','accountancy',116152,NULL,NULL,0,'/accountancy/customer/list.php','','ToDispatch','accountancy',1,'','$user->rights->accounting->ventilation->dispatch','$conf->accounting->enabled && $leftmenu==\"ventil_customer\"',0,'2015-10-29 18:14:52'),(116154,'auguria',1,'','left','accountancy',116152,NULL,NULL,1,'/accountancy/customer/lines.php','','Dispatched','accountancy',1,'','$user->rights->accounting->ventilation->read','$conf->accounting->enabled && $leftmenu==\"ventil_customer\"',0,'2015-10-29 18:14:52'),(116162,'auguria',1,'','left','accountancy',113758,NULL,NULL,9,'/accountancy/supplier/index.php?leftmenu=ventil_supplier','','SuppliersVentilation','accountancy',0,'ventil_supplier','$user->rights->accounting->ventilation->read','$conf->accounting->enabled && $conf->fournisseur->enabled',0,'2015-10-29 18:14:52'),(116163,'auguria',1,'','left','accountancy',116162,NULL,NULL,0,'/accountancy/supplier/list.php','','ToDispatch','accountancy',1,'','$user->rights->accounting->ventilation->dispatch','$conf->accounting->enabled && $conf->fournisseur->enabled && $leftmenu==\"ventil_supplier\"',0,'2015-10-29 18:14:52'),(116164,'auguria',1,'','left','accountancy',116162,NULL,NULL,1,'/accountancy/supplier/lines.php','','Dispatched','accountancy',1,'','$user->rights->accounting->ventilation->read','$conf->accounting->enabled && $conf->fournisseur->enabled && $leftmenu==\"ventil_supplier\"',0,'2015-10-29 18:14:52'),(116252,'auguria',1,'','left','accountancy',113766,NULL,NULL,9,'/compta/prelevement/index.php?leftmenu=withdraw&mainmenu=bank','','StandingOrders','withdrawals',0,'withdraw','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled',2,'2015-10-29 18:14:52'),(116254,'auguria',1,'','left','accountancy',116252,NULL,NULL,0,'/compta/prelevement/create.php?leftmenu=withdraw','','NewStandingOrder','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2015-10-29 18:14:52'),(116255,'auguria',1,'','left','accountancy',116252,NULL,NULL,2,'/compta/prelevement/bons.php?leftmenu=withdraw','','WithdrawalsReceipts','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2015-10-29 18:14:52'),(116256,'auguria',1,'','left','accountancy',116252,NULL,NULL,3,'/compta/prelevement/list.php?leftmenu=withdraw','','WithdrawalsLines','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2015-10-29 18:14:52'),(116258,'auguria',1,'','left','accountancy',116252,NULL,NULL,5,'/compta/prelevement/rejets.php?leftmenu=withdraw','','Rejects','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2015-10-29 18:14:52'),(116259,'auguria',1,'','left','accountancy',116252,NULL,NULL,6,'/compta/prelevement/stats.php?leftmenu=withdraw','','Statistics','withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2015-10-29 18:14:52'),(116352,'auguria',1,'','left','accountancy',113766,NULL,NULL,1,'/compta/bank/index.php?leftmenu=bank&mainmenu=bank','','MenuBankCash','banks',0,'bank','$user->rights->banque->lire','$conf->banque->enabled',0,'2015-10-29 18:14:52'),(116353,'auguria',1,'','left','accountancy',116352,NULL,NULL,0,'/compta/bank/card.php?action=create&leftmenu=bank','','MenuNewFinancialAccount','banks',1,'','$user->rights->banque->configurer','$conf->banque->enabled && ($leftmenu==\"bank\" || $leftmenu==\"checks\" || $leftmenu==\"withdraw\")',0,'2015-10-29 18:14:52'),(116354,'auguria',1,'','left','accountancy',116352,NULL,NULL,1,'/compta/bank/categ.php?leftmenu=bank','','Rubriques','categories',1,'','$user->rights->banque->configurer','$conf->banque->enabled && ($leftmenu==\"bank\" || $leftmenu==\"checks\" || $leftmenu==\"withdraw\")',0,'2015-10-29 18:14:52'),(116355,'auguria',1,'','left','accountancy',116352,NULL,NULL,2,'/compta/bank/search.php?leftmenu=bank','','ListTransactions','banks',1,'','$user->rights->banque->lire','$conf->banque->enabled && ($leftmenu==\"bank\" || $leftmenu==\"checks\" || $leftmenu==\"withdraw\")',0,'2015-10-29 18:14:52'),(116356,'auguria',1,'','left','accountancy',116352,NULL,NULL,3,'/compta/bank/budget.php?leftmenu=bank','','ListTransactionsByCategory','banks',1,'','$user->rights->banque->lire','$conf->banque->enabled && ($leftmenu==\"bank\" || $leftmenu==\"checks\" || $leftmenu==\"withdraw\")',0,'2015-10-29 18:14:52'),(116358,'auguria',1,'','left','accountancy',116352,NULL,NULL,5,'/compta/bank/virement.php?leftmenu=bank','','BankTransfers','banks',1,'','$user->rights->banque->transfer','$conf->banque->enabled && ($leftmenu==\"bank\" || $leftmenu==\"checks\" || $leftmenu==\"withdraw\")',0,'2015-10-29 18:14:52'),(116452,'auguria',1,'','left','accountancy',113758,NULL,NULL,11,'/compta/resultat/index.php?leftmenu=ca&mainmenu=accountancy','','Reportings','main',0,'ca','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled',0,'2015-10-29 18:14:52'),(116453,'auguria',1,'','left','accountancy',116452,NULL,NULL,0,'/compta/resultat/index.php?leftmenu=ca','','ReportInOut','main',1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled && $leftmenu==\"ca\"',0,'2015-10-29 18:14:52'),(116454,'auguria',1,'','left','accountancy',116453,NULL,NULL,0,'/compta/resultat/clientfourn.php?leftmenu=ca','','ByCompanies','main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled && $leftmenu==\"ca\"',0,'2015-10-29 18:14:52'),(116455,'auguria',1,'','left','accountancy',116452,NULL,NULL,1,'/compta/stats/index.php?leftmenu=ca','','ReportTurnover','main',1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled && $leftmenu==\"ca\"',0,'2015-10-29 18:14:52'),(116456,'auguria',1,'','left','accountancy',116455,NULL,NULL,0,'/compta/stats/casoc.php?leftmenu=ca','','ByCompanies','main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled && $leftmenu==\"ca\"',0,'2015-10-29 18:14:52'),(116457,'auguria',1,'','left','accountancy',116455,NULL,NULL,1,'/compta/stats/cabyuser.php?leftmenu=ca','','ByUsers','main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled && $leftmenu==\"ca\"',0,'2015-10-29 18:14:52'),(116458,'auguria',1,'','left','accountancy',116452,NULL,NULL,1,'/compta/journal/sellsjournal.php?leftmenu=ca','','SellsJournal','main',1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled && $leftmenu==\"ca\"',0,'2015-10-29 18:14:52'),(116459,'auguria',1,'','left','accountancy',116452,NULL,NULL,1,'/compta/journal/purchasesjournal.php?leftmenu=ca','','PurchasesJournal','main',1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled && $leftmenu==\"ca\"',0,'2015-10-29 18:14:52'),(116460,'auguria',1,'','left','accountancy',116455,NULL,NULL,1,'/compta/stats/cabyprodserv.php?leftmenu=ca','','ByProductsAndServices','main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled || $conf->accounting->enabled && $leftmenu==\"ca\"',0,'2015-10-29 18:14:52'),(116472,'auguria',1,'','left','accountancy',113758,NULL,NULL,12,'/accountancy/bookkeeping/list.php?leftmenu=bookkeeping','','Bookkeeping','accountancy',0,'bookkeeping','$user->rights->accounting->mouvements->lire','$conf->accounting->enabled',0,'2015-10-29 18:14:52'),(116473,'auguria',1,'','left','accountancy',116472,NULL,NULL,0,'/accountancy/bookkeeping/listbyyear.php','','ByYear','accountancy',1,'','$user->rights->accounting->mouvements->lire','$conf->accounting->enabled && $leftmenu==\"bookkeeping\"',0,'2015-10-29 18:14:52'),(116474,'auguria',1,'','left','accountancy',116472,NULL,NULL,1,'/accountancy/bookkeeping/balancebymonth.php','','AccountBalanceByMonth','accountancy',1,'','$user->rights->accounting->mouvements->lire','$conf->accounting->enabled && $leftmenu==\"bookkeeping\"',0,'2015-10-29 18:14:52'),(116502,'auguria',1,'','left','home',113758,NULL,NULL,20,'/accountancy/admin/fiscalyear.php?leftmenu=setup','','Fiscalyear','accountancy',1,'','$user->rights->accounting->fiscalyear','$conf->accounting->enabled',2,'2015-10-29 18:14:52'),(116503,'auguria',1,'','left','home',113758,NULL,NULL,21,'/accountancy/admin/account.php?mainmenu=accountancy','','Chartofaccounts','accountancy',1,'','$user->rights->accounting->chartofaccount','$conf->accounting->enabled',2,'2015-10-29 18:14:52'),(116552,'auguria',1,'','left','products',113755,NULL,NULL,0,'/product/index.php?leftmenu=product&type=0','','Products','products',0,'product','$user->rights->produit->lire','$conf->product->enabled',2,'2015-10-29 18:14:52'),(116553,'auguria',1,'','left','products',116552,NULL,NULL,0,'/product/card.php?leftmenu=product&action=create&type=0','','NewProduct','products',1,'','$user->rights->produit->creer','$conf->product->enabled',2,'2015-10-29 18:14:52'),(116554,'auguria',1,'','left','products',116552,NULL,NULL,1,'/product/list.php?leftmenu=product&type=0','','List','products',1,'','$user->rights->produit->lire','$conf->product->enabled',2,'2015-10-29 18:14:52'),(116555,'auguria',1,'','left','products',116552,NULL,NULL,4,'/product/reassort.php?type=0','','Stocks','products',1,'','$user->rights->produit->lire && $user->rights->stock->lire','$conf->product->enabled',2,'2015-10-29 18:14:52'),(116556,'auguria',1,'','left','products',116552,NULL,NULL,6,'/product/popuprop.php?leftmenu=stats&type=0','','Statistics','main',1,'','$user->rights->produit->lire','$conf->propal->enabled',2,'2015-10-29 18:14:52'),(116557,'auguria',1,'','left','products',116552,NULL,NULL,5,'/product/reassortlot.php?type=0','','StocksByLotSerial','products',1,'','$user->rights->produit->lire && $user->rights->stock->lire','$conf->productbatch->enabled',2,'2015-10-29 18:14:52'),(116652,'auguria',1,'','left','products',113755,NULL,NULL,1,'/product/index.php?leftmenu=service&type=1','','Services','products',0,'service','$user->rights->service->lire','$conf->service->enabled',2,'2015-10-29 18:14:52'),(116653,'auguria',1,'','left','products',116652,NULL,NULL,0,'/product/card.php?leftmenu=service&action=create&type=1','','NewService','products',1,'','$user->rights->service->creer','$conf->service->enabled',2,'2015-10-29 18:14:52'),(116654,'auguria',1,'','left','products',116652,NULL,NULL,1,'/product/list.php?leftmenu=service&type=1','','List','products',1,'','$user->rights->service->lire','$conf->service->enabled',2,'2015-10-29 18:14:52'),(116655,'auguria',1,'','left','products',116652,NULL,NULL,5,'/product/popuprop.php?leftmenu=stats&type=1','','Statistics','main',1,'','$user->rights->service->lire','$conf->propal->enabled',2,'2015-10-29 18:14:52'),(116852,'auguria',1,'','left','products',113755,NULL,NULL,3,'/product/stock/index.php?leftmenu=stock','','Stock','stocks',0,'stock','$user->rights->stock->lire','$conf->stock->enabled',2,'2015-10-29 18:14:52'),(116853,'auguria',1,'','left','products',116852,NULL,NULL,0,'/product/stock/card.php?action=create','','MenuNewWarehouse','stocks',1,'','$user->rights->stock->creer','$conf->stock->enabled',2,'2015-10-29 18:14:52'),(116854,'auguria',1,'','left','products',116852,NULL,NULL,1,'/product/stock/list.php','','List','stocks',1,'','$user->rights->stock->lire','$conf->stock->enabled',2,'2015-10-29 18:14:52'),(116856,'auguria',1,'','left','products',116852,NULL,NULL,3,'/product/stock/mouvement.php','','Movements','stocks',1,'','$user->rights->stock->mouvement->lire','$conf->stock->enabled',2,'2015-10-29 18:14:52'),(116857,'auguria',1,'','left','products',116852,NULL,NULL,4,'/product/stock/replenish.php','','Replenishments','stocks',1,'','$user->rights->stock->mouvement->creer && $user->rights->fournisseur->lire','$conf->stock->enabled && $conf->fournisseur->enabled',2,'2015-10-29 18:14:52'),(116858,'auguria',1,'','left','products',116852,NULL,NULL,5,'/product/stock/massstockmove.php','','StockTransfer','stocks',1,'','$user->rights->stock->mouvement->creer','$conf->stock->enabled',2,'2015-10-29 18:14:52'),(116952,'auguria',1,'','left','products',113755,NULL,NULL,4,'/categories/index.php?leftmenu=cat&type=0','','Categories','categories',0,'cat','$user->rights->categorie->lire','$conf->categorie->enabled',2,'2015-10-29 18:14:52'),(116953,'auguria',1,'','left','products',116952,NULL,NULL,0,'/categories/card.php?action=create&type=0','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->categorie->enabled',2,'2015-10-29 18:14:52'),(117352,'auguria',1,'','left','project',113759,NULL,NULL,0,'/projet/index.php?leftmenu=projects','','Projects','projects',0,'projects','$user->rights->projet->lire','$conf->projet->enabled',2,'2015-10-29 18:14:52'),(117353,'auguria',1,'','left','project',117352,NULL,NULL,1,'/projet/card.php?leftmenu=projects&action=create','','NewProject','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2015-10-29 18:14:52'),(117354,'auguria',1,'','left','project',117352,NULL,NULL,2,'/projet/list.php?leftmenu=projects','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2015-10-29 18:14:52'),(117362,'auguria',1,'','left','project',113759,NULL,NULL,0,'/projet/index.php?leftmenu=projects&mode=mine','','MyProjects','projects',0,'myprojects','$user->rights->projet->lire','$conf->projet->enabled',2,'2015-10-29 18:14:52'),(117363,'auguria',1,'','left','project',117362,NULL,NULL,1,'/projet/card.php?leftmenu=projects&action=create&mode=mine','','NewProject','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2015-10-29 18:14:52'),(117364,'auguria',1,'','left','project',117362,NULL,NULL,2,'/projet/list.php?leftmenu=projects&mode=mine','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2015-10-29 18:14:52'),(117452,'auguria',1,'','left','project',113759,NULL,NULL,0,'/projet/activity/index.php?leftmenu=projects','','Activities','projects',0,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2015-10-29 18:14:52'),(117453,'auguria',1,'','left','project',117452,NULL,NULL,1,'/projet/tasks.php?leftmenu=projects&action=create','','NewTask','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2015-10-29 18:14:52'),(117454,'auguria',1,'','left','project',117452,NULL,NULL,2,'/projet/tasks/index.php?leftmenu=projects','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2015-10-29 18:14:52'),(117455,'auguria',1,'','left','project',117452,NULL,NULL,3,'/projet/activity/perweek.php?leftmenu=projects','','NewTimeSpent','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2015-10-29 18:14:52'),(117552,'auguria',1,'','left','project',113759,NULL,NULL,0,'/projet/activity/index.php?leftmenu=projects&mode=mine','','MyActivities','projects',0,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2015-10-29 18:14:52'),(117553,'auguria',1,'','left','project',117552,NULL,NULL,1,'/projet/tasks.php?leftmenu=projects&action=create&mode=mine','','NewTask','projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2015-10-29 18:14:52'),(117554,'auguria',1,'','left','project',117552,NULL,NULL,2,'/projet/tasks/index.php?leftmenu=projects&mode=mine','','List','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2015-10-29 18:14:52'),(117555,'auguria',1,'','left','project',117552,NULL,NULL,3,'/projet/activity/perweek.php?leftmenu=projects&mode=mine','','NewTimeSpent','projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2015-10-29 18:14:52'),(117652,'auguria',1,'','left','tools',113760,NULL,NULL,0,'/comm/mailing/index.php?leftmenu=mailing','','EMailings','mails',0,'mailing','$user->rights->mailing->lire','$conf->mailing->enabled',0,'2015-10-29 18:14:52'),(117653,'auguria',1,'','left','tools',117652,NULL,NULL,0,'/comm/mailing/card.php?leftmenu=mailing&action=create','','NewMailing','mails',1,'','$user->rights->mailing->creer','$conf->mailing->enabled',0,'2015-10-29 18:14:52'),(117654,'auguria',1,'','left','tools',117652,NULL,NULL,1,'/comm/mailing/list.php?leftmenu=mailing','','List','mails',1,'','$user->rights->mailing->lire','$conf->mailing->enabled',0,'2015-10-29 18:14:52'),(117852,'auguria',1,'','left','tools',113760,NULL,NULL,2,'/exports/index.php?leftmenu=export','','FormatedExport','exports',0,'export','$user->rights->export->lire','$conf->export->enabled',2,'2015-10-29 18:14:52'),(117853,'auguria',1,'','left','tools',117852,NULL,NULL,0,'/exports/export.php?leftmenu=export','','NewExport','exports',1,'','$user->rights->export->creer','$conf->export->enabled',2,'2015-10-29 18:14:52'),(117882,'auguria',1,'','left','tools',113760,NULL,NULL,2,'/imports/index.php?leftmenu=import','','FormatedImport','exports',0,'import','$user->rights->import->run','$conf->import->enabled',2,'2015-10-29 18:14:52'),(117883,'auguria',1,'','left','tools',117882,NULL,NULL,0,'/imports/import.php?leftmenu=import','','NewImport','exports',1,'','$user->rights->import->run','$conf->import->enabled',2,'2015-10-29 18:14:52'),(117952,'auguria',1,'','left','members',113765,NULL,NULL,0,'/adherents/index.php?leftmenu=members&mainmenu=members','','Members','members',0,'members','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2015-10-29 18:14:52'),(117953,'auguria',1,'','left','members',117952,NULL,NULL,0,'/adherents/card.php?leftmenu=members&action=create','','NewMember','members',1,'','$user->rights->adherent->creer','$conf->adherent->enabled',2,'2015-10-29 18:14:52'),(117954,'auguria',1,'','left','members',117952,NULL,NULL,1,'/adherents/list.php','','List','members',1,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2015-10-29 18:14:52'),(117955,'auguria',1,'','left','members',117954,NULL,NULL,2,'/adherents/list.php?leftmenu=members&statut=-1','','MenuMembersToValidate','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2015-10-29 18:14:52'),(117956,'auguria',1,'','left','members',117954,NULL,NULL,3,'/adherents/list.php?leftmenu=members&statut=1','','MenuMembersValidated','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2015-10-29 18:14:52'),(117957,'auguria',1,'','left','members',117954,NULL,NULL,4,'/adherents/list.php?leftmenu=members&statut=1&filter=outofdate','','MenuMembersNotUpToDate','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2015-10-29 18:14:52'),(117958,'auguria',1,'','left','members',117954,NULL,NULL,5,'/adherents/list.php?leftmenu=members&statut=1&filter=uptodate','','MenuMembersUpToDate','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2015-10-29 18:14:52'),(117959,'auguria',1,'','left','members',117954,NULL,NULL,6,'/adherents/list.php?leftmenu=members&statut=0','','MenuMembersResiliated','members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2015-10-29 18:14:52'),(117960,'auguria',1,'','left','members',117952,NULL,NULL,7,'/adherents/stats/geo.php?leftmenu=members&mode=memberbycountry','','MenuMembersStats','members',1,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2015-10-29 18:14:52'),(118052,'auguria',1,'','left','members',113765,NULL,NULL,1,'/adherents/index.php?leftmenu=members&mainmenu=members','','Subscriptions','compta',0,'','$user->rights->adherent->cotisation->lire','$conf->adherent->enabled',2,'2015-10-29 18:14:52'),(118053,'auguria',1,'','left','members',118052,NULL,NULL,0,'/adherents/list.php?statut=-1&leftmenu=accountancy&mainmenu=members','','NewSubscription','compta',1,'','$user->rights->adherent->cotisation->creer','$conf->adherent->enabled',2,'2015-10-29 18:14:52'),(118054,'auguria',1,'','left','members',118052,NULL,NULL,1,'/adherents/cotisations.php?leftmenu=members','','List','compta',1,'','$user->rights->adherent->cotisation->lire','$conf->adherent->enabled',2,'2015-10-29 18:14:52'),(118055,'auguria',1,'','left','members',118052,NULL,NULL,7,'/adherents/stats/index.php?leftmenu=members','','MenuMembersStats','members',1,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2015-10-29 18:14:52'),(118252,'auguria',1,'','left','members',113765,NULL,NULL,3,'/adherents/index.php?leftmenu=export&mainmenu=members','','Exports','members',0,'export','$user->rights->adherent->export','$conf->adherent->enabled',2,'2015-10-29 18:14:52'),(118253,'auguria',1,'','left','members',118252,NULL,NULL,0,'/exports/index.php?leftmenu=export','','Datas','members',1,'','$user->rights->adherent->export','$conf->adherent->enabled && $conf->export->enabled',2,'2015-10-29 18:14:52'),(118254,'auguria',1,'','left','members',118252,NULL,NULL,1,'/adherents/htpasswd.php?leftmenu=export','','Filehtpasswd','members',1,'','$user->rights->adherent->export','$conf->adherent->enabled',2,'2015-10-29 18:14:52'),(118255,'auguria',1,'','left','members',118252,NULL,NULL,2,'/adherents/cartes/carte.php?leftmenu=export','','MembersCards','members',1,'','$user->rights->adherent->export','$conf->adherent->enabled',2,'2015-10-29 18:14:52'),(118452,'auguria',1,'','left','members',113765,NULL,NULL,5,'/adherents/type.php?leftmenu=setup&mainmenu=members','','MembersTypes','members',0,'setup','$user->rights->adherent->configurer','$conf->adherent->enabled',2,'2015-10-29 18:14:52'),(118453,'auguria',1,'','left','members',118452,NULL,NULL,0,'/adherents/type.php?leftmenu=setup&mainmenu=members&action=create','','New','members',1,'','$user->rights->adherent->configurer','$conf->adherent->enabled',2,'2015-10-29 18:14:52'),(118454,'auguria',1,'','left','members',118452,NULL,NULL,1,'/adherents/type.php?leftmenu=setup&mainmenu=members','','List','members',1,'','$user->rights->adherent->configurer','$conf->adherent->enabled',2,'2015-10-29 18:14:52'),(118752,'auguria',1,'','left','hrm',113767,NULL,NULL,1,'/holiday/list.php?&leftmenu=hrm','','CPTitreMenu','holiday',0,'hrm','$user->rights->holiday->write','$conf->holiday->enabled',0,'2015-10-29 18:14:52'),(118753,'auguria',1,'','left','hrm',118752,NULL,NULL,1,'/holiday/card.php?&action=request','','MenuAddCP','holiday',1,'','$user->rights->holiday->write','$conf->holiday->enabled',0,'2015-10-29 18:14:52'),(118754,'auguria',1,'','left','hrm',118752,NULL,NULL,2,'/holiday/define_holiday.php?&action=request','','MenuConfCP','holiday',1,'','$user->rights->holiday->define_holiday','$conf->holiday->enabled',0,'2015-10-29 18:14:52'),(118755,'auguria',1,'','left','hrm',118752,NULL,NULL,3,'/holiday/view_log.php?&action=request','','MenuLogCP','holiday',1,'','$user->rights->holiday->view_log','$conf->holiday->enabled',0,'2015-10-29 18:14:52'),(118756,'auguria',1,'','left','hrm',118752,NULL,NULL,4,'/holiday/month_report.php?&action=request','','MenuReportMonth','holiday',1,'','$user->rights->holiday->month_report','$conf->holiday->enabled',0,'2015-10-29 18:14:52'),(118852,'auguria',1,'','left','commercial',113757,NULL,NULL,6,'/fourn/commande/index.php?leftmenu=orders_suppliers','','SuppliersOrders','orders',0,'orders_suppliers','$user->rights->fournisseur->commande->lire','$conf->fournisseur->enabled',2,'2015-10-29 18:14:52'),(118853,'auguria',1,'','left','commercial',118852,NULL,NULL,0,'/fourn/commande/card.php?action=create&leftmenu=orders_suppliers','','NewOrder','orders',1,'','$user->rights->fournisseur->commande->creer','$conf->fournisseur->enabled',2,'2015-10-29 18:14:52'),(118854,'auguria',1,'','left','commercial',118852,NULL,NULL,1,'/fourn/commande/list.php?leftmenu=orders_suppliers&viewstatut=0','','List','orders',1,'','$user->rights->fournisseur->commande->lire','$conf->fournisseur->enabled',2,'2015-10-29 18:14:52'),(118860,'auguria',1,'','left','commercial',118852,NULL,NULL,7,'/commande/stats/index.php?leftmenu=orders_suppliers&mode=supplier','','Statistics','orders',1,'','$user->rights->fournisseur->commande->lire','$conf->fournisseur->enabled',2,'2015-10-29 18:14:52'),(118952,'auguria',1,'','left','members',113765,NULL,NULL,3,'/categories/index.php?leftmenu=cat&type=3','','MembersCategoriesShort','categories',0,'cat','$user->rights->categorie->lire','$conf->adherent->enabled && $conf->categorie->enabled',2,'2015-10-29 18:14:52'),(118953,'auguria',1,'','left','members',118952,NULL,NULL,0,'/categories/card.php?action=create&type=3','','NewCategory','categories',1,'','$user->rights->categorie->creer','$conf->adherent->enabled && $conf->categorie->enabled',2,'2015-10-29 18:14:52'); /*!40000 ALTER TABLE `llx_menu` ENABLE KEYS */; UNLOCK TABLES; @@ -7133,7 +7133,7 @@ CREATE TABLE `llx_projet` ( LOCK TABLES `llx_projet` WRITE; /*!40000 ALTER TABLE `llx_projet` DISABLE KEYS */; -INSERT INTO `llx_projet` VALUES (1,NULL,'2010-07-09','2014-12-21 13:17:58','2010-07-09',NULL,'PROJ1',1,'Project One','',1,0,1,NULL,NULL,'gdfgdfg','baleine',NULL,NULL,NULL,NULL),(2,NULL,'2010-07-09','2010-07-08 22:49:56','2010-07-09',NULL,'PROJ2',1,'Project Two','',1,0,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(3,1,'2010-07-09','2010-07-08 22:50:19','2010-07-09',NULL,'PROJABC',1,'Project to create ABC company','',1,0,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(4,NULL,'2010-07-09','2010-07-08 22:50:49','2010-07-09',NULL,'PROJSHARED',1,'The Global project','',1,1,1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(5,NULL,'2010-07-11','2010-07-11 14:22:49','2010-07-11','2011-07-14','RMLL',1,'Projet gestion RMLL 2011','',1,1,1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); +INSERT INTO `llx_projet` VALUES (1,11,'2010-07-09','2015-10-05 20:51:28','2010-07-09',NULL,'PROJ1',1,'Project One','',1,0,1,NULL,NULL,'gdfgdfg','baleine',NULL,NULL,NULL,NULL),(2,13,'2010-07-09','2015-10-05 20:51:51','2010-07-09',NULL,'PROJ2',1,'Project Two','',1,0,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(3,1,'2010-07-09','2010-07-08 22:50:19','2010-07-09',NULL,'PROJABC',1,'Project to create ABC company','',1,0,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(4,NULL,'2010-07-09','2010-07-08 22:50:49','2010-07-09',NULL,'PROJSHARED',1,'The Global project','',1,1,1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(5,NULL,'2010-07-11','2010-07-11 14:22:49','2010-07-11','2011-07-14','RMLL',1,'Projet gestion RMLL 2011','',1,1,1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); /*!40000 ALTER TABLE `llx_projet` ENABLE KEYS */; UNLOCK TABLES; @@ -7340,7 +7340,7 @@ CREATE TABLE `llx_propal` ( CONSTRAINT `fk_propal_fk_user_author` FOREIGN KEY (`fk_user_author`) REFERENCES `llx_user` (`rowid`), CONSTRAINT `fk_propal_fk_user_cloture` FOREIGN KEY (`fk_user_cloture`) REFERENCES `llx_user` (`rowid`), CONSTRAINT `fk_propal_fk_user_valid` FOREIGN KEY (`fk_user_valid`) REFERENCES `llx_user` (`rowid`) -) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -7454,7 +7454,7 @@ CREATE TABLE `llx_propaldet` ( KEY `fk_propaldet_fk_unit` (`fk_unit`), CONSTRAINT `fk_propaldet_fk_propal` FOREIGN KEY (`fk_propal`) REFERENCES `llx_propal` (`rowid`), CONSTRAINT `fk_propaldet_fk_unit` FOREIGN KEY (`fk_unit`) REFERENCES `llx_c_units` (`rowid`) -) ENGINE=InnoDB AUTO_INCREMENT=27 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=24 DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -7662,7 +7662,7 @@ CREATE TABLE `llx_rights_def` ( LOCK TABLES `llx_rights_def` WRITE; /*!40000 ALTER TABLE `llx_rights_def` DISABLE KEYS */; -INSERT INTO `llx_rights_def` VALUES (11,'Lire les factures','facture',1,'lire',NULL,'a',1),(11,'Lire les factures','facture',2,'lire',NULL,'a',1),(12,'Creer/modifier les factures','facture',1,'creer',NULL,'a',0),(12,'Creer/modifier les factures','facture',2,'creer',NULL,'a',0),(13,'Dévalider les factures','facture',1,'invoice_advance','unvalidate','a',0),(13,'Dévalider les factures','facture',2,'invoice_advance','unvalidate','a',0),(14,'Valider les factures','facture',1,'invoice_advance','validate','a',0),(14,'Valider les factures','facture',2,'valider',NULL,'a',0),(15,'Envoyer les factures par mail','facture',1,'invoice_advance','send','a',0),(15,'Envoyer les factures par mail','facture',2,'invoice_advance','send','a',0),(16,'Emettre des paiements sur les factures','facture',1,'paiement',NULL,'a',0),(16,'Emettre des paiements sur les factures','facture',2,'paiement',NULL,'a',0),(19,'Supprimer les factures','facture',1,'supprimer',NULL,'a',0),(19,'Supprimer les factures','facture',2,'supprimer',NULL,'a',0),(21,'Lire les propositions commerciales','propale',1,'lire',NULL,'r',1),(21,'Lire les propositions commerciales','propale',2,'lire',NULL,'r',1),(22,'Creer/modifier les propositions commerciales','propale',1,'creer',NULL,'w',0),(22,'Creer/modifier les propositions commerciales','propale',2,'creer',NULL,'w',0),(24,'Valider les propositions commerciales','propale',1,'valider',NULL,'d',0),(24,'Valider les propositions commerciales','propale',2,'valider',NULL,'d',0),(25,'Envoyer les propositions commerciales aux clients','propale',1,'propal_advance','send','d',0),(25,'Envoyer les propositions commerciales aux clients','propale',2,'propal_advance','send','d',0),(26,'Cloturer les propositions commerciales','propale',1,'cloturer',NULL,'d',0),(26,'Cloturer les propositions commerciales','propale',2,'cloturer',NULL,'d',0),(27,'Supprimer les propositions commerciales','propale',1,'supprimer',NULL,'d',0),(27,'Supprimer les propositions commerciales','propale',2,'supprimer',NULL,'d',0),(28,'Exporter les propositions commerciales et attributs','propale',1,'export',NULL,'r',0),(28,'Exporter les propositions commerciales et attributs','propale',2,'export',NULL,'r',0),(31,'Lire les produits','produit',1,'lire',NULL,'r',1),(31,'Lire les produits','produit',2,'lire',NULL,'r',1),(32,'Creer/modifier les produits','produit',1,'creer',NULL,'w',0),(32,'Creer/modifier les produits','produit',2,'creer',NULL,'w',0),(34,'Supprimer les produits','produit',1,'supprimer',NULL,'d',0),(34,'Supprimer les produits','produit',2,'supprimer',NULL,'d',0),(38,'Exporter les produits','produit',1,'export',NULL,'r',0),(38,'Exporter les produits','produit',2,'export',NULL,'r',0),(41,'Lire les projets et taches (partagés ou dont je suis contact)','projet',1,'lire',NULL,'r',1),(42,'Creer/modifier les projets et taches (partagés ou dont je suis contact)','projet',1,'creer',NULL,'w',0),(44,'Supprimer les projets et taches (partagés ou dont je suis contact)','projet',1,'supprimer',NULL,'d',0),(45,'Exporter les projets','projet',1,'export',NULL,'d',0),(61,'Lire les fiches d\'intervention','ficheinter',1,'lire',NULL,'r',1),(62,'Creer/modifier les fiches d\'intervention','ficheinter',1,'creer',NULL,'w',0),(64,'Supprimer les fiches d\'intervention','ficheinter',1,'supprimer',NULL,'d',0),(67,'Exporter les fiches interventions','ficheinter',1,'export',NULL,'r',0),(68,'Envoyer les fiches d\'intervention par courriel','ficheinter',1,'ficheinter_advance','send','r',0),(71,'Read members\' card','adherent',1,'lire',NULL,'r',1),(72,'Create/modify members (need also user module permissions if member linked to a user)','adherent',1,'creer',NULL,'w',1),(74,'Remove members','adherent',1,'supprimer',NULL,'d',1),(75,'Setup types and attributes of members','adherent',1,'configurer',NULL,'w',1),(76,'Export members','adherent',1,'export',NULL,'r',0),(78,'Read subscriptions','adherent',1,'cotisation','lire','r',1),(79,'Create/modify/remove subscriptions','adherent',1,'cotisation','creer','w',1),(81,'Lire les commandes clients','commande',1,'lire',NULL,'r',1),(82,'Creer/modifier les commandes clients','commande',1,'creer',NULL,'w',0),(84,'Valider les commandes clients','commande',1,'order_advance','validate','d',0),(86,'Envoyer les commandes clients','commande',1,'order_advance','send','d',0),(87,'Cloturer les commandes clients','commande',1,'cloturer',NULL,'d',0),(88,'Annuler les commandes clients','commande',1,'order_advance','annuler','d',0),(89,'Supprimer les commandes clients','commande',1,'supprimer',NULL,'d',0),(91,'Lire les charges','tax',1,'charges','lire','r',1),(91,'Lire les charges','tax',2,'charges','lire','r',1),(92,'Creer/modifier les charges','tax',1,'charges','creer','w',0),(92,'Creer/modifier les charges','tax',2,'charges','creer','w',0),(93,'Supprimer les charges','tax',1,'charges','supprimer','d',0),(93,'Supprimer les charges','tax',2,'charges','supprimer','d',0),(94,'Exporter les charges','tax',1,'charges','export','r',0),(94,'Exporter les charges','tax',2,'charges','export','r',0),(95,'Lire CA, bilans, resultats','compta',1,'resultat','lire','r',1),(96,'Parametrer la ventilation','compta',1,'ventilation','parametrer','r',0),(97,'Lire les ventilations de factures','compta',1,'ventilation','lire','r',1),(98,'Ventiler les lignes de factures','compta',1,'ventilation','creer','r',0),(101,'Lire les expeditions','expedition',1,'lire',NULL,'r',1),(102,'Creer modifier les expeditions','expedition',1,'creer',NULL,'w',0),(104,'Valider les expeditions','expedition',1,'valider',NULL,'d',0),(105,'Envoyer les expeditions aux clients','expedition',1,'shipping_advance','send','d',0),(106,'Exporter les expeditions','expedition',1,'shipment','export','r',0),(109,'Supprimer les expeditions','expedition',1,'supprimer',NULL,'d',0),(111,'Lire les comptes bancaires','banque',1,'lire',NULL,'r',1),(111,'Lire les comptes bancaires','banque',2,'lire',NULL,'r',1),(112,'Creer/modifier montant/supprimer ecriture bancaire','banque',1,'modifier',NULL,'w',0),(112,'Creer/modifier montant/supprimer ecriture bancaire','banque',2,'modifier',NULL,'w',0),(113,'Configurer les comptes bancaires (creer, gerer categories)','banque',1,'configurer',NULL,'a',0),(113,'Configurer les comptes bancaires (creer, gerer categories)','banque',2,'configurer',NULL,'a',0),(114,'Rapprocher les ecritures bancaires','banque',1,'consolidate',NULL,'w',0),(114,'Rapprocher les ecritures bancaires','banque',2,'consolidate',NULL,'w',0),(115,'Exporter transactions et releves','banque',1,'export',NULL,'r',0),(115,'Exporter transactions et releves','banque',2,'export',NULL,'r',0),(116,'Virements entre comptes','banque',1,'transfer',NULL,'w',0),(116,'Virements entre comptes','banque',2,'transfer',NULL,'w',0),(117,'Gerer les envois de cheques','banque',1,'cheque',NULL,'w',0),(117,'Gerer les envois de cheques','banque',2,'cheque',NULL,'w',0),(121,'Lire les societes','societe',1,'lire',NULL,'r',1),(121,'Lire les societes','societe',2,'lire',NULL,'r',1),(122,'Creer modifier les societes','societe',1,'creer',NULL,'w',0),(122,'Creer modifier les societes','societe',2,'creer',NULL,'w',0),(125,'Supprimer les societes','societe',1,'supprimer',NULL,'d',0),(125,'Supprimer les societes','societe',2,'supprimer',NULL,'d',0),(126,'Exporter les societes','societe',1,'export',NULL,'r',0),(126,'Exporter les societes','societe',2,'export',NULL,'r',0),(141,'Lire tous les projets et taches (y compris prives qui ne me sont pas affectes)','projet',1,'all','lire','r',0),(142,'Creer/modifier tous les projets et taches (y compris prives qui ne me sont pas affectes)','projet',1,'all','creer','w',0),(144,'Supprimer tous les projets et taches (y compris prives qui ne me sont pas affectes)','projet',1,'all','supprimer','d',0),(151,'Read withdrawals','prelevement',1,'bons','lire','r',1),(152,'Create/modify a withdrawals','prelevement',1,'bons','creer','w',0),(153,'Send withdrawals to bank','prelevement',1,'bons','send','a',0),(154,'credit/refuse withdrawals','prelevement',1,'bons','credit','a',0),(161,'Lire les contrats','contrat',1,'lire',NULL,'r',1),(162,'Creer / modifier les contrats','contrat',1,'creer',NULL,'w',0),(163,'Activer un service d\'un contrat','contrat',1,'activer',NULL,'w',0),(164,'Desactiver un service d\'un contrat','contrat',1,'desactiver',NULL,'w',0),(165,'Supprimer un contrat','contrat',1,'supprimer',NULL,'d',0),(171,'Lire ses notes de frais et deplacements et celles de sa hierarchy','deplacement',1,'lire',NULL,'r',1),(172,'Creer/modifier une note de frais et deplacements','deplacement',1,'creer',NULL,'w',0),(173,'Supprimer les notes de frais et deplacements','deplacement',1,'supprimer',NULL,'d',0),(174,'Lire toutes les notes de frais','deplacement',1,'readall',NULL,'d',0),(178,'Exporter les notes de frais et deplacements','deplacement',1,'export',NULL,'d',0),(221,'Consulter les mailings','mailing',1,'lire',NULL,'r',1),(221,'Consulter les mailings','mailing',2,'lire',NULL,'r',1),(222,'Creer/modifier les mailings (sujet, destinataires...)','mailing',1,'creer',NULL,'w',1),(222,'Creer/modifier les mailings (sujet, destinataires...)','mailing',2,'creer',NULL,'w',0),(223,'Valider les mailings (permet leur envoi)','mailing',1,'valider',NULL,'w',0),(223,'Valider les mailings (permet leur envoi)','mailing',2,'valider',NULL,'w',0),(229,'Supprimer les mailings)','mailing',1,'supprimer',NULL,'d',1),(229,'Supprimer les mailings','mailing',2,'supprimer',NULL,'d',0),(237,'View recipients and info','mailing',1,'mailing_advance','recipient','r',0),(237,'View recipients and info','mailing',2,'mailing_advance','recipient','r',0),(238,'Manually send mailings','mailing',1,'mailing_advance','send','w',0),(238,'Manually send mailings','mailing',2,'mailing_advance','send','w',0),(239,'Delete mailings after validation and/or sent','mailing',1,'mailing_advance','delete','d',0),(239,'Delete mailings after validation and/or sent','mailing',2,'mailing_advance','delete','d',0),(241,'Lire les categories','categorie',1,'lire',NULL,'r',1),(242,'Creer/modifier les categories','categorie',1,'creer',NULL,'w',1),(243,'Supprimer les categories','categorie',1,'supprimer',NULL,'d',1),(251,'Consulter les autres utilisateurs','user',1,'user','lire','r',0),(252,'Consulter les permissions des autres utilisateurs','user',1,'user_advance','readperms','r',0),(253,'Creer/modifier utilisateurs internes et externes','user',1,'user','creer','w',0),(254,'Creer/modifier utilisateurs externes seulement','user',1,'user_advance','write','w',0),(255,'Modifier le mot de passe des autres utilisateurs','user',1,'user','password','w',0),(256,'Supprimer ou desactiver les autres utilisateurs','user',1,'user','supprimer','d',0),(262,'Consulter tous les tiers par utilisateurs internes (sinon uniquement si contact commercial). Non effectif pour utilisateurs externes (tjs limités à eux-meme).','societe',1,'client','voir','r',1),(262,'Consulter tous les tiers par utilisateurs internes (sinon uniquement si contact commercial). Non effectif pour utilisateurs externes (tjs limités à eux-meme).','societe',2,'client','voir','r',1),(281,'Lire les contacts','societe',1,'contact','lire','r',1),(281,'Lire les contacts','societe',2,'contact','lire','r',1),(282,'Creer modifier les contacts','societe',1,'contact','creer','w',0),(282,'Creer modifier les contacts','societe',2,'contact','creer','w',0),(283,'Supprimer les contacts','societe',1,'contact','supprimer','d',0),(283,'Supprimer les contacts','societe',2,'contact','supprimer','d',0),(286,'Exporter les contacts','societe',1,'contact','export','d',0),(286,'Exporter les contacts','societe',2,'contact','export','d',0),(300,'Read barcodes','barcode',1,'lire_advance',NULL,'r',1),(301,'Create/modify barcodes','barcode',1,'creer_advance',NULL,'w',0),(331,'Lire les bookmarks','bookmark',1,'lire',NULL,'r',1),(332,'Creer/modifier les bookmarks','bookmark',1,'creer',NULL,'r',0),(333,'Supprimer les bookmarks','bookmark',1,'supprimer',NULL,'r',0),(341,'Consulter ses propres permissions','user',1,'self_advance','readperms','r',1),(342,'Creer/modifier ses propres infos utilisateur','user',1,'self','creer','w',1),(343,'Modifier son propre mot de passe','user',1,'self','password','w',1),(344,'Modifier ses propres permissions','user',1,'self_advance','writeperms','w',1),(351,'Consulter les groupes','user',1,'group_advance','read','r',0),(352,'Consulter les permissions des groupes','user',1,'group_advance','readperms','r',0),(353,'Creer/modifier les groupes et leurs permissions','user',1,'group_advance','write','w',0),(354,'Supprimer ou desactiver les groupes','user',1,'group_advance','delete','d',0),(358,'Exporter les utilisateurs','user',1,'user','export','r',0),(531,'Lire les services','service',1,'lire',NULL,'r',1),(532,'Creer/modifier les services','service',1,'creer',NULL,'w',0),(534,'Supprimer les services','service',1,'supprimer',NULL,'d',0),(538,'Exporter les services','service',1,'export',NULL,'r',0),(700,'Lire les dons','don',1,'lire',NULL,'r',1),(701,'Creer/modifier les dons','don',1,'creer',NULL,'w',0),(701,'Lire les dons','don',2,'lire',NULL,'r',1),(702,'Supprimer les dons','don',1,'supprimer',NULL,'d',0),(702,'Creer/modifier les dons','don',2,'creer',NULL,'w',0),(703,'Supprimer les dons','don',1,'supprimer',NULL,'d',0),(703,'Supprimer les dons','don',2,'supprimer',NULL,'d',0),(1001,'Lire les stocks','stock',1,'lire',NULL,'r',1),(1002,'Creer/Modifier les stocks','stock',1,'creer',NULL,'w',1),(1003,'Supprimer les stocks','stock',1,'supprimer',NULL,'d',1),(1004,'Lire mouvements de stocks','stock',1,'mouvement','lire','r',1),(1005,'Creer/modifier mouvements de stocks','stock',1,'mouvement','creer','w',1),(1101,'Lire les bons de livraison','expedition',1,'livraison','lire','r',1),(1102,'Creer modifier les bons de livraison','expedition',1,'livraison','creer','w',0),(1104,'Valider les bons de livraison','expedition',1,'livraison','valider','d',0),(1109,'Supprimer les bons de livraison','expedition',1,'livraison','supprimer','d',0),(1181,'Consulter les fournisseurs','fournisseur',1,'lire',NULL,'r',1),(1182,'Consulter les commandes fournisseur','fournisseur',1,'commande','lire','r',1),(1183,'Creer une commande fournisseur','fournisseur',1,'commande','creer','w',0),(1184,'Valider une commande fournisseur','fournisseur',1,'supplier_order_advance','validate','w',0),(1185,'Approuver une commande fournisseur','fournisseur',1,'commande','approuver','w',0),(1186,'Commander une commande fournisseur','fournisseur',1,'commande','commander','w',0),(1187,'Receptionner une commande fournisseur','fournisseur',1,'commande','receptionner','d',0),(1188,'Supprimer une commande fournisseur','fournisseur',1,'commande','supprimer','d',0),(1189,'Check/Uncheck a supplier order reception','fournisseur',1,'commande_advance','check','w',0),(1201,'Lire les exports','export',1,'lire',NULL,'r',1),(1202,'Creer/modifier un export','export',1,'creer',NULL,'w',1),(1231,'Consulter les factures fournisseur','fournisseur',1,'facture','lire','r',1),(1232,'Creer une facture fournisseur','fournisseur',1,'facture','creer','w',0),(1233,'Valider une facture fournisseur','fournisseur',1,'supplier_invoice_advance','validate','w',0),(1234,'Supprimer une facture fournisseur','fournisseur',1,'facture','supprimer','d',0),(1235,'Envoyer les factures par mail','fournisseur',1,'supplier_invoice_advance','send','a',0),(1236,'Exporter les factures fournisseurs, attributs et reglements','fournisseur',1,'facture','export','r',0),(1237,'Exporter les commande fournisseurs, attributs','fournisseur',1,'commande','export','r',0),(1251,'Run mass imports of external data (data load)','import',1,'run',NULL,'r',0),(1321,'Exporter les factures clients, attributs et reglements','facture',1,'facture','export','r',0),(1321,'Exporter les factures clients, attributs et reglements','facture',2,'facture','export','r',0),(1421,'Exporter les commandes clients et attributs','commande',1,'commande','export','r',0),(2401,'Read actions/tasks linked to his account','agenda',1,'myactions','read','r',1),(2401,'Read actions/tasks linked to his account','agenda',2,'myactions','read','r',1),(2402,'Create/modify actions/tasks linked to his account','agenda',1,'myactions','create','w',0),(2402,'Create/modify actions/tasks linked to his account','agenda',2,'myactions','create','w',0),(2403,'Delete actions/tasks linked to his account','agenda',1,'myactions','delete','w',0),(2403,'Delete actions/tasks linked to his account','agenda',2,'myactions','delete','w',0),(2411,'Read actions/tasks of others','agenda',1,'allactions','read','r',0),(2411,'Read actions/tasks of others','agenda',2,'allactions','read','r',0),(2412,'Create/modify actions/tasks of others','agenda',1,'allactions','create','w',0),(2412,'Create/modify actions/tasks of others','agenda',2,'allactions','create','w',0),(2413,'Delete actions/tasks of others','agenda',1,'allactions','delete','w',0),(2413,'Delete actions/tasks of others','agenda',2,'allactions','delete','w',0),(2414,'Export actions/tasks of others','agenda',1,'export',NULL,'w',0),(2501,'Consulter/Télécharger les documents','ecm',1,'read',NULL,'r',1),(2503,'Soumettre ou supprimer des documents','ecm',1,'upload',NULL,'w',1),(2515,'Administrer les rubriques de documents','ecm',1,'setup',NULL,'w',1),(20001,'Read your own holidays','holiday',1,'read',NULL,'w',1),(20001,'Créer / Modifier / Lire ses demandes de congés payés','holiday',2,'write',NULL,'w',1),(20002,'Create/modify your own holidays','holiday',1,'write',NULL,'w',1),(20002,'Lire / Modifier toutes les demandes de congés payés','holiday',2,'lire_tous',NULL,'w',0),(20003,'Delete holidays','holiday',1,'delete',NULL,'w',0),(20003,'Supprimer des demandes de congés payés','holiday',2,'delete',NULL,'w',0),(20004,'Read holidays for everybody','holiday',1,'read_all',NULL,'w',0),(20004,'Définir les congés payés des utilisateurs','holiday',2,'define_holiday',NULL,'w',0),(20005,'Create/modify holidays for everybody','holiday',1,'write_all',NULL,'w',0),(20005,'Voir les logs de modification des congés payés','holiday',2,'view_log',NULL,'w',0),(20006,'Setup holidays of users (setup and update balance)','holiday',1,'define_holiday',NULL,'w',0),(20006,'Accéder au rapport mensuel des congés payés','holiday',2,'month_report',NULL,'w',0),(23001,'Read cron jobs','cron',1,'read',NULL,'w',1),(23002,'Create cron Jobs','cron',1,'create',NULL,'w',0),(23003,'Delete cron Jobs','cron',1,'delete',NULL,'w',0),(23004,'Execute cron Jobs','cron',1,'execute',NULL,'w',0),(50101,'Use point of sale','cashdesk',1,'use',NULL,'a',1),(55001,'Read surveys','opensurvey',1,'read',NULL,'r',0),(55002,'Create/modify surveys','opensurvey',1,'write',NULL,'w',0),(101250,'Read surveys','opensurvey',2,'survey','read','r',0),(101251,'Create/modify surveys','opensurvey',2,'survey','write','w',0),(400051,'Use POS','pos',2,'frontend',NULL,'a',1),(400052,'Use Backend','pos',2,'backend',NULL,'a',1),(400053,'Make Transfers','pos',2,'transfer',NULL,'a',1),(400055,'Stats','pos',2,'stats',NULL,'a',1); +INSERT INTO `llx_rights_def` VALUES (11,'Lire les factures','facture',1,'lire',NULL,'a',1),(11,'Lire les factures','facture',2,'lire',NULL,'a',1),(12,'Creer/modifier les factures','facture',1,'creer',NULL,'a',0),(12,'Creer/modifier les factures','facture',2,'creer',NULL,'a',0),(13,'Dévalider les factures','facture',1,'invoice_advance','unvalidate','a',0),(13,'Dévalider les factures','facture',2,'invoice_advance','unvalidate','a',0),(14,'Valider les factures','facture',1,'invoice_advance','validate','a',0),(14,'Valider les factures','facture',2,'valider',NULL,'a',0),(15,'Envoyer les factures par mail','facture',1,'invoice_advance','send','a',0),(15,'Envoyer les factures par mail','facture',2,'invoice_advance','send','a',0),(16,'Emettre des paiements sur les factures','facture',1,'paiement',NULL,'a',0),(16,'Emettre des paiements sur les factures','facture',2,'paiement',NULL,'a',0),(19,'Supprimer les factures','facture',1,'supprimer',NULL,'a',0),(19,'Supprimer les factures','facture',2,'supprimer',NULL,'a',0),(21,'Lire les propositions commerciales','propale',1,'lire',NULL,'r',1),(21,'Lire les propositions commerciales','propale',2,'lire',NULL,'r',1),(22,'Creer/modifier les propositions commerciales','propale',1,'creer',NULL,'w',0),(22,'Creer/modifier les propositions commerciales','propale',2,'creer',NULL,'w',0),(24,'Valider les propositions commerciales','propale',1,'valider',NULL,'d',0),(24,'Valider les propositions commerciales','propale',2,'valider',NULL,'d',0),(25,'Envoyer les propositions commerciales aux clients','propale',1,'propal_advance','send','d',0),(25,'Envoyer les propositions commerciales aux clients','propale',2,'propal_advance','send','d',0),(26,'Cloturer les propositions commerciales','propale',1,'cloturer',NULL,'d',0),(26,'Cloturer les propositions commerciales','propale',2,'cloturer',NULL,'d',0),(27,'Supprimer les propositions commerciales','propale',1,'supprimer',NULL,'d',0),(27,'Supprimer les propositions commerciales','propale',2,'supprimer',NULL,'d',0),(28,'Exporter les propositions commerciales et attributs','propale',1,'export',NULL,'r',0),(28,'Exporter les propositions commerciales et attributs','propale',2,'export',NULL,'r',0),(31,'Lire les produits','produit',1,'lire',NULL,'r',1),(31,'Lire les produits','produit',2,'lire',NULL,'r',1),(32,'Creer/modifier les produits','produit',1,'creer',NULL,'w',0),(32,'Creer/modifier les produits','produit',2,'creer',NULL,'w',0),(34,'Supprimer les produits','produit',1,'supprimer',NULL,'d',0),(34,'Supprimer les produits','produit',2,'supprimer',NULL,'d',0),(38,'Exporter les produits','produit',1,'export',NULL,'r',0),(38,'Exporter les produits','produit',2,'export',NULL,'r',0),(41,'Lire les projets et taches (partagés ou dont je suis contact)','projet',1,'lire',NULL,'r',1),(42,'Creer/modifier les projets et taches (partagés ou dont je suis contact)','projet',1,'creer',NULL,'w',0),(44,'Supprimer les projets et taches (partagés ou dont je suis contact)','projet',1,'supprimer',NULL,'d',0),(45,'Exporter les projets','projet',1,'export',NULL,'d',0),(61,'Lire les fiches d\'intervention','ficheinter',1,'lire',NULL,'r',1),(62,'Creer/modifier les fiches d\'intervention','ficheinter',1,'creer',NULL,'w',0),(64,'Supprimer les fiches d\'intervention','ficheinter',1,'supprimer',NULL,'d',0),(67,'Exporter les fiches interventions','ficheinter',1,'export',NULL,'r',0),(68,'Envoyer les fiches d\'intervention par courriel','ficheinter',1,'ficheinter_advance','send','r',0),(71,'Read members\' card','adherent',1,'lire',NULL,'r',1),(72,'Create/modify members (need also user module permissions if member linked to a user)','adherent',1,'creer',NULL,'w',1),(74,'Remove members','adherent',1,'supprimer',NULL,'d',1),(75,'Setup types and attributes of members','adherent',1,'configurer',NULL,'w',1),(76,'Export members','adherent',1,'export',NULL,'r',0),(78,'Read subscriptions','adherent',1,'cotisation','lire','r',1),(79,'Create/modify/remove subscriptions','adherent',1,'cotisation','creer','w',1),(81,'Lire les commandes clients','commande',1,'lire',NULL,'r',1),(82,'Creer/modifier les commandes clients','commande',1,'creer',NULL,'w',0),(84,'Valider les commandes clients','commande',1,'order_advance','validate','d',0),(86,'Envoyer les commandes clients','commande',1,'order_advance','send','d',0),(87,'Cloturer les commandes clients','commande',1,'cloturer',NULL,'d',0),(88,'Annuler les commandes clients','commande',1,'order_advance','annuler','d',0),(89,'Supprimer les commandes clients','commande',1,'supprimer',NULL,'d',0),(91,'Lire les charges','tax',1,'charges','lire','r',1),(91,'Lire les charges','tax',2,'charges','lire','r',1),(92,'Creer/modifier les charges','tax',1,'charges','creer','w',0),(92,'Creer/modifier les charges','tax',2,'charges','creer','w',0),(93,'Supprimer les charges','tax',1,'charges','supprimer','d',0),(93,'Supprimer les charges','tax',2,'charges','supprimer','d',0),(94,'Exporter les charges','tax',1,'charges','export','r',0),(94,'Exporter les charges','tax',2,'charges','export','r',0),(95,'Lire CA, bilans, resultats','compta',1,'resultat','lire','r',1),(96,'Parametrer la ventilation','compta',1,'ventilation','parametrer','r',0),(97,'Lire les ventilations de factures','compta',1,'ventilation','lire','r',1),(98,'Ventiler les lignes de factures','compta',1,'ventilation','creer','r',0),(101,'Lire les expeditions','expedition',1,'lire',NULL,'r',1),(102,'Creer modifier les expeditions','expedition',1,'creer',NULL,'w',0),(104,'Valider les expeditions','expedition',1,'valider',NULL,'d',0),(105,'Envoyer les expeditions aux clients','expedition',1,'shipping_advance','send','d',0),(106,'Exporter les expeditions','expedition',1,'shipment','export','r',0),(109,'Supprimer les expeditions','expedition',1,'supprimer',NULL,'d',0),(111,'Lire les comptes bancaires','banque',1,'lire',NULL,'r',1),(111,'Lire les comptes bancaires','banque',2,'lire',NULL,'r',1),(112,'Creer/modifier montant/supprimer ecriture bancaire','banque',1,'modifier',NULL,'w',0),(112,'Creer/modifier montant/supprimer ecriture bancaire','banque',2,'modifier',NULL,'w',0),(113,'Configurer les comptes bancaires (creer, gerer categories)','banque',1,'configurer',NULL,'a',0),(113,'Configurer les comptes bancaires (creer, gerer categories)','banque',2,'configurer',NULL,'a',0),(114,'Rapprocher les ecritures bancaires','banque',1,'consolidate',NULL,'w',0),(114,'Rapprocher les ecritures bancaires','banque',2,'consolidate',NULL,'w',0),(115,'Exporter transactions et releves','banque',1,'export',NULL,'r',0),(115,'Exporter transactions et releves','banque',2,'export',NULL,'r',0),(116,'Virements entre comptes','banque',1,'transfer',NULL,'w',0),(116,'Virements entre comptes','banque',2,'transfer',NULL,'w',0),(117,'Gerer les envois de cheques','banque',1,'cheque',NULL,'w',0),(117,'Gerer les envois de cheques','banque',2,'cheque',NULL,'w',0),(121,'Lire les societes','societe',1,'lire',NULL,'r',1),(121,'Lire les societes','societe',2,'lire',NULL,'r',1),(122,'Creer modifier les societes','societe',1,'creer',NULL,'w',0),(122,'Creer modifier les societes','societe',2,'creer',NULL,'w',0),(125,'Supprimer les societes','societe',1,'supprimer',NULL,'d',0),(125,'Supprimer les societes','societe',2,'supprimer',NULL,'d',0),(126,'Exporter les societes','societe',1,'export',NULL,'r',0),(126,'Exporter les societes','societe',2,'export',NULL,'r',0),(141,'Lire tous les projets et taches (y compris prives qui ne me sont pas affectes)','projet',1,'all','lire','r',0),(142,'Creer/modifier tous les projets et taches (y compris prives qui ne me sont pas affectes)','projet',1,'all','creer','w',0),(144,'Supprimer tous les projets et taches (y compris prives qui ne me sont pas affectes)','projet',1,'all','supprimer','d',0),(151,'Read withdrawals','prelevement',1,'bons','lire','r',1),(152,'Create/modify a withdrawals','prelevement',1,'bons','creer','w',0),(153,'Send withdrawals to bank','prelevement',1,'bons','send','a',0),(154,'credit/refuse withdrawals','prelevement',1,'bons','credit','a',0),(161,'Lire les contrats','contrat',1,'lire',NULL,'r',1),(162,'Creer / modifier les contrats','contrat',1,'creer',NULL,'w',0),(163,'Activer un service d\'un contrat','contrat',1,'activer',NULL,'w',0),(164,'Desactiver un service d\'un contrat','contrat',1,'desactiver',NULL,'w',0),(165,'Supprimer un contrat','contrat',1,'supprimer',NULL,'d',0),(167,'Export contracts','contrat',1,'export',NULL,'r',0),(171,'Lire ses notes de frais et deplacements et celles de sa hierarchy','deplacement',1,'lire',NULL,'r',1),(172,'Creer/modifier une note de frais et deplacements','deplacement',1,'creer',NULL,'w',0),(173,'Supprimer les notes de frais et deplacements','deplacement',1,'supprimer',NULL,'d',0),(174,'Lire toutes les notes de frais','deplacement',1,'readall',NULL,'d',0),(178,'Exporter les notes de frais et deplacements','deplacement',1,'export',NULL,'d',0),(221,'Consulter les mailings','mailing',1,'lire',NULL,'r',1),(221,'Consulter les mailings','mailing',2,'lire',NULL,'r',1),(222,'Creer/modifier les mailings (sujet, destinataires...)','mailing',1,'creer',NULL,'w',1),(222,'Creer/modifier les mailings (sujet, destinataires...)','mailing',2,'creer',NULL,'w',0),(223,'Valider les mailings (permet leur envoi)','mailing',1,'valider',NULL,'w',0),(223,'Valider les mailings (permet leur envoi)','mailing',2,'valider',NULL,'w',0),(229,'Supprimer les mailings)','mailing',1,'supprimer',NULL,'d',1),(229,'Supprimer les mailings','mailing',2,'supprimer',NULL,'d',0),(237,'View recipients and info','mailing',1,'mailing_advance','recipient','r',0),(237,'View recipients and info','mailing',2,'mailing_advance','recipient','r',0),(238,'Manually send mailings','mailing',1,'mailing_advance','send','w',0),(238,'Manually send mailings','mailing',2,'mailing_advance','send','w',0),(239,'Delete mailings after validation and/or sent','mailing',1,'mailing_advance','delete','d',0),(239,'Delete mailings after validation and/or sent','mailing',2,'mailing_advance','delete','d',0),(241,'Lire les categories','categorie',1,'lire',NULL,'r',1),(242,'Creer/modifier les categories','categorie',1,'creer',NULL,'w',1),(243,'Supprimer les categories','categorie',1,'supprimer',NULL,'d',1),(251,'Consulter les autres utilisateurs','user',1,'user','lire','r',0),(252,'Consulter les permissions des autres utilisateurs','user',1,'user_advance','readperms','r',0),(253,'Creer/modifier utilisateurs internes et externes','user',1,'user','creer','w',0),(254,'Creer/modifier utilisateurs externes seulement','user',1,'user_advance','write','w',0),(255,'Modifier le mot de passe des autres utilisateurs','user',1,'user','password','w',0),(256,'Supprimer ou desactiver les autres utilisateurs','user',1,'user','supprimer','d',0),(262,'Consulter tous les tiers par utilisateurs internes (sinon uniquement si contact commercial). Non effectif pour utilisateurs externes (tjs limités à eux-meme).','societe',1,'client','voir','r',1),(262,'Consulter tous les tiers par utilisateurs internes (sinon uniquement si contact commercial). Non effectif pour utilisateurs externes (tjs limités à eux-meme).','societe',2,'client','voir','r',1),(281,'Lire les contacts','societe',1,'contact','lire','r',1),(281,'Lire les contacts','societe',2,'contact','lire','r',1),(282,'Creer modifier les contacts','societe',1,'contact','creer','w',0),(282,'Creer modifier les contacts','societe',2,'contact','creer','w',0),(283,'Supprimer les contacts','societe',1,'contact','supprimer','d',0),(283,'Supprimer les contacts','societe',2,'contact','supprimer','d',0),(286,'Exporter les contacts','societe',1,'contact','export','d',0),(286,'Exporter les contacts','societe',2,'contact','export','d',0),(300,'Read barcodes','barcode',1,'lire_advance',NULL,'r',1),(301,'Create/modify barcodes','barcode',1,'creer_advance',NULL,'w',0),(331,'Lire les bookmarks','bookmark',1,'lire',NULL,'r',1),(332,'Creer/modifier les bookmarks','bookmark',1,'creer',NULL,'r',0),(333,'Supprimer les bookmarks','bookmark',1,'supprimer',NULL,'r',0),(341,'Consulter ses propres permissions','user',1,'self_advance','readperms','r',1),(342,'Creer/modifier ses propres infos utilisateur','user',1,'self','creer','w',1),(343,'Modifier son propre mot de passe','user',1,'self','password','w',1),(344,'Modifier ses propres permissions','user',1,'self_advance','writeperms','w',1),(351,'Consulter les groupes','user',1,'group_advance','read','r',0),(352,'Consulter les permissions des groupes','user',1,'group_advance','readperms','r',0),(353,'Creer/modifier les groupes et leurs permissions','user',1,'group_advance','write','w',0),(354,'Supprimer ou desactiver les groupes','user',1,'group_advance','delete','d',0),(358,'Exporter les utilisateurs','user',1,'user','export','r',0),(531,'Lire les services','service',1,'lire',NULL,'r',1),(532,'Creer/modifier les services','service',1,'creer',NULL,'w',0),(534,'Supprimer les services','service',1,'supprimer',NULL,'d',0),(538,'Exporter les services','service',1,'export',NULL,'r',0),(700,'Lire les dons','don',1,'lire',NULL,'r',1),(701,'Creer/modifier les dons','don',1,'creer',NULL,'w',0),(701,'Lire les dons','don',2,'lire',NULL,'r',1),(702,'Supprimer les dons','don',1,'supprimer',NULL,'d',0),(702,'Creer/modifier les dons','don',2,'creer',NULL,'w',0),(703,'Supprimer les dons','don',1,'supprimer',NULL,'d',0),(703,'Supprimer les dons','don',2,'supprimer',NULL,'d',0),(1001,'Lire les stocks','stock',1,'lire',NULL,'r',1),(1002,'Creer/Modifier les stocks','stock',1,'creer',NULL,'w',1),(1003,'Supprimer les stocks','stock',1,'supprimer',NULL,'d',1),(1004,'Lire mouvements de stocks','stock',1,'mouvement','lire','r',1),(1005,'Creer/modifier mouvements de stocks','stock',1,'mouvement','creer','w',1),(1101,'Lire les bons de livraison','expedition',1,'livraison','lire','r',1),(1102,'Creer modifier les bons de livraison','expedition',1,'livraison','creer','w',0),(1104,'Valider les bons de livraison','expedition',1,'livraison','valider','d',0),(1109,'Supprimer les bons de livraison','expedition',1,'livraison','supprimer','d',0),(1181,'Consulter les fournisseurs','fournisseur',1,'lire',NULL,'r',1),(1182,'Consulter les commandes fournisseur','fournisseur',1,'commande','lire','r',1),(1183,'Creer une commande fournisseur','fournisseur',1,'commande','creer','w',0),(1184,'Valider une commande fournisseur','fournisseur',1,'supplier_order_advance','validate','w',0),(1185,'Approuver une commande fournisseur','fournisseur',1,'commande','approuver','w',0),(1186,'Commander une commande fournisseur','fournisseur',1,'commande','commander','w',0),(1187,'Receptionner une commande fournisseur','fournisseur',1,'commande','receptionner','d',0),(1188,'Supprimer une commande fournisseur','fournisseur',1,'commande','supprimer','d',0),(1189,'Check/Uncheck a supplier order reception','fournisseur',1,'commande_advance','check','w',0),(1201,'Lire les exports','export',1,'lire',NULL,'r',1),(1202,'Creer/modifier un export','export',1,'creer',NULL,'w',1),(1231,'Consulter les factures fournisseur','fournisseur',1,'facture','lire','r',1),(1232,'Creer une facture fournisseur','fournisseur',1,'facture','creer','w',0),(1233,'Valider une facture fournisseur','fournisseur',1,'supplier_invoice_advance','validate','w',0),(1234,'Supprimer une facture fournisseur','fournisseur',1,'facture','supprimer','d',0),(1235,'Envoyer les factures par mail','fournisseur',1,'supplier_invoice_advance','send','a',0),(1236,'Exporter les factures fournisseurs, attributs et reglements','fournisseur',1,'facture','export','r',0),(1237,'Exporter les commande fournisseurs, attributs','fournisseur',1,'commande','export','r',0),(1251,'Run mass imports of external data (data load)','import',1,'run',NULL,'r',0),(1321,'Exporter les factures clients, attributs et reglements','facture',1,'facture','export','r',0),(1321,'Exporter les factures clients, attributs et reglements','facture',2,'facture','export','r',0),(1421,'Exporter les commandes clients et attributs','commande',1,'commande','export','r',0),(2401,'Read actions/tasks linked to his account','agenda',1,'myactions','read','r',1),(2401,'Read actions/tasks linked to his account','agenda',2,'myactions','read','r',1),(2402,'Create/modify actions/tasks linked to his account','agenda',1,'myactions','create','w',0),(2402,'Create/modify actions/tasks linked to his account','agenda',2,'myactions','create','w',0),(2403,'Delete actions/tasks linked to his account','agenda',1,'myactions','delete','w',0),(2403,'Delete actions/tasks linked to his account','agenda',2,'myactions','delete','w',0),(2411,'Read actions/tasks of others','agenda',1,'allactions','read','r',0),(2411,'Read actions/tasks of others','agenda',2,'allactions','read','r',0),(2412,'Create/modify actions/tasks of others','agenda',1,'allactions','create','w',0),(2412,'Create/modify actions/tasks of others','agenda',2,'allactions','create','w',0),(2413,'Delete actions/tasks of others','agenda',1,'allactions','delete','w',0),(2413,'Delete actions/tasks of others','agenda',2,'allactions','delete','w',0),(2414,'Export actions/tasks of others','agenda',1,'export',NULL,'w',0),(2501,'Consulter/Télécharger les documents','ecm',1,'read',NULL,'r',1),(2503,'Soumettre ou supprimer des documents','ecm',1,'upload',NULL,'w',1),(2515,'Administrer les rubriques de documents','ecm',1,'setup',NULL,'w',1),(20001,'Read your own holidays','holiday',1,'read',NULL,'w',1),(20001,'Créer / Modifier / Lire ses demandes de congés payés','holiday',2,'write',NULL,'w',1),(20002,'Create/modify your own holidays','holiday',1,'write',NULL,'w',1),(20002,'Lire / Modifier toutes les demandes de congés payés','holiday',2,'lire_tous',NULL,'w',0),(20003,'Delete holidays','holiday',1,'delete',NULL,'w',0),(20003,'Supprimer des demandes de congés payés','holiday',2,'delete',NULL,'w',0),(20004,'Read holidays for everybody','holiday',1,'read_all',NULL,'w',0),(20004,'Définir les congés payés des utilisateurs','holiday',2,'define_holiday',NULL,'w',0),(20005,'Create/modify holidays for everybody','holiday',1,'write_all',NULL,'w',0),(20005,'Voir les logs de modification des congés payés','holiday',2,'view_log',NULL,'w',0),(20006,'Setup holidays of users (setup and update balance)','holiday',1,'define_holiday',NULL,'w',0),(20006,'Accéder au rapport mensuel des congés payés','holiday',2,'month_report',NULL,'w',0),(23001,'Read cron jobs','cron',1,'read',NULL,'w',1),(23002,'Create cron Jobs','cron',1,'create',NULL,'w',0),(23003,'Delete cron Jobs','cron',1,'delete',NULL,'w',0),(23004,'Execute cron Jobs','cron',1,'execute',NULL,'w',0),(50101,'Use point of sale','cashdesk',1,'use',NULL,'a',1),(55001,'Read surveys','opensurvey',1,'read',NULL,'r',0),(55002,'Create/modify surveys','opensurvey',1,'write',NULL,'w',0),(101250,'Read surveys','opensurvey',2,'survey','read','r',0),(101251,'Create/modify surveys','opensurvey',2,'survey','write','w',0),(400051,'Use POS','pos',2,'frontend',NULL,'a',1),(400052,'Use Backend','pos',2,'backend',NULL,'a',1),(400053,'Make Transfers','pos',2,'transfer',NULL,'a',1),(400055,'Stats','pos',2,'stats',NULL,'a',1); /*!40000 ALTER TABLE `llx_rights_def` ENABLE KEYS */; UNLOCK TABLES; @@ -7762,7 +7762,7 @@ CREATE TABLE `llx_societe` ( LOCK TABLES `llx_societe` WRITE; /*!40000 ALTER TABLE `llx_societe` DISABLE KEYS */; -INSERT INTO `llx_societe` VALUES (1,0,NULL,'2012-12-19 14:47:50','2010-07-08 14:21:44','ABC and Co',1,NULL,NULL,'CU1212-0007','SU1212-0005','7050','6050','1 alalah road',NULL,'Delhi',0,4,NULL,NULL,NULL,NULL,NULL,NULL,4,NULL,'0','','','','','',5000,1,NULL,NULL,NULL,1,1,NULL,NULL,0,0,0,1,1,0,NULL,NULL,NULL,NULL,NULL,1,1,NULL,0,NULL,NULL,NULL,'en_IN',NULL,NULL,1,NULL,'','',0,NULL,NULL,NULL,NULL,NULL),(2,0,NULL,'2011-07-31 22:35:08','2010-07-08 14:23:48','Belin SARL',1,NULL,NULL,'CU1108-0001','SU1108-0001',NULL,NULL,'11 rue de la paix.','75000','Paris',0,117,NULL,NULL,'dolibarr.fr',NULL,NULL,NULL,3,NULL,'0','123456789','','ACE14','','',10000,0,NULL,NULL,NULL,3,1,NULL,NULL,0,0,0,1,1,0,NULL,NULL,NULL,NULL,NULL,1,NULL,NULL,NULL,NULL,NULL,NULL,'fr_FR',NULL,NULL,1,NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL),(3,0,NULL,'2010-07-08 20:42:12','2010-07-08 22:42:12','Spanish Comp',1,NULL,NULL,'SPANISHCOMP',NULL,NULL,NULL,'1 via mallere',NULL,'Madrid',123,4,NULL,NULL,NULL,NULL,NULL,3,4,408,'0','','','','','',10000,0,NULL,NULL,NULL,3,1,NULL,NULL,0,0,0,1,1,0,NULL,NULL,NULL,NULL,NULL,1,NULL,NULL,NULL,NULL,NULL,NULL,'es_AR',NULL,NULL,1,NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL),(4,0,NULL,'2013-03-03 23:09:48','2010-07-08 22:48:18','Prospector Vaalen',1,NULL,NULL,'CU1303-0014',NULL,NULL,NULL,'',NULL,'Bruxelles',103,2,NULL,NULL,NULL,NULL,NULL,3,4,201,'0','12345678','','','','',0,0,NULL,NULL,NULL,3,0,NULL,'PL_LOW',0,0,0,1,1,0,NULL,NULL,NULL,NULL,NULL,1,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'','',0,NULL,NULL,NULL,NULL,NULL),(5,0,NULL,'2010-07-08 21:37:56','2010-07-08 23:22:57','NoCountry Co',1,NULL,NULL,NULL,NULL,NULL,NULL,'',NULL,NULL,0,193,NULL,NULL,NULL,NULL,NULL,NULL,0,NULL,'0','','','','','',0,0,NULL,NULL,NULL,0,0,NULL,NULL,0,0,0,1,1,0,NULL,NULL,NULL,NULL,NULL,1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL),(6,0,NULL,'2010-07-08 22:25:06','2010-07-09 00:15:09','Swiss customer supplier',1,NULL,NULL,NULL,NULL,NULL,NULL,'',NULL,'Genevia',0,6,NULL,NULL,NULL,'abademail@aa.com',NULL,2,2,601,'0','','','','','',56000,0,NULL,NULL,NULL,3,1,NULL,NULL,0,0,0,1,1,0,NULL,NULL,NULL,NULL,NULL,1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL),(7,0,NULL,'2013-02-12 16:06:20','2010-07-09 01:24:26','Generic customer',1,NULL,NULL,'CU1302-0011',NULL,NULL,NULL,'',NULL,NULL,0,7,NULL,NULL,NULL,'ttt@ttt.com',NULL,NULL,8,NULL,'0','','','','','',0,0,'Generic customer to use for Point Of Sale module.
',NULL,NULL,1,0,NULL,NULL,0,0,0,1,1,0,NULL,NULL,NULL,NULL,NULL,1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'','',0,NULL,NULL,NULL,NULL,NULL),(10,0,NULL,'2012-12-08 16:38:30','2010-07-10 15:13:08','Smith Vick',1,NULL,NULL,'CU1212-0005',NULL,NULL,NULL,'',NULL,NULL,0,102,NULL,NULL,NULL,'vsmith@email.com',NULL,NULL,0,NULL,'0','','','','','',0,0,NULL,NULL,NULL,1,0,NULL,NULL,0,0,0,1,1,0,NULL,NULL,NULL,NULL,NULL,1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'','',0,NULL,NULL,NULL,NULL,NULL),(11,0,NULL,'2010-07-11 12:35:22','2010-07-10 18:35:57','Mon client',1,NULL,NULL,NULL,NULL,'7051',NULL,'',NULL,NULL,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0,NULL,'0','','','','','',0,0,NULL,NULL,NULL,3,0,NULL,'PL_LOW',0,0,0,1,1,0,NULL,NULL,NULL,NULL,NULL,1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL),(12,0,NULL,'2015-10-03 09:08:58','2010-07-11 16:18:08','Dupont Alain',1,NULL,NULL,NULL,NULL,NULL,NULL,'',NULL,NULL,0,1,NULL,NULL,NULL,'pcurie@example.com',NULL,NULL,0,NULL,'0','','','','','',0,0,NULL,NULL,NULL,1,0,NULL,NULL,0,0,0,1,1,0,NULL,NULL,NULL,NULL,NULL,1,NULL,0.000,NULL,0.000,NULL,NULL,NULL,NULL,NULL,1,NULL,'','',0,NULL,NULL,'',0,NULL),(13,0,NULL,'2010-07-11 15:13:20','2010-07-11 17:13:20','Vendeur de chips',1,NULL,NULL,NULL,NULL,NULL,NULL,'',NULL,NULL,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0,NULL,'0','','','','','',0,0,NULL,NULL,NULL,0,1,NULL,NULL,0,0,0,1,1,0,NULL,NULL,NULL,NULL,NULL,1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL),(17,0,NULL,'2015-10-03 10:12:11','2011-08-01 02:41:26','Book Keeping Company',1,NULL,NULL,'CU1108-0004','SU1108-0004',NULL,NULL,'The French Company',NULL,NULL,0,1,NULL,NULL,NULL,NULL,NULL,1,3,NULL,'0','','','','','',0,0,NULL,NULL,NULL,3,1,NULL,NULL,0,0,0,1,1,0,NULL,NULL,NULL,NULL,NULL,1,NULL,0.000,NULL,0.000,NULL,NULL,NULL,NULL,NULL,1,'bookkeepercompany.png','','',0,NULL,NULL,'',0,NULL),(19,0,NULL,'2014-03-02 19:09:52','2013-01-12 12:23:05','Magic Food Store',1,NULL,NULL,'CU1301-0008',NULL,NULL,NULL,'65 holdywood boulevard','123456','BigTown',0,4,NULL,'0101',NULL,'myemail@domain.com',NULL,NULL,0,NULL,'0','','','10/10/2010','','',0,0,NULL,NULL,NULL,1,0,NULL,NULL,0,0,0,1,1,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'en_US','patient@cabinetmed',NULL,1,NULL,'','',0,NULL,NULL,NULL,NULL,NULL),(25,0,NULL,'2015-10-03 09:21:44','2013-03-10 15:47:37','Print Company',1,NULL,NULL,'CU1303-0016','SU1303-0007',NULL,NULL,'21 Gutenberg street','45600','Berlin',0,5,NULL,NULL,NULL,'printcompany@example.com',NULL,NULL,0,NULL,'0','','','','','',0,0,NULL,NULL,NULL,0,1,NULL,NULL,0,0,0,1,1,0,NULL,NULL,NULL,NULL,NULL,1,NULL,0.000,NULL,0.000,NULL,NULL,'de_DE',NULL,NULL,1,'printcompany.png','','',0,NULL,NULL,'',0,NULL); +INSERT INTO `llx_societe` VALUES (1,0,NULL,'2012-12-19 14:47:50','2010-07-08 14:21:44','ABC and Co',1,NULL,NULL,'CU1212-0007','SU1212-0005','7050','6050','1 alalah road',NULL,'Delhi',0,4,NULL,NULL,NULL,NULL,NULL,NULL,4,NULL,'0','','','','','',5000,1,NULL,NULL,NULL,1,1,NULL,NULL,0,0,0,1,1,0,NULL,NULL,NULL,NULL,NULL,1,1,NULL,0,NULL,NULL,NULL,'en_IN',NULL,NULL,1,NULL,'','',0,NULL,NULL,NULL,NULL,NULL),(2,0,NULL,'2011-07-31 22:35:08','2010-07-08 14:23:48','Belin SARL',1,NULL,NULL,'CU1108-0001','SU1108-0001',NULL,NULL,'11 rue de la paix.','75000','Paris',0,117,NULL,NULL,'dolibarr.fr',NULL,NULL,NULL,3,NULL,'0','123456789','','ACE14','','',10000,0,NULL,NULL,NULL,3,1,NULL,NULL,0,0,0,1,1,0,NULL,NULL,NULL,NULL,NULL,1,NULL,NULL,NULL,NULL,NULL,NULL,'fr_FR',NULL,NULL,1,NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL),(3,0,NULL,'2010-07-08 20:42:12','2010-07-08 22:42:12','Spanish Comp',1,NULL,NULL,'SPANISHCOMP',NULL,NULL,NULL,'1 via mallere',NULL,'Madrid',123,4,NULL,NULL,NULL,NULL,NULL,3,4,408,'0','','','','','',10000,0,NULL,NULL,NULL,3,1,NULL,NULL,0,0,0,1,1,0,NULL,NULL,NULL,NULL,NULL,1,NULL,NULL,NULL,NULL,NULL,NULL,'es_AR',NULL,NULL,1,NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL),(4,0,NULL,'2013-03-03 23:09:48','2010-07-08 22:48:18','Prospector Vaalen',1,NULL,NULL,'CU1303-0014',NULL,NULL,NULL,'',NULL,'Bruxelles',103,2,NULL,NULL,NULL,NULL,NULL,3,4,201,'0','12345678','','','','',0,0,NULL,NULL,NULL,3,0,NULL,'PL_LOW',0,0,0,1,1,0,NULL,NULL,NULL,NULL,NULL,1,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'','',0,NULL,NULL,NULL,NULL,NULL),(5,0,NULL,'2010-07-08 21:37:56','2010-07-08 23:22:57','NoCountry Co',1,NULL,NULL,NULL,NULL,NULL,NULL,'',NULL,NULL,0,193,NULL,NULL,NULL,NULL,NULL,NULL,0,NULL,'0','','','','','',0,0,NULL,NULL,NULL,0,0,NULL,NULL,0,0,0,1,1,0,NULL,NULL,NULL,NULL,NULL,1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL),(6,0,NULL,'2010-07-08 22:25:06','2010-07-09 00:15:09','Swiss customer supplier',1,NULL,NULL,NULL,NULL,NULL,NULL,'',NULL,'Genevia',0,6,NULL,NULL,NULL,'abademail@aa.com',NULL,2,2,601,'0','','','','','',56000,0,NULL,NULL,NULL,3,1,NULL,NULL,0,0,0,1,1,0,NULL,NULL,NULL,NULL,NULL,1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL),(7,0,NULL,'2013-02-12 16:06:20','2010-07-09 01:24:26','Generic customer',1,NULL,NULL,'CU1302-0011',NULL,NULL,NULL,'',NULL,NULL,0,7,NULL,NULL,NULL,'ttt@ttt.com',NULL,NULL,8,NULL,'0','','','','','',0,0,'Generic customer to use for Point Of Sale module.
',NULL,NULL,1,0,NULL,NULL,0,0,0,1,1,0,NULL,NULL,NULL,NULL,NULL,1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'','',0,NULL,NULL,NULL,NULL,NULL),(10,0,NULL,'2012-12-08 16:38:30','2010-07-10 15:13:08','Smith Vick',1,NULL,NULL,'CU1212-0005',NULL,NULL,NULL,'',NULL,NULL,0,102,NULL,NULL,NULL,'vsmith@email.com',NULL,NULL,0,NULL,'0','','','','','',0,0,NULL,NULL,NULL,1,0,NULL,NULL,0,0,0,1,1,0,NULL,NULL,NULL,NULL,NULL,1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'','',0,NULL,NULL,NULL,NULL,NULL),(11,0,NULL,'2015-10-05 20:49:48','2010-07-10 18:35:57','Company Corp 1',1,NULL,NULL,'CU1510-0017',NULL,'7051',NULL,'',NULL,NULL,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0,NULL,'0','','','','','',0,0,NULL,NULL,NULL,3,0,NULL,'PL_LOW',0,0,0,1,11,0,NULL,NULL,NULL,NULL,NULL,1,NULL,0.000,NULL,0.000,NULL,NULL,NULL,NULL,NULL,1,NULL,'','',0,NULL,NULL,'',0,NULL),(12,0,NULL,'2015-10-05 19:57:57','2010-07-11 16:18:08','Dupont Alain',1,NULL,NULL,NULL,NULL,NULL,NULL,'',NULL,NULL,0,1,NULL,NULL,NULL,'pcurie@example.com',NULL,NULL,0,NULL,'0','','','','','',0,0,NULL,NULL,NULL,1,0,NULL,NULL,0,0,0,1,12,0,NULL,NULL,NULL,NULL,NULL,1,NULL,0.000,NULL,0.000,NULL,NULL,NULL,NULL,NULL,1,NULL,'','',0,NULL,NULL,'',0,NULL),(13,0,NULL,'2015-10-05 20:50:23','2010-07-11 17:13:20','Company Corp 2',1,NULL,NULL,NULL,'SU1510-0008',NULL,NULL,'',NULL,NULL,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0,NULL,'0','','','','','',0,0,NULL,NULL,NULL,0,1,NULL,NULL,0,0,0,1,11,0,NULL,NULL,NULL,NULL,NULL,1,NULL,0.000,NULL,0.000,NULL,NULL,NULL,NULL,NULL,1,NULL,'','',0,NULL,NULL,'',0,NULL),(17,0,NULL,'2015-10-03 10:12:11','2011-08-01 02:41:26','Book Keeping Company',1,NULL,NULL,'CU1108-0004','SU1108-0004',NULL,NULL,'The French Company',NULL,NULL,0,1,NULL,NULL,NULL,NULL,NULL,1,3,NULL,'0','','','','','',0,0,NULL,NULL,NULL,3,1,NULL,NULL,0,0,0,1,1,0,NULL,NULL,NULL,NULL,NULL,1,NULL,0.000,NULL,0.000,NULL,NULL,NULL,NULL,NULL,1,'bookkeepercompany.png','','',0,NULL,NULL,'',0,NULL),(19,0,NULL,'2014-03-02 19:09:52','2013-01-12 12:23:05','Magic Food Store',1,NULL,NULL,'CU1301-0008',NULL,NULL,NULL,'65 holdywood boulevard','123456','BigTown',0,4,NULL,'0101',NULL,'myemail@domain.com',NULL,NULL,0,NULL,'0','','','10/10/2010','','',0,0,NULL,NULL,NULL,1,0,NULL,NULL,0,0,0,1,1,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'en_US','patient@cabinetmed',NULL,1,NULL,'','',0,NULL,NULL,NULL,NULL,NULL),(25,0,NULL,'2015-10-03 09:21:44','2013-03-10 15:47:37','Print Company',1,NULL,NULL,'CU1303-0016','SU1303-0007',NULL,NULL,'21 Gutenberg street','45600','Berlin',0,5,NULL,NULL,NULL,'printcompany@example.com',NULL,NULL,0,NULL,'0','','','','','',0,0,NULL,NULL,NULL,0,1,NULL,NULL,0,0,0,1,1,0,NULL,NULL,NULL,NULL,NULL,1,NULL,0.000,NULL,0.000,NULL,NULL,'de_DE',NULL,NULL,1,'printcompany.png','','',0,NULL,NULL,'',0,NULL); /*!40000 ALTER TABLE `llx_societe` ENABLE KEYS */; UNLOCK TABLES; @@ -7815,7 +7815,7 @@ CREATE TABLE `llx_societe_commerciaux` ( `fk_user` int(11) DEFAULT NULL, PRIMARY KEY (`rowid`), UNIQUE KEY `uk_societe_commerciaux` (`fk_soc`,`fk_user`) -) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -7824,7 +7824,7 @@ CREATE TABLE `llx_societe_commerciaux` ( LOCK TABLES `llx_societe_commerciaux` WRITE; /*!40000 ALTER TABLE `llx_societe_commerciaux` DISABLE KEYS */; -INSERT INTO `llx_societe_commerciaux` VALUES (1,2,2),(2,3,2),(5,17,1),(6,19,1),(8,19,3); +INSERT INTO `llx_societe_commerciaux` VALUES (1,2,2),(2,3,2),(9,11,16),(10,13,17),(5,17,1),(6,19,1),(8,19,3); /*!40000 ALTER TABLE `llx_societe_commerciaux` ENABLE KEYS */; UNLOCK TABLES; @@ -7843,7 +7843,7 @@ CREATE TABLE `llx_societe_extrafields` ( `anotheraddedfield` varchar(15) DEFAULT NULL, PRIMARY KEY (`rowid`), UNIQUE KEY `uk_societe_extrafields` (`fk_object`) -) ENGINE=InnoDB AUTO_INCREMENT=55 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=59 DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -7852,7 +7852,7 @@ CREATE TABLE `llx_societe_extrafields` ( LOCK TABLES `llx_societe_extrafields` WRITE; /*!40000 ALTER TABLE `llx_societe_extrafields` DISABLE KEYS */; -INSERT INTO `llx_societe_extrafields` VALUES (1,'2011-06-22 16:23:01',40,NULL,NULL),(2,'2011-06-22 16:23:16',41,NULL,NULL),(4,'2011-06-23 07:40:40',39,NULL,NULL),(12,'2011-06-29 13:03:12',42,NULL,NULL),(14,'2011-07-02 01:24:03',57,NULL,NULL),(16,'2011-07-02 14:11:29',60,NULL,NULL),(17,'2011-07-18 10:26:55',35,NULL,NULL),(18,'2011-07-31 22:35:08',2,NULL,NULL),(28,'2012-12-08 16:38:30',10,NULL,NULL),(30,'2012-12-19 14:47:50',1,NULL,NULL),(33,'2013-02-12 16:06:20',7,NULL,NULL),(44,'2013-03-03 23:08:04',4,NULL,NULL),(49,'2014-03-02 19:09:52',19,NULL,NULL),(51,'2015-10-03 09:09:23',12,NULL,NULL),(53,'2015-10-03 09:21:44',25,NULL,NULL),(54,'2015-10-03 10:12:11',17,NULL,NULL); +INSERT INTO `llx_societe_extrafields` VALUES (1,'2011-06-22 16:23:01',40,NULL,NULL),(2,'2011-06-22 16:23:16',41,NULL,NULL),(4,'2011-06-23 07:40:40',39,NULL,NULL),(12,'2011-06-29 13:03:12',42,NULL,NULL),(14,'2011-07-02 01:24:03',57,NULL,NULL),(16,'2011-07-02 14:11:29',60,NULL,NULL),(17,'2011-07-18 10:26:55',35,NULL,NULL),(18,'2011-07-31 22:35:08',2,NULL,NULL),(28,'2012-12-08 16:38:30',10,NULL,NULL),(30,'2012-12-19 14:47:50',1,NULL,NULL),(33,'2013-02-12 16:06:20',7,NULL,NULL),(44,'2013-03-03 23:08:04',4,NULL,NULL),(49,'2014-03-02 19:09:52',19,NULL,NULL),(53,'2015-10-03 09:21:44',25,NULL,NULL),(54,'2015-10-03 10:12:11',17,NULL,NULL),(56,'2015-10-05 19:57:57',12,NULL,NULL),(57,'2015-10-05 20:49:48',11,NULL,NULL),(58,'2015-10-05 20:50:23',13,NULL,NULL); /*!40000 ALTER TABLE `llx_societe_extrafields` ENABLE KEYS */; UNLOCK TABLES; @@ -8069,7 +8069,7 @@ CREATE TABLE `llx_socpeople` ( KEY `idx_socpeople_fk_user_creat` (`fk_user_creat`), CONSTRAINT `fk_socpeople_fk_soc` FOREIGN KEY (`fk_soc`) REFERENCES `llx_societe` (`rowid`), CONSTRAINT `fk_socpeople_user_creat_user_rowid` FOREIGN KEY (`fk_user_creat`) REFERENCES `llx_user` (`rowid`) -) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -8078,7 +8078,7 @@ CREATE TABLE `llx_socpeople` ( LOCK TABLES `llx_socpeople` WRITE; /*!40000 ALTER TABLE `llx_socpeople` DISABLE KEYS */; -INSERT INTO `llx_socpeople` VALUES (1,'2010-07-08 14:26:14','2010-07-08 20:45:28',1,1,NULL,'MR','Samira','Aljoun','','','',297,117,'2010-07-08','Project leader','','','','','','',NULL,0,0,1,1,'Met during a congress at Dubai',NULL,NULL,NULL,NULL,1),(2,'2010-07-08 22:44:50','2010-07-08 20:59:57',NULL,1,NULL,'MR','Freeman','Public','','','',200,11,NULL,'','','','','','','',NULL,0,0,1,1,'A friend that is a free contact not linked to any company',NULL,NULL,NULL,NULL,1),(3,'2010-07-08 22:59:02','2015-10-03 09:39:51',NULL,1,NULL,'MR','Mywife','Nicy','','','',NULL,11,'1980-10-03','','','','','','','','',1,0,1,1,'This is a private contact','',NULL,NULL,NULL,1),(4,'2010-07-09 00:16:58','2010-07-08 22:16:58',6,1,NULL,'MR','Rotchield','Evan','','','',NULL,6,NULL,'Bank director','','','','','','',NULL,0,0,1,1,'The bank director',NULL,NULL,NULL,NULL,1),(6,'2011-08-01 02:41:26','2015-10-03 10:01:15',17,1,NULL,'','Bookkeeper','Alex','99 account street','123456','BigTown',NULL,4,NULL,'book keeper','','','','','','','',0,0,1,1,'','',NULL,NULL,NULL,1); +INSERT INTO `llx_socpeople` VALUES (1,'2010-07-08 14:26:14','2010-07-08 20:45:28',1,1,NULL,'MR','Samira','Aljoun','','','',297,117,'2010-07-08','Project leader','','','','','','',NULL,0,0,1,1,'Met during a congress at Dubai',NULL,NULL,NULL,NULL,1),(2,'2010-07-08 22:44:50','2010-07-08 20:59:57',NULL,1,NULL,'MR','Freeman','Public','','','',200,11,NULL,'','','','','','','',NULL,0,0,1,1,'A friend that is a free contact not linked to any company',NULL,NULL,NULL,NULL,1),(3,'2010-07-08 22:59:02','2015-10-03 09:39:51',NULL,1,NULL,'MR','Mywife','Nicy','','','',NULL,11,'1980-10-03','','','','','','','','',1,0,1,1,'This is a private contact','',NULL,NULL,NULL,1),(4,'2010-07-09 00:16:58','2010-07-08 22:16:58',6,1,NULL,'MR','Rotchield','Evan','','','',NULL,6,NULL,'Bank director','','','','','','',NULL,0,0,1,1,'The bank director',NULL,NULL,NULL,NULL,1),(6,'2011-08-01 02:41:26','2015-10-05 07:11:41',17,1,NULL,'','Bookkeeper','Bob','99 account street','123456','BigTown',NULL,4,NULL,'book keeper','','','','','','','',0,0,1,1,'','',NULL,NULL,NULL,1); /*!40000 ALTER TABLE `llx_socpeople` ENABLE KEYS */; UNLOCK TABLES; @@ -8282,7 +8282,7 @@ CREATE TABLE `llx_user` ( UNIQUE KEY `uk_user_fk_member` (`fk_member`), KEY `idx_user_api_key` (`api_key`), KEY `idx_user_fk_societe` (`fk_soc`) -) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=18 DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -8291,7 +8291,7 @@ CREATE TABLE `llx_user` ( LOCK TABLES `llx_user` WRITE; /*!40000 ALTER TABLE `llx_user` DISABLE KEYS */; -INSERT INTO `llx_user` VALUES (1,'2010-07-08 13:20:11','2015-10-03 09:43:40',NULL,NULL,'admin',0,NULL,NULL,NULL,'admindemo','c84258e9c39059a89ab77d846ddab909',NULL,NULL,'Einstein','Albert','President','','123456789','','','alexadmin@example.com','',1,'','','',1,1,NULL,NULL,NULL,'','2015-10-03 11:43:50','2014-12-21 20:52:09',NULL,'',1,'alberteinstein.jpg',NULL,NULL,NULL,NULL,'','','',NULL,NULL,'aaaaff','',NULL,0,0,NULL,NULL,NULL,NULL,'man'),(2,'2010-07-08 13:54:48','2015-10-03 09:07:36',NULL,NULL,'demo',1,NULL,NULL,NULL,'demo','fe01ce2a7fbac8fafaed7c982a04e229',NULL,NULL,'John','Doe','','','09123123','','','johndoe@mycompany.com','',0,'','','',1,1,NULL,NULL,NULL,'','2013-03-24 16:30:29','2010-07-08 14:12:02',NULL,'',1,'johndoe.png',NULL,NULL,1,NULL,'','','',NULL,NULL,'','',NULL,0,0,NULL,NULL,NULL,NULL,'man'),(3,'2010-07-11 16:18:59','2015-10-03 09:09:23',NULL,NULL,'pcurie',1,NULL,NULL,NULL,'pcuriedolibarr','ab335b4eb4c3c99334f656e5db9584c9',NULL,NULL,'Pierre','Curie','','','','','','pcurie@example.com','',0,'','','',1,1,NULL,NULL,2,'','2012-12-21 17:38:55',NULL,NULL,'',1,'pierrecurie.jpg',NULL,NULL,NULL,NULL,'','','',NULL,NULL,'','',NULL,0,0,NULL,NULL,NULL,NULL,NULL),(4,'2013-01-23 17:52:27','2015-10-03 10:01:39',NULL,NULL,'bookkeeper',1,NULL,NULL,NULL,'athestudent','9c98d27c557c6aabfb4125c0941037c8',NULL,NULL,'Bookkeeper','Alex','','','','','','','',0,'','','',1,1,17,6,NULL,'','2013-02-25 10:18:41','2013-01-23 17:53:20',NULL,'',1,NULL,NULL,NULL,NULL,NULL,'','','',NULL,NULL,'','',NULL,0,0,NULL,NULL,NULL,NULL,'man'),(6,'2013-02-16 20:22:40','2013-02-16 18:22:40',NULL,NULL,'aaab',2,NULL,NULL,NULL,'aaab','4c189b020ceb022e0ecc42482802e2b8',NULL,NULL,'aaab','','',NULL,'','','','','',0,'','','',1,1,NULL,NULL,NULL,'',NULL,NULL,NULL,'',1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,NULL,NULL,NULL,0,0,NULL,NULL,NULL,NULL,NULL),(7,'2013-02-16 20:48:15','2013-02-16 18:48:15',NULL,NULL,'zzz',2,NULL,NULL,NULL,'zzz','f3abb86bd34cf4d52698f14c0da1dc60',NULL,NULL,'zzz','','',NULL,'','','','','',0,'','','',1,1,NULL,NULL,NULL,'',NULL,NULL,NULL,'',1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,NULL,NULL,NULL,0,0,NULL,NULL,NULL,NULL,NULL),(9,'2013-02-16 20:50:07','2013-03-24 15:10:14',NULL,NULL,'zzzg',2,NULL,NULL,NULL,'jc28fg4h','93d789524fd223cf05eecea3f59cbe86',NULL,NULL,'zzzg','','',NULL,'','','','','fsdkkfsdf
\r\nfsdfsd
\r\nfsdfs',0,'','','',1,1,NULL,NULL,NULL,'',NULL,NULL,NULL,'',1,NULL,NULL,NULL,5,NULL,'','','',NULL,NULL,NULL,NULL,NULL,0,0,NULL,NULL,NULL,NULL,NULL),(10,'2015-10-03 11:47:41','2015-10-03 09:47:53',NULL,NULL,'mcurie',1,NULL,NULL,NULL,'mcuriedolibarr','c89846eb5971a43ff467b8a206732ebc',NULL,'t3mnkbhs','Curie','Marie','','','','','','','',0,NULL,NULL,NULL,1,1,NULL,NULL,NULL,'',NULL,NULL,NULL,'',1,'mariecurie.jpg',NULL,NULL,NULL,NULL,'','','',NULL,NULL,'ffaaff','',NULL,0,0,NULL,NULL,NULL,NULL,'woman'); +INSERT INTO `llx_user` VALUES (1,'2010-07-08 13:20:11','2015-10-05 20:07:36',NULL,NULL,'aeinstein',0,NULL,NULL,NULL,'aeinstein','11c9c772d6471aa24c27274bdd8a223b',NULL,NULL,'Einstein','Albert','','','123456789','','','aeinstein@example.com','',0,'','','',1,1,NULL,NULL,NULL,'','2015-10-05 08:32:44','2015-10-03 11:43:50',NULL,'',1,'alberteinstein.jpg',NULL,NULL,14,NULL,'','','',NULL,NULL,'aaaaff','',NULL,0,0,NULL,NULL,NULL,NULL,'man'),(2,'2010-07-08 13:54:48','2015-10-05 19:47:22',NULL,NULL,'demo',1,NULL,NULL,NULL,'demo','fe01ce2a7fbac8fafaed7c982a04e229',NULL,NULL,'Doe','David','','','09123123','','','daviddoe@mycompany.com','',0,'','','',1,1,NULL,NULL,NULL,'','2013-03-24 16:30:29','2010-07-08 14:12:02',NULL,'',1,'johndoe.png',NULL,NULL,11,NULL,'','','',NULL,NULL,'','',NULL,0,0,NULL,NULL,NULL,NULL,'man'),(3,'2010-07-11 16:18:59','2015-10-05 19:57:57',NULL,NULL,'pcurie',1,NULL,NULL,NULL,'pcuriedolibarr','ab335b4eb4c3c99334f656e5db9584c9',NULL,NULL,'Curie','Pierre','','','','','','pcurie@example.com','',0,'','','',1,1,NULL,NULL,2,'','2012-12-21 17:38:55',NULL,NULL,'',1,'pierrecurie.jpg',NULL,NULL,14,NULL,'','','',NULL,NULL,'','',NULL,0,0,NULL,NULL,NULL,NULL,NULL),(4,'2013-01-23 17:52:27','2015-10-05 20:08:34',NULL,NULL,'bbookkeeper',1,NULL,NULL,NULL,'bbookkeeper','a7d30b58d647fcf59b7163f9592b1dbb',NULL,NULL,'Bookkeeper','Bob','Bookkeeper','','','','','','',0,'','','',1,1,17,6,NULL,'','2013-02-25 10:18:41','2013-01-23 17:53:20',NULL,'',1,NULL,NULL,NULL,11,NULL,'','','',NULL,NULL,'','',NULL,0,0,NULL,NULL,NULL,NULL,'man'),(6,'2013-02-16 20:22:40','2013-02-16 18:22:40',NULL,NULL,'aaab',2,NULL,NULL,NULL,'aaab','4c189b020ceb022e0ecc42482802e2b8',NULL,NULL,'aaab','','',NULL,'','','','','',0,'','','',1,1,NULL,NULL,NULL,'',NULL,NULL,NULL,'',1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,NULL,NULL,NULL,0,0,NULL,NULL,NULL,NULL,NULL),(7,'2013-02-16 20:48:15','2013-02-16 18:48:15',NULL,NULL,'zzz',2,NULL,NULL,NULL,'zzz','f3abb86bd34cf4d52698f14c0da1dc60',NULL,NULL,'zzz','','',NULL,'','','','','',0,'','','',1,1,NULL,NULL,NULL,'',NULL,NULL,NULL,'',1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,NULL,NULL,NULL,0,0,NULL,NULL,NULL,NULL,NULL),(9,'2013-02-16 20:50:07','2013-03-24 15:10:14',NULL,NULL,'zzzg',2,NULL,NULL,NULL,'jc28fg4h','93d789524fd223cf05eecea3f59cbe86',NULL,NULL,'zzzg','','',NULL,'','','','','fsdkkfsdf
\r\nfsdfsd
\r\nfsdfs',0,'','','',1,1,NULL,NULL,NULL,'',NULL,NULL,NULL,'',1,NULL,NULL,NULL,5,NULL,'','','',NULL,NULL,NULL,NULL,NULL,0,0,NULL,NULL,NULL,NULL,NULL),(10,'2015-10-03 11:47:41','2015-10-05 20:07:18',NULL,NULL,'mcurie',1,NULL,NULL,NULL,'mcurie','11c9c772d6471aa24c27274bdd8a223b',NULL,'t3mnkbhs','Curie','Marie','','','','','','','',0,NULL,NULL,NULL,1,1,NULL,NULL,NULL,'',NULL,NULL,NULL,'',1,'mariecurie.jpg',NULL,NULL,14,NULL,'','','',NULL,NULL,'ffaaff','',NULL,0,0,NULL,NULL,NULL,NULL,'woman'),(11,'2015-10-05 09:07:52','2015-10-05 19:57:02',NULL,NULL,'zzeceo',1,NULL,NULL,NULL,'zzeceo','92af989c4c3a5140fb5d73eb77a52454',NULL,'cq78nf9m','Zeceo','Zack','President','','','','','','',0,NULL,NULL,NULL,1,1,NULL,NULL,NULL,'','2015-10-05 22:48:08','2015-10-05 21:18:46',NULL,'',1,NULL,NULL,NULL,NULL,NULL,'','','',NULL,NULL,'','',NULL,0,0,NULL,NULL,NULL,NULL,NULL),(12,'2015-10-05 09:09:46','2015-10-05 21:07:57',NULL,NULL,'admin',1,NULL,NULL,NULL,'admin2','21232f297a57a5a743894a0e4a801fc3',NULL,'nd6hgbcr','Adminson','Alice','Admin Technical','','','','','','',1,NULL,NULL,NULL,1,1,NULL,NULL,NULL,'','2015-11-04 16:17:06','2015-10-05 23:44:00',NULL,'',1,NULL,NULL,NULL,11,NULL,'','','',NULL,NULL,'','',NULL,0,0,NULL,NULL,NULL,NULL,'woman'),(13,'2015-10-05 21:29:35','2015-10-05 20:06:25',NULL,NULL,'ccommercy',1,NULL,NULL,NULL,'ccomercy','11c9c772d6471aa24c27274bdd8a223b',NULL,'y451ksdv','Commery','Charly','Commercial leader','','','','','','',0,NULL,NULL,NULL,1,1,NULL,NULL,NULL,'',NULL,NULL,NULL,'',1,NULL,NULL,NULL,11,NULL,'','','',NULL,NULL,'','',NULL,0,0,NULL,NULL,NULL,NULL,'man'),(14,'2015-10-05 21:33:33','2015-10-05 19:52:05',NULL,NULL,'sscientol',1,NULL,NULL,NULL,'sscientol','39bee07ac42f31c98e79cdcd5e5fe4c5',NULL,'s2hp8bxd','Scientol','Sam','Scientist leader','','','','','','',0,NULL,NULL,NULL,1,1,NULL,NULL,NULL,'',NULL,NULL,NULL,'',1,NULL,NULL,NULL,11,NULL,'','','',NULL,NULL,'','',NULL,0,0,NULL,NULL,NULL,NULL,NULL),(16,'2015-10-05 22:47:52','2015-10-05 21:12:28',NULL,NULL,'cc1',1,NULL,NULL,NULL,'cc1','d68005ccf362b82d084551b6291792a3',NULL,'cx9y1dk0','cc1','','Admin Technical','','','','','','',0,NULL,NULL,NULL,1,1,NULL,NULL,NULL,'','2015-10-05 23:46:24','2015-10-05 23:37:31',NULL,'',1,NULL,NULL,NULL,13,NULL,'','','',NULL,NULL,'','',NULL,0,0,NULL,NULL,NULL,NULL,NULL),(17,'2015-10-05 22:48:39','2015-10-05 20:48:39',NULL,NULL,'cc2',1,NULL,NULL,NULL,'cc2','a964065211872fb76f876c6c3e952ea3',NULL,'gw8cb7xj','cc2','','','','','','','','',0,NULL,NULL,NULL,1,1,NULL,NULL,NULL,'','2015-10-05 23:16:06',NULL,NULL,'',1,NULL,NULL,NULL,13,NULL,'','','',NULL,NULL,'','',NULL,0,0,NULL,NULL,NULL,NULL,NULL); /*!40000 ALTER TABLE `llx_user` ENABLE KEYS */; UNLOCK TABLES; @@ -8395,7 +8395,7 @@ CREATE TABLE `llx_user_param` ( LOCK TABLES `llx_user_param` WRITE; /*!40000 ALTER TABLE `llx_user_param` DISABLE KEYS */; -INSERT INTO `llx_user_param` VALUES (1,1,'MAIN_BOXES_0','1'),(1,1,'MAIN_THEME','eldy'),(1,3,'THEME_ELDY_ENABLE_PERSONALIZED','1'),(1,1,'THEME_ELDY_RGB','ded0ed'),(1,3,'THEME_ELDY_RGB','d0ddc3'); +INSERT INTO `llx_user_param` VALUES (1,1,'MAIN_BOXES_0','1'),(1,1,'MAIN_THEME','eldy'),(1,3,'THEME_ELDY_ENABLE_PERSONALIZED','1'),(1,1,'THEME_ELDY_RGB','ded0ed'),(1,3,'THEME_ELDY_RGB','d0ddc3'),(11,1,'MAIN_BOXES_0','1'); /*!40000 ALTER TABLE `llx_user_param` ENABLE KEYS */; UNLOCK TABLES; @@ -8413,7 +8413,7 @@ CREATE TABLE `llx_user_rights` ( PRIMARY KEY (`rowid`), UNIQUE KEY `uk_user_rights` (`fk_user`,`fk_id`), CONSTRAINT `fk_user_rights_fk_user_user` FOREIGN KEY (`fk_user`) REFERENCES `llx_user` (`rowid`) -) ENGINE=InnoDB AUTO_INCREMENT=12664 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=13306 DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -8422,7 +8422,7 @@ CREATE TABLE `llx_user_rights` ( LOCK TABLES `llx_user_rights` WRITE; /*!40000 ALTER TABLE `llx_user_rights` DISABLE KEYS */; -INSERT INTO `llx_user_rights` VALUES (12402,1,11),(12380,1,12),(12385,1,13),(12389,1,14),(12393,1,15),(12398,1,16),(12404,1,19),(9726,1,21),(9700,1,22),(9706,1,24),(9711,1,25),(9716,1,26),(9722,1,27),(9728,1,28),(9978,1,31),(9968,1,32),(9974,1,34),(1910,1,36),(9980,1,38),(11573,1,41),(11574,1,42),(11575,1,44),(11576,1,45),(7184,1,61),(7181,1,62),(7183,1,64),(7185,1,67),(7186,1,68),(1678,1,71),(1673,1,72),(1675,1,74),(1679,1,75),(1677,1,76),(1681,1,78),(1682,1,79),(12322,1,81),(12309,1,82),(12312,1,84),(12314,1,86),(12317,1,87),(12320,1,88),(12323,1,89),(11580,1,91),(11581,1,92),(11582,1,93),(11583,1,94),(10097,1,95),(10099,1,96),(10103,1,97),(10104,1,98),(7139,1,101),(7134,1,102),(7136,1,104),(7137,1,105),(7138,1,106),(7140,1,109),(10229,1,111),(10201,1,112),(10207,1,113),(10213,1,114),(10219,1,115),(10225,1,116),(10231,1,117),(12518,1,121),(12508,1,122),(12514,1,125),(12520,1,126),(11577,1,141),(11578,1,142),(11579,1,144),(2307,1,151),(2304,1,152),(2306,1,153),(2308,1,154),(10092,1,161),(10093,1,162),(10094,1,163),(10095,1,164),(10096,1,165),(1585,1,170),(12342,1,171),(12331,1,172),(12335,1,173),(12339,1,174),(12343,1,178),(10000,1,221),(9990,1,222),(9996,1,223),(10002,1,229),(10007,1,237),(10011,1,238),(10015,1,239),(1686,1,241),(1685,1,242),(1687,1,243),(12604,1,251),(12566,1,252),(12569,1,253),(12572,1,254),(12575,1,255),(12579,1,256),(1617,1,258),(12525,1,262),(12544,1,281),(12534,1,282),(12540,1,283),(12546,1,286),(12288,1,300),(12290,1,301),(11591,1,302),(1763,1,331),(1762,1,332),(1764,1,333),(12582,1,341),(12584,1,342),(12586,1,343),(12588,1,344),(12600,1,351),(12593,1,352),(12597,1,353),(12601,1,354),(12605,1,358),(12560,1,531),(12553,1,532),(12557,1,534),(1625,1,536),(12561,1,538),(12358,1,700),(12348,1,701),(12354,1,702),(12360,1,703),(1755,1,1001),(1754,1,1002),(1756,1,1003),(1758,1,1004),(1759,1,1005),(7146,1,1101),(7143,1,1102),(7145,1,1104),(7147,1,1109),(12412,1,1181),(12458,1,1182),(12417,1,1183),(12420,1,1184),(12423,1,1185),(12427,1,1186),(12431,1,1187),(12437,1,1188),(12434,1,1189),(1578,1,1201),(1579,1,1202),(12454,1,1231),(12443,1,1232),(12446,1,1233),(12449,1,1234),(12452,1,1235),(12455,1,1236),(12459,1,1237),(1736,1,1251),(12409,1,1321),(12326,1,1421),(8190,1,1791),(8187,1,1792),(8191,1,1793),(12264,1,2401),(12260,1,2402),(12266,1,2403),(12280,1,2411),(12276,1,2412),(12282,1,2413),(12286,1,2414),(1618,1,2500),(12370,1,2501),(12367,1,2503),(12371,1,2515),(9610,1,5001),(9611,1,5002),(12490,1,20001),(12468,1,20002),(12474,1,20003),(12480,1,20004),(12486,1,20005),(12492,1,20006),(12302,1,23001),(12295,1,23002),(12299,1,23003),(12303,1,23004),(7701,1,50101),(4984,1,50401),(4983,1,50402),(4985,1,50403),(4987,1,50411),(4988,1,50412),(4989,1,50415),(12498,1,55001),(12499,1,55002),(3564,1,100700),(3565,1,100701),(9596,1,101051),(9598,1,101052),(9600,1,101053),(9604,1,101060),(9605,1,101061),(7177,1,101201),(7178,1,101202),(10353,1,101250),(10355,1,101251),(8980,1,101261),(8981,1,101262),(7616,1,101331),(10030,1,101701),(10031,1,101702),(3582,1,102000),(3583,1,102001),(9819,1,400051),(9823,1,400052),(9827,1,400053),(9831,1,400055),(132,2,11),(133,2,12),(134,2,13),(135,2,14),(136,2,16),(137,2,19),(138,2,21),(139,2,22),(140,2,24),(141,2,25),(142,2,26),(143,2,27),(10359,2,31),(145,2,32),(10361,2,34),(146,2,36),(147,2,41),(148,2,42),(149,2,44),(150,2,61),(151,2,62),(152,2,64),(153,2,71),(154,2,72),(155,2,74),(156,2,75),(157,2,78),(158,2,79),(159,2,81),(160,2,82),(161,2,84),(162,2,86),(163,2,87),(164,2,88),(165,2,89),(166,2,91),(167,2,92),(168,2,93),(2475,2,95),(2476,2,96),(2477,2,97),(2478,2,98),(169,2,101),(170,2,102),(171,2,104),(172,2,109),(173,2,111),(174,2,112),(175,2,113),(176,2,114),(177,2,116),(178,2,117),(179,2,121),(180,2,122),(181,2,125),(182,2,141),(183,2,142),(184,2,144),(2479,2,151),(2480,2,152),(2481,2,153),(2482,2,154),(185,2,161),(186,2,162),(187,2,163),(188,2,164),(189,2,165),(190,2,170),(2471,2,171),(192,2,172),(2472,2,173),(193,2,221),(194,2,222),(195,2,229),(196,2,241),(197,2,242),(198,2,243),(199,2,251),(201,2,262),(202,2,281),(203,2,282),(204,2,283),(205,2,331),(2483,2,531),(207,2,532),(2484,2,534),(208,2,536),(2473,2,700),(210,2,701),(211,2,702),(2474,2,703),(212,2,1001),(213,2,1002),(214,2,1003),(215,2,1004),(216,2,1005),(217,2,1101),(218,2,1102),(219,2,1104),(220,2,1109),(221,2,1181),(222,2,1182),(223,2,1183),(224,2,1184),(225,2,1185),(226,2,1186),(227,2,1187),(228,2,1188),(229,2,1201),(230,2,1202),(231,2,1231),(232,2,1232),(233,2,1233),(234,2,1234),(235,2,1421),(236,2,2401),(237,2,2402),(238,2,2403),(239,2,2411),(240,2,2412),(241,2,2413),(242,2,2500),(2470,2,2501),(243,2,2515),(10363,2,20001),(10364,2,20002),(10365,2,20003),(10366,2,20004),(10367,2,20005),(10368,2,20006),(10362,2,50101),(10372,2,101250),(1807,3,11),(1808,3,31),(1809,3,36),(1810,3,41),(1811,3,61),(1812,3,71),(1813,3,72),(1814,3,74),(1815,3,75),(1816,3,78),(1817,3,79),(1818,3,91),(1819,3,95),(1820,3,97),(1821,3,111),(1822,3,121),(1823,3,122),(1824,3,125),(1825,3,161),(1826,3,170),(1827,3,171),(1828,3,172),(1829,3,221),(1830,3,222),(1831,3,229),(1832,3,241),(1833,3,242),(1834,3,243),(1835,3,251),(1836,3,255),(1837,3,256),(1838,3,262),(1839,3,281),(1840,3,282),(1841,3,283),(1842,3,331),(1843,3,531),(1844,3,536),(1845,3,700),(1846,3,1001),(1847,3,1002),(1848,3,1003),(1849,3,1004),(1850,3,1005),(1851,3,1181),(1852,3,1182),(1853,3,1201),(1854,3,1202),(1855,3,1231),(1856,3,2401),(1857,3,2402),(1858,3,2403),(1859,3,2411),(1860,3,2412),(1861,3,2413),(1862,3,2500),(1863,3,2515),(8026,4,11),(8027,4,21),(8028,4,31),(8029,4,41),(8030,4,61),(8031,4,71),(8032,4,72),(8033,4,74),(8034,4,75),(8035,4,78),(8036,4,79),(8037,4,81),(8038,4,91),(8039,4,95),(8040,4,97),(8041,4,101),(8042,4,111),(8043,4,121),(8044,4,151),(8045,4,161),(8046,4,171),(8047,4,221),(8048,4,222),(8049,4,229),(8050,4,241),(8051,4,242),(8052,4,243),(8146,4,251),(8147,4,253),(8053,4,262),(8054,4,281),(8055,4,331),(8056,4,341),(8057,4,342),(8058,4,343),(8059,4,344),(8060,4,531),(8061,4,700),(8062,4,1001),(8063,4,1002),(8064,4,1003),(8065,4,1004),(8066,4,1005),(8067,4,1101),(8068,4,1181),(8069,4,1182),(8070,4,1201),(8071,4,1202),(8072,4,1231),(8073,4,2401),(8074,4,2501),(8075,4,2503),(8076,4,2515),(8077,4,20001),(8078,4,50101),(8079,4,101201),(8080,4,101261),(8081,4,102000),(8082,4,400051),(8083,4,400052),(8084,4,400053),(8085,4,400055),(8194,6,11),(8195,6,21),(8196,6,31),(8197,6,41),(8198,6,61),(8199,6,71),(8200,6,72),(8201,6,74),(8202,6,75),(8203,6,78),(8204,6,79),(8205,6,81),(8206,6,91),(8207,6,95),(8208,6,97),(8209,6,101),(8210,6,111),(8211,6,121),(8212,6,151),(8213,6,161),(8214,6,171),(8215,6,221),(8216,6,222),(8217,6,229),(8218,6,241),(8219,6,242),(8220,6,243),(8221,6,262),(8222,6,281),(8223,6,331),(8224,6,341),(8225,6,342),(8226,6,343),(8227,6,344),(8228,6,531),(8229,6,700),(8230,6,1001),(8231,6,1002),(8232,6,1003),(8233,6,1004),(8234,6,1005),(8235,6,1101),(8236,6,1181),(8237,6,1182),(8238,6,1201),(8239,6,1202),(8240,6,1231),(8241,6,1791),(8242,6,2401),(8243,6,2501),(8244,6,2503),(8245,6,2515),(8246,6,5001),(8247,6,20001),(8248,6,50101),(8249,6,101201),(8250,6,101261),(8251,6,102000),(8252,6,400051),(8253,6,400052),(8254,6,400053),(8255,6,400055),(8256,7,11),(8257,7,21),(8258,7,31),(8259,7,41),(8260,7,61),(8261,7,71),(8262,7,72),(8263,7,74),(8264,7,75),(8265,7,78),(8266,7,79),(8267,7,81),(8268,7,91),(8269,7,95),(8270,7,97),(8271,7,101),(8272,7,111),(8273,7,121),(8274,7,151),(8275,7,161),(8276,7,171),(8277,7,221),(8278,7,222),(8279,7,229),(8280,7,241),(8281,7,242),(8282,7,243),(8283,7,262),(8284,7,281),(8285,7,331),(8286,7,341),(8287,7,342),(8288,7,343),(8289,7,344),(8290,7,531),(8291,7,700),(8292,7,1001),(8293,7,1002),(8294,7,1003),(8295,7,1004),(8296,7,1005),(8297,7,1101),(8298,7,1181),(8299,7,1182),(8300,7,1201),(8301,7,1202),(8302,7,1231),(8303,7,1791),(8304,7,2401),(8305,7,2501),(8306,7,2503),(8307,7,2515),(8308,7,5001),(8309,7,20001),(8310,7,50101),(8311,7,101201),(8312,7,101261),(8313,7,102000),(8314,7,400051),(8315,7,400052),(8316,7,400053),(8317,7,400055),(8318,9,11),(8319,9,21),(8320,9,31),(8321,9,41),(8322,9,61),(8323,9,71),(8324,9,72),(8325,9,74),(8326,9,75),(8327,9,78),(8328,9,79),(8329,9,81),(8330,9,91),(8331,9,95),(8332,9,97),(8333,9,101),(8334,9,111),(8335,9,121),(8336,9,151),(8337,9,161),(8338,9,171),(8339,9,221),(8340,9,222),(8341,9,229),(8342,9,241),(8343,9,242),(8344,9,243),(8345,9,262),(8346,9,281),(8347,9,331),(8348,9,341),(8349,9,342),(8350,9,343),(8351,9,344),(8352,9,531),(8353,9,700),(8354,9,1001),(8355,9,1002),(8356,9,1003),(8357,9,1004),(8358,9,1005),(8359,9,1101),(8360,9,1181),(8361,9,1182),(8362,9,1201),(8363,9,1202),(8364,9,1231),(8365,9,1791),(8366,9,2401),(8367,9,2501),(8368,9,2503),(8369,9,2515),(8370,9,5001),(8371,9,20001),(8372,9,50101),(8373,9,101201),(8374,9,101261),(8375,9,102000),(8376,9,400051),(8377,9,400052),(8378,9,400053),(8379,9,400055),(12608,10,11),(12609,10,21),(12610,10,31),(12611,10,41),(12612,10,61),(12613,10,71),(12614,10,72),(12615,10,74),(12616,10,75),(12617,10,78),(12618,10,79),(12619,10,81),(12620,10,91),(12621,10,95),(12622,10,97),(12623,10,101),(12624,10,111),(12625,10,121),(12626,10,151),(12627,10,161),(12628,10,171),(12629,10,221),(12630,10,222),(12631,10,229),(12632,10,241),(12633,10,242),(12634,10,243),(12635,10,262),(12636,10,281),(12637,10,300),(12638,10,331),(12639,10,341),(12640,10,342),(12641,10,343),(12642,10,344),(12643,10,531),(12644,10,700),(12645,10,1001),(12646,10,1002),(12647,10,1003),(12648,10,1004),(12649,10,1005),(12650,10,1101),(12651,10,1181),(12652,10,1182),(12653,10,1201),(12654,10,1202),(12655,10,1231),(12656,10,2401),(12657,10,2501),(12658,10,2503),(12659,10,2515),(12660,10,20001),(12661,10,20002),(12662,10,23001),(12663,10,50101); +INSERT INTO `llx_user_rights` VALUES (12402,1,11),(12380,1,12),(12385,1,13),(12389,1,14),(12393,1,15),(12398,1,16),(12404,1,19),(9726,1,21),(9700,1,22),(9706,1,24),(9711,1,25),(9716,1,26),(9722,1,27),(9728,1,28),(9978,1,31),(9968,1,32),(9974,1,34),(1910,1,36),(9980,1,38),(11573,1,41),(11574,1,42),(11575,1,44),(11576,1,45),(7184,1,61),(7181,1,62),(7183,1,64),(7185,1,67),(7186,1,68),(1678,1,71),(1673,1,72),(1675,1,74),(1679,1,75),(1677,1,76),(1681,1,78),(1682,1,79),(12322,1,81),(12309,1,82),(12312,1,84),(12314,1,86),(12317,1,87),(12320,1,88),(12323,1,89),(11580,1,91),(11581,1,92),(11582,1,93),(11583,1,94),(10097,1,95),(10099,1,96),(10103,1,97),(10104,1,98),(7139,1,101),(7134,1,102),(7136,1,104),(7137,1,105),(7138,1,106),(7140,1,109),(10229,1,111),(10201,1,112),(10207,1,113),(10213,1,114),(10219,1,115),(10225,1,116),(10231,1,117),(12518,1,121),(12508,1,122),(12514,1,125),(12520,1,126),(11577,1,141),(11578,1,142),(11579,1,144),(2307,1,151),(2304,1,152),(2306,1,153),(2308,1,154),(10092,1,161),(10093,1,162),(10094,1,163),(10095,1,164),(10096,1,165),(1585,1,170),(12342,1,171),(12331,1,172),(12335,1,173),(12339,1,174),(12343,1,178),(10000,1,221),(9990,1,222),(9996,1,223),(10002,1,229),(10007,1,237),(10011,1,238),(10015,1,239),(1686,1,241),(1685,1,242),(1687,1,243),(12604,1,251),(12566,1,252),(12569,1,253),(12572,1,254),(12575,1,255),(12579,1,256),(1617,1,258),(12525,1,262),(12544,1,281),(12534,1,282),(12540,1,283),(12546,1,286),(12288,1,300),(12290,1,301),(11591,1,302),(1763,1,331),(1762,1,332),(1764,1,333),(12582,1,341),(12584,1,342),(12586,1,343),(12588,1,344),(12600,1,351),(12593,1,352),(12597,1,353),(12601,1,354),(12605,1,358),(12560,1,531),(12553,1,532),(12557,1,534),(1625,1,536),(12561,1,538),(12358,1,700),(12348,1,701),(12354,1,702),(12360,1,703),(1755,1,1001),(1754,1,1002),(1756,1,1003),(1758,1,1004),(1759,1,1005),(7146,1,1101),(7143,1,1102),(7145,1,1104),(7147,1,1109),(12412,1,1181),(12458,1,1182),(12417,1,1183),(12420,1,1184),(12423,1,1185),(12427,1,1186),(12431,1,1187),(12437,1,1188),(12434,1,1189),(1578,1,1201),(1579,1,1202),(12454,1,1231),(12443,1,1232),(12446,1,1233),(12449,1,1234),(12452,1,1235),(12455,1,1236),(12459,1,1237),(1736,1,1251),(12409,1,1321),(12326,1,1421),(8190,1,1791),(8187,1,1792),(8191,1,1793),(12264,1,2401),(12260,1,2402),(12266,1,2403),(12280,1,2411),(12276,1,2412),(12282,1,2413),(12286,1,2414),(1618,1,2500),(12370,1,2501),(12367,1,2503),(12371,1,2515),(9610,1,5001),(9611,1,5002),(12490,1,20001),(12468,1,20002),(12474,1,20003),(12480,1,20004),(12486,1,20005),(12492,1,20006),(12302,1,23001),(12295,1,23002),(12299,1,23003),(12303,1,23004),(7701,1,50101),(4984,1,50401),(4983,1,50402),(4985,1,50403),(4987,1,50411),(4988,1,50412),(4989,1,50415),(12498,1,55001),(12499,1,55002),(3564,1,100700),(3565,1,100701),(9596,1,101051),(9598,1,101052),(9600,1,101053),(9604,1,101060),(9605,1,101061),(7177,1,101201),(7178,1,101202),(10353,1,101250),(10355,1,101251),(8980,1,101261),(8981,1,101262),(7616,1,101331),(10030,1,101701),(10031,1,101702),(3582,1,102000),(3583,1,102001),(9819,1,400051),(9823,1,400052),(9827,1,400053),(9831,1,400055),(132,2,11),(133,2,12),(134,2,13),(135,2,14),(136,2,16),(137,2,19),(138,2,21),(139,2,22),(140,2,24),(141,2,25),(142,2,26),(143,2,27),(10359,2,31),(145,2,32),(10361,2,34),(146,2,36),(147,2,41),(148,2,42),(149,2,44),(150,2,61),(151,2,62),(152,2,64),(153,2,71),(154,2,72),(155,2,74),(156,2,75),(157,2,78),(158,2,79),(159,2,81),(160,2,82),(161,2,84),(162,2,86),(163,2,87),(164,2,88),(165,2,89),(166,2,91),(167,2,92),(168,2,93),(2475,2,95),(2476,2,96),(2477,2,97),(2478,2,98),(169,2,101),(170,2,102),(171,2,104),(172,2,109),(173,2,111),(174,2,112),(175,2,113),(176,2,114),(177,2,116),(178,2,117),(179,2,121),(180,2,122),(181,2,125),(182,2,141),(183,2,142),(184,2,144),(2479,2,151),(2480,2,152),(2481,2,153),(2482,2,154),(185,2,161),(186,2,162),(187,2,163),(188,2,164),(189,2,165),(190,2,170),(2471,2,171),(192,2,172),(2472,2,173),(193,2,221),(194,2,222),(195,2,229),(196,2,241),(197,2,242),(198,2,243),(199,2,251),(201,2,262),(202,2,281),(203,2,282),(204,2,283),(205,2,331),(2483,2,531),(207,2,532),(2484,2,534),(208,2,536),(2473,2,700),(210,2,701),(211,2,702),(2474,2,703),(212,2,1001),(213,2,1002),(214,2,1003),(215,2,1004),(216,2,1005),(217,2,1101),(218,2,1102),(219,2,1104),(220,2,1109),(221,2,1181),(222,2,1182),(223,2,1183),(224,2,1184),(225,2,1185),(226,2,1186),(227,2,1187),(228,2,1188),(229,2,1201),(230,2,1202),(231,2,1231),(232,2,1232),(233,2,1233),(234,2,1234),(235,2,1421),(236,2,2401),(237,2,2402),(238,2,2403),(239,2,2411),(240,2,2412),(241,2,2413),(242,2,2500),(2470,2,2501),(243,2,2515),(10363,2,20001),(10364,2,20002),(10365,2,20003),(10366,2,20004),(10367,2,20005),(10368,2,20006),(10362,2,50101),(10372,2,101250),(1807,3,11),(1808,3,31),(1809,3,36),(1810,3,41),(1811,3,61),(1812,3,71),(1813,3,72),(1814,3,74),(1815,3,75),(1816,3,78),(1817,3,79),(1818,3,91),(1819,3,95),(1820,3,97),(1821,3,111),(1822,3,121),(1823,3,122),(1824,3,125),(1825,3,161),(1826,3,170),(1827,3,171),(1828,3,172),(1829,3,221),(1830,3,222),(1831,3,229),(1832,3,241),(1833,3,242),(1834,3,243),(1835,3,251),(1836,3,255),(1837,3,256),(1838,3,262),(1839,3,281),(1840,3,282),(1841,3,283),(1842,3,331),(1843,3,531),(1844,3,536),(1845,3,700),(1846,3,1001),(1847,3,1002),(1848,3,1003),(1849,3,1004),(1850,3,1005),(1851,3,1181),(1852,3,1182),(1853,3,1201),(1854,3,1202),(1855,3,1231),(1856,3,2401),(1857,3,2402),(1858,3,2403),(1859,3,2411),(1860,3,2412),(1861,3,2413),(1862,3,2500),(1863,3,2515),(8026,4,11),(8027,4,21),(8028,4,31),(8029,4,41),(8030,4,61),(8031,4,71),(8032,4,72),(8033,4,74),(8034,4,75),(8035,4,78),(8036,4,79),(8037,4,81),(8038,4,91),(8039,4,95),(8040,4,97),(8041,4,101),(8042,4,111),(8043,4,121),(8044,4,151),(8045,4,161),(8046,4,171),(8047,4,221),(8048,4,222),(8049,4,229),(8050,4,241),(8051,4,242),(8052,4,243),(8146,4,251),(8147,4,253),(8053,4,262),(8054,4,281),(8055,4,331),(8056,4,341),(8057,4,342),(8058,4,343),(8059,4,344),(8060,4,531),(8061,4,700),(8062,4,1001),(8063,4,1002),(8064,4,1003),(8065,4,1004),(8066,4,1005),(8067,4,1101),(8068,4,1181),(8069,4,1182),(8070,4,1201),(8071,4,1202),(8072,4,1231),(8073,4,2401),(8074,4,2501),(8075,4,2503),(8076,4,2515),(8077,4,20001),(8078,4,50101),(8079,4,101201),(8080,4,101261),(8081,4,102000),(8082,4,400051),(8083,4,400052),(8084,4,400053),(8085,4,400055),(8194,6,11),(8195,6,21),(8196,6,31),(8197,6,41),(8198,6,61),(8199,6,71),(8200,6,72),(8201,6,74),(8202,6,75),(8203,6,78),(8204,6,79),(8205,6,81),(8206,6,91),(8207,6,95),(8208,6,97),(8209,6,101),(8210,6,111),(8211,6,121),(8212,6,151),(8213,6,161),(8214,6,171),(8215,6,221),(8216,6,222),(8217,6,229),(8218,6,241),(8219,6,242),(8220,6,243),(8221,6,262),(8222,6,281),(8223,6,331),(8224,6,341),(8225,6,342),(8226,6,343),(8227,6,344),(8228,6,531),(8229,6,700),(8230,6,1001),(8231,6,1002),(8232,6,1003),(8233,6,1004),(8234,6,1005),(8235,6,1101),(8236,6,1181),(8237,6,1182),(8238,6,1201),(8239,6,1202),(8240,6,1231),(8241,6,1791),(8242,6,2401),(8243,6,2501),(8244,6,2503),(8245,6,2515),(8246,6,5001),(8247,6,20001),(8248,6,50101),(8249,6,101201),(8250,6,101261),(8251,6,102000),(8252,6,400051),(8253,6,400052),(8254,6,400053),(8255,6,400055),(8256,7,11),(8257,7,21),(8258,7,31),(8259,7,41),(8260,7,61),(8261,7,71),(8262,7,72),(8263,7,74),(8264,7,75),(8265,7,78),(8266,7,79),(8267,7,81),(8268,7,91),(8269,7,95),(8270,7,97),(8271,7,101),(8272,7,111),(8273,7,121),(8274,7,151),(8275,7,161),(8276,7,171),(8277,7,221),(8278,7,222),(8279,7,229),(8280,7,241),(8281,7,242),(8282,7,243),(8283,7,262),(8284,7,281),(8285,7,331),(8286,7,341),(8287,7,342),(8288,7,343),(8289,7,344),(8290,7,531),(8291,7,700),(8292,7,1001),(8293,7,1002),(8294,7,1003),(8295,7,1004),(8296,7,1005),(8297,7,1101),(8298,7,1181),(8299,7,1182),(8300,7,1201),(8301,7,1202),(8302,7,1231),(8303,7,1791),(8304,7,2401),(8305,7,2501),(8306,7,2503),(8307,7,2515),(8308,7,5001),(8309,7,20001),(8310,7,50101),(8311,7,101201),(8312,7,101261),(8313,7,102000),(8314,7,400051),(8315,7,400052),(8316,7,400053),(8317,7,400055),(8318,9,11),(8319,9,21),(8320,9,31),(8321,9,41),(8322,9,61),(8323,9,71),(8324,9,72),(8325,9,74),(8326,9,75),(8327,9,78),(8328,9,79),(8329,9,81),(8330,9,91),(8331,9,95),(8332,9,97),(8333,9,101),(8334,9,111),(8335,9,121),(8336,9,151),(8337,9,161),(8338,9,171),(8339,9,221),(8340,9,222),(8341,9,229),(8342,9,241),(8343,9,242),(8344,9,243),(8345,9,262),(8346,9,281),(8347,9,331),(8348,9,341),(8349,9,342),(8350,9,343),(8351,9,344),(8352,9,531),(8353,9,700),(8354,9,1001),(8355,9,1002),(8356,9,1003),(8357,9,1004),(8358,9,1005),(8359,9,1101),(8360,9,1181),(8361,9,1182),(8362,9,1201),(8363,9,1202),(8364,9,1231),(8365,9,1791),(8366,9,2401),(8367,9,2501),(8368,9,2503),(8369,9,2515),(8370,9,5001),(8371,9,20001),(8372,9,50101),(8373,9,101201),(8374,9,101261),(8375,9,102000),(8376,9,400051),(8377,9,400052),(8378,9,400053),(8379,9,400055),(12608,10,11),(12609,10,21),(12610,10,31),(12611,10,41),(12612,10,61),(12613,10,71),(12614,10,72),(12615,10,74),(12616,10,75),(12617,10,78),(12618,10,79),(12619,10,81),(12620,10,91),(12621,10,95),(12622,10,97),(12623,10,101),(12624,10,111),(12625,10,121),(12626,10,151),(12627,10,161),(12628,10,171),(12629,10,221),(12630,10,222),(12631,10,229),(12632,10,241),(12633,10,242),(12634,10,243),(12635,10,262),(12636,10,281),(12637,10,300),(12638,10,331),(12639,10,341),(12640,10,342),(12641,10,343),(12642,10,344),(12643,10,531),(12644,10,700),(12645,10,1001),(12646,10,1002),(12647,10,1003),(12648,10,1004),(12649,10,1005),(12650,10,1101),(12651,10,1181),(12652,10,1182),(12653,10,1201),(12654,10,1202),(12655,10,1231),(12656,10,2401),(12657,10,2501),(12658,10,2503),(12659,10,2515),(12660,10,20001),(12661,10,20002),(12662,10,23001),(12663,10,50101),(12664,11,11),(12665,11,21),(12666,11,31),(12667,11,41),(12668,11,61),(12669,11,71),(12670,11,72),(12671,11,74),(12672,11,75),(12673,11,78),(12674,11,79),(12675,11,81),(12676,11,91),(12677,11,95),(12678,11,97),(12679,11,101),(12680,11,111),(12681,11,121),(12682,11,151),(12683,11,161),(12684,11,171),(12685,11,221),(12686,11,222),(12687,11,229),(12688,11,241),(12689,11,242),(12690,11,243),(12691,11,262),(12692,11,281),(12693,11,300),(12694,11,331),(12695,11,341),(12696,11,342),(12697,11,343),(12698,11,344),(12699,11,531),(12700,11,700),(12701,11,1001),(12702,11,1002),(12703,11,1003),(12704,11,1004),(12705,11,1005),(12706,11,1101),(12707,11,1181),(12708,11,1182),(12709,11,1201),(12710,11,1202),(12711,11,1231),(12712,11,2401),(12713,11,2501),(12714,11,2503),(12715,11,2515),(12716,11,20001),(12717,11,20002),(12718,11,23001),(12719,11,50101),(13203,12,11),(13193,12,12),(13195,12,13),(13197,12,14),(13199,12,15),(13202,12,16),(13205,12,19),(12721,12,21),(12722,12,31),(12723,12,41),(12724,12,61),(12725,12,71),(12726,12,72),(12727,12,74),(12728,12,75),(12729,12,78),(12730,12,79),(13163,12,81),(13157,12,82),(13158,12,84),(13159,12,86),(13161,12,87),(13162,12,88),(13164,12,89),(12732,12,91),(12733,12,95),(12734,12,97),(12735,12,101),(12736,12,111),(13261,12,121),(13257,12,122),(13260,12,125),(13263,12,126),(12738,12,151),(12739,12,161),(13173,12,171),(13168,12,172),(13170,12,173),(13172,12,174),(13174,12,178),(12741,12,221),(12742,12,222),(12743,12,229),(12744,12,241),(12745,12,242),(12746,12,243),(13304,12,251),(13285,12,252),(13287,12,253),(13288,12,254),(13290,12,255),(13292,12,256),(13265,12,262),(13274,12,281),(13270,12,282),(13273,12,283),(13276,12,286),(13146,12,300),(13147,12,301),(12750,12,331),(13293,12,341),(13294,12,342),(13295,12,343),(13296,12,344),(13302,12,351),(13299,12,352),(13301,12,353),(13303,12,354),(13305,12,358),(13282,12,531),(13279,12,532),(13281,12,534),(13283,12,538),(13181,12,700),(13177,12,701),(13180,12,702),(13183,12,703),(12757,12,1001),(12758,12,1002),(12759,12,1003),(12760,12,1004),(12761,12,1005),(12762,12,1101),(13208,12,1181),(13231,12,1182),(13211,12,1183),(13212,12,1184),(13214,12,1185),(13216,12,1186),(13218,12,1187),(13221,12,1188),(13219,12,1189),(12765,12,1201),(12766,12,1202),(13229,12,1231),(13224,12,1232),(13225,12,1233),(13227,12,1234),(13228,12,1235),(13230,12,1236),(13232,12,1237),(13207,12,1321),(13165,12,1421),(13134,12,2401),(13133,12,2402),(13136,12,2403),(13142,12,2411),(13141,12,2412),(13144,12,2413),(13145,12,2414),(13187,12,2501),(13186,12,2503),(13188,12,2515),(13247,12,20001),(13237,12,20002),(13240,12,20003),(13243,12,20004),(13246,12,20005),(13249,12,20006),(13153,12,23001),(13150,12,23002),(13152,12,23003),(13154,12,23004),(12775,12,50101),(13251,12,55001),(13252,12,55002),(12776,13,11),(12777,13,21),(12778,13,31),(12779,13,41),(12780,13,61),(12781,13,71),(12782,13,72),(12783,13,74),(12784,13,75),(12785,13,78),(12786,13,79),(12787,13,81),(12788,13,91),(12789,13,95),(12790,13,97),(12791,13,101),(12792,13,111),(12793,13,121),(12794,13,151),(12795,13,161),(12796,13,171),(12797,13,221),(12798,13,222),(12799,13,229),(12800,13,241),(12801,13,242),(12802,13,243),(12803,13,262),(12804,13,281),(12805,13,300),(12806,13,331),(12807,13,341),(12808,13,342),(12809,13,343),(12810,13,344),(12811,13,531),(12812,13,700),(12813,13,1001),(12814,13,1002),(12815,13,1003),(12816,13,1004),(12817,13,1005),(12818,13,1101),(12819,13,1181),(12820,13,1182),(12821,13,1201),(12822,13,1202),(12823,13,1231),(12824,13,2401),(12825,13,2501),(12826,13,2503),(12827,13,2515),(12828,13,20001),(12829,13,20002),(12830,13,23001),(12831,13,50101),(12832,14,11),(12833,14,21),(12834,14,31),(12835,14,41),(12836,14,61),(12837,14,71),(12838,14,72),(12839,14,74),(12840,14,75),(12841,14,78),(12842,14,79),(12843,14,81),(12844,14,91),(12845,14,95),(12846,14,97),(12847,14,101),(12848,14,111),(12849,14,121),(12850,14,151),(12851,14,161),(12852,14,171),(12853,14,221),(12854,14,222),(12855,14,229),(12856,14,241),(12857,14,242),(12858,14,243),(12859,14,262),(12860,14,281),(12861,14,300),(12862,14,331),(12863,14,341),(12864,14,342),(12865,14,343),(12866,14,344),(12867,14,531),(12868,14,700),(12869,14,1001),(12870,14,1002),(12871,14,1003),(12872,14,1004),(12873,14,1005),(12874,14,1101),(12875,14,1181),(12876,14,1182),(12877,14,1201),(12878,14,1202),(12879,14,1231),(12880,14,2401),(12881,14,2501),(12882,14,2503),(12883,14,2515),(12884,14,20001),(12885,14,20002),(12886,14,23001),(12887,14,50101),(12944,16,11),(12945,16,21),(12946,16,31),(13056,16,41),(13057,16,42),(13058,16,44),(13059,16,45),(12948,16,61),(12949,16,71),(12950,16,72),(12951,16,74),(12952,16,75),(12953,16,78),(12954,16,79),(12955,16,81),(12956,16,91),(12957,16,95),(12958,16,97),(12959,16,101),(12960,16,111),(12961,16,121),(13060,16,141),(13061,16,142),(13062,16,144),(12962,16,151),(12963,16,161),(12964,16,171),(12965,16,221),(12966,16,222),(12967,16,229),(12968,16,241),(12969,16,242),(12970,16,243),(13128,16,251),(13064,16,262),(12972,16,281),(12973,16,300),(12974,16,331),(12975,16,341),(12976,16,342),(12977,16,343),(12978,16,344),(12979,16,531),(12980,16,700),(12981,16,1001),(12982,16,1002),(12983,16,1003),(12984,16,1004),(12985,16,1005),(12986,16,1101),(12987,16,1181),(12988,16,1182),(12989,16,1201),(12990,16,1202),(12991,16,1231),(12992,16,2401),(12993,16,2501),(12994,16,2503),(12995,16,2515),(12996,16,20001),(12997,16,20002),(12998,16,23001),(12999,16,50101),(13000,17,11),(13001,17,21),(13002,17,31),(13065,17,41),(13066,17,42),(13067,17,44),(13068,17,45),(13004,17,61),(13005,17,71),(13006,17,72),(13007,17,74),(13008,17,75),(13009,17,78),(13010,17,79),(13011,17,81),(13012,17,91),(13013,17,95),(13014,17,97),(13015,17,101),(13016,17,111),(13017,17,121),(13069,17,141),(13070,17,142),(13071,17,144),(13018,17,151),(13019,17,161),(13020,17,171),(13021,17,221),(13022,17,222),(13023,17,229),(13024,17,241),(13025,17,242),(13026,17,243),(13028,17,281),(13029,17,300),(13030,17,331),(13031,17,341),(13032,17,342),(13033,17,343),(13034,17,344),(13035,17,531),(13036,17,700),(13037,17,1001),(13038,17,1002),(13039,17,1003),(13040,17,1004),(13041,17,1005),(13042,17,1101),(13043,17,1181),(13044,17,1182),(13045,17,1201),(13046,17,1202),(13047,17,1231),(13048,17,2401),(13049,17,2501),(13050,17,2503),(13051,17,2515),(13052,17,20001),(13053,17,20002),(13054,17,23001),(13055,17,50101); /*!40000 ALTER TABLE `llx_user_rights` ENABLE KEYS */; UNLOCK TABLES; @@ -8442,7 +8442,7 @@ CREATE TABLE `llx_usergroup` ( `note` text, PRIMARY KEY (`rowid`), UNIQUE KEY `uk_usergroup_name` (`nom`,`entity`) -) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -8451,7 +8451,7 @@ CREATE TABLE `llx_usergroup` ( LOCK TABLES `llx_usergroup` WRITE; /*!40000 ALTER TABLE `llx_usergroup` DISABLE KEYS */; -INSERT INTO `llx_usergroup` VALUES (1,'Sale representatives',1,'2013-01-16 20:48:08','2015-10-03 09:44:44','All sales representative users'),(2,'Management',1,'2015-10-03 11:46:25','2015-10-03 09:46:25',''),(3,'Scientists',1,'2015-10-03 11:46:46','2015-10-03 09:46:46',''); +INSERT INTO `llx_usergroup` VALUES (1,'Sale representatives',1,'2013-01-16 20:48:08','2015-10-03 09:44:44','All sales representative users'),(2,'Management',1,'2015-10-03 11:46:25','2015-10-03 09:46:25',''),(3,'Scientists',1,'2015-10-03 11:46:46','2015-10-03 09:46:46',''),(4,'Commercial',1,'2015-10-05 21:30:13','2015-10-05 19:30:13',''); /*!40000 ALTER TABLE `llx_usergroup` ENABLE KEYS */; UNLOCK TABLES; @@ -8495,7 +8495,7 @@ CREATE TABLE `llx_usergroup_rights` ( PRIMARY KEY (`rowid`), UNIQUE KEY `fk_usergroup` (`fk_usergroup`,`fk_id`), CONSTRAINT `fk_usergroup_rights_fk_usergroup` FOREIGN KEY (`fk_usergroup`) REFERENCES `llx_usergroup` (`rowid`) -) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=200 DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -8504,7 +8504,7 @@ CREATE TABLE `llx_usergroup_rights` ( LOCK TABLES `llx_usergroup_rights` WRITE; /*!40000 ALTER TABLE `llx_usergroup_rights` DISABLE KEYS */; -INSERT INTO `llx_usergroup_rights` VALUES (1,1,2401),(2,1,2402),(3,1,2403),(4,1,2411),(5,1,2412),(6,1,2413); +INSERT INTO `llx_usergroup_rights` VALUES (1,1,2401),(2,1,2402),(3,1,2403),(4,1,2411),(5,1,2412),(6,1,2413),(78,2,11),(79,2,12),(80,2,13),(81,2,14),(82,2,15),(83,2,16),(84,2,19),(144,2,21),(145,2,22),(146,2,24),(147,2,25),(148,2,26),(149,2,27),(150,2,28),(133,2,31),(134,2,32),(135,2,34),(136,2,38),(137,2,41),(138,2,42),(139,2,44),(140,2,45),(86,2,61),(87,2,62),(88,2,64),(89,2,67),(90,2,68),(7,2,71),(8,2,72),(9,2,74),(10,2,75),(11,2,76),(12,2,78),(13,2,79),(32,2,81),(33,2,82),(34,2,84),(35,2,86),(36,2,87),(37,2,88),(38,2,89),(173,2,91),(174,2,92),(175,2,93),(176,2,94),(40,2,95),(41,2,96),(42,2,97),(43,2,98),(66,2,101),(67,2,102),(68,2,104),(69,2,105),(70,2,106),(71,2,109),(21,2,111),(22,2,112),(23,2,113),(24,2,114),(25,2,115),(26,2,116),(27,2,117),(164,2,121),(165,2,122),(166,2,125),(167,2,126),(141,2,141),(142,2,142),(143,2,144),(129,2,151),(130,2,152),(131,2,153),(132,2,154),(44,2,161),(45,2,162),(46,2,163),(47,2,164),(48,2,165),(49,2,167),(54,2,171),(55,2,172),(56,2,173),(57,2,174),(58,2,178),(120,2,221),(121,2,222),(122,2,223),(123,2,229),(124,2,237),(125,2,238),(126,2,239),(29,2,241),(30,2,242),(31,2,243),(182,2,251),(183,2,252),(184,2,253),(185,2,254),(186,2,255),(187,2,256),(168,2,262),(169,2,281),(170,2,282),(171,2,283),(172,2,286),(197,2,331),(198,2,332),(199,2,333),(188,2,341),(189,2,342),(190,2,343),(191,2,344),(192,2,351),(193,2,352),(194,2,353),(195,2,354),(196,2,358),(151,2,531),(152,2,532),(153,2,534),(154,2,538),(59,2,700),(60,2,701),(61,2,702),(62,2,703),(177,2,1001),(178,2,1002),(179,2,1003),(180,2,1004),(181,2,1005),(72,2,1101),(73,2,1102),(74,2,1104),(75,2,1109),(91,2,1181),(92,2,1182),(93,2,1183),(94,2,1184),(95,2,1185),(96,2,1186),(97,2,1187),(98,2,1188),(99,2,1189),(76,2,1201),(77,2,1202),(100,2,1231),(101,2,1232),(102,2,1233),(103,2,1234),(104,2,1235),(105,2,1236),(106,2,1237),(113,2,1251),(85,2,1321),(39,2,1421),(14,2,2401),(15,2,2402),(16,2,2403),(17,2,2411),(18,2,2412),(19,2,2413),(20,2,2414),(63,2,2501),(64,2,2503),(65,2,2515),(114,2,20001),(115,2,20002),(116,2,20003),(117,2,20004),(118,2,20005),(119,2,20006),(50,2,23001),(51,2,23002),(52,2,23003),(53,2,23004),(28,2,50101),(127,2,55001),(128,2,55002); /*!40000 ALTER TABLE `llx_usergroup_rights` ENABLE KEYS */; UNLOCK TABLES; @@ -8526,7 +8526,7 @@ CREATE TABLE `llx_usergroup_user` ( KEY `fk_usergroup_user_fk_usergroup` (`fk_usergroup`), CONSTRAINT `fk_usergroup_user_fk_user` FOREIGN KEY (`fk_user`) REFERENCES `llx_user` (`rowid`), CONSTRAINT `fk_usergroup_user_fk_usergroup` FOREIGN KEY (`fk_usergroup`) REFERENCES `llx_usergroup` (`rowid`) -) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8; +) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -8535,7 +8535,7 @@ CREATE TABLE `llx_usergroup_user` ( LOCK TABLES `llx_usergroup_user` WRITE; /*!40000 ALTER TABLE `llx_usergroup_user` DISABLE KEYS */; -INSERT INTO `llx_usergroup_user` VALUES (1,1,1,1),(2,1,1,3),(3,1,3,3); +INSERT INTO `llx_usergroup_user` VALUES (2,1,1,3),(3,1,3,3),(4,1,11,2),(5,1,13,4),(6,1,16,1),(7,1,17,1); /*!40000 ALTER TABLE `llx_usergroup_user` ENABLE KEYS */; UNLOCK TABLES; /*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; @@ -8548,4 +8548,4 @@ UNLOCK TABLES; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; --- Dump completed on 2015-10-03 13:00:02 +-- Dump completed on 2015-11-04 16:19:25 diff --git a/dev/initdata/sftpget_and_loaddump.php b/dev/initdata/sftpget_and_loaddump.php index c91ddcc3e17..72a33cf197c 100755 --- a/dev/initdata/sftpget_and_loaddump.php +++ b/dev/initdata/sftpget_and_loaddump.php @@ -15,6 +15,8 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . * or see http://www.gnu.org/ + * + * Get a distant dump file and load it into a mysql database */ $sapi_type = php_sapi_name(); @@ -32,9 +34,10 @@ $error=0; $sourceserver=isset($argv[1])?$argv[1]:''; // user@server:/src/file $password=isset($argv[2])?$argv[2]:''; -$database=isset($argv[3])?$argv[3]:''; -$loginbase=isset($argv[4])?$argv[4]:''; -$passwordbase=isset($argv[5])?$argv[5]:''; +$dataserver=isset($argv[3])?$argv[3]:''; +$database=isset($argv[4])?$argv[4]:''; +$loginbase=isset($argv[5])?$argv[5]:''; +$passwordbase=isset($argv[6])?$argv[6]:''; // Include Dolibarr environment $res=0; @@ -64,7 +67,7 @@ if (preg_match('/^(.*)@(.*):(.*)$/',$sourceserver,$reg)) } if (empty($sourceserver) || empty($server) || empty($login) || empty($sourcefile) || empty($password) || empty($database) || empty($loginbase) || empty($passwordbase)) { - print "Usage: $script_file login@server:/src/file.(sql|gz|bz2) passssh database loginbase passbase\n"; + print "Usage: $script_file login@server:/src/file.(sql|gz|bz2) passssh databaseserver databasename loginbase passbase\n"; print "Return code: 0 if success, <>0 if error\n"; print "Warning, this script may take a long time.\n"; exit(-1); @@ -108,14 +111,14 @@ if ($connection) print 'Get file '.$sourcefile.' into '.$targetdir.$targetfile."\n"; ssh2_scp_recv($connection, $sourcefile, $targetdir.$targetfile); - $fullcommand="cat ".$targetdir.$targetfile." | mysql -u".$loginbase." -p".$passwordbase." -D ".$database; + $fullcommand="cat ".$targetdir.$targetfile." | mysql -h".$databaseserver." -u".$loginbase." -p".$passwordbase." -D ".$database; if (preg_match('/\.bz2$/',$targetfile)) { - $fullcommand="bzip2 -c -d ".$targetdir.$targetfile." | mysql -u".$loginbase." -p".$passwordbase." -D ".$database; + $fullcommand="bzip2 -c -d ".$targetdir.$targetfile." | mysql -h".$databaseserver." -u".$loginbase." -p".$passwordbase." -D ".$database; } if (preg_match('/\.gz$/',$targetfile)) { - $fullcommand="gzip -d ".$targetdir.$targetfile." | mysql -u".$loginbase." -p".$passwordbase." -D ".$database; + $fullcommand="gzip -d ".$targetdir.$targetfile." | mysql -h".$databaseserver." -u".$loginbase." -p".$passwordbase." -D ".$database; } print "Load dump with ".$fullcommand."\n"; $output=array(); diff --git a/dev/skeletons/build_class_from_table.php b/dev/skeletons/build_class_from_table.php index f4f25c84391..803a6c8b8f5 100755 --- a/dev/skeletons/build_class_from_table.php +++ b/dev/skeletons/build_class_from_table.php @@ -450,186 +450,225 @@ else $error++; -//-------------------------------- -// Build skeleton_script.php -//-------------------------------- +//-------------------------------------------------------------------- +// Build skeleton_script.php, skeleton_list.php and skeleton_card.php +//-------------------------------------------------------------------- -// Read skeleton_script.php file -$skeletonfile=$path.'skeleton_script.php'; -$sourcecontent=file_get_contents($skeletonfile); -if (! $sourcecontent) +$skeletonfiles=array( + $path.'skeleton_script.php' => 'out.'.$classmin.'_script.php', + $path.'skeleton_list.php' => 'out.'.$classmin.'_list.php', + $path.'skeleton_card.php' => 'out.'.$classmin.'_card.php' + ); + +foreach ($skeletonfiles as $skeletonfile => $outfile) { - print "\n"; - print "Error: Failed to read skeleton sample '".$skeletonfile."'\n"; - print "Try to run script from skeletons directory.\n"; - exit; + $sourcecontent=file_get_contents($skeletonfile); + if (! $sourcecontent) + { + print "\n"; + print "Error: Failed to read skeleton sample '".$skeletonfile."'\n"; + print "Try to run script from skeletons directory.\n"; + exit; + } + + // Define output variables + $targetcontent=$sourcecontent; + + // Substitute module name + $targetcontent=preg_replace('/dev\/skeletons/', $module, $targetcontent); + $targetcontent=preg_replace('/mymodule othermodule1 othermodule2/', $module, $targetcontent); + $targetcontent=preg_replace('/mymodule/', $module, $targetcontent); + + // Substitute class name + $targetcontent=preg_replace('/skeleton_class\.class\.php/', $classmin.'.class.php', $targetcontent); + $targetcontent=preg_replace('/skeleton_script\.php/', $classmin.'_script.php', $targetcontent); + $targetcontent=preg_replace('/\$element = \'skeleton\'/', '\$element=\''.$classmin.'\'', $targetcontent); + $targetcontent=preg_replace('/\$table_element = \'skeleton\'/', '\$table_element=\''.$classmin.'\'', $targetcontent); + $targetcontent=preg_replace('/Skeleton_Class/', $classname, $targetcontent); + $targetcontent=preg_replace('/skeletons/', $classmin, $targetcontent); + $targetcontent=preg_replace('/skeleton/', $classmin, $targetcontent); + + // Substitute comments + $targetcontent=preg_replace('/This file is an example to create a new class file/', 'Put here description of this class', $targetcontent); + $targetcontent=preg_replace('/\s*\/\/\.\.\./', '', $targetcontent); + $targetcontent=preg_replace('/Put here some comments/','Initialy built by build_class_from_table on '.strftime('%Y-%m-%d %H:%M',mktime()), $targetcontent); + + // Substitute table name + $targetcontent=preg_replace('/MAIN_DB_PREFIX."mytable/', 'MAIN_DB_PREFIX."'.$tablenoprefix, $targetcontent); + + // Substitute GETPOST search_fieldx + $varprop="\n"; + $cleanparam=''; + foreach($property as $key => $prop) + { + if ($prop['field'] != 'rowid' && $prop['field'] != 'id' && ! $prop['istime']) + { + if ($prop['isint']) $varprop.='$search_'.$prop['field']."=GETPOST('search_".$prop['field']."','int');\n"; + else $varprop.='$search_'.$prop['field']."=GETPOST('search_".$prop['field']."','alpha');\n"; + } + } + $targetcontent=preg_replace('/'.preg_quote('$search_field1=GETPOST("search_field1");','/').'/', $varprop, $targetcontent); + $targetcontent=preg_replace('/'.preg_quote('$search_field2=GETPOST("search_field2");','/').'/', '', $targetcontent); + + // Substitute GETPOST fieldx + $varprop="\n"; + $cleanparam=''; + foreach($property as $key => $prop) + { + if ($prop['field'] != 'rowid' && $prop['field'] != 'id' && ! $prop['istime']) + { + if ($prop['isint']) $varprop.="\t\$object->".$prop['field']."=GETPOST('".$prop['field']."','int');\n"; + else $varprop.="\t\$object->".$prop['field']."=GETPOST('".$prop['field']."','alpha');\n"; + } + } + $targetcontent=preg_replace('/'.preg_quote('$object->prop1=GETPOST("field1");','/').'/', $varprop, $targetcontent); + $targetcontent=preg_replace('/'.preg_quote('$object->prop2=GETPOST("field2");','/').'/', '', $targetcontent); + + // Substitute reset search_field = ''; + $varprop="\n"; + $cleanparam=''; + foreach($property as $key => $prop) + { + if ($prop['field'] != 'rowid' && $prop['field'] != 'id' && ! $prop['istime']) + { + $varprop.='$search_'.$prop['field']."='';\n"; + } + } + $targetcontent=preg_replace('/'.preg_quote('$search_field1=\'\';','/').'/', $varprop, $targetcontent); + $targetcontent=preg_replace('/'.preg_quote('$search_field2=\'\';','/').'/', '', $targetcontent); + + // Substitute fetch/select parameters + $targetcontent=preg_replace('/\$sql\s*\.= " t\.field1,";/', $varpropselect, $targetcontent); + $targetcontent=preg_replace('/\$sql\s*\.= " t\.field2";/', '', $targetcontent); + + // Substitute where for search + $varprop="\n"; + $cleanparam=''; + foreach($property as $key => $prop) + { + if ($prop['field'] != 'rowid' && $prop['field'] != 'id' && ! $prop['istime']) + { + $varprop.='if ($search_'.$prop['field'].') $sql.= natural_search("'.$prop['field'].'",$search_'.$prop['field'].');'."\n"; + } + } + $targetcontent=preg_replace('/'.preg_quote('if ($search_field1) $sql.= natural_search("field1",$search_field1);','/').'/', $varprop, $targetcontent); + $targetcontent=preg_replace('/'.preg_quote('if ($search_field2) $sql.= natural_search("field2",$search_field2);','/').'/', '', $targetcontent); + + // substitute $params.= + $varprop="\n"; + $cleanparam=''; + foreach($property as $key => $prop) + { + if ($prop['field'] != 'rowid' && $prop['field'] != 'id' && ! $prop['istime']) + { + $varprop.="if (\$search_".$prop['field']." != '') \$params.= '&search_".$prop['field']."='.urlencode(\$search_".$prop['field'].");\n"; + } + } + $targetcontent=preg_replace('/'.preg_quote("if (\$search_field1 != '') \$params.= '&search_field1='.urlencode(\$search_field1);",'/').'/', $varprop, $targetcontent); + $targetcontent=preg_replace('/'.preg_quote("if (\$search_field2 != '') \$params.= '&search_field2='.urlencode(\$search_field2);",'/').'/', '', $targetcontent); + + // Substitute arrayfields + $varprop="\n"; + $cleanparam=''; + foreach($property as $key => $prop) + { + if ($prop['field'] != 'rowid' && $prop['field'] != 'id' && ! $prop['istime']) + { + $varprop.="'t.".$prop['field']."'=>array('label'=>\$langs->trans(\"Field".$prop['field']."\"), 'checked'=>1),\n"; + } + } + $targetcontent=preg_replace('/'.preg_quote("'t.field1'=>array('label'=>\$langs->trans(\"Field1\"), 'checked'=>1),",'/').'/', $varprop, $targetcontent); + $targetcontent=preg_replace('/'.preg_quote("'t.field2'=>array('label'=>\$langs->trans(\"Field2\"), 'checked'=>1),",'/').'/', '', $targetcontent); + + // Substitute print_liste_field_titre + $varprop="\n"; + $cleanparam=''; + foreach($property as $key => $prop) + { + if ($prop['field'] != 'rowid' && $prop['field'] != 'id' && ! $prop['istime']) + { + $varprop.="if (! empty(\$arrayfields['t.".$prop['field']."']['checked'])) print_liste_field_titre(\$arrayfields['t.".$prop['field']."']['label'],\$_SERVER['PHP_SELF'],'t.".$prop['field']."','',\$param,'',\$sortfield,\$sortorder);\n"; + } + } + $targetcontent=preg_replace('/'.preg_quote("if (! empty(\$arrayfields['t.field1']['checked'])) print_liste_field_titre(\$langs->trans('field1'),\$_SERVER['PHP_SELF'],'t.field1','',\$param,'',\$sortfield,\$sortorder);",'/').'/', $varprop, $targetcontent); + $targetcontent=preg_replace('/'.preg_quote("if (! empty(\$arrayfields['t.field2']['checked'])) print_liste_field_titre(\$langs->trans('field2'),\$_SERVER['PHP_SELF'],'t.field2','',\$param,'',\$sortfield,\$sortorder);",'/').'/', '', $targetcontent); + + // Substitute fields title search + $varprop="\n"; + $cleanparam=''; + foreach($property as $key => $prop) + { + if ($prop['field'] != 'rowid' && $prop['field'] != 'id' && ! $prop['istime']) + { + $varprop.="if (! empty(\$arrayfields['t.".$prop['field']."']['checked'])) print '';\n"; + } + } + $targetcontent=preg_replace('/'.preg_quote("if (! empty(\$arrayfields['t.field1']['checked'])) print '';",'/').'/', $varprop, $targetcontent); + $targetcontent=preg_replace('/'.preg_quote("if (! empty(\$arrayfields['t.field2']['checked'])) print '';",'/').'/', '', $targetcontent); + + // Substitute where for .fieldx. + $varprop="\n"; + $cleanparam=''; + foreach($property as $key => $prop) + { + if ($prop['field'] != 'rowid' && $prop['field'] != 'id' && ! $prop['istime']) + { + $varprop.="if (! empty(\$arrayfields['t.".$prop['field']."']['checked'])) print ''.\$obj->".$prop['field'].".'';\n"; + } + } + $targetcontent=preg_replace('/'.preg_quote("if (! empty(\$arrayfields['t.field1']['checked'])) print ''.\$obj->field1.'';",'/').'/', $varprop, $targetcontent); + $targetcontent=preg_replace('/'.preg_quote("if (! empty(\$arrayfields['t.field2']['checked'])) print ''.\$obj->field2.'';",'/').'/', '', $targetcontent); + + // LIST_OF_TD_LABEL_FIELDS_CREATE - List of td for card view + $varprop="\n"; + $cleanparam=''; + foreach($property as $key => $prop) + { + if ($prop['field'] != 'rowid' && $prop['field'] != 'id' && ! $prop['istime']) + { + $varprop.="print ''.\$langs->trans(\"Field".$prop['field']."\").'';\n"; + } + } + $targetcontent=preg_replace('/LIST_OF_TD_LABEL_FIELDS_CREATE/', $varprop, $targetcontent); + + // LIST_OF_TD_LABEL_FIELDS_EDIT - List of td for card view + $varprop="\n"; + $cleanparam=''; + foreach($property as $key => $prop) + { + if ($prop['field'] != 'rowid' && $prop['field'] != 'id' && ! $prop['istime']) + { + $varprop.="print ''.\$langs->trans(\"Field".$prop['field']."\").'".$prop['field'].".'\">';\n"; + } + } + $targetcontent=preg_replace('/LIST_OF_TD_LABEL_FIELDS_EDIT/', $varprop, $targetcontent); + + // LIST_OF_TD_LABEL_FIELDS_VIEW - List of td for card view + $varprop="\n"; + $cleanparam=''; + foreach($property as $key => $prop) + { + if ($prop['field'] != 'rowid' && $prop['field'] != 'id' && ! $prop['istime']) + { + $varprop.="print ''.\$langs->trans(\"Field".$prop['field']."\").'\$object->".$prop['field']."';\n"; + } + } + $targetcontent=preg_replace('/LIST_OF_TD_LABEL_FIELDS_VIEW/', $varprop, $targetcontent); + + + // Build file + $fp=fopen($outfile,"w"); + if ($fp) + { + fputs($fp, $targetcontent); + fclose($fp); + print "File '".$outfile."' has been built in current directory.\n"; + } + else $error++; } -// Define output variables -$outfile='out.'.$classmin.'_script.php'; -$targetcontent=$sourcecontent; - -// Substitute module name -$targetcontent=preg_replace('/dev\/skeletons/', $module, $targetcontent); -$targetcontent=preg_replace('/mymodule othermodule1 othermodule2/', $module, $targetcontent); -$targetcontent=preg_replace('/mymodule/', $module, $targetcontent); - -// Substitute class name -$targetcontent=preg_replace('/skeleton_class\.class\.php/', $classmin.'.class.php', $targetcontent); -$targetcontent=preg_replace('/skeleton_script\.php/', $classmin.'_script.php', $targetcontent); -$targetcontent=preg_replace('/\$element = \'skeleton\'/', '\$element=\''.$classmin.'\'', $targetcontent); -$targetcontent=preg_replace('/\$table_element = \'skeleton\'/', '\$table_element=\''.$classmin.'\'', $targetcontent); -$targetcontent=preg_replace('/Skeleton_Class/', $classname, $targetcontent); -$targetcontent=preg_replace('/skeletons/', $classmin, $targetcontent); -$targetcontent=preg_replace('/skeleton/', $classmin, $targetcontent); - -// Substitute comments -$targetcontent=preg_replace('/This file is an example to create a new class file/', 'Put here description of this class', $targetcontent); -$targetcontent=preg_replace('/\s*\/\/\.\.\./', '', $targetcontent); -$targetcontent=preg_replace('/Put here some comments/','Initialy built by build_class_from_table on '.strftime('%Y-%m-%d %H:%M',mktime()), $targetcontent); - -// Substitute table name -$targetcontent=preg_replace('/MAIN_DB_PREFIX."mytable/', 'MAIN_DB_PREFIX."'.$tablenoprefix, $targetcontent); - -// Build file -$fp=fopen($outfile,"w"); -if ($fp) -{ - fputs($fp, $targetcontent); - fclose($fp); - print "File '".$outfile."' has been built in current directory.\n"; -} -else $error++; - - - -//-------------------------------- -// Build skeleton_page.php -//-------------------------------- - -// Read skeleton_page.php file -$skeletonfile=$path.'skeleton_page.php'; -$sourcecontent=file_get_contents($skeletonfile); -if (! $sourcecontent) -{ - print "\n"; - print "Error: Failed to read skeleton sample '".$skeletonfile."'\n"; - print "Try to run script from skeletons directory.\n"; - exit; -} - -// Define output variables -$outfile='out.'.$classmin.'_page.php'; -$targetcontent=$sourcecontent; - -// Substitute module name -$targetcontent=preg_replace('/dev\/skeletons/', $module, $targetcontent); -$targetcontent=preg_replace('/mymodule othermodule1 othermodule2/', $module, $targetcontent); -$targetcontent=preg_replace('/mymodule/', $module, $targetcontent); - -// Substitute class name -$targetcontent=preg_replace('/skeleton_class\.class\.php/', $classmin.'.class.php', $targetcontent); -$targetcontent=preg_replace('/skeleton_script\.php/', $classmin.'_script.php', $targetcontent); -$targetcontent=preg_replace('/\$element = \'skeleton\'/', '\$element=\''.$classmin.'\'', $targetcontent); -$targetcontent=preg_replace('/\$table_element = \'skeleton\'/', '\$table_element=\''.$classmin.'\'', $targetcontent); -$targetcontent=preg_replace('/Skeleton_Class/', $classname, $targetcontent); -$targetcontent=preg_replace('/skeletons/', $classmin, $targetcontent); -$targetcontent=preg_replace('/skeleton/', $classmin, $targetcontent); - -// Substitute comments -$targetcontent=preg_replace('/This file is an example to create a new class file/', 'Put here description of this class', $targetcontent); -$targetcontent=preg_replace('/\s*\/\/\.\.\./', '', $targetcontent); -$targetcontent=preg_replace('/Put here some comments/','Initialy built by build_class_from_table on '.strftime('%Y-%m-%d %H:%M',mktime()), $targetcontent); - -// Substitute table name -$targetcontent=preg_replace('/MAIN_DB_PREFIX."mytable/', 'MAIN_DB_PREFIX."'.$tablenoprefix, $targetcontent); - -// Substitute GETPOST search_fieldx -$varprop="\n"; -$cleanparam=''; -foreach($property as $key => $prop) -{ - if ($prop['field'] != 'rowid' && $prop['field'] != 'id' && ! $prop['istime']) - { - if ($prop['isint']) $varprop.='$search_'.$prop['field']."=GETPOST('search_".$prop['field']."','int');\n"; - else $varprop.='$search_'.$prop['field']."=GETPOST('search_".$prop['field']."','alpha');\n"; - } -} -$targetcontent=preg_replace('/'.preg_quote('$search_field1=GETPOST("search_field1");','/').'/', $varprop, $targetcontent); -$targetcontent=preg_replace('/'.preg_quote('$search_field2=GETPOST("search_field2");','/').'/', '', $targetcontent); - -// Substitute GETPOST fieldx -$varprop="\n"; -$cleanparam=''; -foreach($property as $key => $prop) -{ - if ($prop['field'] != 'rowid' && $prop['field'] != 'id' && ! $prop['istime']) - { - if ($prop['isint']) $varprop.="\t\$object->".$prop['field']."=GETPOST('".$prop['field']."','int');\n"; - else $varprop.="\t\$object->".$prop['field']."=GETPOST('".$prop['field']."','alpha');\n"; - } -} -$targetcontent=preg_replace('/'.preg_quote('$object->prop1=GETPOST("field1");','/').'/', $varprop, $targetcontent); -$targetcontent=preg_replace('/'.preg_quote('$object->prop2=GETPOST("field2");','/').'/', '', $targetcontent); - -// Substitute fetch/select parameters -$targetcontent=preg_replace('/\$sql\s*\.= " t\.field1,";/', $varpropselect, $targetcontent); -$targetcontent=preg_replace('/\$sql\s*\.= " t\.field2";/', '', $targetcontent); - -// Substitute where for search -$varprop="\n"; -$cleanparam=''; -foreach($property as $key => $prop) -{ - if ($prop['field'] != 'rowid' && $prop['field'] != 'id' && ! $prop['istime']) - { - $varprop.='if ($search_'.$prop['field'].') $sql.= natural_search("'.$prop['field'].'",$search_'.$prop['field'].');'."\n"; - } -} -$targetcontent=preg_replace('/'.preg_quote('if ($search_field1) $sql.= natural_search("field1",$search_field1);','/').'/', $varprop, $targetcontent); -$targetcontent=preg_replace('/'.preg_quote('if ($search_field2) $sql.= natural_search("field2",$search_field2);','/').'/', '', $targetcontent); - -// Substitute print_liste_field_titre -$varprop="\n"; -$cleanparam=''; -foreach($property as $key => $prop) -{ - if ($prop['field'] != 'rowid' && $prop['field'] != 'id' && ! $prop['istime']) - { - $varprop.="print_liste_field_titre(\$langs->trans('".$prop['field']."'),\$_SERVER['PHP_SELF'],'t.".$prop['field']."','',\$param,'',\$sortfield,\$sortorder);\n"; - } -} - -$targetcontent=preg_replace('/'.preg_quote("print_liste_field_titre(\$langs->trans('field1'),\$_SERVER['PHP_SELF'],'t.field1','',\$param,'',\$sortfield,\$sortorder);",'/').'/', $varprop, $targetcontent); -$targetcontent=preg_replace('/'.preg_quote("print_liste_field_titre(\$langs->trans('field2'),\$_SERVER['PHP_SELF'],'t.field1','',\$param,'',\$sortfield,\$sortorder);",'/').'/', '', $targetcontent); - -// Substitute where for .fieldx. -$varprop="\n"; -$cleanparam=''; -foreach($property as $key => $prop) -{ - if ($prop['field'] != 'rowid' && $prop['field'] != 'id' && ! $prop['istime']) - { - $varprop.="print ''.\$obj->".$prop['field'].".'';\n"; - } -} -$targetcontent=preg_replace('/'.preg_quote("print ''.\$obj->field1.'';",'/').'/', $varprop, $targetcontent); -$targetcontent=preg_replace('/'.preg_quote("print ''.\$obj->field2.'';",'/').'/', '', $targetcontent); - - - -// Build file -$fp=fopen($outfile,"w"); -if ($fp) -{ - fputs($fp, $targetcontent); - fclose($fp); - print "File '".$outfile."' has been built in current directory.\n"; -} -else $error++; - // -------------------- END OF BUILD_CLASS_FROM_TABLE SCRIPT -------------------- -print "You can now rename generated files by removing the 'out.' prefix in their name and store them into directory /yourmodule/class.\n"; +print "You can now rename generated files by removing the 'out.' prefix in their name and store them into directory /yourmodule/class (for .class.php file) or /yourmodule.\n"; return $error; diff --git a/dev/skeletons/skeleton_page.php b/dev/skeletons/skeleton_card.php similarity index 61% rename from dev/skeletons/skeleton_page.php rename to dev/skeletons/skeleton_card.php index c1e12c2f93c..a85969c53ad 100644 --- a/dev/skeletons/skeleton_page.php +++ b/dev/skeletons/skeleton_card.php @@ -17,7 +17,7 @@ */ /** - * \file dev/skeletons/skeleton_page.php + * \file dev/skeletons/skeleton_card.php * \ingroup mymodule othermodule1 othermodule2 * \brief This file is an example of a php page * Put here some comments @@ -47,7 +47,7 @@ include_once(DOL_DOCUMENT_ROOT.'/core/class/html.formcompany.class.php'); dol_include_once('/mymodule/class/skeleton_class.class.php'); // Load traductions files requiredby by page -$langs->load("companies"); +$langs->load("mymodule"); $langs->load("other"); // Get parameters @@ -184,7 +184,7 @@ if (empty($reshook)) { // Delete OK setEventMessages("RecordDeleted", null, 'mesgs'); - header("Location: ".dol_buildpath('/buildingmanagement/list.php',1)); + header("Location: ".dol_buildpath('/mymodule/list.php',1)); exit; } else @@ -227,131 +227,10 @@ jQuery(document).ready(function() { '; -// Part to show a list -if ($action == 'list' || (empty($id) && $action != 'create')) -{ - // Put here content of your page - print load_fiche_titre('PageTitle'); - - $sql = "SELECT"; - $sql.= " t.rowid,"; - $sql.= " t.field1,"; - $sql.= " t.field2"; - // Add fields for extrafields - foreach ($extrafields->attribute_list as $key => $val) $sql.=",ef.".$key.' as options_'.$key; - // Add fields from hooks - $parameters=array(); - $reshook=$hookmanager->executeHooks('printFieldListSelect',$parameters); // Note that $action and $object may have been modified by hook - $sql.=$hookmanager->resPrint; - $sql.= " FROM ".MAIN_DB_PREFIX."mytable as t"; - $sql.= " WHERE 1 = 1"; - if ($search_field1) $sql.= natural_search("field1",$search_field1); - if ($search_field2) $sql.= natural_search("field2",$search_field2); - - // Add where from hooks - $parameters=array(); - $reshook=$hookmanager->executeHooks('printFieldListWhere',$parameters); // Note that $action and $object may have been modified by hook - $sql.=$hookmanager->resPrint; - - // Count total nb of records - $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); - - - dol_syslog($script_file, LOG_DEBUG); - $resql=$db->query($sql); - if ($resql) - { - $num = $db->num_rows($resql); - - $params=''; - $params.= '&search_field1='.urlencode($search_field1); - $params.= '&search_field2='.urlencode($search_field2); - - print_barre_liste($title, $page, $_SERVER["PHP_SELF"],$params,$sortfield,$sortorder,'',$num,$nbtotalofrecords,'title_companies'); - - - print '
'; - - if (! empty($moreforfilter)) - { - print '
'; - print $moreforfilter; - $parameters=array(); - $reshook=$hookmanager->executeHooks('printFieldPreListTitle',$parameters); // Note that $action and $object may have been modified by hook - print $hookmanager->resPrint; - print '
'; - } - - print ''."\n"; - - // Fields title - print ''; - print_liste_field_titre($langs->trans('field1'),$_SERVER['PHP_SELF'],'t.field1','',$param,'',$sortfield,$sortorder); - print_liste_field_titre($langs->trans('field2'),$_SERVER['PHP_SELF'],'t.field2','',$param,'',$sortfield,$sortorder); - $parameters=array(); - $reshook=$hookmanager->executeHooks('printFieldListTitle',$parameters); // Note that $action and $object may have been modified by hook - print $hookmanager->resPrint; - print ''."\n"; - - // Fields title search - print ''; - print ''; - print ''; - $parameters=array(); - $reshook=$hookmanager->executeHooks('printFieldListOption',$parameters); // Note that $action and $object may have been modified by hook - print $hookmanager->resPrint; - print ''."\n"; - - - $i = 0; - while ($i < $num) - { - $obj = $db->fetch_object($resql); - if ($obj) - { - // You can use here results - print ''; - print ''; - print ''; - $parameters=array('obj' => $obj); - $reshook=$hookmanager->executeHooks('printFieldListValue',$parameters); // Note that $action and $object may have been modified by hook - print $hookmanager->resPrint; - print ''; - } - $i++; - } - - $db->free($resql); - - $parameters=array('sql' => $sql); - $reshook=$hookmanager->executeHooks('printFieldListFooter',$parameters); // Note that $action and $object may have been modified by hook - print $hookmanager->resPrint; - - print "
'.$obj->field1.''.$obj->field2.'
\n"; - print "
\n"; - - } - else - { - $error++; - dol_print_error($db); - } -} - - - // Part to create if ($action == 'create') { - print load_fiche_titre($langs->trans("NewSkeleton")); + print load_fiche_titre($langs->trans("NewMyModule")); print '
'; print ''; @@ -360,10 +239,8 @@ if ($action == 'create') dol_fiche_head(); print ''."\n"; - print ''; - + // print ''; + // LIST_OF_TD_LABEL_FIELDS_CREATE print '
'.$langs->trans("Label").''; - print ''; - print '
'.$langs->trans("Label").'
'."\n"; dol_fiche_end(); @@ -378,17 +255,25 @@ if ($action == 'create') // Part to edit record if (($id || $ref) && $action == 'edit') { + print load_fiche_titre($langs->trans("MyModule")); + print ''; - - dol_fiche_head(); - - print ''; + print ''; print ''; print ''; + + dol_fiche_head(); + print ''."\n"; + // print ''; + // LIST_OF_TD_LABEL_FIELDS_EDIT + print '
'.$langs->trans("Label").'
'; + dol_fiche_end(); - print '
'; + print '
'; + print '   '; + print '
'; print '
'; } @@ -396,12 +281,22 @@ if (($id || $ref) && $action == 'edit') // Part to show record -if ($id && (empty($action) || $action == 'view')) +if ($id && (empty($action) || $action == 'view' || $action == 'delete')) { + print load_fiche_titre($langs->trans("MyModule")); + dol_fiche_head(); - - + if ($action == 'delete') { + $formconfirm = $form->formconfirm($_SERVER["PHP_SELF"] . '?id=' . $object->id, $langs->trans('DeleteMyOjbect'), $langs->trans('ConfirmDeleteMyObject'), 'confirm_delete', '', 0, 1); + print $formconfirm; + } + + print ''."\n"; + // print ''; + // LIST_OF_TD_LABEL_FIELDS_VIEW + print '
'.$langs->trans("Label").'
'; + dol_fiche_end(); @@ -420,14 +315,7 @@ if ($id && (empty($action) || $action == 'view')) if ($user->rights->mymodule->delete) { - if ($conf->use_javascript_ajax && empty($conf->dol_use_jmobile)) // We can't use preloaded confirm form with jmobile - { - print '
'.$langs->trans('Delete').'
'."\n"; - } - else - { - print ''."\n"; - } + print ''."\n"; } } print ''."\n"; diff --git a/dev/skeletons/skeleton_class.class.php b/dev/skeletons/skeleton_class.class.php index 2d4aea97a5f..2e737b8e87f 100644 --- a/dev/skeletons/skeleton_class.class.php +++ b/dev/skeletons/skeleton_class.class.php @@ -426,6 +426,101 @@ class Skeleton_Class extends CommonObject } } + /** + * Return a link to the user card (with optionaly the picto) + * Use this->id,this->lastname, this->firstname + * + * @param int $withpicto Include picto in link (0=No picto, 1=Include picto into link, 2=Only picto) + * @param string $option On what the link point to + * @param integer $notooltip 1=Disable tooltip + * @param int $maxlen Max length of visible user name + * @param string $morecss Add more css on link + * @return string String with URL + */ + function getNomUrl($withpicto=0, $option='', $notooltip=0, $maxlen=24, $morecss='') + { + global $langs, $conf, $db; + global $dolibarr_main_authentication, $dolibarr_main_demo; + global $menumanager; + + + $result = ''; + $companylink = ''; + + $label = '' . $langs->trans("MyModule") . ''; + $label.= '
'; + $label.= '' . $langs->trans('Ref') . ': ' . $this->ref; + + $link = 'ref . $linkend; + return $result; + } + + /** + * Retourne le libelle du status d'un user (actif, inactif) + * + * @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 + */ + function getLibStatut($mode=0) + { + return $this->LibStatut($this->status,$mode); + } + + /** + * Renvoi le libelle d'un status donne + * + * @param int $status Id status + * @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 + */ + function LibStatut($status,$mode=0) + { + global $langs; + + if ($mode == 0) + { + $prefix=''; + if ($status == 1) return $langs->trans('Enabled'); + if ($status == 0) return $langs->trans('Disabled'); + } + if ($mode == 1) + { + if ($status == 1) return $langs->trans('Enabled'); + if ($status == 0) return $langs->trans('Disabled'); + } + if ($mode == 2) + { + if ($status == 1) return img_picto($langs->trans('Enabled'),'statut4').' '.$langs->trans('Enabled'); + if ($status == 0) return img_picto($langs->trans('Disabled'),'statut5').' '.$langs->trans('Disabled'); + } + if ($mode == 3) + { + if ($status == 1) return img_picto($langs->trans('Enabled'),'statut4'); + if ($status == 0) return img_picto($langs->trans('Disabled'),'statut5'); + } + if ($mode == 4) + { + if ($status == 1) return img_picto($langs->trans('Enabled'),'statut4').' '.$langs->trans('Enabled'); + if ($status == 0) return img_picto($langs->trans('Disabled'),'statut5').' '.$langs->trans('Disabled'); + } + if ($mode == 5) + { + if ($status == 1) return $langs->trans('Enabled').' '.img_picto($langs->trans('Enabled'),'statut4'); + if ($status == 0) return $langs->trans('Disabled').' '.img_picto($langs->trans('Disabled'),'statut5'); + } + } + + /** * Initialise object with example values * Id must be 0 if object instance is a specimen diff --git a/dev/skeletons/skeleton_list.php b/dev/skeletons/skeleton_list.php new file mode 100644 index 00000000000..3018a23fdea --- /dev/null +++ b/dev/skeletons/skeleton_list.php @@ -0,0 +1,439 @@ + + * Copyright (C) ---Put here your own copyright and developer email--- + * + * 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 . + */ + +/** + * \file dev/skeletons/skeleton_list.php + * \ingroup mymodule othermodule1 othermodule2 + * \brief This file is an example of a php page + * Put here some comments + */ + +//if (! defined('NOREQUIREUSER')) define('NOREQUIREUSER','1'); +//if (! defined('NOREQUIREDB')) define('NOREQUIREDB','1'); +//if (! defined('NOREQUIRESOC')) define('NOREQUIRESOC','1'); +//if (! defined('NOREQUIRETRAN')) define('NOREQUIRETRAN','1'); +//if (! defined('NOCSRFCHECK')) define('NOCSRFCHECK','1'); // Do not check anti CSRF attack test +//if (! defined('NOSTYLECHECK')) define('NOSTYLECHECK','1'); // Do not check style html tag into posted data +//if (! defined('NOTOKENRENEWAL')) define('NOTOKENRENEWAL','1'); // Do not check anti POST attack test +//if (! defined('NOREQUIREMENU')) define('NOREQUIREMENU','1'); // If there is no need to load and show top and left menu +//if (! defined('NOREQUIREHTML')) define('NOREQUIREHTML','1'); // If we don't need to load the html.form.class.php +//if (! defined('NOREQUIREAJAX')) define('NOREQUIREAJAX','1'); +//if (! defined("NOLOGIN")) define("NOLOGIN",'1'); // If this page is public (can be called outside logged session) + +// Change this following line to use the correct relative path (../, ../../, etc) +$res=0; +if (! $res && file_exists("../main.inc.php")) $res=@include '../main.inc.php'; // to work if your module directory is into dolibarr root htdocs directory +if (! $res && file_exists("../../main.inc.php")) $res=@include '../../main.inc.php'; // to work if your module directory is into a subdir of root htdocs directory +if (! $res && file_exists("../../../dolibarr/htdocs/main.inc.php")) $res=@include '../../../dolibarr/htdocs/main.inc.php'; // Used on dev env only +if (! $res && file_exists("../../../../dolibarr/htdocs/main.inc.php")) $res=@include '../../../../dolibarr/htdocs/main.inc.php'; // Used on dev env only +if (! $res) die("Include of main fails"); +// Change this following line to use the correct relative path from htdocs +include_once(DOL_DOCUMENT_ROOT.'/core/class/html.formcompany.class.php'); +dol_include_once('/mymodule/class/skeleton_class.class.php'); + +// Load traductions files requiredby by page +$langs->load("mymodule"); +$langs->load("other"); + +// Get parameters +$id = GETPOST('id','int'); +$action = GETPOST('action','alpha'); +$backtopage = GETPOST('backtopage'); +$myparam = GETPOST('myparam','alpha'); + +$search_field1=GETPOST("search_field1"); +$search_field2=GETPOST("search_field2"); +$optioncss = GETPOST('optioncss','alpha'); + +// Load variable for pagination +$limit = GETPOST("limit")?GETPOST("limit","int"):$conf->liste_limit; +$sortfield = GETPOST('sortfield','alpha'); +$sortorder = GETPOST('sortorder','alpha'); +$page = GETPOST('page','int'); +if ($page == -1) { $page = 0; } +$offset = $limit * $page; +$pageprev = $page - 1; +$pagenext = $page + 1; +if (! $sortfield) $sortfield="t.rowid"; // Set here default search field +if (! $sortorder) $sortorder="ASC"; + +// Protection if external user +$socid=0; +if ($user->societe_id > 0) +{ + $socid = $user->societe_id; + //accessforbidden(); +} + +// Initialize technical object to manage hooks. Note that conf->hooks_modules contains array +$hookmanager->initHooks(array('skeletonlist')); +$extrafields = new ExtraFields($db); + +// fetch optionals attributes and labels +$extralabels = $extrafields->fetch_name_optionals_label('mymodule'); +$search_array_options=$extrafields->getOptionalsFromPost($extralabels,'','search_'); + +// Load object if id or ref is provided as parameter +$object=new Skeleton_Class($db); +if (($id > 0 || ! empty($ref)) && $action != 'add') +{ + $result=$object->fetch($id,$ref); + if ($result < 0) dol_print_error($db); +} + + + + + +/******************************************************************* +* ACTIONS +* +* Put here all code to do according to value of "action" parameter +********************************************************************/ + +$parameters=array(); +$reshook=$hookmanager->executeHooks('doActions',$parameters); // 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'; + +if (GETPOST("button_removefilter_x") || GETPOST("button_removefilter.x") ||GETPOST("button_removefilter")) // All test are required to be compatible with all browsers +{ + $search_field1=''; + $search_field2=''; + $search_date_creation=''; + $search_date_update=''; + $search_array_options=array(); +} + + +if (empty($reshook)) +{ + // Action to delete + if ($action == 'confirm_delete') + { + $result=$object->delete($user); + if ($result > 0) + { + // Delete OK + setEventMessages("RecordDeleted", null, 'mesgs'); + header("Location: ".dol_buildpath('/mymodule/list.php',1)); + exit; + } + else + { + if (! empty($object->errors)) setEventMessages(null,$object->errors,'errors'); + else setEventMessages($object->error,null,'errors'); + } + } +} + + + + +/*************************************************** +* VIEW +* +* Put here all code to build page +****************************************************/ + +llxHeader('','MyPageName',''); + +$form=new Form($db); + +// Put here content of your page +$title = $langs->trans('MyModuleListTitle'); + +// Example : Adding jquery code +print ''; + + +$sql = "SELECT"; +$sql.= " t.rowid,"; +$sql.= " t.field1,"; +$sql.= " t.field2"; +// Add fields for extrafields +foreach ($extrafields->attribute_list as $key => $val) $sql.=",ef.".$key.' as options_'.$key; +// Add fields from hooks +$parameters=array(); +$reshook=$hookmanager->executeHooks('printFieldListSelect',$parameters); // Note that $action and $object may have been modified by hook +$sql.=$hookmanager->resPrint; +$sql.= " FROM ".MAIN_DB_PREFIX."mytable as t"; +if (is_array($extrafields->attribute_label) && count($extrafields->attribute_label)) $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."mytable_extrafields as ef on (u.rowid = ef.fk_object)"; +$sql.= " WHERE 1 = 1"; +//$sql.= " WHERE u.entity IN (".getEntity('mytable',1).")"; +if ($search_field1) $sql.= natural_search("field1",$search_field1); +if ($search_field2) $sql.= natural_search("field2",$search_field2); +if ($sall) $sql.= natural_search(array_keys($fieldstosearchall), $sall); +// Add where from extra fields +foreach ($search_array_options as $key => $val) +{ + $crit=$val; + $tmpkey=preg_replace('/search_options_/','',$key); + $typ=$extrafields->attribute_type[$tmpkey]; + $mode=0; + if (in_array($typ, array('int'))) $mode=1; // Search on a numeric + if ($val && ( ($crit != '' && ! in_array($typ, array('select'))) || ! empty($crit))) + { + $sql .= natural_search('ef.'.$tmpkey, $crit, $mode); + } +} +// Add where from hooks +$parameters=array(); +$reshook=$hookmanager->executeHooks('printFieldListWhere',$parameters); // Note that $action and $object may have been modified by hook +$sql.=$hookmanager->resPrint; +$sql.=$db->order($sortfield,$sortorder); +//$sql.= $db->plimit($conf->liste_limit+1, $offset); + +// Count total nb of records +$nbtotalofrecords = 0; +if (empty($conf->global->MAIN_DISABLE_FULL_SCANLIST)) +{ + $result = $db->query($sql); + $nbtotalofrecords = $db->num_rows($result); +} + +$sql.= $db->plimit($conf->liste_limit+1, $offset); + + +dol_syslog($script_file, LOG_DEBUG); +$resql=$db->query($sql); +if ($resql) +{ + $num = $db->num_rows($resql); + + $params=''; + if ($search_field1 != '') $params.= '&search_field1='.urlencode($search_field1); + if ($search_field2 != '') $params.= '&search_field2='.urlencode($search_field2); + 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); + } + + print_barre_liste($title, $page, $_SERVER["PHP_SELF"],$params,$sortfield,$sortorder,'',$num,$nbtotalofrecords,'title_companies'); + + + print '
'; + if ($optioncss != '') print ''; + print ''; + print ''; + print ''; + print ''; + + if ($sall) + { + foreach($fieldstosearchall as $key => $val) $fieldstosearchall[$key]=$langs->trans($val); + print $langs->trans("FilterOnInto", $sall, join(', ',$fieldstosearchall)); + } + + if (! empty($moreforfilter)) + { + print '
'; + print $moreforfilter; + $parameters=array(); + $reshook=$hookmanager->executeHooks('printFieldPreListTitle',$parameters); // Note that $action and $object may have been modified by hook + print $hookmanager->resPrint; + print '
'; + } + + $arrayfields=array( + 't.field1'=>array('label'=>$langs->trans("Field1"), 'checked'=>1), + 't.field2'=>array('label'=>$langs->trans("Field2"), 'checked'=>1), + //'t.entity'=>array('label'=>$langs->trans("Entity"), 'checked'=>1, 'enabled'=>(! empty($conf->multicompany->enabled) && empty($conf->multicompany->transverse_mode))), + 't.datec'=>array('label'=>$langs->trans("DateCreation"), 'checked'=>0, 'position'=>500), + 't.tms'=>array('label'=>$langs->trans("DateModificationShort"), 'checked'=>0, 'position'=>500), + //'t.statut'=>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]); + } + } + $varpage=empty($contextpage)?$_SERVER["PHP_SELF"]:$contextpage; + $selectedfields=$form->multiSelectArrayWithCheckbox('selectedfields', $arrayfields, $varpage); // This also change content of $arrayfields + + print ''; + + // Fields title + print ''; + if (! empty($arrayfields['t.field1']['checked'])) print_liste_field_titre($langs->trans('field1'),$_SERVER['PHP_SELF'],'t.field1','',$param,'',$sortfield,$sortorder); + if (! empty($arrayfields['t.field2']['checked'])) print_liste_field_titre($langs->trans('field2'),$_SERVER['PHP_SELF'],'t.field2','',$param,'',$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['t.datec']['checked'])) print_liste_field_titre($langs->trans("DateCreationShort"),$_SERVER["PHP_SELF"],"t.datec","",$param,'align="center" class="nowrap"',$sortfield,$sortorder); + if (! empty($arrayfields['t.tms']['checked'])) print_liste_field_titre($langs->trans("DateModificationShort"),$_SERVER["PHP_SELF"],"t.tms","",$param,'align="center" class="nowrap"',$sortfield,$sortorder); + //if (! empty($arrayfields['t.status']['checked'])) print_liste_field_titre($langs->trans("Status"),$_SERVER["PHP_SELF"],"t.status","",$param,'align="center"',$sortfield,$sortorder); + print_liste_field_titre($selectedfields, $_SERVER["PHP_SELF"],"",'','','align="right"',$sortfield,$sortorder,'maxwidthsearch '); + print ''."\n"; + + // Fields title search + print ''; + if (! empty($arrayfields['t.field1']['checked'])) print ''; + if (! empty($arrayfields['t.field2']['checked'])) print ''; + // 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 ''; + } + } + // 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['t.datec']['checked'])) + { + // Date creation + print ''; + } + if (! empty($arrayfields['t.tms']['checked'])) + { + // Date modification + print ''; + } + /*if (! empty($arrayfields['u.statut']['checked'])) + { + // Status + print ''; + }*/ + // Action column + print ''; + print ''."\n"; + + + $i = 0; + while ($i < $num) + { + $obj = $db->fetch_object($resql); + if ($obj) + { + // You can use here results + print ''; + if (! empty($arrayfields['t.field1']['checked'])) print ''; + if (! empty($arrayfields['t.field2']['checked'])) print ''; + // 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 'getAlignFlag($key); + if ($align) print ' align="'.$align.'"'; + print '>'; + $tmpkey='options_'.$key; + print $extrafields->showOutputField($key, $obj->$tmpkey, '', 1); + print ''; + } + } + } + // 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['t.datec']['checked'])) + { + print ''; + } + // Date modification + if (! empty($arrayfields['t.tms']['checked'])) + { + print ''; + } + // Status + /* + if (! empty($arrayfields['u.statut']['checked'])) + { + $userstatic->statut=$obj->statut; + print ''; + }*/ + // Action column + print ''; + print ''; + } + $i++; + } + + $db->free($resql); + + $parameters=array('sql' => $sql); + $reshook=$hookmanager->executeHooks('printFieldListFooter',$parameters); // Note that $action and $object may have been modified by hook + print $hookmanager->resPrint; + + print "
'; + print ''; + print ''; + print $form->selectarray('search_statut', array('-1'=>'','0'=>$langs->trans('Disabled'),'1'=>$langs->trans('Enabled')),$search_statut); + print ''; + print ''; + print ''; + print '
'.$obj->field1.''.$obj->field2.''; + print dol_print_date($db->jdate($obj->date_creation), 'dayhour'); + print ''; + print dol_print_date($db->jdate($obj->date_update), 'dayhour'); + print ''.$userstatic->getLibStatut(3).'
\n"; + print "
\n"; + + $db->free($result); +} +else +{ + $error++; + dol_print_error($db); +} + + +// End of page +llxFooter(); +$db->close(); diff --git a/htdocs/adherents/list.php b/htdocs/adherents/list.php index 7d86c04869c..dc7266603ca 100644 --- a/htdocs/adherents/list.php +++ b/htdocs/adherents/list.php @@ -202,7 +202,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); } // Filter on categories diff --git a/htdocs/admin/barcode.php b/htdocs/admin/barcode.php index 0a57508c271..fbaf68a96d9 100644 --- a/htdocs/admin/barcode.php +++ b/htdocs/admin/barcode.php @@ -162,7 +162,7 @@ foreach($dirbarcode as $reldir) { $filebis=$reg[1]; - // Chargement de la classe de codage + // Loading encoding class require_once $newdir.$file; $classname = "mod".ucfirst($filebis); $module = new $classname($db); diff --git a/htdocs/admin/dict.php b/htdocs/admin/dict.php index 817019cc24b..7022c5877eb 100644 --- a/htdocs/admin/dict.php +++ b/htdocs/admin/dict.php @@ -510,7 +510,7 @@ if ($id == 10) } -// Actions ajout ou modification d'une entree dans un dictionnaire de donnee +// Actions add or modify an entry into a dictionary if (GETPOST('actionadd') || GETPOST('actionmodify')) { $listfield=explode(',',$tabfield[$id]); @@ -522,8 +522,8 @@ if (GETPOST('actionadd') || GETPOST('actionmodify')) $ok=1; foreach ($listfield as $f => $value) { - if ($value == 'country_id' && in_array($tablib[$id],array('DictionaryVAT','DictionaryRegion','DictionaryCompanyType','DictionaryHolidayTypes'))) continue; // For some pages, country is not mandatory - if ($value == 'country' && in_array($tablib[$id],array('DictionaryCanton','DictionaryCompanyType'))) continue; // For some pages, country is not mandatory + if ($value == 'country_id' && in_array($tablib[$id],array('DictionaryVAT','DictionaryRegion','DictionaryCompanyType','DictionaryHolidayTypes', 'DictionaryRevenueStamp'))) continue; // For some pages, country is not mandatory + if ($value == 'country' && in_array($tablib[$id],array('DictionaryCanton','DictionaryCompanyType', 'DictionaryRevenueStamp'))) continue; // For some pages, country is not mandatory if ($value == 'localtax1' && empty($_POST['localtax1_type'])) continue; if ($value == 'localtax2' && empty($_POST['localtax2_type'])) continue; if ($value == 'color' && empty($_POST['color'])) continue; @@ -581,7 +581,12 @@ if (GETPOST('actionadd') || GETPOST('actionmodify')) setEventMessages($langs->transnoentities("ErrorFieldRequired",$langs->transnoentities("Country")), null, 'errors'); } } - + if ($id == 3 && ! is_numeric($_POST["code"])) + { + $ok=0; + setEventMessages($langs->transnoentities("ErrorFieldMustBeANumeric",$langs->transnoentities("Code")), null, 'errors'); + } + // Clean some parameters if (isset($_POST["localtax1"]) && empty($_POST["localtax1"])) $_POST["localtax1"]='0'; // If empty, we force to 0 if (isset($_POST["localtax2"]) && empty($_POST["localtax2"])) $_POST["localtax2"]='0'; // If empty, we force to 0 diff --git a/htdocs/admin/facture.php b/htdocs/admin/facture.php index dee1789d6ec..b3f1d7a5d51 100644 --- a/htdocs/admin/facture.php +++ b/htdocs/admin/facture.php @@ -344,7 +344,7 @@ foreach ($dirmodels as $reldir) $classname = preg_replace('/\-.*$/','',$classname); if (! class_exists($classname) && is_readable($dir.$filebis) && (preg_match('/mod_/',$filebis) || preg_match('/mod_/',$classname)) && substr($filebis, dol_strlen($filebis)-3, 3) == 'php') { - // Chargement de la classe de numerotation + // Charging the numbering class require_once $dir.$filebis; $module = new $classname($db); @@ -750,6 +750,20 @@ print '\n"; print ''; +// Add js auto fill amount on paiement form +$var=! $var; +print '
'; +print ''; +print ''; +print ''; +print $langs->trans("JSOnPaimentBill"); +print ''; +print $form->selectyesno("FAC_AUTO_FILLJS",$conf->global->FAC_AUTO_FILLJS,1); +print ''; +print ''; +print "\n"; +print '
'; + $var=! $var; print '
'; print ''; @@ -784,20 +798,6 @@ print '\n"; print '
'; -// Add js auto fill amount on paiement form -$var=! $var; -print '
'; -print ''; -print ''; -print ''; -print $langs->trans("JSOnPaimentBill"); -print ''; -print $form->selectyesno("FAC_AUTO_FILLJS",$conf->global->FAC_AUTO_FILLJS,1); -print ''; -print ''; -print "\n"; -print '
'; - print ''; diff --git a/htdocs/admin/ldap.php b/htdocs/admin/ldap.php index bfccacc40ac..fadde40dbed 100644 --- a/htdocs/admin/ldap.php +++ b/htdocs/admin/ldap.php @@ -92,7 +92,6 @@ if (! function_exists("ldap_connect")) setEventMessages($langs->trans("LDAPFunctionsNotAvailableOnPHP"), null, 'errors'); } -dol_fiche_head($head, 'ldap', $langs->trans("LDAPSetup")); $var=true; $form=new Form($db); @@ -101,6 +100,8 @@ $form=new Form($db); print '
'; print ''; +dol_fiche_head($head, 'ldap', $langs->trans("LDAPSetup")); + print ''; // Liste de synchro actives @@ -135,7 +136,7 @@ if (! empty($conf->societe->enabled)) print ''; } -// Synchro adherentt active +// Synchro member active if (! empty($conf->adherent->enabled)) { $var=!$var; @@ -143,6 +144,7 @@ if (! empty($conf->adherent->enabled)) $arraylist=array(); $arraylist['0']=$langs->trans("No"); $arraylist['1']=$langs->trans("DolibarrToLDAP"); + $arraylist['ldap2dolibarr']=$langs->trans("LDAPToDolibarr").' ('.$langs->trans("SupportedForLDAPImportScriptOnly").')'; print $form->selectarray('activemembers',$arraylist,$conf->global->LDAP_MEMBER_ACTIVE); print ''; } @@ -239,12 +241,12 @@ print ''; print '
'.$langs->trans("LDAPDnContactActiveExample").'
'.$langs->trans("LDAPDnMemberActiveExample").'
secret
'; +dol_fiche_end(); + print '
'; print '
'; -print '
'; - print '
'; diff --git a/htdocs/admin/ldap_contacts.php b/htdocs/admin/ldap_contacts.php index 3af47f46aac..56b755bf64a 100644 --- a/htdocs/admin/ldap_contacts.php +++ b/htdocs/admin/ldap_contacts.php @@ -92,6 +92,8 @@ if ($action == 'setvalue' && $user->admin) * View */ +$form=new Form($db); + llxHeader('',$langs->trans("LDAPSetup"),'EN:Module_LDAP_En|FR:Module_LDAP|ES:Módulo_LDAP'); $linkback='
'.$langs->trans("BackToModuleList").''; @@ -114,8 +116,6 @@ print '
'; print '
'; print ''; -$form=new Form($db); - print ''; $var=true; @@ -263,16 +263,16 @@ print ''; print '"; print ''; - -$var=!$var; -print ''; print '
 global->LDAP_KEY_CONTACTS && $conf->global->LDAP_KEY_CONTACTS==$conf->global->LDAP_CONTACT_FIELD_COUNTRY?' checked':'').">
'; +print info_admin($langs->trans("LDAPDescValues")); + +dol_fiche_end(); + +print '
'; + print '
'; -print ''; - -print info_admin($langs->trans("LDAPDescValues")); /* * Test de la connexion diff --git a/htdocs/admin/ldap_groups.php b/htdocs/admin/ldap_groups.php index bba8f2109a3..20b94023358 100644 --- a/htdocs/admin/ldap_groups.php +++ b/htdocs/admin/ldap_groups.php @@ -177,16 +177,16 @@ print ''.$langs->trans("LDAPFieldGroupMembersExample").''; print 'global->LDAP_KEY_GROUPS && $conf->global->LDAP_KEY_GROUPS==$conf->global->LDAP_GROUP_FIELD_GROUPMEMBERS)?' checked':'').">"; print ''; - -$var=!$var; -print ''; print ''; +print info_admin($langs->trans("LDAPDescValues")); + +dol_fiche_end(); + +print '
'; + print ''; -print ''; - -print info_admin($langs->trans("LDAPDescValues")); /* * Test de la connexion diff --git a/htdocs/admin/ldap_members.php b/htdocs/admin/ldap_members.php index bd9eda149b4..52117961b54 100644 --- a/htdocs/admin/ldap_members.php +++ b/htdocs/admin/ldap_members.php @@ -53,6 +53,7 @@ if ($action == 'setvalue' && $user->admin) if (! dolibarr_set_const($db, 'LDAP_MEMBER_DN',GETPOST("user"),'chaine',0,'',$conf->entity)) $error++; if (! dolibarr_set_const($db, 'LDAP_MEMBER_OBJECT_CLASS',GETPOST("objectclass"),'chaine',0,'',$conf->entity)) $error++; + if (! dolibarr_set_const($db, 'LDAP_MEMBER_FILTER',GETPOST("filterconnection"),'chaine',0,'',$conf->entity)) $error++; // Members if (! dolibarr_set_const($db, 'LDAP_MEMBER_FIELD_FULLNAME',GETPOST("fieldfullname"),'chaine',0,'',$conf->entity)) $error++; if (! dolibarr_set_const($db, 'LDAP_MEMBER_FIELD_LOGIN',GETPOST("fieldlogin"),'chaine',0,'',$conf->entity)) $error++; @@ -107,6 +108,8 @@ if ($action == 'setvalue' && $user->admin) * View */ +$form=new Form($db); + llxHeader('',$langs->trans("LDAPSetup"),'EN:Module_LDAP_En|FR:Module_LDAP|ES:Módulo_LDAP'); $linkback=''.$langs->trans("BackToModuleList").''; @@ -120,6 +123,9 @@ if (! function_exists("ldap_connect")) setEventMessages($langs->trans("LDAPFunctionsNotAvailableOnPHP"), null, 'errors'); } +print '
'; +print ''; + dol_fiche_head($head, 'members', $langs->trans("LDAPSetup")); @@ -127,11 +133,6 @@ print $langs->trans("LDAPDescMembers").'
'; print '
'; -print ''; -print ''; - -$form=new Form($db); - print ''; $var=true; @@ -156,6 +157,14 @@ print ''; print ''; print ''; +// Filter, used to filter search +$var=!$var; +print ''; +print ''; +print ''; + print '
'.$langs->trans("LDAPMemberObjectClassListExample").' 
'.$langs->trans("LDAPFilterConnection").''; +print ''; +print ''.$langs->trans("LDAPFilterConnectionExample").'
'; print '
'; print ''; @@ -377,15 +386,16 @@ print ''; print ''; print ''; -$var=!$var; -print ''; print '
  
'; +print info_admin($langs->trans("LDAPDescValues")); + +dol_fiche_end(); + +print '
'; + print '
'; -print ''; - -print info_admin($langs->trans("LDAPDescValues")); /* @@ -454,6 +464,7 @@ 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 76d3bb9dfd0..70a94e5817a 100644 --- a/htdocs/admin/ldap_users.php +++ b/htdocs/admin/ldap_users.php @@ -63,7 +63,7 @@ if ($action == 'setvalue' && $user->admin) if (! dolibarr_set_const($db, 'LDAP_FIELD_MAIL',GETPOST("fieldmail"),'chaine',0,'',$conf->entity)) $error++; if (! dolibarr_set_const($db, 'LDAP_FIELD_PHONE',GETPOST("fieldphone"),'chaine',0,'',$conf->entity)) $error++; if (! dolibarr_set_const($db, 'LDAP_FIELD_MOBILE',GETPOST("fieldmobile"),'chaine',0,'',$conf->entity)) $error++; - if (! dolibarr_set_const($db, 'LDAP_FIELD_SKYPE',GETPOST("fieldskype"),'chaine',0,'',$conf->entity)) $error++; + if (! dolibarr_set_const($db, 'LDAP_FIELD_SKYPE',GETPOST("fieldskype"),'chaine',0,'',$conf->entity)) $error++; if (! dolibarr_set_const($db, 'LDAP_FIELD_FAX',GETPOST("fieldfax"),'chaine',0,'',$conf->entity)) $error++; if (! dolibarr_set_const($db, 'LDAP_FIELD_DESCRIPTION',GETPOST("fielddescription"),'chaine',0,'',$conf->entity)) $error++; if (! dolibarr_set_const($db, 'LDAP_FIELD_SID',GETPOST("fieldsid"),'chaine',0,'',$conf->entity)) $error++; @@ -93,6 +93,8 @@ if ($action == 'setvalue' && $user->admin) * Visu */ +$form=new Form($db); + llxHeader('',$langs->trans("LDAPSetup"),'EN:Module_LDAP_En|FR:Module_LDAP|ES:Módulo_LDAP'); $linkback=''.$langs->trans("BackToModuleList").''; @@ -106,18 +108,19 @@ if (! function_exists("ldap_connect")) setEventMessages($langs->trans("LDAPFunctionsNotAvailableOnPHP"), null, 'errors'); } + +print '
'; +print ''; + + dol_fiche_head($head, 'users', $langs->trans("LDAPSetup")); print $langs->trans("LDAPDescUsers").'
'; print '
'; -print ''; -print ''; -$form=new Form($db); - print ''; $var=true; @@ -141,8 +144,7 @@ print ''; print ''; print ''; -// Filtre -//Utilise pour filtrer la recherche +// Filter, used to filter search $var=!$var; print ''; print '"; print ''; -$var=!$var; -print ''; print '
'.$langs->trans("LDAPUserObjectClassListExample").' 
'.$langs->trans("LDAPFilterConnection").''; print ''; @@ -281,16 +283,16 @@ print ''.$langs->trans("LDAPFieldSidExample").'global->LDAP_KEY_USERS && $conf->global->LDAP_KEY_USERS==$conf->global->LDAP_FIELD_SID)?' checked':'').">
'; -print '
'; - -print ''; - print info_admin($langs->trans("LDAPDescValues")); +dol_fiche_end(); + +print '
'; + +print ''; + /* * Test de la connexion @@ -392,7 +394,7 @@ if (function_exists("ldap_connect")) $conf->global->LDAP_FIELD_PASSWORD_CRYPTED, $conf->global->LDAP_FIELD_PHONE, $conf->global->LDAP_FIELD_FAX, - $conf->global->LDAP_FIELD_SKYPE, + $conf->global->LDAP_FIELD_SKYPE, $conf->global->LDAP_FIELD_MOBILE, $conf->global->LDAP_FIELD_MAIL, $conf->global->LDAP_FIELD_TITLE, diff --git a/htdocs/admin/oauth.php b/htdocs/admin/oauth.php new file mode 100644 index 00000000000..66878753b46 --- /dev/null +++ b/htdocs/admin/oauth.php @@ -0,0 +1,370 @@ + + * + * 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 . + * + */ + +/** + * \file htdocs/admin/oauth.php + * \ingroup oauth + * \brief Setup page to configure oauth access api + */ + +require '../main.inc.php'; + +// required Class +require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php'; + + +// Define $urlwithroot +$urlwithouturlroot=preg_replace('/'.preg_quote(DOL_URL_ROOT,'/').'$/i','',trim($dolibarr_main_url_root)); +$urlwithroot=$urlwithouturlroot.DOL_URL_ROOT; // This is to use external domain name found into config file +//$urlwithroot=DOL_MAIN_URL_ROOT; // This is to use same domain name than current + + +$langs->load("admin"); +$langs->load("oauth"); + +// Security check +if (!$user->admin) + accessforbidden(); + +$action = GETPOST('action', 'alpha'); + +// Supported OAUTH +$supportedoauth2array=array('OAUTH_GOOGLE_NAME'); +// API access parameters OAUTH +$list = array ( + array( + 'OAUTH_AMAZON_NAME', + 'OAUTH_AMAZON_ID', + 'OAUTH_AMAZON_SECRET', + ), + array( + 'OAUTH_BITBUCKET_NAME', + 'OAUTH_BITBUCKET_ID', + 'OAUTH_BITBUCKET_SECRET', + ), + array( + 'OAUTH_BITLY_NAME', + 'OAUTH_BITLY_ID', + 'OAUTH_BITLY_SECRET', + ), + array( + 'OAUTH_BITRIX24_NAME', + 'OAUTH_BITRIX24_ID', + 'OAUTH_BITRIX24_SECRET', + ), + array( + 'OAUTH_BOX_NAME', + 'OAUTH_BOX_ID', + 'OAUTH_BOX_SECRET', + ), + array( + 'OAUTH_BUFFER_NAME', + 'OAUTH_BUFFER_ID', + 'OAUTH_BUFFER_SECRET', + ), + array( + 'OAUTH_DAILYMOTION_NAME', + 'OAUTH_DAILYMOTION_ID', + 'OAUTH_DAILYMOTION_SECRET', + ), + array( + 'OAUTH_DEVIANTART_NAME', + 'OAUTH_DEVIANTART_ID', + 'OAUTH_DEVIANTART_SECRET', + ), + array( + 'OAUTH_DROPBOX_NAME', + 'OAUTH_DROPBOX_ID', + 'OAUTH_DROPBOX_SECRET', + ), + array( + 'OAUTH_ETSY_NAME', + 'OAUTH_ETSY_ID', + 'OAUTH_ETSY_SECRET', + ), + array( + 'OAUTH_EVEONLINE_NAME', + 'OAUTH_EVEONLINE_ID', + 'OAUTH_EVEONLINE_SECRET', + ), + array( + 'OAUTH_FACEBOOK_NAME', + 'OAUTH_FACEBOOK_ID', + 'OAUTH_FACEBOOK_SECRET', + ), + array( + 'OAUTH_FITBIT_NAME', + 'OAUTH_FITBIT_ID', + 'OAUTH_FITBIT_SECRET', + ), + array( + 'OAUTH_FIVEHUNDREDPX_NAME', + 'OAUTH_FIVEHUNDREDPX_ID', + 'OAUTH_FIVEHUNDREDPX_SECRET', + ), + array( + 'OAUTH_FLICKR_NAME', + 'OAUTH_FLICKR_ID', + 'OAUTH_FLICKR_SECRET', + ), + array( + 'OAUTH_FOURSQUARE_NAME', + 'OAUTH_FOURSQUARE_ID', + 'OAUTH_FOURSQUARE_SECRET', + ), + array( + 'OAUTH_GITHUB_NAME', + 'OAUTH_GITHUB_ID', + 'OAUTH_GITHUB_SECRET', + ), + array( + 'OAUTH_GOOGLE_NAME', + 'OAUTH_GOOGLE_ID', + 'OAUTH_GOOGLE_SECRET', + ), + array( + 'OAUTH_HUBIC_NAME', + 'OAUTH_HUBIC_ID', + 'OAUTH_HUBIC_SECRET', + ), + array( + 'OAUTH_INSTAGRAM_NAME', + 'OAUTH_INSTAGRAM_ID', + 'OAUTH_INSTAGRAM_SECRET', + ), + array( + 'OAUTH_LINKEDIN_NAME', + 'OAUTH_LINKEDIN_ID', + 'OAUTH_LINKEDIN_SECRET', + ), + array( + 'OAUTH_MAILCHIMP_NAME', + 'OAUTH_MAILCHIMP_ID', + 'OAUTH_MAILCHIMP_SECRET', + ), + array( + 'OAUTH_MICROSOFT_NAME', + 'OAUTH_MICROSOFT_ID', + 'OAUTH_MICROSOFT_SECRET', + ), + array( + 'OAUTH_NEST_NAME', + 'OAUTH_NEST_ID', + 'OAUTH_NEST_SECRET', + ), + array( + 'OAUTH_NETATMO_NAME', + 'OAUTH_NETATMO_ID', + 'OAUTH_NETATMO_SECRET', + ), + array( + 'OAUTH_PARROTFLOWERPOWER_NAME', + 'OAUTH_PARROTFLOWERPOWER_ID', + 'OAUTH_PARROTFLOWERPOWER_SECRET', + ), + array( + 'OAUTH_PAYPAL_NAME', + 'OAUTH_PAYPAL_ID', + 'OAUTH_PAYPAL_SECRET', + ), + array( + 'OAUTH_POCKET_NAME', + 'OAUTH_POCKET_ID', + 'OAUTH_POCKET_SECRET', + ), + array( + 'OAUTH_QUICKBOOKS_NAME', + 'OAUTH_QUICKBOOKS_ID', + 'OAUTH_QUICKBOOKS_SECRET', + ), + array( + 'OAUTH_REDDIT_NAME', + 'OAUTH_REDDIT_ID', + 'OAUTH_REDDIT_SECRET', + ), + array( + 'OAUTH_REDMINE_NAME', + 'OAUTH_REDMINE_ID', + 'OAUTH_REDMINE_SECRET', + ), + array( + 'OAUTH_RUNKEEPER_NAME', + 'OAUTH_RUNKEEPER_ID', + 'OAUTH_RUNKEEPER_SECRET', + ), + array( + 'OAUTH_SCOOPIT_NAME', + 'OAUTH_SCOOPIT_ID', + 'OAUTH_SCOOPIT_SECRET', + ), + array( + 'OAUTH_SOUNDCLOUD_NAME', + 'OAUTH_SOUNDCLOUD_ID', + 'OAUTH_SOUNDCLOUD_SECRET', + ), + array( + 'OAUTH_SPOTIFY_NAME', + 'OAUTH_SPOTIFY_ID', + 'OAUTH_SPOTIFY_SECRET', + ), + array( + 'OAUTH_STRAVA_NAME', + 'OAUTH_STRAVA_ID', + 'OAUTH_STRAVA_SECRET', + ), + array( + 'OAUTH_TUMBLR_NAME', + 'OAUTH_TUMBLR_ID', + 'OAUTH_TUMBLR_SECRET', + ), + array( + 'OAUTH_TWITTER_NAME', + 'OAUTH_TWITTER_ID', + 'OAUTH_TWITTER_SECRET', + ), + array( + 'OAUTH_USTREAM_NAME', + 'OAUTH_USTREAM_ID', + 'OAUTH_USTREAM_SECRET', + ), + array( + 'OAUTH_VIMEO_NAME', + 'OAUTH_VIMEO_ID', + 'OAUTH_VIMEO_SECRET', + ), + array( + 'OAUTH_YAHOO_NAME', + 'OAUTH_YAHOO_ID', + 'OAUTH_YAHOO_SECRET', + ), + array( + 'OAUTH_YAMMER_NAME', + 'OAUTH_YAMMER_ID', + 'OAUTH_YAMMER_SECRET', + ), +); + + +/* + * Actions + */ + +if ($action == 'update') +{ + $error = 0; + + foreach ($list as $constname) { + $constvalue = GETPOST($constname[1], 'alpha'); + if (!dolibarr_set_const($db, $constname[1], $constvalue, 'chaine', 0, '', $conf->entity)) + $error++; + $constvalue = GETPOST($constname[2], 'alpha'); + if (!dolibarr_set_const($db, $constname[2], $constvalue, 'chaine', 0, '', $conf->entity)) + $error++; + } + + if (! $error) + { + setEventMessages($langs->trans("SetupSaved"), null); + } else { + setEventMessages($langs->trans("Error"), null, 'errors'); + } +} + +/* + * View + */ + +llxHeader(); + +$form = new Form($db); + +$linkback=''.$langs->trans("BackToModuleList").''; +print load_fiche_titre($langs->trans('ConfigOAuth'),$linkback,'title_setup'); + +print '
'; +print ''; +print ''; + +/* + * Parameters + */ +dol_fiche_head(array(), '', '', 0, 'technic'); + + +print $langs->trans("ListOfSupportedOauthProviders").'

'; + +print ''; + +$var = true; + +foreach ($list as $key) +{ + $supported=0; + if (in_array($key[0], $supportedoauth2array)) $supported=1; + if (! $supported) continue; // show only supported + + print ''; + // Api Name + $label = $langs->trans($key[0]); + print ''; + + if ($supported) + { + $redirect_uri=$urlwithroot.'/core/modules/oauth/getgoogleoauthcallback.php'; + $var = !$var; + print ''; + print ''; + print ''; + } + else + { + $var = !$var; + print ''; + print ''; + print ''; + print ''; + } + + // Api Id + $var = !$var; + print ''; + print ''; + print ''; + + // Api Secret + $var = !$var; + print ''; + print ''; + print ''; + +} + +print '
'.$label.'
'.$langs->trans("UseTheFollowingUrlAsRedirectURI").''; + print '
'.$langs->trans("UseTheFollowingUrlAsRedirectURI").''.$langs->trans("FeatureNotYetSupported").'
'; + print '
'; + print '
'."\n"; + +dol_fiche_end(); + +print '
'; + +print '
'; + + +llxFooter(); +$db->close(); \ No newline at end of file diff --git a/htdocs/admin/orderdet_extrafields.php b/htdocs/admin/orderdet_extrafields.php index 8e542e3d871..8a9f0e52c0a 100644 --- a/htdocs/admin/orderdet_extrafields.php +++ b/htdocs/admin/orderdet_extrafields.php @@ -66,7 +66,7 @@ require DOL_DOCUMENT_ROOT.'/core/actions_extrafields.inc.php'; * View */ -$textobject=$langs->transnoentitiesnoconv("OrderLines"); +$textobject=$langs->transnoentitiesnoconv("Orders"); llxHeader('',$langs->trans("OrdersSetup")); diff --git a/htdocs/admin/payment.php b/htdocs/admin/payment.php index c9bf610bd1b..07113231bcc 100644 --- a/htdocs/admin/payment.php +++ b/htdocs/admin/payment.php @@ -130,7 +130,7 @@ foreach ($dirmodels as $reldir) $classname = preg_replace('/\-.*$/','',$classname); if (! class_exists($classname) && is_readable($dir.$filebis) && (preg_match('/mod_/',$filebis) || preg_match('/mod_/',$classname)) && substr($filebis, dol_strlen($filebis)-3, 3) == 'php') { - // Chargement de la classe de numerotation + // Charging the numbering class require_once $dir.$filebis; $module = new $classname($db); diff --git a/htdocs/admin/pdf.php b/htdocs/admin/pdf.php index 7bd46ac9684..3b968af09c3 100644 --- a/htdocs/admin/pdf.php +++ b/htdocs/admin/pdf.php @@ -62,7 +62,8 @@ if ($action == 'update') dolibarr_set_const($db, "MAIN_GENERATE_DOCUMENTS_HIDE_DETAILS", $_POST["MAIN_GENERATE_DOCUMENTS_HIDE_DETAILS"],'chaine',0,'',$conf->entity); dolibarr_set_const($db, "MAIN_GENERATE_DOCUMENTS_HIDE_DESC", $_POST["MAIN_GENERATE_DOCUMENTS_HIDE_DESC"],'chaine',0,'',$conf->entity); dolibarr_set_const($db, "MAIN_GENERATE_DOCUMENTS_HIDE_REF", $_POST["MAIN_GENERATE_DOCUMENTS_HIDE_REF"],'chaine',0,'',$conf->entity); - + dolibarr_set_const($db, "MAIN_PDF_USE_ISO_LOCATION", $_POST["MAIN_PDF_USE_ISO_LOCATION"],'chaine',0,'',$conf->entity); + header("Location: ".$_SERVER["PHP_SELF"]."?mainmenu=home&leftmenu=setup"); exit; } @@ -135,6 +136,12 @@ if ($action == 'edit') // Edit print ''; print ''; + // Hide VAT Intra on address + $var=!$var; + print ''; + // Show prof id 1 in address into pdf $var=!$var; if (! $noCountryCode) @@ -223,12 +230,6 @@ if ($action == 'edit') // Edit print $form->selectyesno('MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT',(! empty($conf->global->MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT))?$conf->global->MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT:0,1); print ''; - // Hide Tva Intra on adress - $var=!$var; - print ''; - //Desc $var=!$var; print ''; + // Place customer adress to the ISO location + $var=!$var; + print ''; + print '
'.$langs->trans("Parameter").''.$langs->trans("Value").'
'.$langs->trans("ShowVATIntaInAddress").''; + print $form->selectyesno('MAIN_TVAINTRA_NOT_IN_ADDRESS',(! empty($conf->global->MAIN_TVAINTRA_NOT_IN_ADDRESS))?$conf->global->MAIN_TVAINTRA_NOT_IN_ADDRESS:0,1); + print '
'.$langs->trans("ShowVATIntaInAddress").''; - print $form->selectyesno('MAIN_TVAINTRA_NOT_IN_ADDRESS',(! empty($conf->global->MAIN_TVAINTRA_NOT_IN_ADDRESS))?$conf->global->MAIN_TVAINTRA_NOT_IN_ADDRESS:0,1); - print '
'.$langs->trans("HideDescOnPDF").''; @@ -247,6 +248,12 @@ if ($action == 'edit') // Edit print $form->selectyesno('MAIN_GENERATE_DOCUMENTS_HIDE_DETAILS',(! empty($conf->global->MAIN_GENERATE_DOCUMENTS_HIDE_DETAILS))?$conf->global->MAIN_GENERATE_DOCUMENTS_HIDE_DETAILS:0,1); print '
'.$langs->trans("PlaceCustomerAddressToIsoLocation").''; + print $form->selectyesno('MAIN_PDF_USE_ISO_LOCATION',(! empty($conf->global->MAIN_PDF_USE_ISO_LOCATION))?$conf->global->MAIN_PDF_USE_ISO_LOCATION:0,1); + print '
'; @@ -303,6 +310,12 @@ else // Show print ''; print ''; + // Hide Intra VAT on address + $var=!$var; + print ''; + // Show prof id 1 in address into pdf $var=!$var; if (! $noCountryCode) @@ -386,13 +399,6 @@ else // Show print ''; - // Hide any PDF informations - $var=!$var; - print ''; - - // Encrypt and protect PDF $var=!$var; print ""; @@ -421,11 +427,11 @@ else // Show print ""; print ''; - // Hide Tva Intra on adress - $var=!$var; - print ''; + // Hide any PDF informations + $var=!$var; + print ''; //Desc $var=!$var; @@ -445,6 +451,10 @@ else // Show print yn($conf->global->MAIN_GENERATE_DOCUMENTS_HIDE_DETAILS,1); print ''; + $var=!$var; + print ''; print '
'.$langs->trans("Parameter").''.$langs->trans("Value").'
'.$langs->trans("ShowVATIntaInAddress").''; + print yn($conf->global->MAIN_TVAINTRA_NOT_IN_ADDRESS,1); + print '
'.$langs->trans("Parameter").''.$langs->trans("Value").'
'.$langs->trans("HideAnyVATInformationOnPDF").''; - print yn($conf->global->MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT,1); - print '
'.$langs->trans("ShowVATIntaInAddress").''; - print yn($conf->global->MAIN_TVAINTRA_NOT_IN_ADDRESS,1); - print '
'.$langs->trans("HideAnyVATInformationOnPDF").''; + print yn($conf->global->MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT,1); + print '
'.$langs->trans("PlaceCustomerAddressToIsoLocation").''; + print yn($conf->global->MAIN_PDF_USE_ISO_LOCATION,1); + print '
'; diff --git a/htdocs/admin/receiptprinter.php b/htdocs/admin/receiptprinter.php new file mode 100644 index 00000000000..794e7c83664 --- /dev/null +++ b/htdocs/admin/receiptprinter.php @@ -0,0 +1,442 @@ + + * Copyright (C) 2015 Frederic France + * + * 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 . + */ + +/** + * \file htdocs/admin/receiptprinter.php + * \ingroup printing + * \brief Page to setup receipt printer + */ + +require '../main.inc.php'; + +require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/receiptprinter.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/core/class/dolreceiptprinter.class.php'; + +$langs->load("admin"); +$langs->load("receiptprinter"); + +if (! $user->admin) accessforbidden(); + +$action = GETPOST('action','alpha'); +$mode = GETPOST('mode','alpha'); + +$printername = GETPOST('printername', 'alpha'); +$printerid = GETPOST('printerid', 'int'); +$parameter = GETPOST('parameter', 'alpha'); + +$template = GETPOST('template', 'alpha'); +$templatename = GETPOST('templatename', 'alpha'); +$templateid = GETPOST('templateid', 'int'); + +$printer = new dolReceiptPrinter($db); + +if (!$mode) $mode='config'; + +// used in library escpos maybe useful if php doesn't support gzdecode +if (!function_exists('gzdecode')) { + function gzdecode($data) + { + return gzinflate(substr($data,10,-8)); + } +} + +/* + * Action + */ + +if ($action == 'addprinter' && $user->admin) +{ + $error=0; + $db->begin(); + if (empty($printername)) { + $error++; + setEventMessages($langs->trans("PrinterNameEmpty"), null, 'errors'); + } + + if (empty($parameter)) { + setEventMessages($langs->trans("PrinterParameterEmpty"), null, 'warnings'); + } + + if (! $error) + { + $result= $printer->AddPrinter($printername, GETPOST('printertypeid', 'int'), $parameter); + if ($result > 0) $error++; + + if (! $error) + { + $db->commit(); + setEventMessages($langs->trans("PrinterAdded",$printername), null); + } + else + { + $db->rollback(); + dol_print_error($db); + } + } + $action = ''; +} + +if ($action == 'deleteprinter' && $user->admin) +{ + $error=0; + $db->begin(); + if (empty($printerid)) { + $error++; + setEventMessages($langs->trans("PrinterIdEmpty"), null, 'errors'); + } + + if (! $error) + { + $result= $printer->DeletePrinter($printerid); + if ($result > 0) $error++; + + if (! $error) + { + $db->commit(); + setEventMessages($langs->trans("PrinterDeleted",$printername), null); + } + else + { + $db->rollback(); + dol_print_error($db); + } + } + $action = ''; +} + +if ($action == 'updateprinter' && $user->admin) +{ + $error=0; + $db->begin(); + if (empty($printerid)) { + $error++; + setEventMessages($langs->trans("PrinterIdEmpty"), null, 'errors'); + } + + if (! $error) + { + $result= $printer->UpdatePrinter($printername, GETPOST('printertypeid', 'int'), $parameter, $printerid); + if ($result > 0) $error++; + + if (! $error) + { + $db->commit(); + setEventMessages($langs->trans("PrinterUpdated",$printername), null); + } + else + { + $db->rollback(); + dol_print_error($db); + } + } + $action = ''; +} + +if ($action == 'testprinter' && $user->admin) +{ + $error=0; + if (empty($printerid)) { + $error++; + setEventMessages($langs->trans("PrinterIdEmpty"), null, 'errors'); + } + + if (! $error) + { + // test + $ret = $printer->SendTestToPrinter($printerid); + if ($ret == 0) + { + setEventMessages($langs->trans("TestSentToPrinter", $printername), null); + } + else + { + setEventMessages($printer->error, $printer->errors, 'errors'); + } + } + $action = ''; +} + + +if ($action == 'updatetemplate' && $user->admin) +{ + $error=0; + $db->begin(); + if (empty($templateid)) { + $error++; + setEventMessages($langs->trans("TemplateIdEmpty"), null, 'errors'); + } + + if (! $error) + { + $result= $printer->UpdateTemplate($templatename, $template, $templateid); + if ($result > 0) $error++; + + if (! $error) + { + $db->commit(); + setEventMessages($langs->trans("TemplateUpdated",$templatename), null); + } + else + { + $db->rollback(); + dol_print_error($db); + } + } + $action = ''; +} + + +/* + * View + */ + +$form = new Form($db); + +llxHeader('',$langs->trans("ReceiptPrinterSetup")); + +$linkback=''.$langs->trans("BackToModuleList").''; +print load_fiche_titre($langs->trans("ReceiptPrinterSetup"),$linkback,'title_setup'); + +$head = receiptprinteradmin_prepare_head($mode); + +if ($mode == 'config' && $user->admin) +{ + print '
'; + print ''; + if ($action!='editprinter') { + print ''; + } else { + print ''; + } + + dol_fiche_head($head, $mode, $langs->trans("ModuleSetup"), 0, 'technic'); + + print $langs->trans("ReceiptPrinterDesc")."

\n"; + + print ''."\n"; + $var=true; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print "\n"; + $ret = $printer->listprinters(); + if ($ret > 0) { + setEventMessages($printer->error, $printer->errors, 'errors'); + } else { + for ($line=0; $line < count($printer->listprinters); $line++) { + $var = !$var; + print ''; + if ($action=='editprinter' && $printer->listprinters[$line]['rowid']==$printerid) { + print ''; + print ''; + $ret = $printer->selectTypePrinter($printer->listprinters[$line]['fk_type']); + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + } else { + print ''; + switch ($printer->listprinters[$line]['fk_type']) { + case 1: + $connector = 'CONNECTOR_DUMMY'; + break; + case 2: + $connector = 'CONNECTOR_FILE_PRINT'; + break; + case 3: + $connector = 'CONNECTOR_NETWORK_PRINT'; + break; + case 4: + $connector = 'CONNECTOR_WINDOWS_PRINT'; + break; + case 5: + $connector = 'CONNECTOR_JAVA'; + break; + default: + $connector = 'CONNECTOR_UNKNOWN'; + break; + } + print ''; + print ''; + // edit icon + print ''; + // delete icon + print ''; + // test icon + print ''; + print ''; + } + } + } + + if ($action!='editprinter') { + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print "\n"; + print ''; + print ''; + $ret = $printer->selectTypePrinter(); + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + } + print '
'.$langs->trans("Name").''.$langs->trans("Type").''.$langs->trans("Parameters").'
'.$printer->resprint.'
'.$printer->listprinters[$line]['name'].''.$langs->trans($connector).''.$printer->listprinters[$line]['parameter'].''; + print img_picto($langs->trans("Edit"),'edit'); + print ''; + print img_picto($langs->trans("Delete"),'delete'); + print ''; + print img_picto($langs->trans("TestPrinter"),'printer'); + print '
'.$langs->trans("Name").''.$langs->trans("Type").''.$langs->trans("Parameters").'
'.$printer->resprint.'
'; + + dol_fiche_end(); + if ($action!='editprinter') { + print '
'; + } else { + print '
'; + } + print '
'; + + print '

'; + dol_fiche_head(); + print ''."\n"; + $var=true; + print ''; + print ''; + print ''; + print ''; + //print ''; + print '
'.$langs->trans("CONNECTOR_DUMMY").':'.$langs->trans("CONNECTOR_DUMMY_HELP").'
'.$langs->trans("CONNECTOR_NETWORK_PRINT").':'.$langs->trans("CONNECTOR_NETWORK_PRINT_HELP").'
'.$langs->trans("CONNECTOR_FILE_PRINT").':'.$langs->trans("CONNECTOR_FILE_PRINT_HELP").'
'.$langs->trans("CONNECTOR_WINDOWS_PRINT").':'.$langs->trans("CONNECTOR_WINDOWS_PRINT_HELP").'
'.$langs->trans("CONNECTOR_JAVA").':'.$langs->trans("CONNECTOR_JAVA_HELP").'
'; + dol_fiche_end(); +} + +if ($mode == 'template' && $user->admin) +{ + print '
'; + print ''; + if ($action!='edittemplate') { + print ''; + } else { + print ''; + } + + dol_fiche_head($head, $mode, $langs->trans("ModuleSetup"), 0, 'technic'); + + print $langs->trans("ReceiptPrinterTemplateDesc")."

\n"; + print ''."\n"; + $var=true; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print "\n"; + $ret = $printer->listPrintersTemplates(); + //print '
'.print_r($printer->listprinterstemplates, true).'
'; + if ($ret > 0) { + setEventMessages($printer->error, $printer->errors, 'errors'); + } else { + for ($line=0; $line < count($printer->listprinterstemplates); $line++) { + $var = !$var; + print ''; + if ($action=='edittemplate' && $printer->listprinterstemplates[$line]['rowid']==$templateid) { + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + } else { + print ''; + print ''; + // edit icon + print ''; + // delete icon + print ''; + // test icon + print ''; + } + print ''; + } + } + + print '
'.$langs->trans("Name").''.$langs->trans("Template").'
'; + print ''.$printer->listprinterstemplates[$line]['name'].''.nl2br(htmlentities($printer->listprinterstemplates[$line]['template'])).''; + print img_picto($langs->trans("Edit"),'edit'); + print ''; + print img_picto($langs->trans("Delete"),'delete'); + print ''; + print img_picto($langs->trans("TestPrinterTemplate"),'printer'); + print '
'; + if ($action!='edittemplate') { + print '
'; + } else { + print '
'; + } + print '
'; + print '

'; + print ''."\n"; + $var=true; + print ''; + print ''; + print ''; + print "\n"; + for ($tag=0; $tag < count($printer->tags); $tag++) { + $var = !$var; + print ''; + print ''; + print ''; + } + print '
'.$langs->trans("Tag").''.$langs->trans("Description").'
<'.$printer->tags[$tag].'>'.$langs->trans(strtoupper($printer->tags[$tag])).'
'; + + dol_fiche_end(); + +} + +// to remove after test +$object->date_time = '2015-11-02 22:30:25'; +$object->id = 1234; +$object->customer_firstname = 'John'; +$object->customer_lastname = 'Deuf'; +$object->vendor_firstname = 'Jim'; +$object->vendor_lastname = 'Big'; + +$object->barcode = '3700123862396'; +//$printer->sendToPrinter($object, 1, 16); +//setEventMessages($printer->error, $printer->errors, 'errors'); + +llxFooter(); + +$db->close(); + diff --git a/htdocs/admin/security.php b/htdocs/admin/security.php index 250a7426ff8..ea81e63305e 100644 --- a/htdocs/admin/security.php +++ b/htdocs/admin/security.php @@ -221,7 +221,7 @@ if (is_resource($handle)) { if (preg_match('/(modGeneratePass[a-z]+)\.class\.php/i',$file,$reg)) { - // Chargement de la classe de numerotation + // Charging the numbering class $classname = $reg[1]; require_once $dir.'/'.$file; @@ -292,6 +292,7 @@ $var=!$var; $this->NbRepeat = $tabConf[4]; $this->WithoutAmbi = $tabConf[5]; */ + print '
'; print ''; print ''; print ''; @@ -332,13 +333,17 @@ $var=!$var; print '"; print ''; print ''; - - $var=!$var; - print ""; - print ''; - print ''; + print '
'.$langs->trans("PasswordPatternDesc").'' . $langs->trans("NoAmbiCaracAutoGeneration")." '.($tabConf[5] ? $langs->trans("Activated") : $langs->trans("Disabled")).'
'.$langs->trans("Save").'
'; + print '
'; + print ''; + print ''; + print '
'; + print ''.$langs->trans("Save").''; + print '
'; + print '

'; + print ''; + }); + '; - - $out.=''; - + if ($acceptdelayedhtml) + { + $delayedhtmlcontent.=$outdelayed; + } + else + { + $out.=$outdelayed; + } return $out; } @@ -5156,7 +5174,7 @@ class Form * To add a particular filter on select, you must set $object->next_prev_filter to SQL criteria. * * @param object $object Object to show - * @param string $paramid Name of parameter to use to name the id into the URL link + * @param string $paramid Name of parameter to use to name the id into the URL next/previous link * @param string $morehtml More html content to output just before the nav bar * @param int $shownav Show Condition (navigation is shown if value is 1) * @param string $fieldid Nom du champ en base a utiliser pour select next et previous (we make the select max and min on this field) @@ -5191,7 +5209,7 @@ class Form $ret.='
'; - // For thirdparty and contact, the ref is he id, so we show something else + // For thirdparty and contact, the ref is the id, so we show something else if ($object->element == 'societe') { $ret.=dol_htmlentities($object->name); @@ -5359,7 +5377,7 @@ class Form else { $nophoto='/public/theme/common/nophoto.png'; - if (in_array($modulepart,array('userphoto','contact'))) // For module thar are "physical" users + if (in_array($modulepart,array('userphoto','contact'))) // For module that are "physical" users { $nophoto='/public/theme/common/user_anonymous.png'; if ($object->gender == 'man') $nophoto='/public/theme/common/user_man.png'; diff --git a/htdocs/core/class/html.formfile.class.php b/htdocs/core/class/html.formfile.class.php index 230ffa99504..b4f1bef9ccd 100644 --- a/htdocs/core/class/html.formfile.class.php +++ b/htdocs/core/class/html.formfile.class.php @@ -285,7 +285,7 @@ class FormFile } $printer=0; - if (in_array($modulepart,array('facture','askpricesupplier','propal','proposal','order','commande','expedition'))) // The direct print feature is implemented only for such elements + if (in_array($modulepart,array('facture','askpricesupplier','propal','proposal','order','commande','expedition', 'commande_fournisseur'))) // The direct print feature is implemented only for such elements { $printer = (!empty($user->rights->printing->read) && !empty($conf->printing->enabled))?true:false; } @@ -822,7 +822,12 @@ class FormFile if ($object->element == 'member') $relativepath=get_exdir($object->id,2,0,0,$object,'member').$relativepath; // TODO Call using a defined value for $relativepath if ($object->element == 'project_task') $relativepath='Call_not_supported_._Call_function_using_a_defined_relative_path_.'; } - + // For backward compatiblity, we detect file is stored into an old path + if (! empty($conf->global->PRODUCT_USE_OLD_PATH_FOR_PHOTO) && $file['level1name'] == 'photos') + { + $relativepath=preg_replace('/^.*\/produit\//','',$file['path']).'/'; + } + $var=!$var; print ''; print ''; diff --git a/htdocs/core/class/ldap.class.php b/htdocs/core/class/ldap.class.php index 400eb934e26..c081ed34a96 100644 --- a/htdocs/core/class/ldap.class.php +++ b/htdocs/core/class/ldap.class.php @@ -108,7 +108,7 @@ class Ldap { global $conf; - //Server + // Server if (! empty($conf->global->LDAP_SERVER_HOST)) $this->server[] = $conf->global->LDAP_SERVER_HOST; if (! empty($conf->global->LDAP_SERVER_HOST_SLAVE)) $this->server[] = $conf->global->LDAP_SERVER_HOST_SLAVE; $this->serverPort = $conf->global->LDAP_SERVER_PORT; @@ -120,9 +120,11 @@ class Ldap $this->searchPassword = $conf->global->LDAP_ADMIN_PASS; $this->people = $conf->global->LDAP_USER_DN; $this->groups = $conf->global->LDAP_GROUP_DN; - $this->filter = $conf->global->LDAP_FILTER_CONNECTION; - //Users + $this->filter = $conf->global->LDAP_FILTER_CONNECTION; // Filter on user + $this->filtermember = $conf->global->LDAP_MEMBER_FILTER; // Filter on member + + // Users $this->attr_login = $conf->global->LDAP_FIELD_LOGIN; //unix $this->attr_sambalogin = $conf->global->LDAP_FIELD_LOGIN_SAMBA; //samba, activedirectory $this->attr_name = $conf->global->LDAP_FIELD_NAME; @@ -891,14 +893,14 @@ class Ldap } /** - * Returns an array containing a details of elements + * Returns an array containing a details or list of LDAP record(s) * ldapsearch -LLLx -hlocalhost -Dcn=admin,dc=parinux,dc=org -w password -b "ou=adherents,ou=people,dc=parinux,dc=org" userPassword * - * @param string $search Valeur champ cle recherche, sinon '*' pour tous. + * @param string $search Value of fiel to search, '*' for all. Not used if $activefilter is set. * @param string $userDn DN (Ex: ou=adherents,ou=people,dc=parinux,dc=org) * @param string $useridentifier Name of key field (Ex: uid) * @param array $attributeArray Array of fields required. Note this array must also contains field $useridentifier (Ex: sn,userPassword) - * @param int $activefilter 1=use field this->filter as filter instead of parameter $search + * @param int $activefilter '1' or 'user'=use field this->filter as filter instead of parameter $search, 'member'=use field this->filtermember as filter * @param array $attributeAsArray Array of fields wanted as an array not a string * @return array Array of [id_record][ldap_field]=value */ @@ -906,7 +908,7 @@ class Ldap { $fulllist=array(); - dol_syslog(get_class($this)."::getRecords search=".$search." userDn=".$userDn." useridentifier=".$useridentifier." attributeArray=array(".join(',',$attributeArray).")"); + dol_syslog(get_class($this)."::getRecords search=".$search." userDn=".$userDn." useridentifier=".$useridentifier." attributeArray=array(".join(',',$attributeArray).") activefilter=".$activefilter); // if the directory is AD, then bind first with the search user first if ($this->serverType == "activedirectory") @@ -916,15 +918,19 @@ class Ldap } // Define filter - if ($activefilter == 1) + if (! empty($activefilter)) { - if ($this->filter) + if (((string) $activefilter == '1' || (string) $activefilter == 'user') && $this->filter) { $filter = '('.$this->filter.')'; } - else + elseif (((string) $activefilter == 'member') && $this->filter) { - $filter='('.$useridentifier.'=*)'; + $filter = '('.$this->filtermember.')'; + } + else // If this->filter is empty, make fiter on * (all) + { + $filter = '('.$useridentifier.'=*)'; } } else diff --git a/htdocs/core/js/select2_locale.js.php b/htdocs/core/js/select2_locale.js.php new file mode 100644 index 00000000000..2600182dfa1 --- /dev/null +++ b/htdocs/core/js/select2_locale.js.php @@ -0,0 +1,64 @@ + + * Copyright (C) 2012 Laurent Destailleur + * + * 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 . + */ + +/** + * \file htdocs/core/js/timepicker.js.php + * \brief File that include javascript functions for timepicker + */ + +//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'); +?> + +/** + * Select2 French translation + */ +(function ($) { + "use strict"; + + $.fn.select2.locales['xx'] = { + formatMatches: function (matches) { return matches + " trans("Select2ResultFoundUseArrows")); ?>"; }, + formatNoMatches: function () { return "trans("Select2NotFound")); ?>"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "trans("Select2Enter")); ?> " + n + " trans("Select2MoreCharacters")); ?>"; }, + formatLoadMore: function (pageNumber) { return "trans("Select2LoadingMoreResults")); ?>"; }, + formatSearching: function () { return "trans("Select2SearchInProgress")); ?>"; } + }; + + $.extend($.fn.select2.defaults, $.fn.select2.locales['xx']); +})(jQuery); + +close(); diff --git a/htdocs/core/lib/admin.lib.php b/htdocs/core/lib/admin.lib.php index 7b22a2e8dbe..5499d5032b6 100644 --- a/htdocs/core/lib/admin.lib.php +++ b/htdocs/core/lib/admin.lib.php @@ -800,13 +800,14 @@ function unActivateModule($value, $requiredby=1) } else { - // TODO Replace this after DolibarrModules is moved as abstract class with a try catch to show module is bugged + //print $dir.$modFile; + // TODO Replace this after DolibarrModules is moved as abstract class with a try catch to show module we try to disable has not been found or could not be loaded $genericMod = new DolibarrModules($db); $genericMod->name=preg_replace('/^mod/i','',$modName); $genericMod->rights_class=strtolower(preg_replace('/^mod/i','',$modName)); $genericMod->const_name='MAIN_MODULE_'.strtoupper(preg_replace('/^mod/i','',$modName)); dol_syslog("modules::unActivateModule Failed to find module file, we use generic function with name " . $modName); - $genericMod->_remove(''); + $genericMod->_remove(array()); } // Desactivation des modules qui dependent de lui diff --git a/htdocs/core/lib/ajax.lib.php b/htdocs/core/lib/ajax.lib.php index a1d2ac3cf02..97ca06be08a 100644 --- a/htdocs/core/lib/ajax.lib.php +++ b/htdocs/core/lib/ajax.lib.php @@ -52,16 +52,13 @@ function ajax_autocompleter($selected, $htmlname, $url, $urloption='', $minLengt // Remove product id before select another product // use keyup instead change to avoid loosing the product id $("input#search_'.$htmlname.'").keydown(function() { - //console.log(\'purge_id_after_keydown\'); $("#'.$htmlname.'").val(""); }); $("input#search_'.$htmlname.'").change(function() { - //console.log(\'change\'); $("#'.$htmlname.'").trigger("change"); }); // Check when keyup $("input#search_'.$htmlname.'").keyup(function() { - //console.log(\'keyup\'); if ($(this).val().length == 0) { $("#search_'.$htmlname.'").val(""); @@ -127,7 +124,6 @@ function ajax_autocompleter($selected, $htmlname, $url, $urloption='', $minLengt dataType: "json", minLength: '.$minLength.', select: function( event, ui ) { // Function ran when new value is selected into javascript combo - //console.log(\'set value of id with \'+ui.item.id); $("#'.$htmlname.'").val(ui.item.id).trigger("change"); // Select new value // Disable an element if (options.option_disabled) { @@ -171,7 +167,6 @@ function ajax_autocompleter($selected, $htmlname, $url, $urloption='', $minLengt } }); } - $("#search_'.$htmlname.'").trigger("change"); // To tell that input text field was modified } ,delay: 500 }).data("ui-autocomplete")._renderItem = function( ul, item ) { diff --git a/htdocs/core/lib/doc.lib.php b/htdocs/core/lib/doc.lib.php index 330d3d2ba39..76337ec2763 100644 --- a/htdocs/core/lib/doc.lib.php +++ b/htdocs/core/lib/doc.lib.php @@ -106,7 +106,7 @@ function doc_getlinedesc($line,$outputlangs,$hideref=0,$hidedesc=0,$issupplierli $ref_prodserv = ""; if (! empty($conf->global->PRODUCT_ADD_TYPE_IN_DOCUMENTS)) // In standard mode, we do not show this { - if ($prodser->isservice()) + if ($prodser->isService()) { $prefix_prodserv = $outputlangs->transnoentitiesnoconv("Service")." "; } diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 5b990ac509c..013217a9f57 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -179,6 +179,7 @@ function getBrowserInfo($user_agent) // OS if (preg_match('/linux/i', $user_agent)) { $os='linux'; } + elseif (preg_match('/macintosh/i', $user_agent)) { $os='macintosh'; } // Name if (preg_match('/firefox(\/|\s)([\d\.]*)/i', $user_agent, $reg)) { $name='firefox'; $version=$reg[2]; } @@ -703,7 +704,7 @@ function dol_fiche_head($links=array(), $active='0', $title='', $notab=0, $picto function dol_get_fiche_head($links=array(), $active='', $title='', $notab=0, $picto='', $pictoisfullpath=0) { global $conf,$langs, $hookmanager; - + $out="\n".'
'."\n"; // Show title @@ -733,7 +734,7 @@ function dol_get_fiche_head($links=array(), $active='', $title='', $notab=0, $pi $displaytab=0; $nbintab=0; $popuptab=0; - + for ($i = 0 ; $i <= $maxkey ; $i++) { if ((is_numeric($active) && $i == $active) || (! empty($links[$i][2]) && ! is_numeric($active) && $active == $links[$i][2])) @@ -777,7 +778,7 @@ function dol_get_fiche_head($links=array(), $active='', $title='', $notab=0, $pi else { // The popup with the other tabs - if (! $popuptab) + if (! $popuptab) { $popuptab=1; $outmore.='
'; @@ -795,13 +796,13 @@ function dol_get_fiche_head($links=array(), $active='', $title='', $notab=0, $pi $outmore.=''.$links[$i][1].''."\n"; $outmore.='
'; - + $nbintab++; } $displaytab=$i; } if ($popuptab) $outmore.='
'; - + if ($displaytab > $limittoshow) { $tabsname=str_replace("@", "", $picto); @@ -817,7 +818,7 @@ function dol_get_fiche_head($links=array(), $active='', $title='', $notab=0, $pi } $out.="
\n"; - + if (! $notab) $out.="\n".'
'."\n"; $parameters=array('tabname' => $active); @@ -853,7 +854,7 @@ function dol_get_fiche_end($notab=0) * Show tab footer of a card * * @param object $object Object to show - * @param string $paramid Name of parameter to use to name the id into the URL link + * @param string $paramid Name of parameter to use to name the id into the URL next/previous link * @param string $morehtml More html content to output just before the nav bar * @param int $shownav Show Condition (navigation is shown if value is 1) * @param string $fieldid Nom du champ en base a utiliser pour select next et previous (we make the select max and min on this field) @@ -869,28 +870,67 @@ function dol_banner_tab($object, $paramid, $morehtml='', $shownav=1, $fieldid='r { global $conf, $form, $user, $langs; - //$showlogo=$object->logo; - $showlogo=1; + $maxvisiblephotos=1; + $showimage=1; $showbarcode=empty($conf->barcode->enabled)?0:($object->barcode?1:0); if (! empty($conf->global->MAIN_USE_ADVANCED_PERMS) && empty($user->rights->barcode->lire_advance)) $showbarcode=0; - $modulepart='societe'; + $modulepart='unknown'; + if ($object->element == 'societe') $modulepart='societe'; if ($object->element == 'contact') $modulepart='contact'; if ($object->element == 'member') $modulepart='memberphoto'; if ($object->element == 'user') $modulepart='userphoto'; + if ($object->element == 'product') $modulepart='product'; print '
'; - if ($showlogo) $morehtmlleft.='
'.$form->showphoto($modulepart,$object,0,0,0,'photoref').'
'; + if ($object->element == 'product') + { + $width=80; $cssclass='photoref'; + $showimage=$object->is_photo_available($conf->product->multidir_output[$object->entity]); + $maxvisiblephotos=(isset($conf->global->PRODUCT_MAX_VISIBLE_PHOTO)?$conf->global->PRODUCT_MAX_VISIBLE_PHOTO:5); + if ($conf->browser->phone) $maxvisiblephotos=1; + if ($showimage) $morehtmlleft.='
'.$object->show_photos($conf->product->multidir_output[$object->entity],1,-$maxvisiblephotos,0,0,0,$width,0).'
'; + else + { + $nophoto='/public/theme/common/nophoto.png'; + $morehtmlleft.='
No photo
'; + } + } + else + { + if ($showimage) $morehtmlleft.='
'.$form->showphoto($modulepart,$object,0,0,0,'photoref','',1,0,$maxvisiblephotos).'
'; + } if ($showbarcode) $morehtmlleft.='
'.$form->showbarcode($object).'
'; if ($object->element == 'societe' && ! empty($conf->use_javascript_ajax) && $user->rights->societe->creer && ! empty($conf->global->MAIN_DIRECT_STATUS_UPDATE)) { $morehtmlright.=ajax_object_onoff($object, 'status', 'status', 'InActivity', 'ActivityCeased'); - } else { + } + elseif ($object->element == 'product') + { + //$morehtmlright.=$langs->trans("Status").' ('.$langs->trans("Sell").') '; + if (! empty($conf->use_javascript_ajax) && $user->rights->produit->creer && ! empty($conf->global->MAIN_DIRECT_STATUS_UPDATE)) { + $morehtmlright.=ajax_object_onoff($object, 'status', 'tosell', 'ProductStatusOnSell', 'ProductStatusNotOnSell'); + } else { + $morehtmlright.=$object->getLibStatut(2,0); + } + $morehtmlright.='   '; + //$morehtmlright.=$langs->trans("Status").' ('.$langs->trans("Buy").') '; + if (! empty($conf->use_javascript_ajax) && $user->rights->produit->creer && ! empty($conf->global->MAIN_DIRECT_STATUS_UPDATE)) { + $morehtmlright.=ajax_object_onoff($object, 'status_buy', 'tobuy', 'ProductStatusOnBuy', 'ProductStatusNotOnBuy'); + } else { + $morehtmlright.=$object->getLibStatut(2,1); + } + } + else { $morehtmlright.=$object->getLibStatut(2); } - if (! empty($object->name_alias)) $morehtmlref.='
'.$object->name_alias.'
'; - $morehtmlref.='
'; - $morehtmlref.=$object->getBannerAddress('refaddress',$object); - $morehtmlref.='
'; - if (! empty($conf->global->MAIN_SHOW_TECHNICAL_ID) && in_array($object->element, array('societe', 'contact', 'member'))) + if (! empty($object->name_alias)) $morehtmlref.='
'.$object->name_alias.'
'; // For thirdparty + if (! empty($object->label)) $morehtmlref.='
'.$object->label.'
'; // For product + if ($object->element != 'product') + { + $morehtmlref.='
'; + $morehtmlref.=$object->getBannerAddress('refaddress',$object); + $morehtmlref.='
'; + } + if (! empty($conf->global->MAIN_SHOW_TECHNICAL_ID) && in_array($object->element, array('societe', 'contact', 'member', 'product'))) { $morehtmlref.='
'; $morehtmlref.=$langs->trans("TechnicalID").': '.$object->id; @@ -900,7 +940,7 @@ function dol_banner_tab($object, $paramid, $morehtml='', $shownav=1, $fieldid='r print '
'; print '
'; } - + /** * Show a string with the label tag dedicated to the HTML edit field. * @@ -1382,7 +1422,7 @@ function dol_print_size($size,$shortvalue=0,$shortunit=0) function dol_print_url($url,$target='_blank',$max=32,$withpicto=0) { global $langs; - + if (empty($url)) return ''; $link=''; return $out; @@ -2958,7 +2998,7 @@ function print_barre_liste($titre, $page, $file, $options='', $sortfield='', $so if ($cpt > 2) $pagelist.='dol_use_jmobile)?' class="pagination"':'').'>dol_use_jmobile)?'class="inactive"':'data-role="button"').'>...'; else if ($cpt == 2) $pagelist.='dol_use_jmobile)?' class="pagination"':'').'>dol_use_jmobile)?'':'data-role="button" ').'href="'.$file.'?page=1'.$options.'&sortfield='.$sortfield.'&sortorder='.$sortorder.'">2'; } - + do { if ($cpt==$page) @@ -2972,7 +3012,7 @@ function print_barre_liste($titre, $page, $file, $options='', $sortfield='', $so $cpt++; } while ($cpt < $nbpages && $cpt<=$page+$maxnbofpage); - + if ($cpt<$nbpages) { if ($cpt<$nbpages-2) $pagelist.= 'dol_use_jmobile)?' class="pagination"':'').'>dol_use_jmobile)?'class="inactive"':'data-role="button"').'>...'; @@ -3841,13 +3881,14 @@ function yn($yesno, $case=1, $color=0) /** * Return a path to have a directory according to object. - * Examples: '001' with level 3->"0/0/1/", '015' with level 3->"0/1/5/" - * Examples: 'ABC-1' with level 3 ->"0/0/1/", '015' with level 1->"5/" + * New usage: $conf->product->multidir_output[$object->entity].'/'.get_exdir(0, 0, 0, 1, $object, 'modulepart') + * Old usage: '001' with level 3->"0/0/1/", '015' with level 3->"0/1/5/" + * Old usage: 'ABC-1' with level 3 ->"0/0/1/", '015' with level 1->"5/" * - * @param string $num Id of object - * @param int $level Level of subdirs to return (1, 2 or 3 levels) - * @param int $alpha 0=Keep number only to forge path, 1=Use alpha part afer the - (By default, use 0). - * @param int $withoutslash 0=With slash at end, 1=without slash at end (except if '/', we return '') + * @param string $num Id of object (deprecated, $object will be used in future) + * @param int $level Level of subdirs to return (1, 2 or 3 levels). (deprecated, global option will be used in future) + * @param int $alpha 0=Keep number only to forge path, 1=Use alpha part afer the - (By default, use 0). (deprecated, global option will be used in future) + * @param int $withoutslash 0=With slash at end (except if '/', we return ''), 1=without slash at end * @param Object $object Object * @param string $modulepart Type of object ('invoice_supplier, 'donation', 'invoice', ...') * @return string Dir to use ending. Example '' or '1/' or '1/2/' @@ -3858,10 +3899,7 @@ function get_exdir($num,$level,$alpha,$withoutslash,$object,$modulepart) $path = ''; - // TODO if object is null, load it from id and modulepart. - - - if (! empty($level) && in_array($modulepart, array('cheque','user','category','holiday','shipment', 'member','don','donation','supplier_invoice','invoice_supplier'))) + if (! empty($level) && in_array($modulepart, array('cheque','user','category','holiday','shipment', 'member','don','donation','supplier_invoice','invoice_supplier','mailing'))) { // This part should be removed once all code is using "get_exdir" to forge path, with all parameters provided if (empty($alpha)) $num = preg_replace('/([^0-9])/i','',$num); @@ -3875,7 +3913,7 @@ function get_exdir($num,$level,$alpha,$withoutslash,$object,$modulepart) { // TODO // We will introduce here a common way of forging path for document storage - // Here, $num=id, ref and modulepart are required. + // Here, object->id, object->ref and object->modulepart are required. } @@ -4402,7 +4440,7 @@ function dolGetFirstLastname($firstname,$lastname,$nameorder=-1) } else if ($nameorder == 2) { - $ret.=$firstname; + $ret.=$firstname; } else { @@ -5155,6 +5193,10 @@ function natural_search($fields, $value, $mode=0, $nofirstand=0) { global $db,$langs; + if ($mode == 0) + { + $value=preg_replace('/\*/','%',$value); // Replace * with % + } if ($mode == 1) { $value=preg_replace('/([<>=]+)\s+([0-9'.preg_quote($langs->trans("DecimalSeparator"),'/').'\-])/','\1\2',$value); // Clean string '< 10' into '<10' so we can the explode on space to get all tests to do @@ -5225,20 +5267,20 @@ function natural_search($fields, $value, $mode=0, $nofirstand=0) /** * Return the filename of file to get the thumbs - * - * @param string $file Original filename + * + * @param string $file Original filename (full or relative path) * @param string $extName Extension to differenciate thumb file name ('', '_small', '_mini') - * @param string $extImgTarget Force image format for thumbs. Use '' to keep same extension than original image. - * @return string New file name + * @param string $extImgTarget Force image extension for thumbs. Use '' to keep same extension than original image. + * @return string New file name (full or relative path, including the thumbs/) */ function getImageFileNameForSize($file, $extName, $extImgTarget='') { $dirName = dirname($file); if ($dirName == '.') $dirName=''; - - $fileName = preg_replace('/(\.gif|\.jpeg|\.jpg|\.png|\.bmp)$/i','',$file); // On enleve extension quelquesoit la casse + + $fileName = preg_replace('/(\.gif|\.jpeg|\.jpg|\.png|\.bmp)$/i','',$file); // We remove extension, whatever is its case $fileName = basename($fileName); - + if (empty($extImgTarget)) $extImgTarget = (preg_match('/\.jpg$/i',$file)?'.jpg':''); if (empty($extImgTarget)) $extImgTarget = (preg_match('/\.jpeg$/i',$file)?'.jpeg':''); if (empty($extImgTarget)) $extImgTarget = (preg_match('/\.gif$/i',$file)?'.gif':''); @@ -5246,9 +5288,9 @@ function getImageFileNameForSize($file, $extName, $extImgTarget='') if (empty($extImgTarget)) $extImgTarget = (preg_match('/\.bmp$/i',$file)?'.bmp':''); if (! $extImgTarget) return $file; - + $subdir=''; if ($extName) $subdir = 'thumbs/'; - - return $dirName.$subdir.$fileName.$extName.$extImgTarget; // New filename for thumb + + return ($dirName?$dirName.'/':'').$subdir.$fileName.$extName.$extImgTarget; // New filename for thumb } diff --git a/htdocs/core/lib/geturl.lib.php b/htdocs/core/lib/geturl.lib.php index 682ddb1b1d1..83c67509dcc 100644 --- a/htdocs/core/lib/geturl.lib.php +++ b/htdocs/core/lib/geturl.lib.php @@ -101,7 +101,7 @@ function getURLContent($url,$postorget='GET',$param='',$followlocation=1,$addhea curl_setopt($ch, CURLOPT_POST, 0); // GET } - //if USE_PROXY constant set to TRUE in Constants.php, then only proxy will be enabled. + //if USE_PROXY constant set at begin of this method. if ($USE_PROXY) { dol_syslog("getURLContent set proxy to ".$PROXY_HOST. ":" . $PROXY_PORT." - ".$PROXY_USER. ":" . $PROXY_PASS); diff --git a/htdocs/core/lib/images.lib.php b/htdocs/core/lib/images.lib.php index e61dc22eeb0..20a58d7021c 100644 --- a/htdocs/core/lib/images.lib.php +++ b/htdocs/core/lib/images.lib.php @@ -512,7 +512,9 @@ function vignette($file, $maxWidth = 160, $maxHeight = 120, $extName='_small', $ $fileName = preg_replace('/(\.gif|\.jpeg|\.jpg|\.png|\.bmp)$/i','',$file); // On enleve extension quelquesoit la casse $fileName = basename($fileName); - $imgThumbName = $dirthumb.'/'.getImageFileNameForSize($file, $extName, $extImgTarget); // Chemin complet du fichier de la vignette + //$imgThumbName = $dirthumb.'/'.getImageFileNameForSize(basename($file), $extName, $extImgTarget); // Full path of thumb file + $imgThumbName = getImageFileNameForSize($file, $extName, $extImgTarget); // Full path of thumb file + // Check if permission are ok //$fp = fopen($imgThumbName, "w"); diff --git a/htdocs/core/lib/pdf.lib.php b/htdocs/core/lib/pdf.lib.php index 0d7f18e1c75..881415555bc 100644 --- a/htdocs/core/lib/pdf.lib.php +++ b/htdocs/core/lib/pdf.lib.php @@ -515,7 +515,7 @@ function pdf_pagehead(&$pdf,$outputlangs,$page_height) global $conf; // Add a background image on document - if (! empty($conf->global->MAIN_USE_BACKGROUND_ON_PDF)) // Warning, this option make TCPDF generation beeing crazy and some content disappeared behin the image + if (! empty($conf->global->MAIN_USE_BACKGROUND_ON_PDF)) // Warning, this option make TCPDF generation being crazy and some content disappeared behind the image { $pdf->SetAutoPageBreak(0,0); // Disable auto pagebreak before adding image $pdf->Image($conf->mycompany->dir_output.'/logos/'.$conf->global->MAIN_USE_BACKGROUND_ON_PDF, (isset($conf->global->MAIN_USE_BACKGROUND_ON_PDF_X)?$conf->global->MAIN_USE_BACKGROUND_ON_PDF_X:0), (isset($conf->global->MAIN_USE_BACKGROUND_ON_PDF_Y)?$conf->global->MAIN_USE_BACKGROUND_ON_PDF_Y:0), 0, $page_height); @@ -1166,7 +1166,7 @@ function pdf_getlinedesc($object,$i,$outputlangs,$hideref=0,$hidedesc=0,$issuppl $ref_prodserv = ""; if (! empty($conf->global->PRODUCT_ADD_TYPE_IN_DOCUMENTS)) // In standard mode, we do not show this { - if ($prodser->isservice()) + if ($prodser->isService()) { $prefix_prodserv = $outputlangs->transnoentitiesnoconv("Service")." "; } @@ -1261,18 +1261,22 @@ function pdf_getlinenum($object,$i,$outputlangs,$hidedetails=0) global $hookmanager; $reshook=0; + $result=''; //if (is_object($hookmanager) && ( (isset($object->lines[$i]->product_type) && $object->lines[$i]->product_type == 9 && ! empty($object->lines[$i]->special_code)) || ! empty($object->lines[$i]->fk_parent_line) ) ) if (is_object($hookmanager)) // Old code is commented on preceding line. Reproduct this test in the pdf_xxx function if you don't want your hook to run { $special_code = $object->lines[$i]->special_code; if (! empty($object->lines[$i]->fk_parent_line)) $special_code = $object->getSpecialCode($object->lines[$i]->fk_parent_line); - // TODO add hook function + $parameters = array('i'=>$i,'outputlangs'=>$outputlangs,'hidedetails'=>$hidedetails,'special_code'=>$special_code); + $action=''; + $reshook = $hookmanager->executeHooks('pdf_getlinenum',$parameters,$object,$action); // Note that $action and $object may have been modified by some hooks + $result.=$hookmanager->resPrint; } if (empty($reshook)) { - return dol_htmlentitiesbr($object->lines[$i]->num); + $result.=dol_htmlentitiesbr($object->lines[$i]->num); } - return ''; + return $result; } @@ -1290,18 +1294,22 @@ function pdf_getlineref($object,$i,$outputlangs,$hidedetails=0) global $hookmanager; $reshook=0; + $result=''; //if (is_object($hookmanager) && ( (isset($object->lines[$i]->product_type) && $object->lines[$i]->product_type == 9 && ! empty($object->lines[$i]->special_code)) || ! empty($object->lines[$i]->fk_parent_line) ) ) if (is_object($hookmanager)) // Old code is commented on preceding line. Reproduct this test in the pdf_xxx function if you don't want your hook to run { $special_code = $object->lines[$i]->special_code; if (! empty($object->lines[$i]->fk_parent_line)) $special_code = $object->getSpecialCode($object->lines[$i]->fk_parent_line); - // TODO add hook function + $parameters = array('i'=>$i,'outputlangs'=>$outputlangs,'hidedetails'=>$hidedetails,'special_code'=>$special_code); + $action=''; + $reshook = $hookmanager->executeHooks('pdf_getlineref',$parameters,$object,$action); // Note that $action and $object may have been modified by some hooks + $result.=$hookmanager->resPrint; } if (empty($reshook)) { - return dol_htmlentitiesbr($object->lines[$i]->product_ref); + $result.=dol_htmlentitiesbr($object->lines[$i]->product_ref); } - return ''; + return $result; } /** @@ -1318,18 +1326,22 @@ function pdf_getlineref_supplier($object,$i,$outputlangs,$hidedetails=0) global $hookmanager; $reshook=0; + $result=''; //if (is_object($hookmanager) && ( (isset($object->lines[$i]->product_type) && $object->lines[$i]->product_type == 9 && ! empty($object->lines[$i]->special_code)) || ! empty($object->lines[$i]->fk_parent_line) ) ) if (is_object($hookmanager)) // Old code is commented on preceding line. Reproduct this test in the pdf_xxx function if you don't want your hook to run { $special_code = $object->lines[$i]->special_code; if (! empty($object->lines[$i]->fk_parent_line)) $special_code = $object->getSpecialCode($object->lines[$i]->fk_parent_line); - // TODO add hook function + $parameters = array('i'=>$i,'outputlangs'=>$outputlangs,'hidedetails'=>$hidedetails,'special_code'=>$special_code); + $action=''; + $reshook = $hookmanager->executeHooks('pdf_getlineref_supplier',$parameters,$object,$action); // Note that $action and $object may have been modified by some hooks + $result.=$hookmanager->resPrint; } if (empty($reshook)) { - return dol_htmlentitiesbr($object->lines[$i]->ref_supplier); + $result.=dol_htmlentitiesbr($object->lines[$i]->ref_supplier); } - return ''; + return $result; } /** @@ -1345,9 +1357,10 @@ function pdf_getlinevatrate($object,$i,$outputlangs,$hidedetails=0) { global $hookmanager; + $result=''; $reshook=0; //if (is_object($hookmanager) && ( (isset($object->lines[$i]->product_type) && $object->lines[$i]->product_type == 9 && ! empty($object->lines[$i]->special_code)) || ! empty($object->lines[$i]->fk_parent_line) ) ) - if (is_object($hookmanager)) // Old code is commented on preceding line. Reproduct this test in the pdf_xxx function if you don't want your hook to run + if (is_object($hookmanager)) // Old code is commented on preceding line. Reproduce this test in the pdf_xxx function if you don't want your hook to run { $special_code = $object->lines[$i]->special_code; if (! empty($object->lines[$i]->fk_parent_line)) $special_code = $object->getSpecialCode($object->lines[$i]->fk_parent_line); @@ -1355,13 +1368,13 @@ function pdf_getlinevatrate($object,$i,$outputlangs,$hidedetails=0) $action=''; $reshook = $hookmanager->executeHooks('pdf_getlinevatrate',$parameters,$object,$action); // Note that $action and $object may have been modified by some hooks - if (!empty($hookmanager->resPrint)) return $hookmanager->resPrint; + if (!empty($hookmanager->resPrint)) $result.=$hookmanager->resPrint; } if (empty($reshook)) { - if (empty($hidedetails) || $hidedetails > 1) return vatrate($object->lines[$i]->tva_tx,1,$object->lines[$i]->info_bits,1); + if (empty($hidedetails) || $hidedetails > 1) $result.=vatrate($object->lines[$i]->tva_tx,1,$object->lines[$i]->info_bits,1); } - return ''; + return $result; } /** @@ -1380,6 +1393,7 @@ function pdf_getlineupexcltax($object,$i,$outputlangs,$hidedetails=0) $sign=1; if (isset($object->type) && $object->type == 2 && ! empty($conf->global->INVOICE_POSITIVE_CREDIT_NOTE)) $sign=-1; + $result=''; $reshook=0; //if (is_object($hookmanager) && ( (isset($object->lines[$i]->product_type) && $object->lines[$i]->product_type == 9 && ! empty($object->lines[$i]->special_code)) || ! empty($object->lines[$i]->fk_parent_line) ) ) if (is_object($hookmanager)) // Old code is commented on preceding line. Reproduct this test in the pdf_xxx function if you don't want your hook to run @@ -1390,13 +1404,13 @@ function pdf_getlineupexcltax($object,$i,$outputlangs,$hidedetails=0) $action=''; $reshook = $hookmanager->executeHooks('pdf_getlineupexcltax',$parameters,$object,$action); // Note that $action and $object may have been modified by some hooks - if (!empty($hookmanager->resPrint)) print $hookmanager->resPrint; + if (!empty($hookmanager->resPrint)) $result.=$hookmanager->resPrint; } if (empty($reshook)) { - if (empty($hidedetails) || $hidedetails > 1) return price($sign * $object->lines[$i]->subprice, 0, $outputlangs); + if (empty($hidedetails) || $hidedetails > 1) $result.=price($sign * $object->lines[$i]->subprice, 0, $outputlangs); } - return ''; + return $result; } /** @@ -1412,6 +1426,7 @@ function pdf_getlineupwithtax($object,$i,$outputlangs,$hidedetails=0) { global $hookmanager; + $result=''; $reshook=0; //if (is_object($hookmanager) && ( (isset($object->lines[$i]->product_type) && $object->lines[$i]->product_type == 9 && ! empty($object->lines[$i]->special_code)) || ! empty($object->lines[$i]->fk_parent_line) ) ) if (is_object($hookmanager)) // Old code is commented on preceding line. Reproduct this test in the pdf_xxx function if you don't want your hook to run @@ -1422,13 +1437,13 @@ function pdf_getlineupwithtax($object,$i,$outputlangs,$hidedetails=0) $action=''; $reshook = $hookmanager->executeHooks('pdf_getlineupwithtax',$parameters,$object,$action); // Note that $action and $object may have been modified by some hooks - if (!empty($hookmanager->resPrint)) print $hookmanager->resPrint; + if (!empty($hookmanager->resPrint)) $result.=$hookmanager->resPrint; } if (empty($reshook)) { - if (empty($hidedetails) || $hidedetails > 1) return price(($object->lines[$i]->subprice) + ($object->lines[$i]->subprice)*($object->lines[$i]->tva_tx)/100, 0, $outputlangs); + if (empty($hidedetails) || $hidedetails > 1) $result.=price(($object->lines[$i]->subprice) + ($object->lines[$i]->subprice)*($object->lines[$i]->tva_tx)/100, 0, $outputlangs); } - return ''; + return $result; } /** @@ -1444,6 +1459,7 @@ function pdf_getlineqty($object,$i,$outputlangs,$hidedetails=0) { global $hookmanager; + $result=''; $reshook=0; //if (is_object($hookmanager) && ( (isset($object->lines[$i]->product_type) && $object->lines[$i]->product_type == 9 && ! empty($object->lines[$i]->special_code)) || ! empty($object->lines[$i]->fk_parent_line) ) ) if (is_object($hookmanager)) // Old code is commented on preceding line. Reproduct this test in the pdf_xxx function if you don't want your hook to run @@ -1454,15 +1470,14 @@ function pdf_getlineqty($object,$i,$outputlangs,$hidedetails=0) $action=''; $reshook = $hookmanager->executeHooks('pdf_getlineqty',$parameters,$object,$action); // Note that $action and $object may have been modified by some hooks - if(!empty($hookmanager->resPrint)) return $hookmanager->resPrint; - else return $reshook; + if(!empty($hookmanager->resPrint)) $result=$hookmanager->resPrint; } if (empty($reshook)) { if ($object->lines[$i]->special_code == 3) return ''; - if (empty($hidedetails) || $hidedetails > 1) return $object->lines[$i]->qty; + if (empty($hidedetails) || $hidedetails > 1) $result.=$object->lines[$i]->qty; } - return ''; + return $result; } /** @@ -1479,6 +1494,7 @@ function pdf_getlineqty_asked($object,$i,$outputlangs,$hidedetails=0) global $hookmanager; $reshook=0; + $result=''; //if (is_object($hookmanager) && ( (isset($object->lines[$i]->product_type) && $object->lines[$i]->product_type == 9 && ! empty($object->lines[$i]->special_code)) || ! empty($object->lines[$i]->fk_parent_line) ) ) if (is_object($hookmanager)) // Old code is commented on preceding line. Reproduct this test in the pdf_xxx function if you don't want your hook to run { @@ -1488,14 +1504,14 @@ function pdf_getlineqty_asked($object,$i,$outputlangs,$hidedetails=0) $action=''; $reshook = $hookmanager->executeHooks('pdf_getlineqty_asked',$parameters,$object,$action); // Note that $action and $object may have been modified by some hooks - if (!empty($hookmanager->resPrint)) return $hookmanager->resPrint; + if (!empty($hookmanager->resPrint)) $result.=$hookmanager->resPrint; } if (empty($reshook)) { if ($object->lines[$i]->special_code == 3) return ''; - if (empty($hidedetails) || $hidedetails > 1) return $object->lines[$i]->qty_asked; + if (empty($hidedetails) || $hidedetails > 1) $result.=$object->lines[$i]->qty_asked; } - return ''; + return $result; } /** @@ -1512,6 +1528,7 @@ function pdf_getlineqty_shipped($object,$i,$outputlangs,$hidedetails=0) global $hookmanager; $reshook=0; + $result=''; //if (is_object($hookmanager) && ( (isset($object->lines[$i]->product_type) && $object->lines[$i]->product_type == 9 && ! empty($object->lines[$i]->special_code)) || ! empty($object->lines[$i]->fk_parent_line) ) ) if (is_object($hookmanager)) // Old code is commented on preceding line. Reproduct this test in the pdf_xxx function if you don't want your hook to run { @@ -1521,14 +1538,14 @@ function pdf_getlineqty_shipped($object,$i,$outputlangs,$hidedetails=0) $action=''; $reshook = $hookmanager->executeHooks('pdf_getlineqty_shipped',$parameters,$object,$action); // Note that $action and $object may have been modified by some hooks - if(!empty($hookmanager->resPrint)) return $hookmanager->resPrint; + if(!empty($hookmanager->resPrint)) $result.=$hookmanager->resPrint; } if (empty($reshook)) { if ($object->lines[$i]->special_code == 3) return ''; - if (empty($hidedetails) || $hidedetails > 1) return $object->lines[$i]->qty_shipped; + if (empty($hidedetails) || $hidedetails > 1) $result.=$object->lines[$i]->qty_shipped; } - return ''; + return $result; } /** @@ -1545,7 +1562,8 @@ function pdf_getlineqty_keeptoship($object,$i,$outputlangs,$hidedetails=0) global $hookmanager; $reshook=0; - //if (is_object($hookmanager) && ( (isset($object->lines[$i]->product_type) && $object->lines[$i]->product_type == 9 && ! empty($object->lines[$i]->special_code)) || ! empty($object->lines[$i]->fk_parent_line) ) ) + $result=''; + //if (is_object($hookmanager) && ( (isset($object->lines[$i]->product_type) && $object->lines[$i]->product_type == 9 && ! empty($object->lines[$i]->special_code)) || ! empty($object->lines[$i]->fk_parent_line) ) ) if (is_object($hookmanager)) // Old code is commented on preceding line. Reproduct this test in the pdf_xxx function if you don't want your hook to run { $special_code = $object->lines[$i]->special_code; @@ -1554,14 +1572,14 @@ function pdf_getlineqty_keeptoship($object,$i,$outputlangs,$hidedetails=0) $action=''; $reshook = $hookmanager->executeHooks('pdf_getlineqty_keeptoship',$parameters,$object,$action); // Note that $action and $object may have been modified by some hooks - if(!empty($hookmanager->resPrint)) return $hookmanager->resPrint; + if(!empty($hookmanager->resPrint)) $result.=$hookmanager->resPrint; } if (empty($reshook)) { if ($object->lines[$i]->special_code == 3) return ''; - if (empty($hidedetails) || $hidedetails > 1) return ($object->lines[$i]->qty_asked - $object->lines[$i]->qty_shipped); + if (empty($hidedetails) || $hidedetails > 1) $result.=($object->lines[$i]->qty_asked - $object->lines[$i]->qty_shipped); } - return ''; + return $result; } /** @@ -1579,7 +1597,8 @@ function pdf_getlineunit($object, $i, $outputlangs, $hidedetails = 0, $hookmanag global $langs; $reshook=0; - //if (is_object($hookmanager) && ( (isset($object->lines[$i]->product_type) && $object->lines[$i]->product_type == 9 && ! empty($object->lines[$i]->special_code)) || ! empty($object->lines[$i]->fk_parent_line) ) ) + $result=''; + //if (is_object($hookmanager) && ( (isset($object->lines[$i]->product_type) && $object->lines[$i]->product_type == 9 && ! empty($object->lines[$i]->special_code)) || ! empty($object->lines[$i]->fk_parent_line) ) ) if (is_object($hookmanager)) // Old code is commented on preceding line. Reproduct this test in the pdf_xxx function if you don't want your hook to run { $special_code = $object->lines[$i]->special_code; @@ -1595,14 +1614,14 @@ function pdf_getlineunit($object, $i, $outputlangs, $hidedetails = 0, $hookmanag $action = ''; $reshook = $hookmanager->executeHooks('pdf_getlineunit', $parameters, $object, $action); // Note that $action and $object may have been modified by some hooks - if(!empty($hookmanager->resPrint)) return $hookmanager->resPrint; + if(!empty($hookmanager->resPrint)) $result.=$hookmanager->resPrint; } if (empty($reshook)) { if ($object->lines[$i]->special_code == 3) return ''; - if (empty($hidedetails) || $hidedetails > 1) return $langs->transnoentitiesnoconv($object->lines[$i]->getLabelOfUnit('short')); + if (empty($hidedetails) || $hidedetails > 1) $result.=$langs->transnoentitiesnoconv($object->lines[$i]->getLabelOfUnit('short')); } - return ''; + return $result; } @@ -1622,6 +1641,7 @@ function pdf_getlineremisepercent($object,$i,$outputlangs,$hidedetails=0) include_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; $reshook=0; + $result=''; //if (is_object($hookmanager) && ( (isset($object->lines[$i]->product_type) && $object->lines[$i]->product_type == 9 && ! empty($object->lines[$i]->special_code)) || ! empty($object->lines[$i]->fk_parent_line) ) ) if (is_object($hookmanager)) // Old code is commented on preceding line. Reproduct this test in the pdf_xxx function if you don't want your hook to run { @@ -1631,14 +1651,14 @@ function pdf_getlineremisepercent($object,$i,$outputlangs,$hidedetails=0) $action=''; $reshook = $hookmanager->executeHooks('pdf_getlineremisepercent',$parameters,$object,$action); // Note that $action and $object may have been modified by some hooks - if(!empty($hookmanager->resPrint)) return $hookmanager->resPrint; + if(!empty($hookmanager->resPrint)) $result.=$hookmanager->resPrint; } if (empty($reshook)) { if ($object->lines[$i]->special_code == 3) return ''; - if (empty($hidedetails) || $hidedetails > 1) return dol_print_reduction($object->lines[$i]->remise_percent,$outputlangs); + if (empty($hidedetails) || $hidedetails > 1) $result.=dol_print_reduction($object->lines[$i]->remise_percent,$outputlangs); } - return ''; + return $result; } /** @@ -1654,7 +1674,8 @@ function pdf_getlineremisepercent($object,$i,$outputlangs,$hidedetails=0) function pdf_getlineprogress($object, $i, $outputlangs, $hidedetails = 0, $hookmanager = null) { $reshook=0; - //if (is_object($hookmanager) && ( (isset($object->lines[$i]->product_type) && $object->lines[$i]->product_type == 9 && ! empty($object->lines[$i]->special_code)) || ! empty($object->lines[$i]->fk_parent_line) ) ) + $result=''; + //if (is_object($hookmanager) && ( (isset($object->lines[$i]->product_type) && $object->lines[$i]->product_type == 9 && ! empty($object->lines[$i]->special_code)) || ! empty($object->lines[$i]->fk_parent_line) ) ) if (is_object($hookmanager)) // Old code is commented on preceding line. Reproduct this test in the pdf_xxx function if you don't want your hook to run { $special_code = $object->lines[$i]->special_code; @@ -1668,9 +1689,9 @@ function pdf_getlineprogress($object, $i, $outputlangs, $hidedetails = 0, $hookm if (empty($reshook)) { if ($object->lines[$i]->special_code == 3) return ''; - if (empty($hidedetails) || $hidedetails > 1) return $object->lines[$i]->situation_percent . '%'; + if (empty($hidedetails) || $hidedetails > 1) $result.=$object->lines[$i]->situation_percent . '%'; } - return ''; + return $result; } /** @@ -1690,6 +1711,7 @@ function pdf_getlinetotalexcltax($object,$i,$outputlangs,$hidedetails=0) if (isset($object->type) && $object->type == 2 && ! empty($conf->global->INVOICE_POSITIVE_CREDIT_NOTE)) $sign=-1; $reshook=0; + $result=''; //if (is_object($hookmanager) && ( (isset($object->lines[$i]->product_type) && $object->lines[$i]->product_type == 9 && ! empty($object->lines[$i]->special_code)) || ! empty($object->lines[$i]->fk_parent_line) ) ) if (is_object($hookmanager)) // Old code is commented on preceding line. Reproduct this test in the pdf_xxx function if you don't want your hook to run { @@ -1699,7 +1721,7 @@ function pdf_getlinetotalexcltax($object,$i,$outputlangs,$hidedetails=0) $action=''; $reshook = $hookmanager->executeHooks('pdf_getlinetotalexcltax',$parameters,$object,$action); // Note that $action and $object may have been modified by some hooks - if(!empty($hookmanager->resPrint)) return $hookmanager->resPrint; + if(!empty($hookmanager->resPrint)) $result.=$hookmanager->resPrint; } if (empty($reshook)) { @@ -1707,9 +1729,9 @@ function pdf_getlinetotalexcltax($object,$i,$outputlangs,$hidedetails=0) { return $outputlangs->transnoentities("Option"); } - if (empty($hidedetails) || $hidedetails > 1) return price($sign * $object->lines[$i]->total_ht, 0, $outputlangs); + if (empty($hidedetails) || $hidedetails > 1) $result.=price($sign * $object->lines[$i]->total_ht, 0, $outputlangs); } - return ''; + return $result; } /** @@ -1735,7 +1757,7 @@ function pdf_getlinetotalwithtax($object,$i,$outputlangs,$hidedetails=0) $action=''; $reshook = $hookmanager->executeHooks('pdf_getlinetotalwithtax',$parameters,$object,$action); // Note that $action and $object may have been modified by some hooks - if(!empty($hookmanager->resPrint)) return $hookmanager->resPrint; + if(!empty($hookmanager->resPrint)) $result.=$hookmanager->resPrint; } if (empty($reshook)) { @@ -1743,9 +1765,9 @@ function pdf_getlinetotalwithtax($object,$i,$outputlangs,$hidedetails=0) { return $outputlangs->transnoentities("Option"); } - if (empty($hidedetails) || $hidedetails > 1) return price(($object->lines[$i]->total_ht) + ($object->lines[$i]->total_ht)*($object->lines[$i]->tva_tx)/100, 0, $outputlangs); + if (empty($hidedetails) || $hidedetails > 1) $result.=price(($object->lines[$i]->total_ht) + ($object->lines[$i]->total_ht)*($object->lines[$i]->tva_tx)/100, 0, $outputlangs); } - return ''; + return $result; } /** @@ -1776,7 +1798,10 @@ function pdf_getTotalQty($object,$type,$outputlangs) { $special_code = $object->lines[$i]->special_code; if (! empty($object->lines[$i]->fk_parent_line)) $special_code = $object->getSpecialCode($object->lines[$i]->fk_parent_line); - // TODO add hook function + $parameters = array('i'=>$i,'outputlangs'=>$outputlangs,'hidedetails'=>$hidedetails,'special_code'=>$special_code); + $action=''; + $reshook = $hookmanager->executeHooks('pdf_getTotalQty',$parameters,$object,$action); // Note that $action and $object may have been modified by some hooks + return $hookmanager->resPrint; } else if ($type==0 && $object->lines[$i]->product_type == 0) { @@ -1812,7 +1837,7 @@ function pdf_getLinkedObjects($object,$outputlangs) if ($objecttype == 'propal') { $outputlangs->load('propal'); - + foreach($objects as $elementobject) { $linkedobjects[$objecttype]['ref_title'] = $outputlangs->transnoentities("RefProposal"); diff --git a/htdocs/core/lib/product.lib.php b/htdocs/core/lib/product.lib.php index ff2e9c14dbe..d0bc74e77c3 100644 --- a/htdocs/core/lib/product.lib.php +++ b/htdocs/core/lib/product.lib.php @@ -3,6 +3,7 @@ * Copyright (C) 2007 Rodolphe Quiedeville * Copyright (C) 2009-2010 Regis Houssin * Copyright (C) 2015 Raphaël Doursenaud + * Copyright (C) 2015 Marcos García * * 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 @@ -97,7 +98,7 @@ function product_prepare_head($object) $head[$h][2] = 'referers'; $h++; - if ($object->isproduct() || ($object->isservice() && ! empty($conf->global->STOCK_SUPPORTS_SERVICES))) // If physical product we can stock (or service with option) + if ($object->isProduct() || ($object->isService() && ! empty($conf->global->STOCK_SUPPORTS_SERVICES))) // If physical product we can stock (or service with option) { if (! empty($conf->stock->enabled) && $user->rights->stock->lire) { @@ -132,18 +133,6 @@ function product_prepare_head($object) $head[$h][2] = 'documents'; $h++; - - // More tabs from canvas - // TODO Is this still used ? - if (isset($object->onglets) && is_array($object->onglets)) - { - foreach ($object->onglets as $onglet) - { - $head[$h] = $onglet; - $h++; - } - } - complete_head_from_modules($conf,$langs,$object,$head,$h,'product', 'remove'); return $head; @@ -166,6 +155,16 @@ function product_admin_prepare_head() $head[$h][2] = 'general'; $h++; + if (!empty($conf->global->PRODUIT_MULTIPRICES) && ! empty($conf->global->PRODUIT_MULTIPRICES_ALLOW_AUTOCALC_PRICELEVEL)) + { + $head[$h] = array( + 0 => DOL_URL_ROOT."/product/admin/price_rules.php", + 1 => $langs->trans('MultipriceRules'), + 2 => 'generator' + ); + $h++; + } + // Show more tabs from modules // Entries must be declared in modules descriptor with line // $this->tabs = array('entity:+tabname:Title:@mymodule:/mymodule/mypage.php?id=__ID__'); to add new tab diff --git a/htdocs/core/lib/project.lib.php b/htdocs/core/lib/project.lib.php index 94b2de526dd..004ad3a619f 100644 --- a/htdocs/core/lib/project.lib.php +++ b/htdocs/core/lib/project.lib.php @@ -977,7 +977,7 @@ function print_projecttasks_array($db, $form, $socid, $projectsListId, $mytasks= { $var=!$var; print ""; - print ''; + print ''; $projectstatic->ref=$objp->ref; print $projectstatic->getNomUrl(1); print ' - '.dol_trunc($objp->title,24).''; diff --git a/htdocs/core/lib/receiptprinter.lib.php b/htdocs/core/lib/receiptprinter.lib.php new file mode 100644 index 00000000000..d440acc5403 --- /dev/null +++ b/htdocs/core/lib/receiptprinter.lib.php @@ -0,0 +1,72 @@ + + * Copyright (C) 2015 Frederic France + * + * 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 . + */ + +/** + * \file htdocs/core/lib/receiptprinter.lib.php + * \ingroup printing + * \brief Library for receipt printer functions + */ + + + +/** + * Define head array for tabs of receipt printer setup pages + * + * @param string $mode Mode + * @return Array of head + */ +function receiptprinteradmin_prepare_head($mode) +{ + global $langs, $conf; + + $h = 0; + $head = array(); + + $head[$h][0] = DOL_URL_ROOT."/admin/receiptprinter.php?mode=config"; + $head[$h][1] = $langs->trans("ListPrinters"); + $head[$h][2] = 'config'; + $h++; + + $head[$h][0] = DOL_URL_ROOT."/admin/receiptprinter.php?mode=template"; + $head[$h][1] = $langs->trans("SetupReceiptTemplate"); + $head[$h][2] = 'template'; + $h++; + + if ($mode == 'test') + { + $head[$h][0] = DOL_URL_ROOT."/admin/receiptprinter.php?mode=test"; + $head[$h][1] = $langs->trans("TargetedPrinter"); + $head[$h][2] = 'test'; + $h++; + } + + + //$object=new stdClass(); + + // Show more tabs from modules + // Entries must be declared in modules descriptor with line + // $this->tabs = array('entity:+tabname:Title:@mymodule:/mymodule/mypage.php?id=__ID__'); to add new tab + // $this->tabs = array('entity:-tabname); to remove a tab + //complete_head_from_modules($conf,$langs,$object,$head,$h,'printingadmin'); + + //complete_head_from_modules($conf,$langs,$object,$head,$h,'printing','remove'); + + return $head; +} + + diff --git a/htdocs/core/menus/init_menu_auguria.sql b/htdocs/core/menus/init_menu_auguria.sql index df0b9e46488..a75be746ad1 100644 --- a/htdocs/core/menus/init_menu_auguria.sql +++ b/htdocs/core/menus/init_menu_auguria.sql @@ -98,12 +98,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->product->enabled', __HANDLER__, 'left', 2802__+MAX_llx_menu__, 'products', '', 2800__+MAX_llx_menu__, '/product/list.php?leftmenu=product&type=0', 'List', 1, 'products', '$user->rights->produit->lire', '', 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->product->enabled', __HANDLER__, 'left', 2803__+MAX_llx_menu__, 'products', '', 2800__+MAX_llx_menu__, '/product/reassort.php?type=0', 'Stocks', 1, 'products', '$user->rights->produit->lire && $user->rights->stock->lire', '', 2, 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->productbatch->enabled', __HANDLER__, 'left', 2805__+MAX_llx_menu__, 'products', '', 2800__+MAX_llx_menu__, '/product/reassortlot.php?type=0', 'StocksByLotSerial', 1, 'products', '$user->rights->produit->lire && $user->rights->stock->lire', '', 2, 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->propal->enabled', __HANDLER__, 'left', 2804__+MAX_llx_menu__, 'products', '', 2800__+MAX_llx_menu__, '/product/popuprop.php?leftmenu=stats&type=0', 'Statistics', 1, 'main', '$user->rights->produit->lire', '', 2, 6, __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->propal->enabled', __HANDLER__, 'left', 2804__+MAX_llx_menu__, 'products', '', 2800__+MAX_llx_menu__, '/product/stats/card.php?id=all&leftmenu=stats&type=0', 'Statistics', 1, 'main', '$user->rights->produit->lire', '', 2, 6, __ENTITY__); -- Product - Services 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->service->enabled', __HANDLER__, 'left', 2900__+MAX_llx_menu__, 'products', 'service', 3__+MAX_llx_menu__, '/product/index.php?leftmenu=service&type=1', 'Services', 0, 'products', '$user->rights->service->lire', '', 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->service->enabled', __HANDLER__, 'left', 2901__+MAX_llx_menu__, 'products', '', 2900__+MAX_llx_menu__, '/product/card.php?leftmenu=service&action=create&type=1', 'NewService', 1, 'products', '$user->rights->service->creer', '', 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->service->enabled', __HANDLER__, 'left', 2902__+MAX_llx_menu__, 'products', '', 2900__+MAX_llx_menu__, '/product/list.php?leftmenu=service&type=1', 'List', 1, 'products', '$user->rights->service->lire', '', 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->propal->enabled', __HANDLER__, 'left', 2903__+MAX_llx_menu__, 'products', '', 2900__+MAX_llx_menu__, '/product/popuprop.php?leftmenu=stats&type=1', 'Statistics', 1, 'main', '$user->rights->service->lire', '', 2, 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->propal->enabled', __HANDLER__, 'left', 2903__+MAX_llx_menu__, 'products', '', 2900__+MAX_llx_menu__, '/product/stats/card.php?id=all&leftmenu=stats&type=1', 'Statistics', 1, 'main', '$user->rights->service->lire', '', 2, 5, __ENTITY__); -- Product - Stocks 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->stock->enabled', __HANDLER__, 'left', 3100__+MAX_llx_menu__, 'products', 'stock', 3__+MAX_llx_menu__, '/product/stock/index.php?leftmenu=stock', 'Stock', 0, 'stocks', '$user->rights->stock->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->stock->enabled', __HANDLER__, 'left', 3101__+MAX_llx_menu__, 'products', '', 3100__+MAX_llx_menu__, '/product/stock/card.php?action=create', 'MenuNewWarehouse', 1, 'stocks', '$user->rights->stock->creer', '', 2, 0, __ENTITY__); diff --git a/htdocs/core/menus/standard/auguria.lib.php b/htdocs/core/menus/standard/auguria.lib.php index 1cafd091521..9623958188d 100644 --- a/htdocs/core/menus/standard/auguria.lib.php +++ b/htdocs/core/menus/standard/auguria.lib.php @@ -205,14 +205,15 @@ function print_end_menu_array_auguria() * @param DoliDB $db Database handler * @param array $menu_array_before Table of menu entries to show before entries of menu handler * @param array $menu_array_after Table of menu entries to show after entries of menu handler - * @param array $tabMenu If array with menu entries already loaded, we put this array here (in most cases, it's empty) + * @param array $tabMenu If array with menu entries already loaded, we put this array here (in most cases, it's empty) * @param Menu $menu Object Menu to return back list of menu entries * @param int $noout Disable output (Initialise &$menu only). * @param string $forcemainmenu 'x'=Force mainmenu to mainmenu='x' * @param string $forceleftmenu 'all'=Force leftmenu to '' (= all) + * @param array $moredata An array with more data to output * @return int Nb of entries */ -function print_left_auguria_menu($db,$menu_array_before,$menu_array_after,&$tabMenu,&$menu,$noout=0,$forcemainmenu='',$forceleftmenu='') +function print_left_auguria_menu($db,$menu_array_before,$menu_array_after,&$tabMenu,&$menu,$noout=0,$forcemainmenu='',$forceleftmenu='',$moredata=null) { global $user,$conf,$langs,$dolibarr_main_db_name,$mysoc; @@ -245,6 +246,16 @@ function print_left_auguria_menu($db,$menu_array_before,$menu_array_after,&$tabM print '
'."\n"; } + if (is_array($moredata) && ! empty($moredata['searchform'])) + { + print "\n"; + print "\n"; + print '
'."\n"; + print $moredata['searchform']; + print '
'."\n"; + print "\n"; + } + // We update newmenu with entries found into database $menuArbo = new Menubase($db,'auguria'); $newmenu = $menuArbo->menuLeftCharger($newmenu,$mainmenu,$leftmenu,($user->societe_id?1:0),'auguria',$tabMenu); @@ -348,7 +359,7 @@ function print_left_auguria_menu($db,$menu_array_before,$menu_array_after,&$tabM // Show menu if (empty($noout)) { - $alt=0; $blockvmenuopened=false; + $alt=0; $altok=0; $blockvmenuopened=false; $num=count($menu_array); for ($i = 0; $i < $num; $i++) { @@ -358,14 +369,15 @@ function print_left_auguria_menu($db,$menu_array_before,$menu_array_after,&$tabM $alt++; if (empty($menu_array[$i]['level']) && $showmenu) { + $altok++; $blockvmenuopened=true; - if (($alt%2==0)) + if ($altok % 2 == 0) { - print '
'."\n"; + print '
'."\n"; } else { - print '
'."\n"; + print '
'."\n"; } } @@ -437,8 +449,20 @@ function print_left_auguria_menu($db,$menu_array_before,$menu_array_after,&$tabM if ($blockvmenuopened) { print "
\n"; $blockvmenuopened=false; } } } + + if ($altok) print '
'; } + if (is_array($moredata) && ! empty($moredata['bookmarks'])) + { + print "\n"; + print "\n"; + print '
'."\n"; + print $moredata['bookmarks']; + print '
'."\n"; + print "\n"; + } + return count($menu_array); } diff --git a/htdocs/core/menus/standard/auguria_menu.php b/htdocs/core/menus/standard/auguria_menu.php index b54c746388e..a7c701aaeff 100644 --- a/htdocs/core/menus/standard/auguria_menu.php +++ b/htdocs/core/menus/standard/auguria_menu.php @@ -158,9 +158,10 @@ class MenuManager * Show menu * * @param string $mode 'top', 'left', 'jmobile' + * @param array $moredata An array with more data to output * @return string */ - function showmenu($mode) + function showmenu($mode, $moredata=null) { global $conf, $langs, $user; @@ -176,7 +177,7 @@ class MenuManager $this->menu=new Menu(); if ($mode == 'top') print_auguria_menu($this->db,$this->atarget,$this->type_user,$this->tabMenu,$this->menu,0); - if ($mode == 'left') print_left_auguria_menu($this->db,$this->menu_array,$this->menu_array_after,$this->tabMenu,$this->menu,0); + if ($mode == 'left') print_left_auguria_menu($this->db,$this->menu_array,$this->menu_array_after,$this->tabMenu,$this->menu,0,'','',$moredata); if ($mode == 'jmobile') { print_auguria_menu($this->db,$this->atarget,$this->type_user,$this->tabMenu,$this->menu,1); diff --git a/htdocs/core/menus/standard/eldy.lib.php b/htdocs/core/menus/standard/eldy.lib.php index 49c076de4c8..6d31fbc52f6 100644 --- a/htdocs/core/menus/standard/eldy.lib.php +++ b/htdocs/core/menus/standard/eldy.lib.php @@ -409,14 +409,15 @@ function print_end_menu_array() * @param DoliDB $db Database handler * @param array $menu_array_before Table of menu entries to show before entries of menu handler (menu->liste filled with menu->add) * @param array $menu_array_after Table of menu entries to show after entries of menu handler (menu->liste filled with menu->add) - * @param array $tabMenu If array with menu entries already loaded, we put this array here (in most cases, it's empty) + * @param array $tabMenu If array with menu entries already loaded, we put this array here (in most cases, it's empty) * @param Menu $menu Object Menu to return back list of menu entries * @param int $noout Disable output (Initialise &$menu only). * @param string $forcemainmenu 'x'=Force mainmenu to mainmenu='x' * @param string $forceleftmenu 'all'=Force leftmenu to '' (= all) + * @param array $moredata An array with more data to output * @return int nb of menu entries */ -function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu,&$menu,$noout=0,$forcemainmenu='',$forceleftmenu='') +function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu,&$menu,$noout=0,$forcemainmenu='',$forceleftmenu='',$moredata=null) { global $user,$conf,$langs,$dolibarr_main_db_name,$mysoc; @@ -449,6 +450,16 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu print '
'."\n"; } + if (is_array($moredata) && ! empty($moredata['searchform'])) + { + print "\n"; + print "\n"; + print '
'."\n"; + print $moredata['searchform']; + print '
'."\n"; + print "\n"; + } + /** * We update newmenu with entries found into database * -------------------------------------------------- @@ -1077,7 +1088,7 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu } if (! empty($conf->propal->enabled)) { - $newmenu->add("/product/popuprop.php?leftmenu=stats&type=0", $langs->trans("Statistics"), 1, $user->rights->produit->lire && $user->rights->propale->lire); + $newmenu->add("/product/stats/card.php?id=all&leftmenu=stats&type=0", $langs->trans("Statistics"), 1, $user->rights->produit->lire && $user->rights->propale->lire); } } @@ -1089,7 +1100,7 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu $newmenu->add("/product/list.php?leftmenu=service&type=1", $langs->trans("List"), 1, $user->rights->service->lire); if (! empty($conf->propal->enabled)) { - $newmenu->add("/product/popuprop.php?leftmenu=stats&type=1", $langs->trans("Statistics"), 1, $user->rights->service->lire && $user->rights->propale->lire); + $newmenu->add("/product/stats/card.php?id=all&leftmenu=stats&type=1", $langs->trans("Statistics"), 1, $user->rights->service->lire && $user->rights->propale->lire); } } @@ -1407,11 +1418,11 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu $blockvmenuopened=true; if ($altok % 2 == 0) { - print '
'."\n"; + print '
'."\n"; } else { - print '
'."\n"; + print '
'."\n"; } } @@ -1484,6 +1495,16 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu if ($altok) print '
'; } + if (is_array($moredata) && ! empty($moredata['bookmarks'])) + { + print "\n"; + print "\n"; + print '
'."\n"; + print $moredata['bookmarks']; + print '
'."\n"; + print "\n"; + } + return count($menu_array); } diff --git a/htdocs/core/menus/standard/eldy_menu.php b/htdocs/core/menus/standard/eldy_menu.php index fc66eef7fd6..4326de6d98f 100644 --- a/htdocs/core/menus/standard/eldy_menu.php +++ b/htdocs/core/menus/standard/eldy_menu.php @@ -112,9 +112,10 @@ class MenuManager * Show menu * * @param string $mode 'top', 'left', 'jmobile' + * @param array $moredata An array with more data to output * @return string */ - function showmenu($mode) + function showmenu($mode, $moredata=null) { global $conf, $langs, $user; @@ -132,7 +133,7 @@ class MenuManager if (empty($conf->global->MAIN_MENU_INVERT)) { if ($mode == 'top') print_eldy_menu($this->db,$this->atarget,$this->type_user,$this->tabMenu,$this->menu,0); - if ($mode == 'left') print_left_eldy_menu($this->db,$this->menu_array,$this->menu_array_after,$this->tabMenu,$this->menu,0); + if ($mode == 'left') print_left_eldy_menu($this->db,$this->menu_array,$this->menu_array_after,$this->tabMenu,$this->menu,0,'','',$moredata); } else { diff --git a/htdocs/core/menus/standard/empty.php b/htdocs/core/menus/standard/empty.php index 5c428ca9f13..e1b240a8e5e 100644 --- a/htdocs/core/menus/standard/empty.php +++ b/htdocs/core/menus/standard/empty.php @@ -61,9 +61,10 @@ class MenuManager * Show menu * * @param string $mode 'top', 'left', 'jmobile' + * @param array $moredata An array with more data to output * @return string */ - function showmenu($mode) + function showmenu($mode, $moredata=null) { global $user,$conf,$langs,$dolibarr_main_db_name; @@ -133,20 +134,22 @@ class MenuManager if (empty($noout)) { - $alt=0; + $alt=0; $altok=0; $blockvmenuopened=false; $num=count($this->menu->liste); for ($i = 0; $i < $num; $i++) { $alt++; if (empty($this->menu->liste[$i]['level'])) { + $altok++; + $blockvmenuopened=true; if (($alt%2==0)) { - print '
'."\n"; + print '
'."\n"; } else { - print '
'."\n"; + print '
'."\n"; } } @@ -201,6 +204,8 @@ class MenuManager print "
\n"; } } + + if ($altok) print '
'; } if ($mode == 'jmobile') diff --git a/htdocs/core/modules/DolibarrModules.class.php b/htdocs/core/modules/DolibarrModules.class.php index b8d4df05e92..58548a1a732 100644 --- a/htdocs/core/modules/DolibarrModules.class.php +++ b/htdocs/core/modules/DolibarrModules.class.php @@ -201,15 +201,15 @@ class DolibarrModules // Can not be abstract, because we need to insta * * @param DoliDB $db Database handler */ + public function __construct($db) + { + $this->db = $db; + } // We should but can't set this as abstract because this will make dolibarr hang // after migration due to old module not implementing. We must wait PHP is able to make // a try catch on Fatal error to manage this correctly. - function __construct($db) - { - $this->db=$db; - } - - + // We need constructor into function unActivateModule into admin.lib.php + /** * Enables a module. * Inserts all informations into database diff --git a/htdocs/core/modules/cheque/pdf/pdf_blochet.class.php b/htdocs/core/modules/cheque/pdf/pdf_blochet.class.php index dd6732d9742..85e69a23cf1 100644 --- a/htdocs/core/modules/cheque/pdf/pdf_blochet.class.php +++ b/htdocs/core/modules/cheque/pdf/pdf_blochet.class.php @@ -376,7 +376,7 @@ class BordereauChequeBlochet extends ModeleChequeReceipts $default_font_size = pdf_getPDFFontSize($outputlangs); //$showdetails=0; - //return pdf_pagefoot($pdf,$outputlangs,'BANK_CHEQUERECEIPT_FREE_TEXT',$this->emetteur,$this->marge_basse,$this->marge_gauche,$this->page_hauteur,$object,$showdetails,$hidefreetext); + return pdf_pagefoot($pdf,$outputlangs,'BANK_CHEQUERECEIPT_FREE_TEXT',$this->emetteur,$this->marge_basse,$this->marge_gauche,$this->page_hauteur,$object,$showdetails,$hidefreetext); $paramfreetext='BANK_CHEQUERECEIPT_FREE_TEXT'; $marge_basse=$this->marge_basse; $marge_gauche=$this->marge_gauche; @@ -388,7 +388,45 @@ class BordereauChequeBlochet extends ModeleChequeReceipts $pdf->SetFont('','', $default_font_size - 3); $pdf->SetDrawColor(224,224,224); + // The start of the bottom of this page footer is positioned according to # of lines + $freetextheight=0; + if ($line) // Free text + { + //$line="eee
\nfdsfsdf
\nghfghg
"; + if (empty($conf->global->PDF_ALLOW_HTML_FOR_FREE_TEXT)) // by default + { + $width=20000; $align='L'; // By default, ask a manual break: We use a large value 20000, to not have automatic wrap. This make user understand, he need to add CR on its text. + if (! empty($conf->global->MAIN_USE_AUTOWRAP_ON_FREETEXT)) { + $width=200; $align='C'; + } + $freetextheight=$pdf->getStringHeight($width,$line); + } + else + { + $freetextheight=pdfGetHeightForHtmlContent($pdf,dol_htmlentitiesbr($line, 1, 'UTF-8', 0)); // New method (works for HTML content) + //print '
'.$freetextheight;exit; + } + } + + $marginwithfooter=$marge_basse + $freetextheight; + $posy=$marginwithfooter+0; + + if ($line) // Free text + { + $pdf->SetXY($dims['lm'],-$posy); + if (empty($conf->global->PDF_ALLOW_HTML_FOR_FREE_TEXT)) // by default + { + $pdf->MultiCell(0, 3, $line, 0, $align, 0); + } + else + { + $pdf->writeHTMLCell($pdf->page_largeur - $pdf->margin_left - $pdf->margin_right, $freetextheight, $dims['lm'], $dims['hk']-$marginwithfooter, dol_htmlentitiesbr($line, 1, 'UTF-8', 0)); + } + $posy-=$freetextheight; + } + // On positionne le debut du bas de page selon nbre de lignes de ce bas de page + /* $nbofline=dol_nboflines_bis($line,0,$outputlangs->charset_output); //print 'e'.$line.'t'.dol_nboflines($line);exit; $posy=$marge_basse + ($nbofline*3); @@ -398,7 +436,7 @@ class BordereauChequeBlochet extends ModeleChequeReceipts $pdf->SetXY($marge_gauche,-$posy); $pdf->MultiCell(20000, 3, $line, 0, 'L', 0); // Use a large value 20000, to not have automatic wrap. This make user understand, he need to add CR on its text. $posy-=($nbofline*3); // 6 of ligne + 3 of MultiCell - } + }*/ $pdf->SetY(-$posy); $pdf->line($marge_gauche, $page_hauteur-$posy, 200, $page_hauteur-$posy); diff --git a/htdocs/core/modules/export/modules_export.php b/htdocs/core/modules/export/modules_export.php index 113f35299ca..ee1c3b8e96c 100644 --- a/htdocs/core/modules/export/modules_export.php +++ b/htdocs/core/modules/export/modules_export.php @@ -64,7 +64,7 @@ class ModeleExports extends CommonDocGenerator // This class can't be abstrac { $moduleid=$reg[1]; - // Chargement de la classe + // Loading Class $file = $dir."/export_".$moduleid.".modules.php"; $classname = "Export".ucfirst($moduleid); diff --git a/htdocs/core/modules/facture/doc/pdf_crabe.modules.php b/htdocs/core/modules/facture/doc/pdf_crabe.modules.php index a0514c001e9..297913d7bd7 100644 --- a/htdocs/core/modules/facture/doc/pdf_crabe.modules.php +++ b/htdocs/core/modules/facture/doc/pdf_crabe.modules.php @@ -191,7 +191,7 @@ class pdf_crabe extends ModelePDFFactures $objphoto = new Product($this->db); $objphoto->fetch($object->lines[$i]->fk_product); - $pdir = get_exdir($object->lines[$i]->fk_product,2,0,0,'product') . $object->lines[$i]->fk_product ."/photos/"; + $pdir = get_exdir($object->lines[$i]->fk_product,2,0,0,$objphoto,'product') . $object->lines[$i]->fk_product ."/photos/"; $dir = $conf->product->dir_output.'/'.$pdir; $realpath=''; @@ -1503,7 +1503,7 @@ class pdf_crabe extends ModelePDFFactures $pdf->SetTextColor(0,0,60); $pdf->MultiCell($w, 3, $outputlangs->transnoentities("ReplacementInvoice").' : '.$outputlangs->convToOutputCharset($objectreplaced->ref), '', 'R'); } - if ($object->type == 2) + if ($object->type == 2 && !empty($object->fk_facture_source)) { $objectreplaced=new Facture($this->db); $objectreplaced->fetch($object->fk_facture_source); @@ -1546,10 +1546,13 @@ class pdf_crabe extends ModelePDFFactures $carac_emetteur = pdf_build_address($outputlangs, $this->emetteur, $object->client); // Show sender - $posy=42; + $posy=!empty($conf->global->MAIN_PDF_USE_ISO_LOCATION) ? 40 : 42; $posx=$this->marge_gauche; if (! empty($conf->global->MAIN_INVERT_SENDER_RECIPIENT)) $posx=$this->page_largeur-$this->marge_droite-80; - $hautcadre=40; + + $hautcadre=!empty($conf->global->MAIN_PDF_USE_ISO_LOCATION) ? 38 : 40; + $widthrecbox=!empty($conf->global->MAIN_PDF_USE_ISO_LOCATION) ? 92 : 82; + // Show sender frame $pdf->SetTextColor(0,0,0); @@ -1558,19 +1561,19 @@ class pdf_crabe extends ModelePDFFactures $pdf->MultiCell(66,5, $outputlangs->transnoentities("BillFrom").":", 0, 'L'); $pdf->SetXY($posx,$posy); $pdf->SetFillColor(230,230,230); - $pdf->MultiCell(82, $hautcadre, "", 0, 'R', 1); + $pdf->MultiCell($widthrecbox, $hautcadre, "", 0, 'R', 1); $pdf->SetTextColor(0,0,60); // Show sender name $pdf->SetXY($posx+2,$posy+3); $pdf->SetFont('','B', $default_font_size); - $pdf->MultiCell(80, 4, $outputlangs->convToOutputCharset($this->emetteur->name), 0, 'L'); + $pdf->MultiCell($widthrecbox-2, 4, $outputlangs->convToOutputCharset($this->emetteur->name), 0, 'L'); $posy=$pdf->getY(); // Show sender information $pdf->SetXY($posx+2,$posy); $pdf->SetFont('','', $default_font_size - 1); - $pdf->MultiCell(80, 4, $carac_emetteur, 0, 'L'); + $pdf->MultiCell($widthrecbox-2, 4, $carac_emetteur, 0, 'L'); @@ -1596,9 +1599,9 @@ class pdf_crabe extends ModelePDFFactures $carac_client=pdf_build_address($outputlangs,$this->emetteur,$object->client,($usecontact?$object->contact:''),$usecontact,'target'); // Show recipient - $widthrecbox=100; + $widthrecbox=!empty($conf->global->MAIN_PDF_USE_ISO_LOCATION) ? 92 : 100; if ($this->page_largeur < 210) $widthrecbox=84; // To work with US executive format - $posy=42; + $posy=!empty($conf->global->MAIN_PDF_USE_ISO_LOCATION) ? 40 : 42; $posx=$this->page_largeur-$this->marge_droite-$widthrecbox; if (! empty($conf->global->MAIN_INVERT_SENDER_RECIPIENT)) $posx=$this->marge_gauche; diff --git a/htdocs/core/modules/import/modules_import.php b/htdocs/core/modules/import/modules_import.php index 4fa5052a90a..a27b0fd9426 100644 --- a/htdocs/core/modules/import/modules_import.php +++ b/htdocs/core/modules/import/modules_import.php @@ -84,7 +84,7 @@ class ModeleImports { $moduleid=$reg[1]; - // Chargement de la classe + // Loading Class $file = $dir."/import_".$moduleid.".modules.php"; $classname = "Import".ucfirst($moduleid); diff --git a/htdocs/core/modules/mailings/modules_mailings.php b/htdocs/core/modules/mailings/modules_mailings.php index 2508440c147..48252d22a6e 100644 --- a/htdocs/core/modules/mailings/modules_mailings.php +++ b/htdocs/core/modules/mailings/modules_mailings.php @@ -203,9 +203,9 @@ class MailingTargets // This can't be abstract as it is used for some method //Update the status to show contact mail that don't want to be contacted anymore' $sql = "UPDATE ".MAIN_DB_PREFIX."mailing_cibles"; $sql .= " SET statut=3"; - $sql .= " WHERE fk_mailing=".$mailing_id." AND email in (SELECT sc.email FROM ".MAIN_DB_PREFIX."socpeople AS sc "; + $sql .= " WHERE fk_mailing=".$mailing_id." AND source_type='contact' AND (email in (SELECT sc.email FROM ".MAIN_DB_PREFIX."socpeople AS sc "; $sql .= " INNER JOIN ".MAIN_DB_PREFIX."societe s ON s.fk_stcomm=-1 AND s.rowid=sc.fk_soc)"; - $sql .= " AND source_type='contact'"; + $sql .= " OR no_email=1)"; $result=$this->db->query($sql); dol_syslog(get_class($this)."::add_to_target: mailing update status to display contact mail that do not want to be contacted sql:".$sql); diff --git a/htdocs/core/modules/modOauth.class.php b/htdocs/core/modules/modOauth.class.php new file mode 100644 index 00000000000..35be63a5c59 --- /dev/null +++ b/htdocs/core/modules/modOauth.class.php @@ -0,0 +1,147 @@ + + * Copyright (C) 2015 Frederic France + * + * 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 . + */ + +/** \defgroup oauth Module oauth + * \brief Module for activation of Oauth for several Api Access + */ + +/** + * \file htdocs/core/modules/modOauth.class.php + * \ingroup oauth + * \brief File of class to describe and activate module Oauth + */ +include_once DOL_DOCUMENT_ROOT .'/core/modules/DolibarrModules.class.php'; + + + +/** + * Class to describe and activate module OAuth + */ +class modOauth extends DolibarrModules +{ + + /** + * Constructor + * + * @param DoliDB $db Database handler + */ + function __construct($db) + { + $this->db = $db ; + $this->numero = 66000; + // Family can be 'crm','financial','hr','projects','products','ecm','technic','other' + // It is used to group modules in module setup page + $this->family = "technic"; + // 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)); + // Module description, used if translation string 'ModuleXXXDesc' not found (where XXX is value of numeric property 'numero' of module) + $this->description = "Enable OAuth authentication"; + $this->version = 'dolibarr'; // 'development' or 'experimental' or 'dolibarr' or version + $this->const_name = 'MAIN_MODULE_'.strtoupper($this->name); + // Where to store the module in setup page (0=common,1=interface,2=others,3=very specific) + $this->special = 1; + // Name of image file used for this module. + // If file is in theme/yourtheme/img directory under name object_pictovalue.png, use this->picto='pictovalue' + // If file is in module/img directory under name object_pictovalue.png, use this->picto='pictovalue@module' + $this->picto = 'technic'; + + // Data directories to create when module is enabled. + $this->dirs = array(); + + // Config pages + $this->config_page_url = array("oauth.php"); + + // Dependencies + $this->depends = array(); + $this->requiredby = array(); + $this->phpmin = array(5,1); // Minimum version of PHP required by module + $this->need_dolibarr_version = array(3,7,-2); // Minimum version of Dolibarr required by module + $this->conflictwith = array(); + $this->langfiles = array("oauth"); + + // Constants + $this->const = array(); + + // Boxes + $this->boxes = array(); + + // Permissions + $this->rights = array(); + $this->rights_class = 'oauth'; + + $r=0; + // $this->rights[$r][0] Id permission (unique tous modules confondus) + // $this->rights[$r][1] Libelle par defaut si traduction de cle "PermissionXXX" non trouvee (XXX = Id permission) + // $this->rights[$r][2] Non utilise + // $this->rights[$r][3] 1=Permis par defaut, 0=Non permis par defaut + // $this->rights[$r][4] Niveau 1 pour nommer permission dans code + // $this->rights[$r][5] Niveau 2 pour nommer permission dans code + + $r++; + $this->rights[$r][0] = 66000; + $this->rights[$r][1] = 'OauthAccess'; + $this->rights[$r][2] = 'r'; + $this->rights[$r][3] = 1; + $this->rights[$r][4] = 'read'; + + // Main menu entries + $this->menus = array(); // List of menus to add + $r=0; + + // This is to declare the Top Menu entry: + //$this->menu[$r]=array( 'fk_menu'=>'fk_mainmenu=home,fk_leftmenu=modulesadmintools', // Put 0 if this is a top menu + // 'type'=>'left', // This is a Top menu entry + // 'titre'=>'MenuOauth', + // 'mainmenu'=>'oauth', + // 'url'=>'/oauth/index.php', + // 'langs'=>'oauth', // Lang file to use (without .lang) by module. File must be in langs/code_CODE/ directory. + // 'position'=>300, + // 'enabled'=>'$conf->oauth->enabled && $leftmenu==\'modulesadmintools\'', + // 'perms'=>'$user->rights->oauth->read', // Use 'perms'=>'1' if you want your menu with no permission rules + // 'target'=>'', + // 'user'=>0); // 0=Menu for internal users, 1=external users, 2=both + + //$r++; + + + } + + + /** + * Function called when module is enabled. + * The init function add constants, boxes, permissions and menus (defined in constructor) into Dolibarr database. + * It also creates data directories + * + * @param string $options Options when enabling module ('', 'noboxes') + * @return int 1 if OK, 0 if KO + */ + function init($options='') + { + global $conf; + + // Clean before activation + $this->remove($options); + + $sql = array( + "CREATE TABLE IF NOT EXISTS llx_oauth_state (rowid int(11) NOT NULL AUTO_INCREMENT, service varchar(36), state varchar(128), fk_user int(11), fk_adherent int(11), entity int(11), PRIMARY KEY (rowid)) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;", + "CREATE TABLE IF NOT EXISTS llx_oauth_token (rowid int(11) NOT NULL AUTO_INCREMENT, service varchar(36), token text, fk_user int(11), fk_adherent int(11), entity int(11), PRIMARY KEY (rowid)) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;", + ); + + return $this->_init($sql,$options); + } +} diff --git a/htdocs/core/modules/modProjet.class.php b/htdocs/core/modules/modProjet.class.php index c2594f767ba..975c48b517d 100644 --- a/htdocs/core/modules/modProjet.class.php +++ b/htdocs/core/modules/modProjet.class.php @@ -300,8 +300,8 @@ class modProjet extends DolibarrModules } } // End add extra fields - $this->export_fields_array[$r]=array_merge($this->export_fields_array[$r], array('ptt.task_date'=>'TaskTimeDate','ptt.task_duration'=>"TimesSpent",'ptt.fk_user'=>"TaskTimeUser",'ptt.note'=>"TaskTimeNote")); - $this->export_entities_array[$r]=array_merge($this->export_entities_array[$r], array('ptt.task_date'=>'task_time','ptt.task_duration'=>"task_time",'ptt.fk_user'=>"task_time",'ptt.note'=>"task_time")); + $this->export_fields_array[$r]=array_merge($this->export_fields_array[$r], array('ptt.rowid'=>'IdTaskTime','ptt.task_date'=>'TaskTimeDate','ptt.task_duration'=>"TimesSpent",'ptt.fk_user'=>"TaskTimeUser",'ptt.note'=>"TaskTimeNote")); + $this->export_entities_array[$r]=array_merge($this->export_entities_array[$r], array('ptt.rowid'=>'task_time','ptt.task_date'=>'task_time','ptt.task_duration'=>"task_time",'ptt.fk_user'=>"task_time",'ptt.note'=>"task_time")); $this->export_sql_start[$r]='SELECT DISTINCT '; $this->export_sql_end[$r] =' FROM '.MAIN_DB_PREFIX.'projet as p'; diff --git a/htdocs/core/modules/modReceiptPrinter.class.php b/htdocs/core/modules/modReceiptPrinter.class.php new file mode 100644 index 00000000000..975226819fb --- /dev/null +++ b/htdocs/core/modules/modReceiptPrinter.class.php @@ -0,0 +1,145 @@ + + * Copyright (C) 2015 Frederic France + * + * 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 . + */ + +/** \defgroup printing Module Receipt Printer + * \brief Module for activation of printing icon to make receipt ticket + */ + +/** + * \file htdocs/core/modules/modReceiptPrinter.class.php + * \ingroup printing + * \brief File of class to describe and activate module Receipt Printer + */ +include_once DOL_DOCUMENT_ROOT .'/core/modules/DolibarrModules.class.php'; + + + +/** + * Class to describe and activate module Receipt Printer + */ +class modReceiptPrinter extends DolibarrModules +{ + + /** + * Constructor + * + * @param DoliDB $db Database handler + */ + function __construct($db) + { + $this->db = $db ; + $this->numero = 67000; + // Family can be 'crm','financial','hr','projects','products','ecm','technic','other' + // It is used to group modules in module setup page + $this->family = "technic"; + // 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)); + // Module description, used if translation string 'ModuleXXXDesc' not found (where XXX is value of numeric property 'numero' of module) + $this->description = "ReceiptPrinterDesc"; + $this->version = 'development'; // 'development' or 'experimental' or 'dolibarr' or version + $this->const_name = 'MAIN_MODULE_'.strtoupper($this->name); + // Where to store the module in setup page (0=common,1=interface,2=others,3=very specific) + $this->special = 1; + // Name of image file used for this module. + // If file is in theme/yourtheme/img directory under name object_pictovalue.png, use this->picto='pictovalue' + // If file is in module/img directory under name object_pictovalue.png, use this->picto='pictovalue@module' + $this->picto = 'printer'; + + // Data directories to create when module is enabled. + $this->dirs = array(); + + // Config pages + $this->config_page_url = array("receiptprinter.php"); + + // Dependencies + $this->depends = array(); + $this->requiredby = array(); + $this->phpmin = array(5,1); // Minimum version of PHP required by module + $this->need_dolibarr_version = array(3,9,-2); // Minimum version of Dolibarr required by module + $this->conflictwith = array(); + $this->langfiles = array("receiptprinter"); + + // Constants + $this->const = array(); + + // Boxes + $this->boxes = array(); + + // Permissions + $this->rights = array(); + $this->rights_class = 'receiptprinter'; + + $r=0; + // $this->rights[$r][0] Id permission (unique tous modules confondus) + // $this->rights[$r][1] Libelle par defaut si traduction de cle "PermissionXXX" non trouvee (XXX = Id permission) + // $this->rights[$r][2] Non utilise + // $this->rights[$r][3] 1=Permis par defaut, 0=Non permis par defaut + // $this->rights[$r][4] Niveau 1 pour nommer permission dans code + // $this->rights[$r][5] Niveau 2 pour nommer permission dans code + + $r++; + $this->rights[$r][0] = 67000; + $this->rights[$r][1] = 'ReceiptPrinter'; + $this->rights[$r][2] = 'r'; + $this->rights[$r][3] = 1; + $this->rights[$r][4] = 'read'; + + // Main menu entries + $this->menus = array(); // List of menus to add + $r=0; + + // This is to declare the Top Menu entry: + //$this->menu[$r]=array( 'fk_menu'=>'fk_mainmenu=home,fk_leftmenu=modulesadmintools', // Put 0 if this is a top menu + // 'type'=>'left', // This is a Top menu entry + // 'titre'=>'MenuDirectPrinting', + // 'mainmenu'=>'printing', + // 'url'=>'/printing/index.php', + // 'langs'=>'printing', // Lang file to use (without .lang) by module. File must be in langs/code_CODE/ directory. + // 'position'=>300, + // 'enabled'=>'$conf->printing->enabled && $leftmenu==\'modulesadmintools\'', + // 'perms'=>'$user->rights->printing->read', // Use 'perms'=>'1' if you want your menu with no permission rules + // 'target'=>'', + // 'user'=>0); // 0=Menu for internal users, 1=external users, 2=both + + $r++; + + + } + + + /** + * Function called when module is enabled. + * The init function add constants, boxes, permissions and menus (defined in constructor) into Dolibarr database. + * It also creates data directories + * + * @param string $options Options when enabling module ('', 'noboxes') + * @return int 1 if OK, 0 if KO + */ + function init($options='') + { + global $conf; + // Clean before activation + $this->remove($options); + $sql = array( + "CREATE TABLE IF NOT EXISTS llx_printer_receipt (rowid int(11) NOT NULL AUTO_INCREMENT, name varchar(128), fk_type int(11), parameter varchar(128), entity int(11), PRIMARY KEY (rowid)) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;", + "CREATE TABLE IF NOT EXISTS llx_printer_receipt_template (rowid int(11) NOT NULL AUTO_INCREMENT, name varchar(128), template text, entity int(11), PRIMARY KEY (rowid)) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;", + ); + return $this->_init($sql,$options); + } + +} diff --git a/htdocs/core/modules/modWebsite.class.php b/htdocs/core/modules/modWebsite.class.php index 0e75daa26bd..7bb5a27a0c5 100644 --- a/htdocs/core/modules/modWebsite.class.php +++ b/htdocs/core/modules/modWebsite.class.php @@ -62,7 +62,7 @@ class modWebsite extends DolibarrModules // Config pages //------------- - $this->config_page_url = array("website.php"); + $this->config_page_url = array(); // Dependancies //------------- diff --git a/htdocs/core/modules/oauth/getgoogleoauthcallback.php b/htdocs/core/modules/oauth/getgoogleoauthcallback.php new file mode 100644 index 00000000000..e159198314c --- /dev/null +++ b/htdocs/core/modules/oauth/getgoogleoauthcallback.php @@ -0,0 +1,150 @@ + + * + * 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 . + */ + +/** + * \file htdocs/core/modules/oauth/getoauthcallback.php + * \ingroup oauth + * \brief Page to get oauth callback + */ + +require '../../../main.inc.php'; +require_once DOL_DOCUMENT_ROOT.'/includes/OAuth/bootstrap.php'; +use OAuth\Common\Storage\Session; +use OAuth\Common\Storage\DoliStorage; +use OAuth\Common\Consumer\Credentials; +use OAuth\Common\Token\TokenInterface; +use OAuth\OAuth2\Service\Google; + +// Define $urlwithroot +$urlwithouturlroot=preg_replace('/'.preg_quote(DOL_URL_ROOT,'/').'$/i','',trim($dolibarr_main_url_root)); +$urlwithroot=$urlwithouturlroot.DOL_URL_ROOT; // This is to use external domain name found into config file +//$urlwithroot=DOL_MAIN_URL_ROOT; // This is to use same domain name than current + + + +$action = GETPOST('action', 'alpha'); +$backtourl = GETPOST('backtourl', 'alpha'); + + +/** + * Create a new instance of the URI class with the current URI, stripping the query string + */ +$uriFactory = new \OAuth\Common\Http\Uri\UriFactory(); +//$currentUri = $uriFactory->createFromSuperGlobalArray($_SERVER); +//$currentUri->setQuery(''); +$currentUri = $uriFactory->createFromAbsolute($urlwithroot.'/core/modules/oauth/getgoogleoauthcallback.php'); + + +/** + * Load the credential for the service + */ + +/** @var $serviceFactory \OAuth\ServiceFactory An OAuth service factory. */ +$serviceFactory = new \OAuth\ServiceFactory(); +$httpClient = new \OAuth\Common\Http\Client\CurlClient(); +// TODO Set options for proxy and timeout +// $params=array('CURLXXX'=>value, ...) +//$httpClient->setCurlParameters($params); +$serviceFactory->setHttpClient($httpClient); + +// Dolibarr storage +$storage = new DoliStorage($db, $conf); + +// Setup the credentials for the requests +$credentials = new Credentials( + $conf->global->OAUTH_GOOGLE_ID, + $conf->global->OAUTH_GOOGLE_SECRET, + $currentUri->getAbsoluteUri() +); + + +// Instantiate the Api service using the credentials, http client and storage mechanism for the token +/** @var $apiService Service */ +// TODO remove hardcoded array +$apiService = $serviceFactory->createService('Google', $credentials, $storage, array('userinfo_email', 'userinfo_profile', 'cloud_print')); + +// access type needed for google refresh token +$apiService->setAccessType('offline'); + +$langs->load("oauth"); + + +/* + * Actions + */ + + +if ($action == 'delete') +{ + $storage->clearToken('Google'); + + setEventMessages($langs->trans('TokenDeleted'), null, 'mesgs'); + + header('Location: ' . $backtourl); + exit(); +} + +if (! empty($_GET['code'])) // We are coming from Google oauth page +{ + //llxHeader('',$langs->trans("OAuthSetup")); + + //$linkback=''.$langs->trans("BackToModuleList").''; + //print load_fiche_titre($langs->trans("OAuthSetup"),$linkback,'title_setup'); + + //dol_fiche_head(); + // retrieve the CSRF state parameter + $state = isset($_GET['state']) ? $_GET['state'] : null; + //print ''; + + // This was a callback request from service, get the token + try { + //var_dump($_GET['code']); + //var_dump($state); + //var_dump($apiService); // OAuth\OAuth2\Service\Google + $token = $apiService->requestAccessToken($_GET['code'], $state); + + setEventMessages($langs->trans('NewTokenStored'), null, 'mesgs'); + } catch (Exception $e) { + print $e->getMessage(); + } + + $backtourl = $_SESSION["backtourlsavedbeforeoauthjump"]; + unset($_SESSION["backtourlsavedbeforeoauthjump"]); + + header('Location: ' . $backtourl); + exit(); +} +else +{ + $_SESSION["backtourlsavedbeforeoauthjump"]=$backtourl; + + $url = $apiService->getAuthorizationUri(); + // we go on google authorization page + header('Location: ' . $url); + exit(); +} + + +/* + * View + */ + +// No view at all, just actions + +$db->close(); + diff --git a/htdocs/core/modules/oauth/index.html b/htdocs/core/modules/oauth/index.html new file mode 100644 index 00000000000..e69de29bb2d diff --git a/htdocs/core/modules/printing/modules_printing.php b/htdocs/core/modules/printing/modules_printing.php index 7bb9ac98f58..4a6560b47fa 100644 --- a/htdocs/core/modules/printing/modules_printing.php +++ b/htdocs/core/modules/printing/modules_printing.php @@ -1,6 +1,6 @@ + * Copyright (C) 2014-2015 Frederic France * * 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 @@ -56,8 +56,8 @@ class PrintingDriver { global $conf; - $type='printing'; - $liste=array(); + $type = 'printing'; + $list = array(); $moduledir=DOL_DOCUMENT_ROOT."/core/modules/printing/"; $tmpfiles=dol_dir_list($moduledir,'all',0,'\modules.php','','name',SORT_ASC,0); diff --git a/htdocs/core/modules/printing/printgcp.modules.php b/htdocs/core/modules/printing/printgcp.modules.php index b32eece2e1a..aab1ae13bb6 100644 --- a/htdocs/core/modules/printing/printgcp.modules.php +++ b/htdocs/core/modules/printing/printgcp.modules.php @@ -1,6 +1,6 @@ + * Copyright (C) 2014-2015 Frederic France * * 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 @@ -24,6 +24,11 @@ */ include_once DOL_DOCUMENT_ROOT.'/core/modules/printing/modules_printing.php'; +require_once DOL_DOCUMENT_ROOT.'/includes/OAuth/bootstrap.php'; +use OAuth\Common\Storage\Session; +use OAuth\Common\Storage\DoliStorage; +use OAuth\Common\Consumer\Credentials; +use OAuth\OAuth2\Service\Google; /** * Class to provide printing with Google Cloud Print @@ -35,14 +40,16 @@ class printing_printgcp extends PrintingDriver var $picto = 'printer'; var $active = 'PRINTING_PRINTGCP'; var $conf = array(); - var $login = ''; - var $password = ''; - var $authtoken = ''; + var $google_id = ''; + var $google_secret = ''; + var $error; + var $errors = array(); var $db; - const LOGIN_URL = 'https://www.google.com/accounts/ClientLogin'; - const PRINTERS_SEARCH_URL = 'https://www.google.com/cloudprint/interface/search'; - const PRINT_URL = 'https://www.google.com/cloudprint/interface/submit'; + const LOGIN_URL = 'https://accounts.google.com/o/oauth2/token'; + const PRINTERS_SEARCH_URL = 'https://www.google.com/cloudprint/search'; + const PRINTERS_GET_JOBS = 'https://www.google.com/cloudprint/jobs'; + const PRINT_URL = 'https://www.google.com/cloudprint/submit'; /** * Constructor @@ -51,24 +58,90 @@ class printing_printgcp extends PrintingDriver */ function __construct($db) { - global $conf; + global $conf, $dolibarr_main_url_root; + // Define $urlwithroot + $urlwithouturlroot=preg_replace('/'.preg_quote(DOL_URL_ROOT,'/').'$/i','',trim($dolibarr_main_url_root)); + $urlwithroot=$urlwithouturlroot.DOL_URL_ROOT; // This is to use external domain name found into config file + //$urlwithroot=DOL_MAIN_URL_ROOT; // This is to use same domain name than current + $this->db = $db; - $this->login = $conf->global->PRINTGCP_LOGIN; - $this->password = $conf->global->PRINTGCP_PASSWORD; - $this->authtoken = $conf->global->PRINTGCP_AUTHTOKEN; - $this->conf[] = array('varname'=>'PRINTGCP_LOGIN', 'required'=>1, 'example'=>'user@gmail.com', 'type'=>'text'); - $this->conf[] = array('varname'=>'PRINTGCP_PASSWORD', 'required'=>1, 'example'=>'', 'type'=>'password'); + $this->google_id = $conf->global->OAUTH_GOOGLE_ID; + $this->google_secret = $conf->global->OAUTH_GOOGLE_SECRET; + // Token storage + $storage = new DoliStorage($this->db, $this->conf); + //$storage->clearToken('Google'); + // Setup the credentials for the requests + $credentials = new Credentials( + $this->google_id, + $this->google_secret, + $urlwithroot.'/core/modules/oauth/getgoogleoauthcallback.php' + ); + $access = ($storage->hasAccessToken('Google')?'HasAccessToken':'NoAccessToken'); + $serviceFactory = new \OAuth\ServiceFactory(); + $apiService = $serviceFactory->createService('Google', $credentials, $storage, array()); + $token_ok=true; + try { + $token = $storage->retrieveAccessToken('Google'); + } catch (Exception $e) { + $this->errors[] = $e->getMessage(); + $token_ok = false; + } + //var_dump($this->errors);exit; + + $expire = false; + // Is token expired or will token expire in the next 30 seconds + if ($token_ok) { + $expire = ($token->getEndOfLife() !== -9002 && $token->getEndOfLife() !== -9001 && time() > ($token->getEndOfLife() - 30)); + } + + // Token expired so we refresh it + if ($token_ok && $expire) { + try { + // il faut sauvegarder le refresh token car google ne le donne qu'une seule fois + $refreshtoken = $token->getRefreshToken(); + $token = $apiService->refreshAccessToken($token); + $token->setRefreshToken($refreshtoken); + $storage->storeAccessToken('Google', $token); + } catch (Exception $e) { + $this->errors[] = $e->getMessage(); + } + } + if (!$conf->oauth->enabled) { + $this->conf[] = array('varname'=>'PRINTGCP_INFO', 'info'=>'ModuleAuthNotActive', 'type'=>'info'); + } else { + + if ($this->google_id != '' && $this->google_secret != '') { + $this->conf[] = array('varname'=>'PRINTGCP_INFO', 'info'=>'GoogleAuthConfigured', 'type'=>'info'); + $this->conf[] = array('varname'=>'PRINTGCP_TOKEN_ACCESS', 'info'=>$access, 'type'=>'info'); + if ($token_ok) { + $refreshtoken = $token->getRefreshToken(); + $this->conf[] = array('varname'=>'PRINTGCP_TOKEN_REFRESH', 'info'=>((! empty($refreshtoken))?'Yes':'No'), 'type'=>'info'); + $this->conf[] = array('varname'=>'PRINTGCP_TOKEN_EXPIRED', 'info'=>($expire?'Yes':'No'), 'type'=>'info'); + $this->conf[] = array('varname'=>'PRINTGCP_TOKEN_EXPIRE_AT', 'info'=>(dol_print_date($token->getEndOfLife(), "dayhour")), 'type'=>'info'); + } + if (!$storage->hasAccessToken('Google')) { + $this->conf[] = array('varname'=>'PRINTGCP_AUTHLINK', 'link'=>$urlwithroot.'/core/modules/oauth/getgoogleoauthcallback.php?backtourl='.urlencode(DOL_URL_ROOT.'/printing/admin/printing.php?mode=setup&driver=printgcp'), 'type'=>'authlink'); + } else { + $this->conf[] = array('varname'=>'PRINTGCP_DELETE_TOKEN', 'link'=>$urlwithroot.'/core/modules/oauth/getgoogleoauthcallback.php?action=delete&backtourl='.urlencode(DOL_URL_ROOT.'/printing/admin/printing.php?mode=setup&driver=printgcp'), 'type'=>'delete'); + } + } else { + $this->conf[] = array('varname'=>'PRINTGCP_INFO', 'info'=>'GoogleAuthNotConfigured', 'type'=>'info'); + } + } + // do not display submit button + $this->conf[] = array('enabled'=>0, 'type'=>'submit'); } /** * Return list of available printers * - * @return string html list of printers + * @return int 0 if OK, >0 if KO */ function listAvailablePrinters() { global $bc, $conf, $langs; + $error = 0; $langs->load('printing'); $var=true; @@ -87,7 +160,7 @@ class printing_printgcp extends PrintingDriver $var = true; foreach ($list['available'] as $printer_det) { - $var=!$var; + $var = !$var; $html.= ""; $html.= ''; $html.= ''; @@ -107,52 +180,73 @@ class printing_printgcp extends PrintingDriver $html.= ''; $html.= ''."\n"; } - - return $html; + $this->resprint = $html; + return $error; } + /** * Return list of available printers * - * @return array list of printers + * @return array list of printers */ function getlist_available_printers() { - global $conf,$db; - if ($this->authtoken=='') { - $this->GoogleLogin(); - } - $ret['available'] = $this->get_printer_detail(); - return $ret; - } - - /** - * List of printers - * - * @return array list of printers - */ - function get_printer_detail() - { + // Token storage + $storage = new DoliStorage($this->db, $this->conf); + // Setup the credentials for the requests + $credentials = new Credentials( + $this->google_id, + $this->google_secret, + DOL_MAIN_URL_ROOT.'/core/modules/oauth/getgoogleoauthcallback.php' + ); + $serviceFactory = new \OAuth\ServiceFactory(); + $apiService = $serviceFactory->createService('Google', $credentials, $storage, array()); // Check if we have auth token - if(empty($this->authtoken)) { - // We don't have auth token so throw exception - throw new Exception("Please first login to Google by calling loginToGoogle function"); + $token_ok=true; + try { + $token = $storage->retrieveAccessToken('Google'); + } catch (Exception $e) { + $this->errors[] = $e->getMessage(); + $token_ok = false; } - // Prepare auth headers with auth token - $authheaders = array("Authorization: GoogleLogin auth=".$this->authtoken, - "GData-Version: 3.0", - ); - // Make Http call to get printers added by user to Google Cloud Print - $responsedata = $this->makeCurl(self::PRINTERS_SEARCH_URL,array(),$authheaders); - $printers = json_decode($responsedata); + $expire = false; + // Is token expired or will token expire in the next 30 seconds + if ($token_ok) { + $expire = ($token->getEndOfLife() !== -9002 && $token->getEndOfLife() !== -9001 && time() > ($token->getEndOfLife() - 30)); + } + + // Token expired so we refresh it + if ($token_ok && $expire) { + try { + // il faut sauvegarder le refresh token car google ne le donne qu'une seule fois + $refreshtoken = $token->getRefreshToken(); + $token = $apiService->refreshAccessToken($token); + $token->setRefreshToken($refreshtoken); + $storage->storeAccessToken('Google', $token); + } catch (Exception $e) { + $this->errors[] = $e->getMessage(); + } + } + // Send a request with api + try { + $response = $apiService->request(self::PRINTERS_SEARCH_URL); + } catch (Exception $e) { + $this->errors[] = $e->getMessage(); + print '
'.print_r($e->getMessage(),true).'
'; + } + //print ''; + $responsedata = json_decode($response, true); + $printers = $responsedata['printers']; // Check if we have printers? - if(is_null($printers)) { + if(count($printers)==0) { // We dont have printers so return blank array - return array(); + $ret['available'] = array(); } else { // We have printers so returns printers as array - return $this->parsePrinters($printers); + $ret['available'] = $printers; } + return $ret; } /** @@ -161,18 +255,19 @@ class printing_printgcp extends PrintingDriver * @param string $file file * @param string $module module * @param string $subdir subdir for file - * @return string '' if OK, Error message if KO + * @return int 0 if OK, >0 if KO */ function print_file($file, $module, $subdir='') { + require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; + global $conf, $user, $db; - if ($this->authtoken=='') { - $this->GoogleLogin(); - } - // si $module=commande_fournisseur alors $conf->fournisseur->commande->dir_output + $error = 0; + $fileprint=$conf->{$module}->dir_output; if ($subdir!='') $fileprint.='/'.$subdir; $fileprint.='/'.$file; + $mimetype = dol_mimetype($fileprint); // select printer uri for module order, propal,... $sql = "SELECT rowid, printer_id, copy FROM ".MAIN_DB_PREFIX."printing WHERE module='".$module."' AND driver='printgcp' AND userid=".$user->id; $result = $db->query($sql); @@ -181,7 +276,7 @@ class printing_printgcp extends PrintingDriver $obj = $this->db->fetch_object($result); if ($obj) { - $printer_id=$obj->printer_id; + $printer_id = $obj->printer_id; } else { @@ -191,13 +286,18 @@ class printing_printgcp extends PrintingDriver } else { - return 'NoDefaultPrinterDefined'; + $this->errors[] = 'NoDefaultPrinterDefined'; + $error++; + return $error; } } } else dol_print_error($db); - $this->sendPrintToPrinter($printer_id, $file, $fileprint, 'application/pdf'); + $ret = $this->sendPrintToPrinter($printer_id, $file, $fileprint, $mimetype); + $this->errors = 'PRINTGCP: '.mb_convert_encoding($ret['errormessage'], "UTF-8"); + if ($ret['status']!=1) $error++; + return $error; } /** @@ -209,24 +309,16 @@ class printing_printgcp extends PrintingDriver * @param string $contenttype File content type by example application/pdf, image/png * @return array status array */ - public function sendPrintToPrinter($printerid,$printjobtitle,$filepath,$contenttype) + public function sendPrintToPrinter($printerid, $printjobtitle, $filepath, $contenttype) { - $errors=0; - // Check auth token - if(empty($this->authtoken)) { - $errors++; - setEventMessage('Please first login to Google', 'warning'); - } // Check if printer id if(empty($printerid)) { - $errors++; - setEventMessage('No provided printer ID', 'warning'); + return array('status' =>0, 'errorcode' =>'','errormessage'=>'No provided printer ID'); } // Open the file which needs to be print $handle = fopen($filepath, "rb"); if(!$handle) { - $errors++; - setEventMessage('Could not read the file.'); + return array('status' =>0, 'errorcode' =>'','errormessage'=>'Could not read the file.'); } // Read file content $contents = fread($handle, filesize($filepath)); @@ -238,118 +330,141 @@ class printing_printgcp extends PrintingDriver 'content' => base64_encode($contents), // encode file content as base64 'contentType' => $contenttype ); - // Prepare authorization headers - $authheaders = array("Authorization: GoogleLogin auth=" . $this->authtoken); - // Make http call for sending print Job - $response = json_decode($this->makeCurl(self::PRINT_URL,$post_fields,$authheaders)); - // Has document been successfully sent? - if($response->success=="1") { - return array('status' =>true,'errorcode' =>'','errormessage'=>""); - } else { - return array('status' =>false,'errorcode' =>$response->errorCode,'errormessage'=>$response->message); + // Dolibarr Token storage + $storage = new DoliStorage($this->db, $this->conf); + // Setup the credentials for the requests + $credentials = new Credentials( + $this->google_id, + $this->google_secret, + DOL_MAIN_URL_ROOT.'/core/modules/oauth/getoauthcallback.php?service=google' + ); + $serviceFactory = new \OAuth\ServiceFactory(); + $apiService = $serviceFactory->createService('Google', $credentials, $storage, array()); + + // Check if we have auth token and refresh it + $token_ok=true; + try { + $token = $storage->retrieveAccessToken('Google'); + } catch (Exception $e) { + $this->errors[] = $e->getMessage(); + $token_ok = false; } - } - - - /** - * Login into Google Account - * - * @return boolean true or false - */ - function GoogleLogin() - { - global $db, $conf; - // Prepare post fields required for the login - $loginpostfields = array("accountType" => "HOSTED_OR_GOOGLE", - "Email" => $this->login, - "Passwd" => $this->password, - "service" => "cloudprint", - "source" => "GCP" - ); - // Get the Auth token - $loginresponse = $this->makeCurl(self::LOGIN_URL,$loginpostfields); - $token = $this->getAuthToken($loginresponse); - if(! empty($token)&&!is_null($token)) { - $this->authtoken = $token; - $result=dolibarr_set_const($db, 'PRINTGCP_AUTHTOKEN', $token, 'chaine', 0, '', $conf->entity); - return true; - } else { - return false; - } - - } - - /** - * Parse json response and return printers array - * - * @param string $jsonobj Json response object - * @return array return array of printers - */ - private function parsePrinters($jsonobj) - { - $printers = array(); - if (isset($jsonobj->printers)) { - foreach ($jsonobj->printers as $gcpprinter) { - $printers[] = array('id' =>$gcpprinter->id, - 'name' =>$gcpprinter->name, - 'defaultDisplayName' =>$gcpprinter->defaultDisplayName, - 'displayName' =>$gcpprinter->displayName, - 'ownerId' =>$gcpprinter->ownerId, - 'ownerName' =>$gcpprinter->ownerName, - 'connectionStatus' =>$gcpprinter->connectionStatus, - 'status' =>$gcpprinter->status, - 'type' =>$gcpprinter->type - ); + if ($token_ok) { + try { + // il faut sauvegarder le refresh token car google ne le donne qu'une seule fois + $refreshtoken = $token->getRefreshToken(); + $token = $apiService->refreshAccessToken($token); + $token->setRefreshToken($refreshtoken); + $storage->storeAccessToken('Google', $token); + } catch (Exception $e) { + $this->errors[] = $e->getMessage(); } } - return $printers; + + // Send a request with api + $response = json_decode($apiService->request(self::PRINT_URL, 'POST', $post_fields), true); + //print ''; + return array('status' =>$response['success'],'errorcode' =>$response['errorCode'],'errormessage'=>$response['message']); } + /** - * Parse data to get auth token + * List jobs print * - * @param string $response response from curl - * @return string token + * @return int 0 if OK, >0 if KO */ - private function getAuthToken($response) + function list_jobs() { - // Search Auth tag - preg_match("/Auth=([a-z0-9_-]+)/i", $response, $matches); - $authtoken = @$matches[1]; - return $authtoken; - } - - /** - * Make a curl request - * - * @param string $url url to hit - * @param array $postfields array of post fields - * @param string[] $headers array of http headers - * @return string response from curl - */ - private function makeCurl($url, $postfields=array(), $headers=array()) - { - // Curl Init - $curl = curl_init($url); - // Curl post request - if(! empty($postfields)) { - // As is HTTP post curl request so set post fields - curl_setopt($curl, CURLOPT_POST, true); - curl_setopt($curl, CURLOPT_POSTFIELDS, $postfields); + global $conf, $db, $langs, $bc; + + $error = 0; + $html = ''; + // Token storage + $storage = new DoliStorage($this->db, $this->conf); + // Setup the credentials for the requests + $credentials = new Credentials( + $this->google_id, + $this->google_secret, + DOL_MAIN_URL_ROOT.'/core/modules/oauth/getgoogleoauthcallback.php' + ); + $serviceFactory = new \OAuth\ServiceFactory(); + $apiService = $serviceFactory->createService('Google', $credentials, $storage, array()); + // Check if we have auth token + $token_ok=true; + try { + $token = $storage->retrieveAccessToken('Google'); + } catch (Exception $e) { + $this->errors[] = $e->getMessage(); + $token_ok = false; + $error++; } - // Curl request headers - if(! empty($headers)) { - // As curl requires header so set headers here - curl_setopt($curl, CURLOPT_HTTPHEADER, $headers); + $expire = false; + // Is token expired or will token expire in the next 30 seconds + if ($token_ok) { + $expire = ($token->getEndOfLife() !== -9002 && $token->getEndOfLife() !== -9001 && time() > ($token->getEndOfLife() - 30)); } - curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_ANY); - curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); - curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); - // Execute the curl and return response - $response = curl_exec($curl); - curl_close($curl); - return $response; - } + // Token expired so we refresh it + if ($token_ok && $expire) { + try { + // il faut sauvegarder le refresh token car google ne le donne qu'une seule fois + $refreshtoken = $token->getRefreshToken(); + $token = $apiService->refreshAccessToken($token); + $token->setRefreshToken($refreshtoken); + $storage->storeAccessToken('Google', $token); + } catch (Exception $e) { + $this->errors[] = $e->getMessage(); + $error++; + } + } + // Getting Jobs + // Send a request with api + try { + $response = $apiService->request(self::PRINTERS_GET_JOBS); + } catch (Exception $e) { + $this->errors[] = $e->getMessage(); + $error++; + } + $responsedata = json_decode($response, true); + //$html .= '
'.print_r($responsedata,true).'
'; + $html .= '
'.$printer_det['name'].''.$printer_det['displayName'].'
'.print_r($response, true).'
'.print_r($response, true).'
'; + $html .= ''; + $html .= ""; + $html .= ""; + $html .= ''; + $html .= ''; + $html .= ''; + $html .= ''; + $html .= ''."\n"; + $var = True; + $jobs = $responsedata['jobs']; + //$html .= '
'.print_r($jobs['0'],true).'
'; + if (is_array($jobs)) + { + foreach ($jobs as $value) + { + $var = !$var; + $html .= ''; + $html .= ''; + $html .= ''; + $html .= ''; + $html .= ''; + $html .= ''; + $html .= ''; + $html .= ''; + } + } + else + { + $html .= ''; + $html .= ''; + $html .= ''; + } + $html .= '
IdOwnerPrinterFileStatusCancel
'.$value['id'].''.$value['ownerId'].''.$value['printerName'].''.$value['title'].''.$value['status'].' 
'.$langs->trans("None").'
'; + + $this->resprint = $html; + + return $error; + } } diff --git a/htdocs/core/modules/printing/printipp.modules.php b/htdocs/core/modules/printing/printipp.modules.php index 3fbb66fb088..eaf655d7edf 100644 --- a/htdocs/core/modules/printing/printipp.modules.php +++ b/htdocs/core/modules/printing/printipp.modules.php @@ -1,6 +1,6 @@ + * Copyright (C) 2014-2015 Frederic France * * 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 @@ -41,6 +41,7 @@ class printing_printipp extends PrintingDriver var $user; var $password; var $error; + var $errors = array(); var $db; @@ -62,6 +63,7 @@ class printing_printipp extends PrintingDriver $this->conf[] = array('varname'=>'PRINTIPP_PORT', 'required'=>1, 'example'=>'631', 'type'=>'text'); $this->conf[] = array('varname'=>'PRINTIPP_USER', 'required'=>0, 'example'=>'', 'type'=>'text', 'moreattributes'=>'autocomplete="off"'); $this->conf[] = array('varname'=>'PRINTIPP_PASSWORD', 'required'=>0, 'example'=>'', 'type'=>'password', 'moreattributes'=>'autocomplete="off"'); + $this->conf[] = array('enabled'=>1, 'type'=>'submit'); } /** @@ -71,11 +73,12 @@ class printing_printipp extends PrintingDriver * @param string $module module * @param string $subdir subdirectory of document like for expedition subdir is sendings * - * @return string '' if OK, Error message if KO + * @return int 0 if OK, >0 if KO */ function print_file($file, $module, $subdir='') { global $conf, $user, $db; + $error = 0; include_once DOL_DOCUMENT_ROOT.'/includes/printipp/CupsPrintIPP.php'; @@ -107,7 +110,9 @@ class printing_printipp extends PrintingDriver } else { - return 'NoDefaultPrinterDefined'; + $this->errors[] = 'NoDefaultPrinterDefined'; + $error++; + return $error; } } } @@ -119,19 +124,26 @@ class printing_printipp extends PrintingDriver if ($subdir!='') $fileprint.='/'.$subdir; $fileprint.='/'.$file; $ipp->setData($fileprint); - $ipp->printJob(); + try { + $ipp->printJob(); + } catch (Exception $e) { + $this->errors[] = $e->getMessage(); + $error++; + } + if ($error==0) $this->errors[] = 'PRINTIPP: Job added'; - return ''; + return $error; } /** * Return list of available printers * - * @return string html list of printers + * @return int 0 if OK, >0 if KO */ function listAvailablePrinters() { global $bc, $conf, $langs; + $error = 0; $var=true; $html = ''; @@ -178,8 +190,8 @@ class printing_printipp extends PrintingDriver $html.= ''; $html.= ''."\n"; } - - return $html; + $this->resprint = $html; + return $error; } /** @@ -226,13 +238,15 @@ class printing_printipp extends PrintingDriver /** * List jobs print * - * @param string $module module + * @param string $module module * - * @return void + * @return int 0 if OK, >0 if KO */ function list_jobs($module) { global $conf, $db, $bc; + $error = 0; + $html = ''; include_once DOL_DOCUMENT_ROOT.'/includes/printipp/CupsPrintIPP.php'; $ipp = new CupsPrintIPP(); $ipp->setLog(DOL_DATA_ROOT.'/dolibarr_printipp.log','file',3); // logging very verbose @@ -257,32 +271,39 @@ class printing_printipp extends PrintingDriver } } // Getting Jobs - $ipp->getJobs(false,0,'completed',false); - print ''; - print ''; - print ""; - print ""; - print ""; - print ""; - print ""; - print ""; - print "\n"; + try { + $ipp->getJobs(false,0,'completed',false); + } catch (Exception $e) { + $this->errors[] = $e->getMessage(); + $error++; + } + $html .= '
IdOwnerPrinterFileStatusCancel
'; + $html .= ''; + $html .= ''; + $html .= ''; + $html .= ''; + $html .= ''; + $html .= ''; + $html .= ''; + $html .= ''."\n"; $jobs = $ipp->jobs_attributes; $var = True; - //print '
'.print_r($jobs,true).'
'; + //$html .= '
'.print_r($jobs,true).'
'; foreach ($jobs as $value ) { - $var=!$var; - print ""; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; + $var = !$var; + $html .= ''; + $html .= ''; + $html .= ''; + $html .= ''; + $html .= ''; + $html .= ''; + $html .= ''; + $html .= ''; } - print "
IdOwnerPrinterFileStatusCancel
'.$value->job_id->_value0.''.$value->job_originating_user_name->_value0.''.$value->printer_uri->_value0.''.$value->job_name->_value0.''.$value->job_state->_value0.''.$value->job_uri->_value0.'
'.$value->job_id->_value0.''.$value->job_originating_user_name->_value0.''.$value->printer_uri->_value0.''.$value->job_name->_value0.''.$value->job_state->_value0.''.$value->job_uri->_value0.'
"; + $html .= ""; + $this->resprint = $html; + return $error; } } diff --git a/htdocs/core/modules/project/doc/pdf_beluga.modules.php b/htdocs/core/modules/project/doc/pdf_beluga.modules.php index 4a8839ef865..11b1d378981 100644 --- a/htdocs/core/modules/project/doc/pdf_beluga.modules.php +++ b/htdocs/core/modules/project/doc/pdf_beluga.modules.php @@ -94,8 +94,8 @@ class pdf_beluga extends ModelePDFProjects $this->posxref=$this->marge_gauche+1; $this->posxdate=$this->marge_gauche+25; $this->posxsociety=$this->marge_gauche+45; - $this->posxamountht=$this->marge_gauche+115; - $this->posxamountttc=$this->marge_gauche+140; + $this->posxamountht=$this->marge_gauche+110; + $this->posxamountttc=$this->marge_gauche+135; $this->posxstatut=$this->marge_gauche+165; } @@ -231,14 +231,16 @@ class pdf_beluga extends ModelePDFProjects 'class'=>'Propal', 'table'=>'propal', 'datefieldname'=>'datep', - 'test'=>$conf->propal->enabled && $user->rights->propale->lire), + 'test'=>$conf->propal->enabled && $user->rights->propale->lire, + 'lang'=>'propal'), 'order'=>array( 'name'=>"CustomersOrders", 'title'=>"ListOrdersAssociatedProject", 'class'=>'Commande', 'table'=>'commande', 'datefieldname'=>'date_commande', - 'test'=>$conf->commande->enabled && $user->rights->commande->lire), + 'test'=>$conf->commande->enabled && $user->rights->commande->lire, + 'lang'=>'order'), 'invoice'=>array( 'name'=>"CustomersInvoices", 'title'=>"ListInvoicesAssociatedProject", @@ -246,21 +248,24 @@ class pdf_beluga extends ModelePDFProjects 'margin'=>'add', 'table'=>'facture', 'datefieldname'=>'datef', - 'test'=>$conf->facture->enabled && $user->rights->facture->lire), + 'test'=>$conf->facture->enabled && $user->rights->facture->lire, + 'lang'=>'bills'), 'invoice_predefined'=>array( 'name'=>"PredefinedInvoices", 'title'=>"ListPredefinedInvoicesAssociatedProject", 'class'=>'FactureRec', 'table'=>'facture_rec', 'datefieldname'=>'datec', - 'test'=>$conf->facture->enabled && $user->rights->facture->lire), + 'test'=>$conf->facture->enabled && $user->rights->facture->lire, + 'lang'=>'bills'), 'order_supplier'=>array( 'name'=>"SuppliersOrders", 'title'=>"ListSupplierOrdersAssociatedProject", 'class'=>'CommandeFournisseur', 'table'=>'commande_fournisseur', 'datefieldname'=>'date_commande', - 'test'=>$conf->fournisseur->enabled && $user->rights->fournisseur->commande->lire), + 'test'=>$conf->fournisseur->enabled && $user->rights->fournisseur->commande->lire, + 'lang'=>'orders'), 'invoice_supplier'=>array( 'name'=>"BillsSuppliers", 'title'=>"ListSupplierInvoicesAssociatedProject", @@ -268,14 +273,16 @@ class pdf_beluga extends ModelePDFProjects 'margin'=>'minus', 'table'=>'facture_fourn', 'datefieldname'=>'datef', - 'test'=>$conf->fournisseur->enabled && $user->rights->fournisseur->facture->lire), + 'test'=>$conf->fournisseur->enabled && $user->rights->fournisseur->facture->lire, + 'lang'=>'bills'), 'contract'=>array( 'name'=>"Contracts", 'title'=>"ListContractAssociatedProject", 'class'=>'Contrat', 'table'=>'contrat', 'datefieldname'=>'date_contrat', - 'test'=>$conf->contrat->enabled && $user->rights->contrat->lire), + 'test'=>$conf->contrat->enabled && $user->rights->contrat->lire, + 'lang'=>'contract'), 'intervention'=>array( 'name'=>"Interventions", 'title'=>"ListFichinterAssociatedProject", @@ -283,7 +290,8 @@ class pdf_beluga extends ModelePDFProjects 'table'=>'fichinter', 'datefieldname'=>'date_valid', 'disableamount'=>1, - 'test'=>$conf->ficheinter->enabled && $user->rights->ficheinter->lire), + 'test'=>$conf->ficheinter->enabled && $user->rights->ficheinter->lire, + 'lang'=>'interventions'), 'trip'=>array( 'name'=>"TripsAndExpenses", 'title'=>"ListTripAssociatedProject", @@ -292,7 +300,18 @@ class pdf_beluga extends ModelePDFProjects 'datefieldname'=>'dated', 'margin'=>'minus', 'disableamount'=>1, - 'test'=>$conf->deplacement->enabled && $user->rights->deplacement->lire), + 'test'=>$conf->deplacement->enabled && $user->rights->deplacement->lire, + 'lang'=>'trip'), + 'expensereport'=>array( + 'name'=>"ExpensesReports", + 'title'=>"ListTripAssociatedProject", + 'class'=>'ExpenseReport', + 'table'=>'expensereport', + 'datefieldname'=>'dated', + 'margin'=>'minus', + 'disableamount'=>1, + 'test'=>$conf->expensereport->enabled && $user->rights->expensereport->lire, + 'lang'=>'trip'), 'agenda'=>array( 'name'=>"Agenda", 'title'=>"ListActionsAssociatedProject", @@ -300,7 +319,8 @@ class pdf_beluga extends ModelePDFProjects 'table'=>'actioncomm', 'datefieldname'=>'datep', 'disableamount'=>1, - 'test'=>$conf->agenda->enabled && $user->rights->agenda->allactions->lire) + 'test'=>$conf->agenda->enabled && $user->rights->agenda->allactions->read, + 'lang'=>'agenda') ); @@ -311,12 +331,17 @@ class pdf_beluga extends ModelePDFProjects $tablename=$value['table']; $datefieldname=$value['datefieldname']; $qualified=$value['test']; + $langstoload=$value['lang']; + $langs->load($langstoload); if ($qualified) { + //var_dump("$key, $tablename, $datefieldname, $dates, $datee"); $elementarray = $object->get_element_list($key, $tablename, $datefieldname, $dates, $datee); + //var_dump($elementarray); + $num = count($elementarray); - if ($num > 0) + if ($num >= 0) { $nexY = $pdf->GetY() + 5; $curY = $nexY; @@ -334,9 +359,9 @@ class pdf_beluga extends ModelePDFProjects $pdf->MultiCell($this->posxamountht - $this->posxsociety, 3, $outputlangs->transnoentities("ThirdParty"), 1, 'L'); if (empty($value['disableamount'])) { $pdf->SetXY($this->posxamountht, $curY); - $pdf->MultiCell($this->posxamountttc - $this->posxamountht, 3, $outputlangs->transnoentities("AmountHT"), 1, 'R'); + $pdf->MultiCell($this->posxamountttc - $this->posxamountht, 3, $outputlangs->transnoentities("AmountHTShort"), 1, 'R'); $pdf->SetXY($this->posxamountttc, $curY); - $pdf->MultiCell($this->posxstatut - $this->posxamountttc, 3, $outputlangs->transnoentities("AmountTTC"), 1, 'R'); + $pdf->MultiCell($this->posxstatut - $this->posxamountttc, 3, $outputlangs->transnoentities("AmountTTCShort"), 1, 'R'); } else { $pdf->SetXY($this->posxamountht, $curY); $pdf->MultiCell($this->posxstatut - $this->posxamountht, 3, "", 1, 'R'); @@ -434,8 +459,6 @@ class pdf_beluga extends ModelePDFProjects } } - - /* * Pied de page */ diff --git a/htdocs/core/modules/propale/doc/pdf_azur.modules.php b/htdocs/core/modules/propale/doc/pdf_azur.modules.php index 21820e42a66..22d992d17c3 100644 --- a/htdocs/core/modules/propale/doc/pdf_azur.modules.php +++ b/htdocs/core/modules/propale/doc/pdf_azur.modules.php @@ -181,11 +181,11 @@ class pdf_azur extends ModelePDFPropales 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] = dol_sanitizeFileName($objphoto->ref).'/'; + $pdir[1] = get_exdir(0,0,0,0,$objphoto,'product') . dol_sanitizeFileName($objphoto->ref).'/'; } else { - $pdir[0] = dol_sanitizeFileName($objphoto->ref).'/'; // default + $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 } diff --git a/htdocs/core/tpl/document_actions_pre_headers.tpl.php b/htdocs/core/tpl/document_actions_pre_headers.tpl.php index 2bb6d930b84..b33377eec6a 100644 --- a/htdocs/core/tpl/document_actions_pre_headers.tpl.php +++ b/htdocs/core/tpl/document_actions_pre_headers.tpl.php @@ -23,6 +23,7 @@ // Variable $upload_dir must be defined when entering here +// Variable $upload_dirold may also exists. // Send file/link if (GETPOST('sendit') && ! empty($conf->global->MAIN_UPLOAD_DOC)) @@ -59,16 +60,18 @@ if ($action == 'confirm_deletefile' && $confirm == 'yes') { $urlfile=basename($urlfile); $file = $upload_dir . "/" . $urlfile; + if (! empty($upload_dirold)) $fileold = $upload_dirold . "/" . $urlfile; } $linkid = GETPOST('linkid', 'int'); // Do not use urldecode here ($_GET and $_REQUEST are already decoded by PHP). if ($urlfile) { - $dir = dirname($file).'/'; // Chemin du dossier contenant l'image d'origine - $dirthumb = $dir.'/thumbs/'; // Chemin du dossier contenant la vignette + $dir = dirname($file).'/'; // Chemin du dossier contenant l'image d'origine + $dirthumb = $dir.'/thumbs/'; // Chemin du dossier contenant la vignette $ret = dol_delete_file($file, 0, 0, 0, $object); - + if (! empty($fileold)) dol_delete_file($fileold, 0, 0, 0, $object); // Delete file using old path + // Si elle existe, on efface la vignette if (preg_match('/(\.jpg|\.jpeg|\.bmp|\.gif|\.png|\.tiff)$/i',$file,$regs)) { diff --git a/htdocs/core/tpl/objectline_create.tpl.php b/htdocs/core/tpl/objectline_create.tpl.php index e8bacede84a..c757efa23b4 100644 --- a/htdocs/core/tpl/objectline_create.tpl.php +++ b/htdocs/core/tpl/objectline_create.tpl.php @@ -5,6 +5,7 @@ * Copyright (C) 2012 Cédric Salvador * Copyright (C) 2014 Florian Henry * Copyright (C) 2014 Raphaël Doursenaud + * Copyright (C) 2015 Marcos García * * 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 @@ -315,14 +316,39 @@ else { service->enabled) || ($object->element == 'contrat')) && $dateSelector && GETPOST('type') != '0') // We show date field if required { - if(! empty($conf->global->MAIN_VIEW_LINE_NUMBER)) $colspan = 10; - else $colspan = 9; - if($this->situation_cycle_ref) $colspan++; - if (! empty($inputalsopricewithtax)) $colspan++; // We add 1 if col total ttc - if (in_array($object->element,array('propal','askpricesupplier','facture','invoice','commande','order','order_supplier','invoice_supplier'))) $colspan++; // With this, there is a column move button + $colspan = 6; + + if (!empty($conf->global->MAIN_VIEW_LINE_NUMBER)) { + $colspan++; + } + if ($this->situation_cycle_ref) { + $colspan++; + } + // We add 1 if col total ttc + if (!empty($inputalsopricewithtax)) { + $colspan++; + } if ($conf->global->PRODUCT_USE_UNITS) { $colspan++; } + if (count($object->lines)) { + //There will be an edit and a delete button + $colspan += 2; + + // With this, there is a column move button ONLY if lines > 1 + if (in_array($object->element, array( + 'propal', + 'askpricesupplier', + 'facture', + 'invoice', + 'commande', + 'order', + 'order_supplier', + 'invoice_supplier' + ))) { + $colspan++; + } + } if (! empty($usemargins)) { @@ -489,6 +515,7 @@ jQuery(document).ready(function() { }); $("#prod_entry_mode_predef").on( "click", function() { + console.log("click prod_entry_mode_predef"); setforpredef(); jQuery('#trlinefordates').show(); }); @@ -506,16 +533,17 @@ jQuery(document).ready(function() { ?> /* Code for margin */ - $("#fournprice_predef options").remove(); + $("#fournprice_predef").find("option").remove(); $("#fournprice_predef").hide(); $("#buying_price").val("").show(); /* Call post to load content of combo list fournprice_predef */ - $.post('/fourn/ajax/getSupplierPrices.php', { 'idprod': $(this).val() }, function(data) { + $.post('/fourn/ajax/getSupplierPrices.php?bestpricefirst=1', { 'idprod': $(this).val() }, function(data) { if (data && data.length > 0) { var options = ''; var defaultkey = ''; var defaultprice = ''; + var bestpricefound = 0; var i = 0; $(data).each(function() { if (this.id != 'pmpprice') @@ -524,24 +552,23 @@ jQuery(document).ready(function() { this.price = parseFloat(this.price);//fix this.price >0 // If margin is calculated on best supplier price, we set it by defaut (but only if value is not 0) - var defaultbuyprice = 'global->MARGIN_TYPE) && $conf->global->MARGIN_TYPE == '1')?'bestsupplierprice':''); ?>'; - if (i == 1 && this.price > 0 && 'bestsupplierprice' == defaultbuyprice) { defaultkey = this.id; defaultprice = this.price; } - - options += ''; + var defaultbuyprice = 'global->MARGIN_TYPE) && $conf->global->MARGIN_TYPE == '1')?'bestsupplierprice':''); ?>'; // We set here default value to use + console.log(this.id+" "+this.price+" "+defaultbuyprice+" "+(this.price > 0)); + if (bestpricefound == 0 && this.price > 0 && 'bestsupplierprice' == defaultbuyprice) { defaultkey = this.id; defaultprice = this.price; bestpricefound=1; } // bestpricefound is used to take the first price > 0 } if (this.id == 'pmpprice') { // If margin is calculated on PMP, we set it by defaut (but only if value is not 0) var defaultbuyprice = 'global->MARGIN_TYPE) && $conf->global->MARGIN_TYPE == 'pmp')?'pmp':''); ?>'; + console.log(this.id+" "+this.price+" "+defaultbuyprice); if (this.price > 0 && 'pmp' == defaultbuyprice) { defaultkey = this.id; defaultprice = this.price; } - - options += ''; } + options += ''; }); options += ''; + console.log("defaultkey="+defaultkey); + $("#fournprice_predef").html(options).show(); if (defaultkey != '') { @@ -556,6 +583,7 @@ jQuery(document).ready(function() { $("#buying_price").val(Math.round(defaultprice,global->MAIN_MAX_DECIMALS_UNIT ? $conf->global->MAIN_MAX_DECIMALS_UNIT : 5); ?>)); $("#fournprice_predef").change(function() { + console.log("change on fournprice_predef"); /* Hide field buying_price according to choice into list (if 'inputprice' or not) */ var linevalue=$(this).find('option:selected').val(); var pricevalue = $(this).find('option:selected').attr("price"); diff --git a/htdocs/core/triggers/interface_50_modLdap_Ldapsynchro.class.php b/htdocs/core/triggers/interface_50_modLdap_Ldapsynchro.class.php index 7a63a5cdeec..561ba330694 100644 --- a/htdocs/core/triggers/interface_50_modLdap_Ldapsynchro.class.php +++ b/htdocs/core/triggers/interface_50_modLdap_Ldapsynchro.class.php @@ -414,7 +414,7 @@ class InterfaceLdapsynchro extends DolibarrTriggers elseif ($action == 'MEMBER_CREATE') { dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id); - if (! empty($conf->global->LDAP_MEMBER_ACTIVE)) + if (! empty($conf->global->LDAP_MEMBER_ACTIVE) && (string) $conf->global->LDAP_MEMBER_ACTIVE == '1') { $ldap=new Ldap(); $ldap->connect_bind(); @@ -433,7 +433,7 @@ class InterfaceLdapsynchro extends DolibarrTriggers elseif ($action == 'MEMBER_VALIDATE') { dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id); - if (! empty($conf->global->LDAP_MEMBER_ACTIVE)) + if (! empty($conf->global->LDAP_MEMBER_ACTIVE) && (string) $conf->global->LDAP_MEMBER_ACTIVE == '1') { // If status field is setup to be synchronized if (! empty($conf->global->LDAP_FIELD_MEMBER_STATUS)) @@ -457,7 +457,7 @@ class InterfaceLdapsynchro extends DolibarrTriggers elseif ($action == 'MEMBER_SUBSCRIPTION') { dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id); - if (! empty($conf->global->LDAP_MEMBER_ACTIVE)) + if (! empty($conf->global->LDAP_MEMBER_ACTIVE) && (string) $conf->global->LDAP_MEMBER_ACTIVE == '1') { // If subscriptions fields are setup to be synchronized if ($conf->global->LDAP_FIELD_MEMBER_FIRSTSUBSCRIPTION_DATE @@ -485,7 +485,7 @@ class InterfaceLdapsynchro extends DolibarrTriggers elseif ($action == 'MEMBER_MODIFY') { dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id); - if (! empty($conf->global->LDAP_MEMBER_ACTIVE)) + if (! empty($conf->global->LDAP_MEMBER_ACTIVE) && (string) $conf->global->LDAP_MEMBER_ACTIVE == '1') { $ldap=new Ldap(); $ldap->connect_bind(); @@ -522,7 +522,7 @@ class InterfaceLdapsynchro extends DolibarrTriggers elseif ($action == 'MEMBER_NEW_PASSWORD') { dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id); - if (! empty($conf->global->LDAP_MEMBER_ACTIVE)) + if (! empty($conf->global->LDAP_MEMBER_ACTIVE) && (string) $conf->global->LDAP_MEMBER_ACTIVE == '1') { // If password field is setup to be synchronized if ($conf->global->LDAP_FIELD_PASSWORD || $conf->global->LDAP_FIELD_PASSWORD_CRYPTED) @@ -546,7 +546,7 @@ class InterfaceLdapsynchro extends DolibarrTriggers elseif ($action == 'MEMBER_RESILIATE') { dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id); - if (! empty($conf->global->LDAP_MEMBER_ACTIVE)) + if (! empty($conf->global->LDAP_MEMBER_ACTIVE) && (string) $conf->global->LDAP_MEMBER_ACTIVE == '1') { // If status field is setup to be synchronized if (! empty($conf->global->LDAP_FIELD_MEMBER_STATUS)) @@ -570,7 +570,7 @@ class InterfaceLdapsynchro extends DolibarrTriggers elseif ($action == 'MEMBER_DELETE') { dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id); - if (! empty($conf->global->LDAP_MEMBER_ACTIVE)) + if (! empty($conf->global->LDAP_MEMBER_ACTIVE) && (string) $conf->global->LDAP_MEMBER_ACTIVE == '1') { $ldap=new Ldap(); $ldap->connect_bind(); diff --git a/htdocs/expedition/class/expedition.class.php b/htdocs/expedition/class/expedition.class.php index 26f6683a43b..181f0138bf2 100644 --- a/htdocs/expedition/class/expedition.class.php +++ b/htdocs/expedition/class/expedition.class.php @@ -1048,7 +1048,7 @@ class Expedition extends CommonObject // no lot/serial // We increment stock of product (and sub-products) // We use warehouse selected for each line - $result=$mouvS->reception($user, $obj->fk_product, $obj->fk_entrepot, $obj->qty, $obj->subprice, $langs->trans("ShipmentDeletedInDolibarr", $this->ref)); + $result=$mouvS->reception($user, $obj->fk_product, $obj->fk_entrepot, $obj->qty, 0, $langs->trans("ShipmentDeletedInDolibarr", $this->ref)); // price is set to 0 because we dont want to see WAP changed if ($result < 0) { $error++;$this->errors=$this->errors + $mouvS->errors; @@ -1061,7 +1061,7 @@ class Expedition extends CommonObject // We use warehouse selected for each line foreach($lotArray as $lot) { - $result=$mouvS->reception($user, $obj->fk_product, $obj->fk_entrepot, $lot->dluo_qty, $obj->subprice, $langs->trans("ShipmentDeletedInDolibarr", $this->ref), $lot->eatby, $lot->sellby, $lot->batch); + $result=$mouvS->reception($user, $obj->fk_product, $obj->fk_entrepot, $lot->dluo_qty, 0, $langs->trans("ShipmentDeletedInDolibarr", $this->ref), $lot->eatby, $lot->sellby, $lot->batch); // price is set to 0 because we dont want to see WAP changed if ($result < 0) { $error++;$this->errors=$this->errors + $mouvS->errors; diff --git a/htdocs/exports/class/export.class.php b/htdocs/exports/class/export.class.php index 88e4ecc8596..3a3436c71a9 100644 --- a/htdocs/exports/class/export.class.php +++ b/htdocs/exports/class/export.class.php @@ -107,7 +107,7 @@ class Export if ($enabled) { - // Chargement de la classe + // Loading Class $file = $dir.$modulename.".class.php"; $classname = $modulename; require_once $file; diff --git a/htdocs/fichinter/index.php b/htdocs/fichinter/index.php index 81a2db9621c..03b217f9a91 100644 --- a/htdocs/fichinter/index.php +++ b/htdocs/fichinter/index.php @@ -1,6 +1,6 @@ - * Copyright (C) 2004-2011 Laurent Destailleur + * Copyright (C) 2004-2015 Laurent Destailleur * Copyright (C) 2005-2012 Regis Houssin * Copyright (C) 2015 Charlie Benke @@ -67,11 +67,9 @@ $var=false; print ''; print ''; print ''; -print ''; +print ''; print ''; -print ''; -print ''; +print $langs->trans("Intervention").':'; print "
'.$langs->trans("SearchAnIntervention").'
'.$langs->trans("Search").'
'; -print $langs->trans("Ref").':
'.$langs->trans("Other").':

\n"; diff --git a/htdocs/filefunc.inc.php b/htdocs/filefunc.inc.php index b3cbd2b33c0..5a492940cf1 100644 --- a/htdocs/filefunc.inc.php +++ b/htdocs/filefunc.inc.php @@ -30,6 +30,7 @@ * \brief File that include conf.php file and commons lib like functions.lib.php */ +if (! defined('DOL_APPLICATION_TITLE')) define('DOL_APPLICATION_TITLE','Dolibarr'); if (! defined('DOL_VERSION')) define('DOL_VERSION','3.9.0-beta'); if (! defined('EURO')) define('EURO',chr(128)); diff --git a/htdocs/fourn/ajax/getSupplierPrices.php b/htdocs/fourn/ajax/getSupplierPrices.php index 113f83265f2..9a94553930d 100644 --- a/htdocs/fourn/ajax/getSupplierPrices.php +++ b/htdocs/fourn/ajax/getSupplierPrices.php @@ -39,7 +39,7 @@ $langs->load('stocks'); /* * View -*/ + */ top_httphead(); @@ -49,7 +49,11 @@ if ($idprod > 0) { $producttmp=new ProductFournisseur($db); $producttmp->fetch($idprod); - $productSupplierArray = $producttmp->list_product_fournisseur_price($idprod, 's.nom, pfp.quantity, pfp.price'); // We list all price per supplier, and then firstly with the lower quantity. So we can choose first one with enough quantity into list. + + $sorttouse = 's.nom, pfp.quantity, pfp.price'; + if (GETPOST('bestpricefirst')) $sorttouse = 'pfp.unitprice, s.nom, pfp.quantity, pfp.price'; + + $productSupplierArray = $producttmp->list_product_fournisseur_price($idprod, $sorttouse); // We list all price per supplier, and then firstly with the lower quantity. So we can choose first one with enough quantity into list. if ( is_array($productSupplierArray)) { foreach ($productSupplierArray as $productSupplier) @@ -81,13 +85,13 @@ if ($idprod > 0) $label = price($price,0,$langs,0,0,-1,$conf->currency)."/".$langs->trans("Unit"); if ($productSupplier->fourn_ref) $label.=' ('.$productSupplier->fourn_ref.')'; - $prices[] = array("id" => $productSupplier->product_fourn_price_id, "price" => price($price,0,'',0), "label" => $label, "title" => $title); + $prices[] = array("id" => $productSupplier->product_fourn_price_id, "price" => price2num($price,0,'',0), "label" => $label, "title" => $title); // For price field, we must use price2num(), for label or title, price() } } // Add price for pmp $price=$producttmp->pmp; - $prices[] = array("id" => 'pmpprice', "price" => $price, "label" => $langs->trans("PMPValueShort").': '.price($price,0,$langs,0,0,-1,$conf->currency), "title" => $langs->trans("PMPValueShort").': '.price($price,0,$langs,0,0,-1,$conf->currency)); + $prices[] = array("id" => 'pmpprice', "price" => price2num($price), "label" => $langs->trans("PMPValueShort").': '.price($price,0,$langs,0,0,-1,$conf->currency), "title" => $langs->trans("PMPValueShort").': '.price($price,0,$langs,0,0,-1,$conf->currency)); // For price field, we must use price2num(), for label or title, price() } echo json_encode($prices); diff --git a/htdocs/fourn/card.php b/htdocs/fourn/card.php index 805fe307115..a8b6d18a935 100644 --- a/htdocs/fourn/card.php +++ b/htdocs/fourn/card.php @@ -307,7 +307,7 @@ if ($object->id > 0) //Query from product/liste.php $sql = 'SELECT p.rowid, p.ref, p.label, pfp.tms,'; - $sql.= ' p.fk_product_type'; + $sql.= ' p.fk_product_type, p.entity'; $sql.= ' FROM '.MAIN_DB_PREFIX.'product_fournisseur_price as pfp'; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product as p ON p.rowid = pfp.fk_product"; $sql.= ' WHERE p.entity IN ('.getEntity('product', 1).')'; @@ -331,6 +331,7 @@ if ($object->id > 0) $productstatic->ref = $objp->ref; $productstatic->label = $objp->label; $productstatic->type = $objp->fk_product_type; + $productstatic->entity = $objp->entity; print ""; print ''; diff --git a/htdocs/fourn/class/fournisseur.commande.class.php b/htdocs/fourn/class/fournisseur.commande.class.php index 38c16797fa7..e988893dbb4 100644 --- a/htdocs/fourn/class/fournisseur.commande.class.php +++ b/htdocs/fourn/class/fournisseur.commande.class.php @@ -481,7 +481,7 @@ class CommandeFournisseur extends CommonOrder } else { - $this->error='Not Authorized'; + $this->error='NotAuthorized'; dol_syslog(get_class($this)."::valid ".$this->error, LOG_ERR); return -1; } @@ -936,6 +936,7 @@ class CommandeFournisseur extends CommonOrder */ function commande($user, $date, $methode, $comment='') { + global $langs; dol_syslog(get_class($this)."::commande"); $result = 0; if ($user->rights->fournisseur->commande->commander) @@ -946,16 +947,24 @@ class CommandeFournisseur extends CommonOrder dol_syslog(get_class($this)."::commande", LOG_DEBUG); if ($this->db->query($sql)) { + $this->statut = 3; + $this->methode_commande_id = $methode; + $this->date_commande = $this->db->idate($date); $result = 1; $this->log($user, 3, $date, $comment); } else { + $this->error = $this->db->lasterror(); + $this->errors[] = $this->db->lasterror(); $result = -1; } } else { + $result = -1; + $this->error = $langs->trans('NotAuthorized'); + $this->errors[] = $lanfs->trans('NotAuthorized'); dol_syslog(get_class($this)."::commande User not Authorized", LOG_ERR); } return $result ; @@ -1762,7 +1771,7 @@ class CommandeFournisseur extends CommonOrder */ function Livraison($user, $date, $type, $comment) { - global $conf; + global $conf, $langs; $result = 0; $error = 0; @@ -1829,6 +1838,7 @@ class CommandeFournisseur extends CommonOrder if ($resql) { $result = 0; + $this->statut = $statut; $result=$this->log($user, $statut, $date, $comment); $this->db->commit(); @@ -1843,6 +1853,8 @@ class CommandeFournisseur extends CommonOrder } else { + $this->error = $langs->trans('NotAuthorized'); + $this->errors[] = $langs->trans('NotAuthorized'); dol_syslog(get_class($this)."::Livraison Not Authorized"); $result = -3; } @@ -1992,6 +2004,7 @@ class CommandeFournisseur extends CommonOrder if (! $error) { + $this->statut = $status; $this->db->commit(); return 1; } @@ -2295,7 +2308,7 @@ class CommandeFournisseur extends CommonOrder $clause = " WHERE"; - $sql = "SELECT c.rowid, c.date_creation as datec, c.fk_statut,c.date_livraison as delivery_date"; + $sql = "SELECT c.rowid, c.date_creation as datec, c.date_commande, c.fk_statut, c.date_livraison as delivery_date"; $sql.= " FROM ".MAIN_DB_PREFIX."commande_fournisseur as c"; if (!$user->rights->societe->client->voir && !$user->societe_id) { @@ -2315,7 +2328,7 @@ class CommandeFournisseur extends CommonOrder $response = new WorkboardResponse(); $response->warning_delay=$conf->commande->fournisseur->warning_delay/60/60/24; $response->label=$langs->trans("SuppliersOrdersToProcess"); - $response->url=DOL_URL_ROOT.'/fourn/commande/index.php'; + $response->url=DOL_URL_ROOT.'/fourn/commande/list.php?statut=1,2,3'; $response->img=img_object($langs->trans("Orders"),"order"); while ($obj=$this->db->fetch_object($resql)) @@ -2323,7 +2336,7 @@ class CommandeFournisseur extends CommonOrder $response->nbtodo++; $commandestatic->date_livraison = $this->db->jdate($obj->delivery_date); - $commandestatic->date_commande = $this->db->jdate($obj->datec); + $commandestatic->date_commande = $this->db->jdate($obj->date_commande); $commandestatic->statut = $obj->fk_statut; if ($commandestatic->hasDelay()) { @@ -2477,11 +2490,11 @@ class CommandeFournisseur extends CommonOrder public function hasDelay() { global $conf; - + $now = dol_now(); $date_to_test = empty($this->date_livraison) ? $this->date_commande : $this->date_livraison; - - return ($this->statut != 3) && $date_to_test < ($now - $conf->commande->fournisseur->warning_delay); + + return ($this->statut != 3) && $date_to_test && $date_to_test < ($now - $conf->commande->fournisseur->warning_delay); } } diff --git a/htdocs/fourn/class/fournisseur.product.class.php b/htdocs/fourn/class/fournisseur.product.class.php index cf580459a9c..d7344787623 100644 --- a/htdocs/fourn/class/fournisseur.product.class.php +++ b/htdocs/fourn/class/fournisseur.product.class.php @@ -121,26 +121,38 @@ class ProductFournisseur extends Product */ function remove_product_fournisseur_price($rowid) { - global $conf; + global $conf, $user; $this->db->begin(); - $sql = "DELETE FROM ".MAIN_DB_PREFIX."product_fournisseur_price"; - $sql.= " WHERE rowid = ".$rowid; + // Call trigger + $result=$this->call_trigger('SUPPLIER_PRODUCT_BUYPRICE_DELETE',$user); + if ($result < 0) $error++; + // End call triggers - dol_syslog(get_class($this)."::remove_product_fournisseur_price", LOG_DEBUG); - $resql = $this->db->query($sql); - if ($resql) + if (empty($error)) { + + $sql = "DELETE FROM ".MAIN_DB_PREFIX."product_fournisseur_price"; + $sql.= " WHERE rowid = ".$rowid; + + dol_syslog(get_class($this)."::remove_product_fournisseur_price", LOG_DEBUG); + $resql = $this->db->query($sql); + if (!$resql) + { + $this->error=$this->db->lasterror(); + $error++; + } + } + + if (empty($error)){ $this->db->commit(); return 1; - } - else - { - $this->error=$this->db->lasterror(); + }else{ $this->db->rollback(); return -1; } + } diff --git a/htdocs/fourn/commande/card.php b/htdocs/fourn/commande/card.php index 37809f6bf87..904cd5b3133 100644 --- a/htdocs/fourn/commande/card.php +++ b/htdocs/fourn/commande/card.php @@ -704,15 +704,14 @@ if (empty($reshook)) if ($action == 'confirm_commande' && $confirm == 'yes' && $user->rights->fournisseur->commande->commander) { - $result = $object->commande($user, $_REQUEST["datecommande"], $_REQUEST["methode"], $_REQUEST['comment']); + $result = $object->commande($user, $_REQUEST["datecommande"], $_REQUEST["methode"], $_REQUEST['comment']); if ($result > 0) { if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE)) { $object->generateDocument($object->modelpdf, $outputlangs, $hidedetails, $hidedesc, $hideref); } - header("Location: ".$_SERVER["PHP_SELF"]."?id=".$object->id); - exit; - } + $action = ''; + } else { setEventMessages($object->error, $object->errors, 'errors'); @@ -767,15 +766,15 @@ if (empty($reshook)) { $date_liv = dol_mktime(GETPOST('rehour'),GETPOST('remin'),GETPOST('resec'),GETPOST("remonth"),GETPOST("reday"),GETPOST("reyear")); - $result = $object->Livraison($user, $date_liv, GETPOST("type"), GETPOST("comment")); + $result = $object->Livraison($user, $date_liv, GETPOST("type"), GETPOST("comment")); if ($result > 0) { - header("Location: ".$_SERVER["PHP_SELF"]."?id=".$object->id); - exit; - } + setEventMessages($langs->trans("DeliveryStateSaved"), null); + $action = ''; + } else if($result == -3) { - setEventMessage($langs->trans("NotAuthorized"), 'errors'); + setEventMessages($object->error, $object->errors, 'errors'); } else { @@ -872,6 +871,8 @@ if (empty($reshook)) } } + include DOL_DOCUMENT_ROOT.'/core/actions_printing.inc.php'; + /* * Create an order diff --git a/htdocs/fourn/commande/index.php b/htdocs/fourn/commande/index.php index cb91a65b341..c9de3c6a340 100644 --- a/htdocs/fourn/commande/index.php +++ b/htdocs/fourn/commande/index.php @@ -61,11 +61,9 @@ $var=false; print '
'; print ''; print ''; -print ''; +print ''; print ''; -print ''; -print ''; +print $langs->trans("SupplierOrder").':'; print "
'.$langs->trans("SearchOrder").'
'.$langs->trans("Search").'
'; -print $langs->trans("Ref").':
'.$langs->trans("Other").':

\n"; diff --git a/htdocs/fourn/commande/list.php b/htdocs/fourn/commande/list.php index 768854063dd..ccffe5afa90 100644 --- a/htdocs/fourn/commande/list.php +++ b/htdocs/fourn/commande/list.php @@ -38,13 +38,13 @@ $langs->load("orders"); $langs->load("sendings"); +$sall=GETPOST('search_all'); $search_ref=GETPOST('search_ref'); $search_refsupp=GETPOST('search_refsupp'); $search_company=GETPOST('search_company'); $search_user=GETPOST('search_user'); $search_ht=GETPOST('search_ht'); $search_ttc=GETPOST('search_ttc'); -$sall=GETPOST('search_all'); $search_status=(GETPOST('search_status','alpha')!=''?GETPOST('search_status','alpha'):GETPOST('statut','alpha')); // alpha and not intbecause it can be '6,7' $optioncss = GETPOST('optioncss','alpha'); @@ -100,8 +100,14 @@ if ($socid > 0) { $fourn = new Fournisseur($db); $fourn->fetch($socid); - $title .= ' ('.$fourn->name.')'; + $title .= ' - '.$fourn->name; } +if (GETPOST('statut','alpha')) +{ + if (GETPOST('statut','alpha') == '1,2,3') $title.=' - '.$langs->trans("StatusOrderToProcessShort"); + else $title.=' - '.$langs->trans($commandestatic->statuts[GETPOST('statut','alpha')]); +} + llxHeader('',$title); @@ -157,9 +163,9 @@ if ($sall) if ($socid) $sql.= " AND s.rowid = ".$socid; //Required triple check because statut=0 means draft filter -if (GETPOST('statut', 'int') !== '') +if (GETPOST('statut', 'alpha') !== '') { - $sql .= " AND cf.fk_statut IN (".GETPOST('statut').")"; + $sql .= " AND cf.fk_statut IN (".GETPOST('statut', 'alpha').")"; } if ($search_refsupp) { @@ -245,7 +251,7 @@ if ($resql) print ' '; print ' '; print ''; - $formorder->selectSupplierOrderStatus($search_status,1,'search_status'); + $formorder->selectSupplierOrderStatus((strstr($search_status, ',')?-1:$search_status),1,'search_status'); print ''; print ''; print ''; diff --git a/htdocs/fourn/commande/orderstoinvoice.php b/htdocs/fourn/commande/orderstoinvoice.php index 6fa03cb0475..2c12a9ccdcc 100644 --- a/htdocs/fourn/commande/orderstoinvoice.php +++ b/htdocs/fourn/commande/orderstoinvoice.php @@ -44,7 +44,7 @@ $langs->load('orders'); $langs->load('deliveries'); $langs->load('companies'); -if (! $user->rights->facture->creer) +if (! $user->rights->fournisseur->facture->creer) accessforbidden(); $id = (GETPOST('id') ? GETPOST('id', 'int') : GETPOST("facid")); // For backward compatibility diff --git a/htdocs/fourn/facture/list.php b/htdocs/fourn/facture/list.php index 4252e4a9ef6..a46c5e6ca38 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->trans("FilterOnInto", $search_all, join(', ',$fieldstosearchall)); + print $langs->transnoentities("FilterOnInto", $search_all, join(', ',$fieldstosearchall)); } print ''; diff --git a/htdocs/fourn/facture/paiement.php b/htdocs/fourn/facture/paiement.php index 76497bf4300..82bccf3df19 100644 --- a/htdocs/fourn/facture/paiement.php +++ b/htdocs/fourn/facture/paiement.php @@ -257,7 +257,7 @@ if ($action == 'create' || $action == 'confirm_paiement' || $action == 'add_paie $dateinvoice=($datefacture==''?(empty($conf->global->MAIN_AUTOFILL_DATE)?-1:''):$datefacture); $sql = 'SELECT s.nom as name, s.rowid as socid,'; - $sql.= ' f.rowid, f.ref, f.ref_supplier, f.amount, f.total_ttc as total'; + $sql.= ' f.rowid, f.ref, f.ref_supplier, f.amount, f.total_ttc as total, fk_mode_reglement, fk_account'; if (!$user->rights->societe->client->voir && !$socid) $sql .= ", sc.fk_soc, sc.fk_user "; $sql.= ' FROM '.MAIN_DB_PREFIX.'societe as s, '.MAIN_DB_PREFIX.'facture_fourn as f'; if (!$user->rights->societe->client->voir && !$socid) $sql .= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; @@ -292,11 +292,11 @@ if ($action == 'create' || $action == 'confirm_paiement' || $action == 'add_paie print $supplierstatic->getNomUrl(1,'supplier'); print ''; print ''; print ''; print ''; print ''; @@ -304,7 +304,7 @@ if ($action == 'create' || $action == 'confirm_paiement' || $action == 'add_paie if (! empty($conf->banque->enabled)) { print ''; } else diff --git a/htdocs/fourn/product/list.php b/htdocs/fourn/product/list.php index fb3ae6cea63..fc04c6838ab 100644 --- a/htdocs/fourn/product/list.php +++ b/htdocs/fourn/product/list.php @@ -87,7 +87,7 @@ if ($fourn_id) $supplier->fetch($fourn_id); } -$sql = "SELECT p.rowid, p.label, p.ref, p.fk_product_type,"; +$sql = "SELECT p.rowid, p.label, p.ref, p.fk_product_type, p.entity,"; $sql.= " ppf.fk_soc, ppf.ref_fourn, ppf.price as price, ppf.quantity as qty, ppf.unitprice,"; $sql.= " s.rowid as socid, s.nom as name"; $sql.= " FROM ".MAIN_DB_PREFIX."product as p"; @@ -215,6 +215,7 @@ if ($resql) $productstatic->id=$objp->rowid; $productstatic->ref=$objp->ref; $productstatic->type=$objp->fk_product_type; + $productstatic->entity=$objp->entity; print $productstatic->getNomUrl(1,'supplier'); print ''; diff --git a/htdocs/holiday/list.php b/htdocs/holiday/list.php index b309eade0f4..09d7d165d1f 100644 --- a/htdocs/holiday/list.php +++ b/htdocs/holiday/list.php @@ -231,7 +231,9 @@ if ($id > 0) $title = $langs->trans("User"); dol_fiche_head($head, 'paidholidays', $title, 0, 'user'); - dol_banner_tab($fuser,'id','',$user->rights->user->user->lire || $user->admin); + $linkback = ''.$langs->trans("BackToList").''; + + dol_banner_tab($fuser,'id',$linkback,$user->rights->user->user->lire || $user->admin); print '
'; diff --git a/htdocs/hrm/admin/admin_establishment.php b/htdocs/hrm/admin/admin_establishment.php index 771f2e243bc..26e11dd6b94 100644 --- a/htdocs/hrm/admin/admin_establishment.php +++ b/htdocs/hrm/admin/admin_establishment.php @@ -33,9 +33,13 @@ if (! $user->admin) $error=0; -$action = GETPOST('action', 'alpha'); - -$object = new Establishment($db); +// List of statut +static $tmpstatus2label=array( + '0'=>'OpenEtablishment', + '1'=>'CloseEtablishment' +); +$status2label=array(''); +foreach ($tmpstatus2label as $key => $val) $status2label[$key]=$langs->trans($val); /* * Actions @@ -44,10 +48,24 @@ $object = new Establishment($db); /* * View */ -$page_name = "Establishments"; -llxHeader('', $langs->trans($page_name)); +llxHeader('', $langs->trans("Establishments")); + +$sortorder = GETPOST("sortorder"); +$sortfield = GETPOST("sortfield"); +if (!$sortorder) $sortorder="DESC"; +if (!$sortfield) $sortfield="e.rowid"; + +if ($page == -1) { + $page = 0 ; +} + +$offset = $conf->liste_limit * $page; +$pageprev = $page - 1; +$pagenext = $page + 1; +$limit = $conf->liste_limit; $form = new Form($db); +$establishmenttmp=new Establishment($db); dol_htmloutput_mesg($mesg); @@ -62,43 +80,50 @@ dol_fiche_head($head, 'establishments', $langs->trans("HRM"), 0, "user"); $sql = "SELECT e.rowid, e.name, e.address, e.zip, e.town, e.status"; $sql.= " FROM ".MAIN_DB_PREFIX."establishment as e"; $sql.= " WHERE e.entity = ".$conf->entity; +$sql.= $db->order($sortfield,$sortorder); +$sql.= $db->plimit($limit+1, $offset); $result = $db->query($sql); if ($result) { - $var=false; - $num = $db->num_rows($result); - - $i = 0; + $num = $db->num_rows($result); + $i = 0; // Load attribute_label print '
'.$langs->trans('Date').''; - $form->select_date($dateinvoice,'','','','',"addpaiement",1,1); + $form->select_date($dateinvoice,'','','','',"addpaiement",1,1,0,0,'','',$object->date); print ''.$langs->trans('Comments').'
'.$langs->trans('PaymentMode').''; - $form->select_types_paiements(empty($_POST['paiementid'])?'':$_POST['paiementid'],'paiementid'); + $form->select_types_paiements(empty($_POST['paiementid'])?$obj->fk_mode_reglement:$_POST['paiementid'],'paiementid'); print ''; print '
'.$langs->trans('Account').''; - $form->select_comptes(empty($accountid)?'':$accountid,'accountid',0,'',2); + $form->select_comptes(empty($accountid)?$obj->fk_account:$accountid,'accountid',0,'',2); print '
'; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; + print ""; + print_liste_field_titre($langs->trans("Name"),$_SERVER["PHP_SELF"],"e.name","","","",$sortfield,$sortorder); + print_liste_field_titre($langs->trans("Address"),$_SERVER["PHP_SELF"],"e.address","","","",$sortfield,$sortorder); + print_liste_field_titre($langs->trans("Zipcode"),$_SERVER["PHP_SELF"],"e.zip","","","",$sortfield,$sortorder); + print_liste_field_titre($langs->trans("Town"),$_SERVER["PHP_SELF"],"e.town","","","",$sortfield,$sortorder); + print_liste_field_titre($langs->trans("Status"),$_SERVER["PHP_SELF"],"e.status","","",'align="right"',$sortfield,$sortorder); + print "\n"; - if ($num) + $var=true; + + if ($num > 0) { $establishmentstatic=new Establishment($db); - while ($i < $num && $i < $max) - { + while ($i < min($num,$limit)) + { $obj = $db->fetch_object($result); - $fiscalyearstatic->id=$obj->rowid; - print ''; - print ''; - print ''; + + $establishmentstatic->id=$obj->rowid; + $establishmentstatic->name=$obj->name; + + $var=!$var; + print ''; + print ''; print ''; print ''; print ''; - print ''; - print ''; - $var=!$var; + + print ''; + print "\n"; + $i++; } diff --git a/htdocs/hrm/class/employee.class.php b/htdocs/hrm/class/employee.class.php index 4014bb717f2..1a1350b3b63 100644 --- a/htdocs/hrm/class/employee.class.php +++ b/htdocs/hrm/class/employee.class.php @@ -67,26 +67,41 @@ class Employee extends CommonObject * @param int $id Id of record to load * @return int <0 if KO, >0 if OK */ - function fetch($id) + function fetch($id='') { - $sql = "SELECT rowid, firstname, lastname, status, fk_user"; - $sql.= " FROM ".MAIN_DB_PREFIX."user"; + global $conf, $user; + + $sql = "SELECT e.rowid, e.firstname, e.lastname, e.gender, e.email, e.statut, e.entity, e.fk_user"; + $sql.= " FROM ".MAIN_DB_PREFIX."user as e"; $sql.= " WHERE rowid = ".$id; dol_syslog(get_class($this)."::fetch", LOG_DEBUG); $result = $this->db->query($sql); - if ( $result ) + if ($result) { $obj = $this->db->fetch_object($result); + if ($obj) + { + $this->id = $obj->rowid; + $this->lastname = $obj->lastname; + $this->firstname = $obj->firstname; + $this->gender = $obj->gender; + $this->address = $obj->address; + $this->zip = $obj->zip; + $this->town = $obj->town; + $this->statut = $obj->statut; + $this->photo = $obj->photo; - $this->id = $obj->rowid; - $this->name = $obj->name; - $this->address = $obj->address; - $this->zip = $obj->zip; - $this->town = $obj->town; - $this->status = $obj->status; + $this->db->free($result); + } + else + { + $this->error="EMPLOYEENOTFOUND"; + dol_syslog(get_class($this)."::fetch user not found", LOG_DEBUG); - return 1; + $this->db->free($result); + return 0; + } } else { diff --git a/htdocs/hrm/class/establishment.class.php b/htdocs/hrm/class/establishment.class.php index c5ba77fd547..88b765740ef 100644 --- a/htdocs/hrm/class/establishment.class.php +++ b/htdocs/hrm/class/establishment.class.php @@ -34,6 +34,7 @@ class Establishment extends CommonObject public $fk_element = 'fk_establishment'; protected $ismultientitymanaged = 1; // 0=No test on entity, 1=Test with field entity, 2=Test with link by societe + var $id; var $rowid; var $name; @@ -43,6 +44,8 @@ class Establishment extends CommonObject var $status; // 0=open, 1=closed var $entity; + var $country_id; + var $statuts=array(); var $statuts_short=array(); @@ -69,12 +72,18 @@ class Establishment extends CommonObject */ function create($user) { - global $conf; + global $conf, $langs; $error = 0; - + $ret = 0; $now=dol_now(); + // Clean parameters + $this->address=($this->address>0?$this->address:$this->address); + $this->zip=($this->zip>0?$this->zip:$this->zip); + $this->town=($this->town>0?$this->town:$this->town); + $this->country_id=($this->country_id>0?$this->country_id:$this->country_id); + $this->db->begin(); $sql = "INSERT INTO ".MAIN_DB_PREFIX."establishment ("; @@ -83,22 +92,22 @@ class Establishment extends CommonObject $sql.= ", zip"; $sql.= ", town"; $sql.= ", status"; + $sql.= ", fk_country"; $sql.= ", entity"; $sql.= ", datec"; $sql.= ", fk_user_author"; $sql.= ") VALUES ("; - $sql.= " '".$this->name."'"; - $sql.= ", '".$this->address."'"; - $sql.= ", '".$this->zip."'"; - $sql.= ", '".$this->town."'"; + $sql.= " '".$this->db->escape($this->name)."'"; + $sql.= ", '".$this->db->escape($this->address)."'"; + $sql.= ", '".$this->db->escape($this->zip)."'"; + $sql.= ", '".$this->db->escape($this->town)."'"; + $sql.= ", ".$this->country_id; $sql.= ", ".$this->status; $sql.= ", ".$conf->entity; $sql.= ", '".$this->db->idate($now)."'"; $sql.= ", ". $user->id; $sql.= ")"; - $this->db->begin(); - dol_syslog(get_class($this)."::create", LOG_DEBUG); $resql = $this->db->query($sql); if (! $resql) { @@ -148,6 +157,7 @@ class Establishment extends CommonObject $sql .= ", address = '".$this->address."'"; $sql .= ", zip = '".$this->zip."'"; $sql .= ", town = '".$this->town."'"; + $sql .= ", status = '".$this->status."'"; $sql .= ", fk_user_mod = " . $user->id; $sql .= " WHERE rowid = ".$this->id; @@ -172,9 +182,11 @@ class Establishment extends CommonObject */ function fetch($id) { - $sql = "SELECT rowid, name, address, zip, town, status"; - $sql.= " FROM ".MAIN_DB_PREFIX."establishment"; - $sql.= " WHERE rowid = ".$id; + $sql = "SELECT e.rowid, e.name, e.address, e.zip, e.town, e.status, e.fk_country as country_id,"; + $sql.= ' c.code as country_code, c.label as country'; + $sql.= " FROM ".MAIN_DB_PREFIX."establishment as e"; + $sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'c_country as c ON e.fk_country = c.rowid'; + $sql.= " WHERE e.rowid = ".$id; dol_syslog(get_class($this)."::fetch", LOG_DEBUG); $result = $this->db->query($sql); @@ -189,6 +201,10 @@ class Establishment extends CommonObject $this->town = $obj->town; $this->status = $obj->status; + $this->country_id = $obj->country_id; + $this->country_code = $obj->country_code; + $this->country = $obj->country; + return 1; } else @@ -257,23 +273,23 @@ class Establishment extends CommonObject } if ($mode == 2) { - if ($status==0) return img_picto($langs->trans($this->statuts_short[$status]),'status4').' '.$langs->trans($this->statuts_short[$status]); - if ($status==1) return img_picto($langs->trans($this->statuts_short[$status]),'status8').' '.$langs->trans($this->statuts_short[$status]); + if ($status==0) return img_picto($langs->trans($this->statuts_short[$status]),'statut4').' '.$langs->trans($this->statuts_short[$status]); + if ($status==1) return img_picto($langs->trans($this->statuts_short[$status]),'statut8').' '.$langs->trans($this->statuts_short[$status]); } if ($mode == 3) { - if ($status==0 && ! empty($this->statuts_short[$status])) return img_picto($langs->trans($this->statuts_short[$status]),'status4'); - if ($status==1 && ! empty($this->statuts_short[$status])) return img_picto($langs->trans($this->statuts_short[$status]),'status8'); + if ($status==0 && ! empty($this->statuts_short[$status])) return img_picto($langs->trans($this->statuts_short[$status]),'statut4'); + if ($status==1 && ! empty($this->statuts_short[$status])) return img_picto($langs->trans($this->statuts_short[$status]),'statut8'); } if ($mode == 4) { - if ($status==0 && ! empty($this->statuts_short[$status])) return img_picto($langs->trans($this->statuts_short[$status]),'status4').' '.$langs->trans($this->statuts[$status]); - if ($status==1 && ! empty($this->statuts_short[$status])) return img_picto($langs->trans($this->statuts_short[$status]),'status8').' '.$langs->trans($this->statuts[$status]); + if ($status==0 && ! empty($this->statuts_short[$status])) return img_picto($langs->trans($this->statuts_short[$status]),'statut4').' '.$langs->trans($this->statuts[$status]); + if ($status==1 && ! empty($this->statuts_short[$status])) return img_picto($langs->trans($this->statuts_short[$status]),'statut8').' '.$langs->trans($this->statuts[$status]); } if ($mode == 5) { - if ($status==0 && ! empty($this->statuts_short[$status])) return $langs->trans($this->statuts_short[$status]).' '.img_picto($langs->trans($this->statuts_short[$status]),'status4'); - if ($status==1 && ! empty($this->statuts_short[$status])) return $langs->trans($this->statuts_short[$status]).' '.img_picto($langs->trans($this->statuts_short[$status]),'status8'); + if ($status==0 && ! empty($this->statuts_short[$status])) return $langs->trans($this->statuts_short[$status]).' '.img_picto($langs->trans($this->statuts_short[$status]),'statut4'); + if ($status==1 && ! empty($this->statuts_short[$status])) return $langs->trans($this->statuts_short[$status]).' '.img_picto($langs->trans($this->statuts_short[$status]),'statut8'); } } @@ -298,20 +314,22 @@ class Establishment extends CommonObject { $obj = $this->db->fetch_object($result); $this->id = $obj->rowid; + + $this->date_creation = $this->db->jdate($obj->datec); if ($obj->fk_user_author) { $cuser = new User($this->db); $cuser->fetch($obj->fk_user_author); $this->user_creation = $cuser; } - if ($obj->fk_user_modif) + if ($obj->fk_user_mod) { $muser = new User($this->db); $muser->fetch($obj->fk_user_mod); $this->user_modification = $muser; + + $this->date_modification = $this->db->jdate($obj->tms); } - $this->date_creation = $this->db->jdate($obj->datec); - $this->date_modification = $this->db->jdate($obj->tms); } $this->db->free($result); } @@ -321,4 +339,46 @@ class Establishment extends CommonObject } } + /** + * Return clicable name (with picto eventually) + * + * @param int $withpicto 0=No picto, 1=Include picto into link, 2=Only picto + * @return string String with URL + */ + function getNomUrl($withpicto=0) + { + global $langs; + + $result=''; + + $link = ''; + $linkend=''; + + $picto='building'; + + $label=$langs->trans("Show").': '.$this->name; + + if ($withpicto) $result.=($link.img_object($label,$picto).$linkend); + if ($withpicto && $withpicto != 2) $result.=' '; + if ($withpicto != 2) $result.=$link.$this->name.$linkend; + return $result; + } + + /** + * Return account country code + * + * @return string country code + */ + function getCountryCode() + { + global $mysoc; + + // We return country code of bank account + if (! empty($this->country_code)) return $this->country_code; + + // We return country code of managed company + if (! empty($mysoc->country_code)) return $mysoc->country_code; + + return ''; + } } diff --git a/htdocs/hrm/employee/list.php b/htdocs/hrm/employee/list.php index 1635ba41cda..46c59e90937 100644 --- a/htdocs/hrm/employee/list.php +++ b/htdocs/hrm/employee/list.php @@ -169,8 +169,8 @@ if ($result) $employeestatic->email=$obj->email; $employeestatic->gender=$obj->gender; $employeestatic->societe_id=$obj->fk_soc; - $employeestatic->firstname=''; - $employeestatic->lastname=$obj->login; + $userstatic->firstname=$obj->firstname; + $userstatic->lastname=$obj->lastname; $li=$employeestatic->getNomUrl(1,'',0,0,24,1); diff --git a/htdocs/hrm/establishment/card.php b/htdocs/hrm/establishment/card.php index 533ad5117ff..10a1b42e961 100644 --- a/htdocs/hrm/establishment/card.php +++ b/htdocs/hrm/establishment/card.php @@ -81,34 +81,27 @@ else if ($action == 'add') if (empty($error)) { - $tmparray=getCountry(GETPOST('country_id','int'),'all',$db,$langs,0); - if (! empty($tmparray['id'])) - { - $object->country_id =$tmparray['id']; - $object->country_code =$tmparray['code']; - $object->country_label=$tmparray['label']; - } - $object->address = GETPOST('address', 'alpha'); $object->zip = GETPOST('zipcode', 'alpha'); $object->town = GETPOST('town', 'alpha'); - $object->fk_pays = $object->country_id; + $object->country_id = $_POST["country_id"]; $object->status = GETPOST('status','int'); $object->fk_user_author = $user->id; $object->datec = dol_now(); + + $id = $object->create($user); if ($id > 0) { header("Location: " . $_SERVER["PHP_SELF"] . "?id=" . $id); exit; - } - else - { - setEventMessage($object->error, 'errors'); - $action='create'; - } + } + else + { + setEventMessages($object->error, $object->errors, 'errors'); + } } else { @@ -131,12 +124,7 @@ else if ($action == 'update') $name = GETPOST('name', 'alpha'); if (empty($name)) { - setEventMessage($langs->trans('ErrorFieldRequired', $langs->trans('NameProperty')), 'errors'); - $error ++; - } - $typeid = GETPOST('typeid', 'int'); - if (empty($typeid)) { - setEventMessage($langs->trans('ErrorFieldRequired', $langs->trans('TypeProperty')), 'errors'); + setEventMessage($langs->trans('ErrorFieldRequired', $langs->trans('Name')), 'errors'); $error ++; } @@ -145,25 +133,23 @@ else if ($action == 'update') $object->address = GETPOST('address', 'alpha'); $object->zip = GETPOST('zipcode', 'alpha'); $object->town = GETPOST('town', 'alpha'); - $object->fk_pays = GETPOST('country_id', 'int'); - $object->rowid = GETPOST('id'); + $object->country_id = $_POST["country_id"]; $object->fk_user_mod = $user->id; - $id = $object->update(); + $result = $object->update(); - if ($id > 0) + if ($result > 0) { - header("Location: " . $_SERVER["PHP_SELF"] . "?id=" . $id); + header("Location: " . $_SERVER["PHP_SELF"] . "?id=" . $_POST['id']); exit; } - else - { - setEventMessage($object->error, 'errors'); - $action='create'; - } + else + { + setEventMessages($object->error, $object->errors, 'errors'); + } } } else { - header("Location: card.php?id=" . $id); + header("Location: " . $_SERVER["PHP_SELF"] . "?id=" . $_POST['id']); exit; } } @@ -193,11 +179,11 @@ if ($action == 'create') print '
'.$langs->trans("Ref").''.$langs->trans("Name").''.$langs->trans("Address").''.$langs->trans("Zipcode").''.$langs->trans("Town").''.$langs->trans("Status").'
'.img_object($langs->trans("ShowEstablishment"),"building").' '.$obj->rowid.''.$obj->name.'
'.$establishmentstatic->getNomUrl(1).''.$obj->address.''.$obj->zip.''.$obj->town.''.$establishmentstatic->LibStatut($obj->status,5).'
'; + print $establishmenttmp->getLibStatus(5); + print '
'; // Name - print ''; + print ''; // Address print ''; - print ''; + print ''; print ''; @@ -205,7 +191,7 @@ if ($action == 'create') // Zipcode print ''; - print ''; + print ''; print ''; - print ''; + print ''; print ''; - print ''; + print ''; print ''; - print ''; + print ''; print ''; @@ -273,46 +259,43 @@ else if ($id) // Ref print ""; - print ''; // Name - print ''; // Address - print ''; - print ''; + print ''; print ''; - print ''; + print ''; // Zipcode / Town - print ''; - print ''; // Country - print ''; - print ''; + print ''; print ''; print ''; // Status - print ''; @@ -347,7 +330,7 @@ else if ($id) // Ref print ''; @@ -379,7 +362,14 @@ else if ($id) // Country print ''; print ''; - print ''; + print ''; print ''; // Status diff --git a/htdocs/hrm/establishment/info.php b/htdocs/hrm/establishment/info.php index 2bf014481ac..806bd893fbb 100644 --- a/htdocs/hrm/establishment/info.php +++ b/htdocs/hrm/establishment/info.php @@ -22,6 +22,7 @@ require('../../main.inc.php'); require_once DOL_DOCUMENT_ROOT.'/core/lib/hrm.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; require_once DOL_DOCUMENT_ROOT.'/hrm/class/establishment.class.php'; $langs->load("admin"); diff --git a/htdocs/includes/OAuth/Common/AutoLoader.php b/htdocs/includes/OAuth/Common/AutoLoader.php new file mode 100644 index 00000000000..9fe7951cbd3 --- /dev/null +++ b/htdocs/includes/OAuth/Common/AutoLoader.php @@ -0,0 +1,81 @@ + + */ +class AutoLoader +{ + /** + * @var string The namespace prefix for this instance. + */ + protected $namespace = ''; + + /** + * @var string The filesystem prefix to use for this instance + */ + protected $path = ''; + + /** + * Build the instance of the autoloader + * + * @param string $namespace The prefixed namespace this instance will load + * @param string $path The filesystem path to the root of the namespace + */ + public function __construct($namespace, $path) + { + $this->namespace = ltrim($namespace, '\\'); + $this->path = rtrim($path, '/\\') . DIRECTORY_SEPARATOR; + } + + /** + * Try to load a class + * + * @param string $class The class name to load + * + * @return boolean If the loading was successful + */ + public function load($class) + { + $class = ltrim($class, '\\'); + + if (strpos($class, $this->namespace) === 0) { + $nsparts = explode('\\', $class); + $class = array_pop($nsparts); + $nsparts[] = ''; + $path = $this->path . implode(DIRECTORY_SEPARATOR, $nsparts); + $path .= str_replace('_', DIRECTORY_SEPARATOR, $class) . '.php'; + + if (file_exists($path)) { + require $path; + + return true; + } + } + + return false; + } + + /** + * Register the autoloader to PHP + * + * @return boolean The status of the registration + */ + public function register() + { + return spl_autoload_register(array($this, 'load')); + } + + /** + * Unregister the autoloader to PHP + * + * @return boolean The status of the unregistration + */ + public function unregister() + { + return spl_autoload_unregister(array($this, 'load')); + } +} diff --git a/htdocs/includes/OAuth/Common/Consumer/Credentials.php b/htdocs/includes/OAuth/Common/Consumer/Credentials.php new file mode 100644 index 00000000000..8e98e9fa9a6 --- /dev/null +++ b/htdocs/includes/OAuth/Common/Consumer/Credentials.php @@ -0,0 +1,60 @@ +consumerId = $consumerId; + $this->consumerSecret = $consumerSecret; + $this->callbackUrl = $callbackUrl; + } + + /** + * @return string + */ + public function getCallbackUrl() + { + return $this->callbackUrl; + } + + /** + * @return string + */ + public function getConsumerId() + { + return $this->consumerId; + } + + /** + * @return string + */ + public function getConsumerSecret() + { + return $this->consumerSecret; + } +} diff --git a/htdocs/includes/OAuth/Common/Consumer/CredentialsInterface.php b/htdocs/includes/OAuth/Common/Consumer/CredentialsInterface.php new file mode 100644 index 00000000000..a33e54e9ee2 --- /dev/null +++ b/htdocs/includes/OAuth/Common/Consumer/CredentialsInterface.php @@ -0,0 +1,24 @@ +userAgent = $userAgent; + } + + /** + * @param int $redirects Maximum redirects for client + * + * @return ClientInterface + */ + public function setMaxRedirects($redirects) + { + $this->maxRedirects = $redirects; + + return $this; + } + + /** + * @param int $timeout Request timeout time for client in seconds + * + * @return ClientInterface + */ + public function setTimeout($timeout) + { + $this->timeout = $timeout; + + return $this; + } + + /** + * @param array $headers + */ + public function normalizeHeaders(&$headers) + { + // Normalize headers + array_walk( + $headers, + function (&$val, &$key) { + $key = ucfirst(strtolower($key)); + $val = ucfirst(strtolower($key)) . ': ' . $val; + } + ); + } +} diff --git a/htdocs/includes/OAuth/Common/Http/Client/ClientInterface.php b/htdocs/includes/OAuth/Common/Http/Client/ClientInterface.php new file mode 100644 index 00000000000..f9c20226a6d --- /dev/null +++ b/htdocs/includes/OAuth/Common/Http/Client/ClientInterface.php @@ -0,0 +1,32 @@ + value` pairs) to be passed to `curl_setopt` + * + * @var array + */ + private $parameters = array(); + + /** + * Additional `curl_setopt` parameters + * + * @param array $parameters + */ + public function setCurlParameters(array $parameters) + { + $this->parameters = $parameters; + } + + /** + * @param bool $force + * + * @return CurlClient + */ + public function setForceSSL3($force) + { + $this->forceSSL3 = $force; + + return $this; + } + + /** + * Any implementing HTTP providers should send a request to the provided endpoint with the parameters. + * They should return, in string form, the response body and throw an exception on error. + * + * @param UriInterface $endpoint + * @param mixed $requestBody + * @param array $extraHeaders + * @param string $method + * + * @return string + * + * @throws TokenResponseException + * @throws \InvalidArgumentException + */ + public function retrieveResponse( + UriInterface $endpoint, + $requestBody, + array $extraHeaders = array(), + $method = 'POST' + ) { + // Normalize method name + $method = strtoupper($method); + + $this->normalizeHeaders($extraHeaders); + + if ($method === 'GET' && !empty($requestBody)) { + throw new \InvalidArgumentException('No body expected for "GET" request.'); + } + + if (!isset($extraHeaders['Content-Type']) && $method === 'POST' && is_array($requestBody)) { + $extraHeaders['Content-Type'] = 'Content-Type: application/x-www-form-urlencoded'; + } + + $extraHeaders['Host'] = 'Host: '.$endpoint->getHost(); + $extraHeaders['Connection'] = 'Connection: close'; + + $ch = curl_init(); + + curl_setopt($ch, CURLOPT_URL, $endpoint->getAbsoluteUri()); + + if ($method === 'POST' || $method === 'PUT') { + if ($requestBody && is_array($requestBody)) { + $requestBody = http_build_query($requestBody, '', '&'); + } + + if ($method === 'PUT') { + curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT'); + } else { + curl_setopt($ch, CURLOPT_POST, true); + } + + curl_setopt($ch, CURLOPT_POSTFIELDS, $requestBody); + } else { + curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $method); + } + + if ($this->maxRedirects > 0) { + curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); + curl_setopt($ch, CURLOPT_MAXREDIRS, $this->maxRedirects); + } + + curl_setopt($ch, CURLOPT_TIMEOUT, $this->timeout); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); + curl_setopt($ch, CURLOPT_HEADER, false); + curl_setopt($ch, CURLOPT_HTTPHEADER, $extraHeaders); + curl_setopt($ch, CURLOPT_USERAGENT, $this->userAgent); + + foreach ($this->parameters as $key => $value) { + curl_setopt($ch, $key, $value); + } + + if ($this->forceSSL3) { + curl_setopt($ch, CURLOPT_SSLVERSION, 3); + } + + $response = curl_exec($ch); + $responseCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); + + if (false === $response) { + $errNo = curl_errno($ch); + $errStr = curl_error($ch); + curl_close($ch); + if (empty($errStr)) { + throw new TokenResponseException('Failed to request resource.', $responseCode); + } + throw new TokenResponseException('cURL Error # '.$errNo.': '.$errStr, $responseCode); + } + + curl_close($ch); + + return $response; + } +} diff --git a/htdocs/includes/OAuth/Common/Http/Client/StreamClient.php b/htdocs/includes/OAuth/Common/Http/Client/StreamClient.php new file mode 100644 index 00000000000..d81fee88202 --- /dev/null +++ b/htdocs/includes/OAuth/Common/Http/Client/StreamClient.php @@ -0,0 +1,95 @@ +normalizeHeaders($extraHeaders); + + if ($method === 'GET' && !empty($requestBody)) { + throw new \InvalidArgumentException('No body expected for "GET" request.'); + } + + if (!isset($extraHeaders['Content-Type']) && $method === 'POST' && is_array($requestBody)) { + $extraHeaders['Content-Type'] = 'Content-Type: application/x-www-form-urlencoded'; + } + + $host = 'Host: '.$endpoint->getHost(); + // Append port to Host if it has been specified + if ($endpoint->hasExplicitPortSpecified()) { + $host .= ':'.$endpoint->getPort(); + } + + $extraHeaders['Host'] = $host; + $extraHeaders['Connection'] = 'Connection: close'; + + if (is_array($requestBody)) { + $requestBody = http_build_query($requestBody, '', '&'); + } + $extraHeaders['Content-length'] = 'Content-length: '.strlen($requestBody); + + $context = $this->generateStreamContext($requestBody, $extraHeaders, $method); + + $level = error_reporting(0); + $response = file_get_contents($endpoint->getAbsoluteUri(), false, $context); + error_reporting($level); + if (false === $response) { + $lastError = error_get_last(); + if (is_null($lastError)) { + throw new TokenResponseException( + 'Failed to request resource. HTTP Code: ' . + ((isset($http_response_header[0]))?$http_response_header[0]:'No response') + ); + } + throw new TokenResponseException($lastError['message']); + } + + return $response; + } + + private function generateStreamContext($body, $headers, $method) + { + return stream_context_create( + array( + 'http' => array( + 'method' => $method, + 'header' => implode("\r\n", array_values($headers)), + 'content' => $body, + 'protocol_version' => '1.1', + 'user_agent' => $this->userAgent, + 'max_redirects' => $this->maxRedirects, + 'timeout' => $this->timeout + ), + ) + ); + } +} diff --git a/htdocs/includes/OAuth/Common/Http/Exception/TokenResponseException.php b/htdocs/includes/OAuth/Common/Http/Exception/TokenResponseException.php new file mode 100644 index 00000000000..c519a223b3d --- /dev/null +++ b/htdocs/includes/OAuth/Common/Http/Exception/TokenResponseException.php @@ -0,0 +1,12 @@ +parseUri($uri); + } + } + + /** + * @param string $uri + * + * @throws \InvalidArgumentException + */ + protected function parseUri($uri) + { + if (false === ($uriParts = parse_url($uri))) { + // congratulations if you've managed to get parse_url to fail, + // it seems to always return some semblance of a parsed url no matter what + throw new InvalidArgumentException("Invalid URI: $uri"); + } + + if (!isset($uriParts['scheme'])) { + throw new InvalidArgumentException('Invalid URI: http|https scheme required'); + } + + $this->scheme = $uriParts['scheme']; + $this->host = $uriParts['host']; + + if (isset($uriParts['port'])) { + $this->port = $uriParts['port']; + $this->explicitPortSpecified = true; + } else { + $this->port = strcmp('https', $uriParts['scheme']) ? 80 : 443; + $this->explicitPortSpecified = false; + } + + if (isset($uriParts['path'])) { + $this->path = $uriParts['path']; + if ('/' === $uriParts['path']) { + $this->explicitTrailingHostSlash = true; + } + } else { + $this->path = '/'; + } + + $this->query = isset($uriParts['query']) ? $uriParts['query'] : ''; + $this->fragment = isset($uriParts['fragment']) ? $uriParts['fragment'] : ''; + + $userInfo = ''; + if (!empty($uriParts['user'])) { + $userInfo .= $uriParts['user']; + } + if ($userInfo && !empty($uriParts['pass'])) { + $userInfo .= ':' . $uriParts['pass']; + } + + $this->setUserInfo($userInfo); + } + + /** + * @param string $rawUserInfo + * + * @return string + */ + protected function protectUserInfo($rawUserInfo) + { + $colonPos = strpos($rawUserInfo, ':'); + + // rfc3986-3.2.1 | http://tools.ietf.org/html/rfc3986#section-3.2 + // "Applications should not render as clear text any data + // after the first colon (":") character found within a userinfo + // subcomponent unless the data after the colon is the empty string + // (indicating no password)" + if ($colonPos !== false && strlen($rawUserInfo)-1 > $colonPos) { + return substr($rawUserInfo, 0, $colonPos) . ':********'; + } else { + return $rawUserInfo; + } + } + + /** + * @return string + */ + public function getScheme() + { + return $this->scheme; + } + + /** + * @return string + */ + public function getUserInfo() + { + return $this->userInfo; + } + + /** + * @return string + */ + public function getRawUserInfo() + { + return $this->rawUserInfo; + } + + /** + * @return string + */ + public function getHost() + { + return $this->host; + } + + /** + * @return int + */ + public function getPort() + { + return $this->port; + } + + /** + * @return string + */ + public function getPath() + { + return $this->path; + } + + /** + * @return string + */ + public function getQuery() + { + return $this->query; + } + + /** + * @return string + */ + public function getFragment() + { + return $this->fragment; + } + + /** + * Uses protected user info by default as per rfc3986-3.2.1 + * Uri::getRawAuthority() is available if plain-text password information is desirable. + * + * @return string + */ + public function getAuthority() + { + $authority = $this->userInfo ? $this->userInfo.'@' : ''; + $authority .= $this->host; + + if ($this->explicitPortSpecified) { + $authority .= ":{$this->port}"; + } + + return $authority; + } + + /** + * @return string + */ + public function getRawAuthority() + { + $authority = $this->rawUserInfo ? $this->rawUserInfo.'@' : ''; + $authority .= $this->host; + + if ($this->explicitPortSpecified) { + $authority .= ":{$this->port}"; + } + + return $authority; + } + + /** + * @return string + */ + public function getAbsoluteUri() + { + $uri = $this->scheme . '://' . $this->getRawAuthority(); + + if ('/' === $this->path) { + $uri .= $this->explicitTrailingHostSlash ? '/' : ''; + } else { + $uri .= $this->path; + } + + if (!empty($this->query)) { + $uri .= "?{$this->query}"; + } + + if (!empty($this->fragment)) { + $uri .= "#{$this->fragment}"; + } + + return $uri; + } + + /** + * @return string + */ + public function getRelativeUri() + { + $uri = ''; + + if ('/' === $this->path) { + $uri .= $this->explicitTrailingHostSlash ? '/' : ''; + } else { + $uri .= $this->path; + } + + return $uri; + } + + /** + * Uses protected user info by default as per rfc3986-3.2.1 + * Uri::getAbsoluteUri() is available if plain-text password information is desirable. + * + * @return string + */ + public function __toString() + { + $uri = $this->scheme . '://' . $this->getAuthority(); + + if ('/' === $this->path) { + $uri .= $this->explicitTrailingHostSlash ? '/' : ''; + } else { + $uri .= $this->path; + } + + if (!empty($this->query)) { + $uri .= "?{$this->query}"; + } + + if (!empty($this->fragment)) { + $uri .= "#{$this->fragment}"; + } + + return $uri; + } + + /** + * @param $path + */ + public function setPath($path) + { + if (empty($path)) { + $this->path = '/'; + $this->explicitTrailingHostSlash = false; + } else { + $this->path = $path; + if ('/' === $this->path) { + $this->explicitTrailingHostSlash = true; + } + } + } + + /** + * @param string $query + */ + public function setQuery($query) + { + $this->query = $query; + } + + /** + * @param string $var + * @param string $val + */ + public function addToQuery($var, $val) + { + if (strlen($this->query) > 0) { + $this->query .= '&'; + } + $this->query .= http_build_query(array($var => $val), '', '&'); + } + + /** + * @param string $fragment + */ + public function setFragment($fragment) + { + $this->fragment = $fragment; + } + + /** + * @param string $scheme + */ + public function setScheme($scheme) + { + $this->scheme = $scheme; + } + + + /** + * @param string $userInfo + */ + public function setUserInfo($userInfo) + { + $this->userInfo = $userInfo ? $this->protectUserInfo($userInfo) : ''; + $this->rawUserInfo = $userInfo; + } + + + /** + * @param int $port + */ + public function setPort($port) + { + $this->port = intval($port); + + if (('https' === $this->scheme && $this->port === 443) || ('http' === $this->scheme && $this->port === 80)) { + $this->explicitPortSpecified = false; + } else { + $this->explicitPortSpecified = true; + } + } + + /** + * @param string $host + */ + public function setHost($host) + { + $this->host = $host; + } + + /** + * @return bool + */ + public function hasExplicitTrailingHostSlash() + { + return $this->explicitTrailingHostSlash; + } + + /** + * @return bool + */ + public function hasExplicitPortSpecified() + { + return $this->explicitPortSpecified; + } +} diff --git a/htdocs/includes/OAuth/Common/Http/Uri/UriFactory.php b/htdocs/includes/OAuth/Common/Http/Uri/UriFactory.php new file mode 100644 index 00000000000..127aa203bec --- /dev/null +++ b/htdocs/includes/OAuth/Common/Http/Uri/UriFactory.php @@ -0,0 +1,168 @@ +attemptProxyStyleParse($_server)) { + return $uri; + } + + $scheme = $this->detectScheme($_server); + $host = $this->detectHost($_server); + $port = $this->detectPort($_server); + $path = $this->detectPath($_server); + $query = $this->detectQuery($_server); + + return $this->createFromParts($scheme, '', $host, $port, $path, $query); + } + + /** + * @param string $absoluteUri + * + * @return UriInterface + */ + public function createFromAbsolute($absoluteUri) + { + return new Uri($absoluteUri); + } + + /** + * Factory method to build a URI from parts + * + * @param string $scheme + * @param string $userInfo + * @param string $host + * @param string $port + * @param string $path + * @param string $query + * @param string $fragment + * + * @return UriInterface + */ + public function createFromParts($scheme, $userInfo, $host, $port, $path = '', $query = '', $fragment = '') + { + $uri = new Uri(); + $uri->setScheme($scheme); + $uri->setUserInfo($userInfo); + $uri->setHost($host); + $uri->setPort($port); + $uri->setPath($path); + $uri->setQuery($query); + $uri->setFragment($fragment); + + return $uri; + } + + /** + * @param array $_server + * + * @return UriInterface|null + */ + private function attemptProxyStyleParse($_server) + { + // If the raw HTTP request message arrives with a proxy-style absolute URI in the + // initial request line, the absolute URI is stored in $_SERVER['REQUEST_URI'] and + // we only need to parse that. + if (isset($_server['REQUEST_URI']) && parse_url($_server['REQUEST_URI'], PHP_URL_SCHEME)) { + return new Uri($_server['REQUEST_URI']); + } + + return null; + } + + /** + * @param array $_server + * + * @return string + * + * @throws RuntimeException + */ + private function detectPath($_server) + { + if (isset($_server['REQUEST_URI'])) { + $uri = $_server['REQUEST_URI']; + } elseif (isset($_server['REDIRECT_URL'])) { + $uri = $_server['REDIRECT_URL']; + } else { + throw new RuntimeException('Could not detect URI path from superglobal'); + } + + $queryStr = strpos($uri, '?'); + if ($queryStr !== false) { + $uri = substr($uri, 0, $queryStr); + } + + return $uri; + } + + /** + * @param array $_server + * + * @return string + */ + private function detectHost(array $_server) + { + $host = isset($_server['HTTP_HOST']) ? $_server['HTTP_HOST'] : ''; + + if (strstr($host, ':')) { + $host = parse_url($host, PHP_URL_HOST); + } + + return $host; + } + + /** + * @param array $_server + * + * @return string + */ + private function detectPort(array $_server) + { + return isset($_server['SERVER_PORT']) ? $_server['SERVER_PORT'] : 80; + } + + /** + * @param array $_server + * + * @return string + */ + private function detectQuery(array $_server) + { + return isset($_server['QUERY_STRING']) ? $_server['QUERY_STRING'] : ''; + } + + /** + * Determine URI scheme component from superglobal array + * + * When using ISAPI with IIS, the value will be "off" if the request was + * not made through the HTTPS protocol. As a result, we filter the + * value to a bool. + * + * @param array $_server A super-global $_SERVER array + * + * @return string Returns http or https depending on the URI scheme + */ + private function detectScheme(array $_server) + { + if (isset($_server['HTTPS']) && filter_var($_server['HTTPS'], FILTER_VALIDATE_BOOLEAN)) { + return 'https'; + } else { + return 'http'; + } + } +} diff --git a/htdocs/includes/OAuth/Common/Http/Uri/UriFactoryInterface.php b/htdocs/includes/OAuth/Common/Http/Uri/UriFactoryInterface.php new file mode 100644 index 00000000000..2b157d841aa --- /dev/null +++ b/htdocs/includes/OAuth/Common/Http/Uri/UriFactoryInterface.php @@ -0,0 +1,42 @@ +credentials = $credentials; + $this->httpClient = $httpClient; + $this->storage = $storage; + } + + /** + * @param UriInterface|string $path + * @param UriInterface $baseApiUri + * + * @return UriInterface + * + * @throws Exception + */ + protected function determineRequestUriFromPath($path, UriInterface $baseApiUri = null) + { + if ($path instanceof UriInterface) { + $uri = $path; + } elseif (stripos($path, 'http://') === 0 || stripos($path, 'https://') === 0) { + $uri = new Uri($path); + } else { + if (null === $baseApiUri) { + throw new Exception( + 'An absolute URI must be passed to ServiceInterface::request as no baseApiUri is set.' + ); + } + + $uri = clone $baseApiUri; + if (false !== strpos($path, '?')) { + $parts = explode('?', $path, 2); + $path = $parts[0]; + $query = $parts[1]; + $uri->setQuery($query); + } + + if ($path[0] === '/') { + $path = substr($path, 1); + } + + $uri->setPath($uri->getPath() . $path); + } + + return $uri; + } + + /** + * Accessor to the storage adapter to be able to retrieve tokens + * + * @return TokenStorageInterface + */ + public function getStorage() + { + return $this->storage; + } + + /** + * @return string + */ + public function service() + { + // get class name without backslashes + $classname = get_class($this); + + return preg_replace('/^.*\\\\/', '', $classname); + } +} diff --git a/htdocs/includes/OAuth/Common/Service/ServiceInterface.php b/htdocs/includes/OAuth/Common/Service/ServiceInterface.php new file mode 100644 index 00000000000..5856a03947c --- /dev/null +++ b/htdocs/includes/OAuth/Common/Service/ServiceInterface.php @@ -0,0 +1,49 @@ + + * + * 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 . + */ + +/** + * \file htdocs/includes/OAuth/Common/Storage/DoliStorage.php + * \ingroup oauth + * \brief Dolibarr token storage class + */ + +namespace OAuth\Common\Storage; + +use OAuth\Common\Token\TokenInterface; +use OAuth\Common\Storage\Exception\TokenNotFoundException; +use OAuth\Common\Storage\Exception\AuthorizationStateNotFoundException; +use DoliDB; + +class DoliStorage implements TokenStorageInterface +{ + /** + * @var DoliDB Database handler + */ + protected $db; + + /** + * @var object|TokenInterface + */ + protected $tokens; + + /** + * @var string Error code (or message) + */ + public $error; + /** + * @var string[] Several error codes (or messages) + */ + public $errors = array(); + + private $conf; + private $key; + private $stateKey; + + /** + * @param Conf $conf + * @param string $key + * @param string $stateKey + */ + public function __construct(DoliDB $db, $conf) + { + $this->db = $db; + $this->conf = $conf; + $this->tokens = array(); + $this->states = array(); + //$this->key = $key; + //$this->stateKey = $stateKey; + } + + /** + * {@inheritDoc} + */ + public function retrieveAccessToken($service) + { + if ($this->hasAccessToken($service)) { + return $this->tokens[$service]; + } + + throw new TokenNotFoundException('Token not found in db, are you sure you stored it?'); + } + + /** + * {@inheritDoc} + */ + public function storeAccessToken($service, TokenInterface $token) + { + //var_dump("storeAccessToken"); + //var_dump($token); + dol_syslog("storeAccessToken"); + + $serializedToken = serialize($token); + $this->tokens[$service] = $token; + + if (!is_array($this->tokens)) { + $this->tokens = array(); + } + $sql = "SELECT rowid FROM ".MAIN_DB_PREFIX."oauth_token"; + $sql.= " WHERE service='".$service."' AND entity=1"; + $resql = $this->db->query($sql); + if (! $resql) + { + dol_print_error($this->db); + } + $obj = $this->db->fetch_array($resql); + if ($obj) { + // update + $sql = "UPDATE ".MAIN_DB_PREFIX."oauth_token"; + $sql.= " SET token='".$this->db->escape($serializedToken)."'"; + $sql.= " WHERE rowid='".$obj['rowid']."'"; + $resql = $this->db->query($sql); + } else { + // save + $sql = "INSERT INTO ".MAIN_DB_PREFIX."oauth_token (service, token, entity)"; + $sql.= " VALUES ('".$service."', '".$this->db->escape($serializedToken)."', 1)"; + $resql = $this->db->query($sql); + } + //print $sql; + + // allow chaining + return $this; + } + + /** + * {@inheritDoc} + */ + public function hasAccessToken($service) + { + // get from db + $sql = "SELECT token FROM ".MAIN_DB_PREFIX."oauth_token"; + $sql.= " WHERE service='".$service."'"; + $resql = $this->db->query($sql); + if (! $resql) + { + dol_print_error($this->db); + } + $result = $this->db->fetch_array($resql); + $token = unserialize($result['token']); + + $this->tokens[$service] = $token; + + return is_array($this->tokens) + && isset($this->tokens[$service]) + && $this->tokens[$service] instanceof TokenInterface; + } + + /** + * {@inheritDoc} + */ + public function clearToken($service) + { + // TODO + // get previously saved tokens + //$tokens = $this->retrieveAccessToken($service); + + //if (is_array($tokens) && array_key_exists($service, $tokens)) { + // unset($tokens[$service]); + + $sql = "DELETE FROM ".MAIN_DB_PREFIX."oauth_token"; + $sql.= " WHERE service='".$service."'"; + $resql = $this->db->query($sql); + //} + + // allow chaining + return $this; + } + + /** + * {@inheritDoc} + */ + public function clearAllTokens() + { + // TODO + $this->conf->remove($this->key); + + // allow chaining + return $this; + } + + /** + * {@inheritDoc} + */ + public function retrieveAuthorizationState($service) + { + if ($this->hasAuthorizationState($service)) { + return $this->states[$service]; + + } + + throw new AuthorizationStateNotFoundException('State not found in conf, are you sure you stored it?'); + } + + /** + * {@inheritDoc} + */ + public function storeAuthorizationState($service, $state) + { + // TODO save or update + + if (!is_array($states)) { + $states = array(); + } + + $states[$service] = $state; + $this->states[$service] = $state; + + $sql = "SELECT rowid FROM ".MAIN_DB_PREFIX."oauth_state"; + $sql.= " WHERE service='".$service."' AND entity=1"; + $resql = $this->db->query($sql); + if (! $resql) + { + dol_print_error($this->db); + } + $obj = $this->db->fetch_array($resql); + if ($obj) { + // update + $sql = "UPDATE ".MAIN_DB_PREFIX."oauth_state"; + $sql.= " SET state='".$this->db->escape($state)."'"; + $sql.= " WHERE rowid='".$obj['rowid']."'"; + $resql = $this->db->query($sql); + } else { + // save + $sql = "INSERT INTO ".MAIN_DB_PREFIX."oauth_state (service, state, entity)"; + $sql.= " VALUES ('".$service."', '".$state."', 1)"; + $resql = $this->db->query($sql); + } + + // allow chaining + return $this; + } + + /** + * {@inheritDoc} + */ + public function hasAuthorizationState($service) + { + // get from db + $sql = "SELECT state FROM ".MAIN_DB_PREFIX."oauth_state"; + $sql.= " WHERE service='".$service."'"; + $resql = $this->db->query($sql); + $result = $this->db->fetch_array($resql); + $states[$service] = $result[state]; + $this->states[$service] = $states[$service]; + + return is_array($states) + && isset($states[$service]) + && null !== $states[$service]; + } + + /** + * {@inheritDoc} + */ + public function clearAuthorizationState($service) + { + // TODO + // get previously saved tokens + //$states = $this->conf->get($this->stateKey); + + if (is_array($states) && array_key_exists($service, $states)) { + unset($states[$service]); + + // Replace the stored tokens array + //$this->conf->set($this->stateKey, $states); + } + + // allow chaining + return $this; + } + + /** + * {@inheritDoc} + */ + public function clearAllAuthorizationStates() + { + // TODO + //$this->conf->remove($this->stateKey); + + // allow chaining + return $this; + } + +} diff --git a/htdocs/includes/OAuth/Common/Storage/Exception/AuthorizationStateNotFoundException.php b/htdocs/includes/OAuth/Common/Storage/Exception/AuthorizationStateNotFoundException.php new file mode 100644 index 00000000000..b3daeabb72e --- /dev/null +++ b/htdocs/includes/OAuth/Common/Storage/Exception/AuthorizationStateNotFoundException.php @@ -0,0 +1,10 @@ +tokens = array(); + $this->states = array(); + } + + /** + * {@inheritDoc} + */ + public function retrieveAccessToken($service) + { + if ($this->hasAccessToken($service)) { + return $this->tokens[$service]; + } + + throw new TokenNotFoundException('Token not stored'); + } + + /** + * {@inheritDoc} + */ + public function storeAccessToken($service, TokenInterface $token) + { + $this->tokens[$service] = $token; + + // allow chaining + return $this; + } + + /** + * {@inheritDoc} + */ + public function hasAccessToken($service) + { + return isset($this->tokens[$service]) && $this->tokens[$service] instanceof TokenInterface; + } + + /** + * {@inheritDoc} + */ + public function clearToken($service) + { + if (array_key_exists($service, $this->tokens)) { + unset($this->tokens[$service]); + } + + // allow chaining + return $this; + } + + /** + * {@inheritDoc} + */ + public function clearAllTokens() + { + $this->tokens = array(); + + // allow chaining + return $this; + } + + /** + * {@inheritDoc} + */ + public function retrieveAuthorizationState($service) + { + if ($this->hasAuthorizationState($service)) { + return $this->states[$service]; + } + + throw new AuthorizationStateNotFoundException('State not stored'); + } + + /** + * {@inheritDoc} + */ + public function storeAuthorizationState($service, $state) + { + $this->states[$service] = $state; + + // allow chaining + return $this; + } + + /** + * {@inheritDoc} + */ + public function hasAuthorizationState($service) + { + return isset($this->states[$service]) && null !== $this->states[$service]; + } + + /** + * {@inheritDoc} + */ + public function clearAuthorizationState($service) + { + if (array_key_exists($service, $this->states)) { + unset($this->states[$service]); + } + + // allow chaining + return $this; + } + + /** + * {@inheritDoc} + */ + public function clearAllAuthorizationStates() + { + $this->states = array(); + + // allow chaining + return $this; + } +} diff --git a/htdocs/includes/OAuth/Common/Storage/Redis.php b/htdocs/includes/OAuth/Common/Storage/Redis.php new file mode 100644 index 00000000000..5d3d9aea006 --- /dev/null +++ b/htdocs/includes/OAuth/Common/Storage/Redis.php @@ -0,0 +1,230 @@ +redis = $redis; + $this->key = $key; + $this->stateKey = $stateKey; + $this->cachedTokens = array(); + $this->cachedStates = array(); + } + + /** + * {@inheritDoc} + */ + public function retrieveAccessToken($service) + { + if (!$this->hasAccessToken($service)) { + throw new TokenNotFoundException('Token not found in redis'); + } + + if (isset($this->cachedTokens[$service])) { + return $this->cachedTokens[$service]; + } + + $val = $this->redis->hget($this->key, $service); + + return $this->cachedTokens[$service] = unserialize($val); + } + + /** + * {@inheritDoc} + */ + public function storeAccessToken($service, TokenInterface $token) + { + // (over)write the token + $this->redis->hset($this->key, $service, serialize($token)); + $this->cachedTokens[$service] = $token; + + // allow chaining + return $this; + } + + /** + * {@inheritDoc} + */ + public function hasAccessToken($service) + { + if (isset($this->cachedTokens[$service]) + && $this->cachedTokens[$service] instanceof TokenInterface + ) { + return true; + } + + return $this->redis->hexists($this->key, $service); + } + + /** + * {@inheritDoc} + */ + public function clearToken($service) + { + $this->redis->hdel($this->key, $service); + unset($this->cachedTokens[$service]); + + // allow chaining + return $this; + } + + /** + * {@inheritDoc} + */ + public function clearAllTokens() + { + // memory + $this->cachedTokens = array(); + + // redis + $keys = $this->redis->hkeys($this->key); + $me = $this; // 5.3 compat + + // pipeline for performance + $this->redis->pipeline( + function ($pipe) use ($keys, $me) { + foreach ($keys as $k) { + $pipe->hdel($me->getKey(), $k); + } + } + ); + + // allow chaining + return $this; + } + + /** + * {@inheritDoc} + */ + public function retrieveAuthorizationState($service) + { + if (!$this->hasAuthorizationState($service)) { + throw new AuthorizationStateNotFoundException('State not found in redis'); + } + + if (isset($this->cachedStates[$service])) { + return $this->cachedStates[$service]; + } + + $val = $this->redis->hget($this->stateKey, $service); + + return $this->cachedStates[$service] = $val; + } + + /** + * {@inheritDoc} + */ + public function storeAuthorizationState($service, $state) + { + // (over)write the token + $this->redis->hset($this->stateKey, $service, $state); + $this->cachedStates[$service] = $state; + + // allow chaining + return $this; + } + + /** + * {@inheritDoc} + */ + public function hasAuthorizationState($service) + { + if (isset($this->cachedStates[$service]) + && null !== $this->cachedStates[$service] + ) { + return true; + } + + return $this->redis->hexists($this->stateKey, $service); + } + + /** + * {@inheritDoc} + */ + public function clearAuthorizationState($service) + { + $this->redis->hdel($this->stateKey, $service); + unset($this->cachedStates[$service]); + + // allow chaining + return $this; + } + + /** + * {@inheritDoc} + */ + public function clearAllAuthorizationStates() + { + // memory + $this->cachedStates = array(); + + // redis + $keys = $this->redis->hkeys($this->stateKey); + $me = $this; // 5.3 compat + + // pipeline for performance + $this->redis->pipeline( + function ($pipe) use ($keys, $me) { + foreach ($keys as $k) { + $pipe->hdel($me->getKey(), $k); + } + } + ); + + // allow chaining + return $this; + } + + /** + * @return Predis $redis + */ + public function getRedis() + { + return $this->redis; + } + + /** + * @return string $key + */ + public function getKey() + { + return $this->key; + } +} diff --git a/htdocs/includes/OAuth/Common/Storage/Session.php b/htdocs/includes/OAuth/Common/Storage/Session.php new file mode 100644 index 00000000000..b011d927503 --- /dev/null +++ b/htdocs/includes/OAuth/Common/Storage/Session.php @@ -0,0 +1,188 @@ +startSession = $startSession; + $this->sessionVariableName = $sessionVariableName; + $this->stateVariableName = $stateVariableName; + if (!isset($_SESSION[$sessionVariableName])) { + $_SESSION[$sessionVariableName] = array(); + } + if (!isset($_SESSION[$stateVariableName])) { + $_SESSION[$stateVariableName] = array(); + } + } + + /** + * {@inheritDoc} + */ + public function retrieveAccessToken($service) + { + if ($this->hasAccessToken($service)) { + return unserialize($_SESSION[$this->sessionVariableName][$service]); + } + + throw new TokenNotFoundException('Token not found in session, are you sure you stored it?'); + } + + /** + * {@inheritDoc} + */ + public function storeAccessToken($service, TokenInterface $token) + { + $serializedToken = serialize($token); + + if (isset($_SESSION[$this->sessionVariableName]) + && is_array($_SESSION[$this->sessionVariableName]) + ) { + $_SESSION[$this->sessionVariableName][$service] = $serializedToken; + } else { + $_SESSION[$this->sessionVariableName] = array( + $service => $serializedToken, + ); + } + + // allow chaining + return $this; + } + + /** + * {@inheritDoc} + */ + public function hasAccessToken($service) + { + return isset($_SESSION[$this->sessionVariableName], $_SESSION[$this->sessionVariableName][$service]); + } + + /** + * {@inheritDoc} + */ + public function clearToken($service) + { + if (array_key_exists($service, $_SESSION[$this->sessionVariableName])) { + unset($_SESSION[$this->sessionVariableName][$service]); + } + + // allow chaining + return $this; + } + + /** + * {@inheritDoc} + */ + public function clearAllTokens() + { + unset($_SESSION[$this->sessionVariableName]); + + // allow chaining + return $this; + } + + /** + * {@inheritDoc} + */ + public function storeAuthorizationState($service, $state) + { + if (isset($_SESSION[$this->stateVariableName]) + && is_array($_SESSION[$this->stateVariableName]) + ) { + $_SESSION[$this->stateVariableName][$service] = $state; + } else { + $_SESSION[$this->stateVariableName] = array( + $service => $state, + ); + } + + // allow chaining + return $this; + } + + /** + * {@inheritDoc} + */ + public function hasAuthorizationState($service) + { + return isset($_SESSION[$this->stateVariableName], $_SESSION[$this->stateVariableName][$service]); + } + + /** + * {@inheritDoc} + */ + public function retrieveAuthorizationState($service) + { + if ($this->hasAuthorizationState($service)) { + return $_SESSION[$this->stateVariableName][$service]; + } + + throw new AuthorizationStateNotFoundException('State not found in session, are you sure you stored it?'); + } + + /** + * {@inheritDoc} + */ + public function clearAuthorizationState($service) + { + if (array_key_exists($service, $_SESSION[$this->stateVariableName])) { + unset($_SESSION[$this->stateVariableName][$service]); + } + + // allow chaining + return $this; + } + + /** + * {@inheritDoc} + */ + public function clearAllAuthorizationStates() + { + unset($_SESSION[$this->stateVariableName]); + + // allow chaining + return $this; + } + + public function __destruct() + { + if ($this->startSession) { + session_write_close(); + } + } +} diff --git a/htdocs/includes/OAuth/Common/Storage/SymfonySession.php b/htdocs/includes/OAuth/Common/Storage/SymfonySession.php new file mode 100644 index 00000000000..6c5fbf60b00 --- /dev/null +++ b/htdocs/includes/OAuth/Common/Storage/SymfonySession.php @@ -0,0 +1,200 @@ +session = $session; + $this->sessionVariableName = $sessionVariableName; + $this->stateVariableName = $stateVariableName; + } + + /** + * {@inheritDoc} + */ + public function retrieveAccessToken($service) + { + if ($this->hasAccessToken($service)) { + // get from session + $tokens = $this->session->get($this->sessionVariableName); + + // one item + return $tokens[$service]; + } + + throw new TokenNotFoundException('Token not found in session, are you sure you stored it?'); + } + + /** + * {@inheritDoc} + */ + public function storeAccessToken($service, TokenInterface $token) + { + // get previously saved tokens + $tokens = $this->session->get($this->sessionVariableName); + + if (!is_array($tokens)) { + $tokens = array(); + } + + $tokens[$service] = $token; + + // save + $this->session->set($this->sessionVariableName, $tokens); + + // allow chaining + return $this; + } + + /** + * {@inheritDoc} + */ + public function hasAccessToken($service) + { + // get from session + $tokens = $this->session->get($this->sessionVariableName); + + return is_array($tokens) + && isset($tokens[$service]) + && $tokens[$service] instanceof TokenInterface; + } + + /** + * {@inheritDoc} + */ + public function clearToken($service) + { + // get previously saved tokens + $tokens = $this->session->get($this->sessionVariableName); + + if (is_array($tokens) && array_key_exists($service, $tokens)) { + unset($tokens[$service]); + + // Replace the stored tokens array + $this->session->set($this->sessionVariableName, $tokens); + } + + // allow chaining + return $this; + } + + /** + * {@inheritDoc} + */ + public function clearAllTokens() + { + $this->session->remove($this->sessionVariableName); + + // allow chaining + return $this; + } + + /** + * {@inheritDoc} + */ + public function retrieveAuthorizationState($service) + { + if ($this->hasAuthorizationState($service)) { + // get from session + $states = $this->session->get($this->stateVariableName); + + // one item + return $states[$service]; + } + + throw new AuthorizationStateNotFoundException('State not found in session, are you sure you stored it?'); + } + + /** + * {@inheritDoc} + */ + public function storeAuthorizationState($service, $state) + { + // get previously saved tokens + $states = $this->session->get($this->stateVariableName); + + if (!is_array($states)) { + $states = array(); + } + + $states[$service] = $state; + + // save + $this->session->set($this->stateVariableName, $states); + + // allow chaining + return $this; + } + + /** + * {@inheritDoc} + */ + public function hasAuthorizationState($service) + { + // get from session + $states = $this->session->get($this->stateVariableName); + + return is_array($states) + && isset($states[$service]) + && null !== $states[$service]; + } + + /** + * {@inheritDoc} + */ + public function clearAuthorizationState($service) + { + // get previously saved tokens + $states = $this->session->get($this->stateVariableName); + + if (is_array($states) && array_key_exists($service, $states)) { + unset($states[$service]); + + // Replace the stored tokens array + $this->session->set($this->stateVariableName, $states); + } + + // allow chaining + return $this; + } + + /** + * {@inheritDoc} + */ + public function clearAllAuthorizationStates() + { + $this->session->remove($this->stateVariableName); + + // allow chaining + return $this; + } + + /** + * @return Session + */ + public function getSession() + { + return $this->session; + } +} diff --git a/htdocs/includes/OAuth/Common/Storage/TokenStorageInterface.php b/htdocs/includes/OAuth/Common/Storage/TokenStorageInterface.php new file mode 100644 index 00000000000..46552cee936 --- /dev/null +++ b/htdocs/includes/OAuth/Common/Storage/TokenStorageInterface.php @@ -0,0 +1,98 @@ +accessToken = $accessToken; + $this->refreshToken = $refreshToken; + $this->setLifetime($lifetime); + $this->extraParams = $extraParams; + } + + /** + * @return string + */ + public function getAccessToken() + { + return $this->accessToken; + } + + /** + * @return string + */ + public function getRefreshToken() + { + return $this->refreshToken; + } + + /** + * @return int + */ + public function getEndOfLife() + { + return $this->endOfLife; + } + + /** + * @param array $extraParams + */ + public function setExtraParams(array $extraParams) + { + $this->extraParams = $extraParams; + } + + /** + * @return array + */ + public function getExtraParams() + { + return $this->extraParams; + } + + /** + * @param string $accessToken + */ + public function setAccessToken($accessToken) + { + $this->accessToken = $accessToken; + } + + /** + * @param int $endOfLife + */ + public function setEndOfLife($endOfLife) + { + $this->endOfLife = $endOfLife; + } + + /** + * @param int $lifetime + */ + public function setLifetime($lifetime) + { + if (0 === $lifetime || static::EOL_NEVER_EXPIRES === $lifetime) { + $this->endOfLife = static::EOL_NEVER_EXPIRES; + } elseif (null !== $lifetime) { + $this->endOfLife = intval($lifetime) + time(); + } else { + $this->endOfLife = static::EOL_UNKNOWN; + } + } + + /** + * @param string $refreshToken + */ + public function setRefreshToken($refreshToken) + { + $this->refreshToken = $refreshToken; + } + + public function isExpired() + { + return ($this->getEndOfLife() !== TokenInterface::EOL_NEVER_EXPIRES + && $this->getEndOfLife() !== TokenInterface::EOL_UNKNOWN + && time() > $this->getEndOfLife()); + } +} diff --git a/htdocs/includes/OAuth/Common/Token/Exception/ExpiredTokenException.php b/htdocs/includes/OAuth/Common/Token/Exception/ExpiredTokenException.php new file mode 100644 index 00000000000..26ad6cc5cb1 --- /dev/null +++ b/htdocs/includes/OAuth/Common/Token/Exception/ExpiredTokenException.php @@ -0,0 +1,12 @@ +signature = $signature; + $this->baseApiUri = $baseApiUri; + + $this->signature->setHashingAlgorithm($this->getSignatureMethod()); + } + + /** + * {@inheritDoc} + */ + public function requestRequestToken() + { + $authorizationHeader = array('Authorization' => $this->buildAuthorizationHeaderForTokenRequest()); + $headers = array_merge($authorizationHeader, $this->getExtraOAuthHeaders()); + + $responseBody = $this->httpClient->retrieveResponse($this->getRequestTokenEndpoint(), array(), $headers); + + $token = $this->parseRequestTokenResponse($responseBody); + $this->storage->storeAccessToken($this->service(), $token); + + return $token; + } + + /** + * {@inheritdoc} + */ + public function getAuthorizationUri(array $additionalParameters = array()) + { + // Build the url + $url = clone $this->getAuthorizationEndpoint(); + foreach ($additionalParameters as $key => $val) { + $url->addToQuery($key, $val); + } + + return $url; + } + + /** + * {@inheritDoc} + */ + public function requestAccessToken($token, $verifier, $tokenSecret = null) + { + if (is_null($tokenSecret)) { + $storedRequestToken = $this->storage->retrieveAccessToken($this->service()); + $tokenSecret = $storedRequestToken->getRequestTokenSecret(); + } + $this->signature->setTokenSecret($tokenSecret); + + $bodyParams = array( + 'oauth_verifier' => $verifier, + ); + + $authorizationHeader = array( + 'Authorization' => $this->buildAuthorizationHeaderForAPIRequest( + 'POST', + $this->getAccessTokenEndpoint(), + $this->storage->retrieveAccessToken($this->service()), + $bodyParams + ) + ); + + $headers = array_merge($authorizationHeader, $this->getExtraOAuthHeaders()); + + $responseBody = $this->httpClient->retrieveResponse($this->getAccessTokenEndpoint(), $bodyParams, $headers); + + $token = $this->parseAccessTokenResponse($responseBody); + $this->storage->storeAccessToken($this->service(), $token); + + return $token; + } + + /** + * Refreshes an OAuth1 access token + * @param TokenInterface $token + * @return TokenInterface $token + */ + public function refreshAccessToken(TokenInterface $token) + { + } + + /** + * Sends an authenticated API request to the path provided. + * If the path provided is not an absolute URI, the base API Uri (must be passed into constructor) will be used. + * + * @param string|UriInterface $path + * @param string $method HTTP method + * @param array $body Request body if applicable (key/value pairs) + * @param array $extraHeaders Extra headers if applicable. + * These will override service-specific any defaults. + * + * @return string + */ + public function request($path, $method = 'GET', $body = null, array $extraHeaders = array()) + { + $uri = $this->determineRequestUriFromPath($path, $this->baseApiUri); + + /** @var $token StdOAuth1Token */ + $token = $this->storage->retrieveAccessToken($this->service()); + $extraHeaders = array_merge($this->getExtraApiHeaders(), $extraHeaders); + $authorizationHeader = array( + 'Authorization' => $this->buildAuthorizationHeaderForAPIRequest($method, $uri, $token, $body) + ); + $headers = array_merge($authorizationHeader, $extraHeaders); + + return $this->httpClient->retrieveResponse($uri, $body, $headers, $method); + } + + /** + * Return any additional headers always needed for this service implementation's OAuth calls. + * + * @return array + */ + protected function getExtraOAuthHeaders() + { + return array(); + } + + /** + * Return any additional headers always needed for this service implementation's API calls. + * + * @return array + */ + protected function getExtraApiHeaders() + { + return array(); + } + + /** + * Builds the authorization header for getting an access or request token. + * + * @param array $extraParameters + * + * @return string + */ + protected function buildAuthorizationHeaderForTokenRequest(array $extraParameters = array()) + { + $parameters = $this->getBasicAuthorizationHeaderInfo(); + $parameters = array_merge($parameters, $extraParameters); + $parameters['oauth_signature'] = $this->signature->getSignature( + $this->getRequestTokenEndpoint(), + $parameters, + 'POST' + ); + + $authorizationHeader = 'OAuth '; + $delimiter = ''; + foreach ($parameters as $key => $value) { + $authorizationHeader .= $delimiter . rawurlencode($key) . '="' . rawurlencode($value) . '"'; + + $delimiter = ', '; + } + + return $authorizationHeader; + } + + /** + * Builds the authorization header for an authenticated API request + * + * @param string $method + * @param UriInterface $uri The uri the request is headed + * @param TokenInterface $token + * @param array $bodyParams Request body if applicable (key/value pairs) + * + * @return string + */ + protected function buildAuthorizationHeaderForAPIRequest( + $method, + UriInterface $uri, + TokenInterface $token, + $bodyParams = null + ) { + $this->signature->setTokenSecret($token->getAccessTokenSecret()); + $authParameters = $this->getBasicAuthorizationHeaderInfo(); + if (isset($authParameters['oauth_callback'])) { + unset($authParameters['oauth_callback']); + } + + $authParameters = array_merge($authParameters, array('oauth_token' => $token->getAccessToken())); + + $authParameters = (is_array($bodyParams)) ? array_merge($authParameters, $bodyParams) : $authParameters; + $authParameters['oauth_signature'] = $this->signature->getSignature($uri, $authParameters, $method); + + if (isset($bodyParams['oauth_session_handle'])) { + $authParameters['oauth_session_handle'] = $bodyParams['oauth_session_handle']; + unset($bodyParams['oauth_session_handle']); + } + + $authorizationHeader = 'OAuth '; + $delimiter = ''; + + foreach ($authParameters as $key => $value) { + $authorizationHeader .= $delimiter . rawurlencode($key) . '="' . rawurlencode($value) . '"'; + $delimiter = ', '; + } + + return $authorizationHeader; + } + + /** + * Builds the authorization header array. + * + * @return array + */ + protected function getBasicAuthorizationHeaderInfo() + { + $dateTime = new \DateTime(); + $headerParameters = array( + 'oauth_callback' => $this->credentials->getCallbackUrl(), + 'oauth_consumer_key' => $this->credentials->getConsumerId(), + 'oauth_nonce' => $this->generateNonce(), + 'oauth_signature_method' => $this->getSignatureMethod(), + 'oauth_timestamp' => $dateTime->format('U'), + 'oauth_version' => $this->getVersion(), + ); + + return $headerParameters; + } + + /** + * Pseudo random string generator used to build a unique string to sign each request + * + * @param int $length + * + * @return string + */ + protected function generateNonce($length = 32) + { + $characters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890'; + + $nonce = ''; + $maxRand = strlen($characters)-1; + for ($i = 0; $i < $length; $i++) { + $nonce.= $characters[rand(0, $maxRand)]; + } + + return $nonce; + } + + /** + * @return string + */ + protected function getSignatureMethod() + { + return 'HMAC-SHA1'; + } + + /** + * This returns the version used in the authorization header of the requests + * + * @return string + */ + protected function getVersion() + { + return '1.0'; + } + + /** + * Parses the request token response and returns a TokenInterface. + * This is only needed to verify the `oauth_callback_confirmed` parameter. The actual + * parsing logic is contained in the access token parser. + * + * @abstract + * + * @param string $responseBody + * + * @return TokenInterface + * + * @throws TokenResponseException + */ + abstract protected function parseRequestTokenResponse($responseBody); + + /** + * Parses the access token response and returns a TokenInterface. + * + * @abstract + * + * @param string $responseBody + * + * @return TokenInterface + * + * @throws TokenResponseException + */ + abstract protected function parseAccessTokenResponse($responseBody); +} diff --git a/htdocs/includes/OAuth/OAuth1/Service/BitBucket.php b/htdocs/includes/OAuth/OAuth1/Service/BitBucket.php new file mode 100644 index 00000000000..f6d8edfe17d --- /dev/null +++ b/htdocs/includes/OAuth/OAuth1/Service/BitBucket.php @@ -0,0 +1,96 @@ +baseApiUri = new Uri('https://bitbucket.org/api/1.0/'); + } + } + + /** + * {@inheritDoc} + */ + public function getRequestTokenEndpoint() + { + return new Uri('https://bitbucket.org/!api/1.0/oauth/request_token'); + } + + /** + * {@inheritdoc} + */ + public function getAuthorizationEndpoint() + { + return new Uri('https://bitbucket.org/!api/1.0/oauth/authenticate'); + } + + /** + * {@inheritdoc} + */ + public function getAccessTokenEndpoint() + { + return new Uri('https://bitbucket.org/!api/1.0/oauth/access_token'); + } + + /** + * {@inheritdoc} + */ + protected function parseRequestTokenResponse($responseBody) + { + parse_str($responseBody, $data); + + if (null === $data || !is_array($data)) { + throw new TokenResponseException('Unable to parse response.'); + } elseif (!isset($data['oauth_callback_confirmed']) || $data['oauth_callback_confirmed'] !== 'true') { + throw new TokenResponseException('Error in retrieving token.'); + } + + return $this->parseAccessTokenResponse($responseBody); + } + + /** + * {@inheritdoc} + */ + protected function parseAccessTokenResponse($responseBody) + { + parse_str($responseBody, $data); + + if (null === $data || !is_array($data)) { + throw new TokenResponseException('Unable to parse response.'); + } elseif (isset($data['error'])) { + throw new TokenResponseException('Error in retrieving token: "' . $data['error'] . '"'); + } + + $token = new StdOAuth1Token(); + + $token->setRequestToken($data['oauth_token']); + $token->setRequestTokenSecret($data['oauth_token_secret']); + $token->setAccessToken($data['oauth_token']); + $token->setAccessTokenSecret($data['oauth_token_secret']); + + $token->setEndOfLife(StdOAuth1Token::EOL_NEVER_EXPIRES); + unset($data['oauth_token'], $data['oauth_token_secret']); + $token->setExtraParams($data); + + return $token; + } +} diff --git a/htdocs/includes/OAuth/OAuth1/Service/Etsy.php b/htdocs/includes/OAuth/OAuth1/Service/Etsy.php new file mode 100644 index 00000000000..30dc331cba7 --- /dev/null +++ b/htdocs/includes/OAuth/OAuth1/Service/Etsy.php @@ -0,0 +1,132 @@ +baseApiUri = new Uri('https://openapi.etsy.com/v2/'); + } + } + + /** + * {@inheritdoc} + */ + public function getRequestTokenEndpoint() + { + $uri = new Uri($this->baseApiUri . 'oauth/request_token'); + $scopes = $this->getScopes(); + + if (count($scopes)) { + $uri->setQuery('scope=' . implode('%20', $scopes)); + } + + return $uri; + } + + /** + * {@inheritdoc} + */ + public function getAuthorizationEndpoint() + { + return new Uri($this->baseApiUri); + } + + /** + * {@inheritdoc} + */ + public function getAccessTokenEndpoint() + { + return new Uri($this->baseApiUri . 'oauth/access_token'); + } + + /** + * {@inheritdoc} + */ + protected function parseRequestTokenResponse($responseBody) + { + parse_str($responseBody, $data); + + if (null === $data || !is_array($data)) { + throw new TokenResponseException('Unable to parse response.'); + } elseif (!isset($data['oauth_callback_confirmed']) || $data['oauth_callback_confirmed'] !== 'true') { + throw new TokenResponseException('Error in retrieving token.'); + } + + return $this->parseAccessTokenResponse($responseBody); + } + + /** + * {@inheritdoc} + */ + protected function parseAccessTokenResponse($responseBody) + { + parse_str($responseBody, $data); + + if (null === $data || !is_array($data)) { + throw new TokenResponseException('Unable to parse response.'); + } elseif (isset($data['error'])) { + throw new TokenResponseException('Error in retrieving token: "' . $data['error'] . '"'); + } + + $token = new StdOAuth1Token(); + + $token->setRequestToken($data['oauth_token']); + $token->setRequestTokenSecret($data['oauth_token_secret']); + $token->setAccessToken($data['oauth_token']); + $token->setAccessTokenSecret($data['oauth_token_secret']); + + $token->setEndOfLife(StdOAuth1Token::EOL_NEVER_EXPIRES); + unset($data['oauth_token'], $data['oauth_token_secret']); + $token->setExtraParams($data); + + return $token; + } + + /** + * Set the scopes for permissions + * @see https://www.etsy.com/developers/documentation/getting_started/oauth#section_permission_scopes + * @param array $scopes + * + * @return $this + */ + public function setScopes(array $scopes) + { + if (!is_array($scopes)) { + $scopes = array(); + } + + $this->scopes = $scopes; + return $this; + } + + /** + * Return the defined scopes + * @return array + */ + public function getScopes() + { + return $this->scopes; + } +} diff --git a/htdocs/includes/OAuth/OAuth1/Service/FitBit.php b/htdocs/includes/OAuth/OAuth1/Service/FitBit.php new file mode 100644 index 00000000000..78032d75a77 --- /dev/null +++ b/htdocs/includes/OAuth/OAuth1/Service/FitBit.php @@ -0,0 +1,96 @@ +baseApiUri = new Uri('https://api.fitbit.com/1/'); + } + } + + /** + * {@inheritdoc} + */ + public function getRequestTokenEndpoint() + { + return new Uri('https://api.fitbit.com/oauth/request_token'); + } + + /** + * {@inheritdoc} + */ + public function getAuthorizationEndpoint() + { + return new Uri('https://www.fitbit.com/oauth/authorize'); + } + + /** + * {@inheritdoc} + */ + public function getAccessTokenEndpoint() + { + return new Uri('https://api.fitbit.com/oauth/access_token'); + } + + /** + * {@inheritdoc} + */ + protected function parseRequestTokenResponse($responseBody) + { + parse_str($responseBody, $data); + + if (null === $data || !is_array($data)) { + throw new TokenResponseException('Unable to parse response.'); + } elseif (!isset($data['oauth_callback_confirmed']) || $data['oauth_callback_confirmed'] !== 'true') { + throw new TokenResponseException('Error in retrieving token.'); + } + + return $this->parseAccessTokenResponse($responseBody); + } + + /** + * {@inheritdoc} + */ + protected function parseAccessTokenResponse($responseBody) + { + parse_str($responseBody, $data); + + if (null === $data || !is_array($data)) { + throw new TokenResponseException('Unable to parse response.'); + } elseif (isset($data['error'])) { + throw new TokenResponseException('Error in retrieving token: "' . $data['error'] . '"'); + } + + $token = new StdOAuth1Token(); + + $token->setRequestToken($data['oauth_token']); + $token->setRequestTokenSecret($data['oauth_token_secret']); + $token->setAccessToken($data['oauth_token']); + $token->setAccessTokenSecret($data['oauth_token_secret']); + + $token->setEndOfLife(StdOAuth1Token::EOL_NEVER_EXPIRES); + unset($data['oauth_token'], $data['oauth_token_secret']); + $token->setExtraParams($data); + + return $token; + } +} diff --git a/htdocs/includes/OAuth/OAuth1/Service/FiveHundredPx.php b/htdocs/includes/OAuth/OAuth1/Service/FiveHundredPx.php new file mode 100644 index 00000000000..ea7f9b34d62 --- /dev/null +++ b/htdocs/includes/OAuth/OAuth1/Service/FiveHundredPx.php @@ -0,0 +1,120 @@ + + * @license http://www.opensource.org/licenses/mit-license.html MIT License + * @link https://developers.500px.com/ + */ + +namespace OAuth\OAuth1\Service; + +use OAuth\OAuth1\Signature\SignatureInterface; +use OAuth\OAuth1\Token\StdOAuth1Token; +use OAuth\Common\Http\Exception\TokenResponseException; +use OAuth\Common\Http\Uri\Uri; +use OAuth\Common\Consumer\CredentialsInterface; +use OAuth\Common\Http\Uri\UriInterface; +use OAuth\Common\Storage\TokenStorageInterface; +use OAuth\Common\Http\Client\ClientInterface; + +/** + * 500px service. + * + * @author Pedro Amorim + * @license http://www.opensource.org/licenses/mit-license.html MIT License + * @link https://developers.500px.com/ + */ +class FiveHundredPx extends AbstractService +{ + public function __construct( + CredentialsInterface $credentials, + ClientInterface $httpClient, + TokenStorageInterface $storage, + SignatureInterface $signature, + UriInterface $baseApiUri = null + ) { + parent::__construct( + $credentials, + $httpClient, + $storage, + $signature, + $baseApiUri + ); + + if (null === $baseApiUri) { + $this->baseApiUri = new Uri('https://api.500px.com/v1/'); + } + } + + /** + * {@inheritDoc} + */ + public function getRequestTokenEndpoint() + { + return new Uri('https://api.500px.com/v1/oauth/request_token'); + } + + /** + * {@inheritdoc} + */ + public function getAuthorizationEndpoint() + { + return new Uri('https://api.500px.com/v1/oauth/authorize'); + } + + /** + * {@inheritdoc} + */ + public function getAccessTokenEndpoint() + { + return new Uri('https://api.500px.com/v1/oauth/access_token'); + } + + /** + * {@inheritdoc} + */ + protected function parseRequestTokenResponse($responseBody) + { + parse_str($responseBody, $data); + + if (null === $data || !is_array($data)) { + throw new TokenResponseException('Unable to parse response.'); + } elseif (!isset($data['oauth_callback_confirmed']) + || $data['oauth_callback_confirmed'] !== 'true' + ) { + throw new TokenResponseException('Error in retrieving token.'); + } + + return $this->parseAccessTokenResponse($responseBody); + } + + /** + * {@inheritdoc} + */ + protected function parseAccessTokenResponse($responseBody) + { + parse_str($responseBody, $data); + + if (null === $data || !is_array($data)) { + throw new TokenResponseException('Unable to parse response.'); + } elseif (isset($data['error'])) { + throw new TokenResponseException( + 'Error in retrieving token: "' . $data['error'] . '"' + ); + } + + $token = new StdOAuth1Token(); + + $token->setRequestToken($data['oauth_token']); + $token->setRequestTokenSecret($data['oauth_token_secret']); + $token->setAccessToken($data['oauth_token']); + $token->setAccessTokenSecret($data['oauth_token_secret']); + + $token->setEndOfLife(StdOAuth1Token::EOL_NEVER_EXPIRES); + unset($data['oauth_token'], $data['oauth_token_secret']); + $token->setExtraParams($data); + + return $token; + } +} diff --git a/htdocs/includes/OAuth/OAuth1/Service/Flickr.php b/htdocs/includes/OAuth/OAuth1/Service/Flickr.php new file mode 100644 index 00000000000..7ceee7dccaa --- /dev/null +++ b/htdocs/includes/OAuth/OAuth1/Service/Flickr.php @@ -0,0 +1,133 @@ +baseApiUri = new Uri('https://api.flickr.com/services/rest/'); + } + } + + public function getRequestTokenEndpoint() + { + return new Uri('https://www.flickr.com/services/oauth/request_token'); + } + + public function getAuthorizationEndpoint() + { + return new Uri('https://www.flickr.com/services/oauth/authorize'); + } + + public function getAccessTokenEndpoint() + { + return new Uri('https://www.flickr.com/services/oauth/access_token'); + } + + protected function parseRequestTokenResponse($responseBody) + { + parse_str($responseBody, $data); + if (null === $data || !is_array($data)) { + throw new TokenResponseException('Unable to parse response.'); + } elseif (!isset($data['oauth_callback_confirmed']) || $data['oauth_callback_confirmed'] != 'true') { + throw new TokenResponseException('Error in retrieving token.'); + } + return $this->parseAccessTokenResponse($responseBody); + } + + protected function parseAccessTokenResponse($responseBody) + { + parse_str($responseBody, $data); + if ($data === null || !is_array($data)) { + throw new TokenResponseException('Unable to parse response.'); + } elseif (isset($data['error'])) { + throw new TokenResponseException('Error in retrieving token: "' . $data['error'] . '"'); + } + + $token = new StdOAuth1Token(); + $token->setRequestToken($data['oauth_token']); + $token->setRequestTokenSecret($data['oauth_token_secret']); + $token->setAccessToken($data['oauth_token']); + $token->setAccessTokenSecret($data['oauth_token_secret']); + $token->setEndOfLife(StdOAuth1Token::EOL_NEVER_EXPIRES); + unset($data['oauth_token'], $data['oauth_token_secret']); + $token->setExtraParams($data); + + return $token; + } + + public function request($path, $method = 'GET', $body = null, array $extraHeaders = array()) + { + $uri = $this->determineRequestUriFromPath('/', $this->baseApiUri); + $uri->addToQuery('method', $path); + + if (!empty($this->format)) { + $uri->addToQuery('format', $this->format); + + if ($this->format === 'json') { + $uri->addToQuery('nojsoncallback', 1); + } + } + + $token = $this->storage->retrieveAccessToken($this->service()); + $extraHeaders = array_merge($this->getExtraApiHeaders(), $extraHeaders); + $authorizationHeader = array( + 'Authorization' => $this->buildAuthorizationHeaderForAPIRequest($method, $uri, $token, $body) + ); + $headers = array_merge($authorizationHeader, $extraHeaders); + + return $this->httpClient->retrieveResponse($uri, $body, $headers, $method); + } + + public function requestRest($path, $method = 'GET', $body = null, array $extraHeaders = array()) + { + return $this->request($path, $method, $body, $extraHeaders); + } + + public function requestXmlrpc($path, $method = 'GET', $body = null, array $extraHeaders = array()) + { + $this->format = 'xmlrpc'; + + return $this->request($path, $method, $body, $extraHeaders); + } + + public function requestSoap($path, $method = 'GET', $body = null, array $extraHeaders = array()) + { + $this->format = 'soap'; + + return $this->request($path, $method, $body, $extraHeaders); + } + + public function requestJson($path, $method = 'GET', $body = null, array $extraHeaders = array()) + { + $this->format = 'json'; + + return $this->request($path, $method, $body, $extraHeaders); + } + + public function requestPhp($path, $method = 'GET', $body = null, array $extraHeaders = array()) + { + $this->format = 'php_serial'; + + return $this->request($path, $method, $body, $extraHeaders); + } +} diff --git a/htdocs/includes/OAuth/OAuth1/Service/QuickBooks.php b/htdocs/includes/OAuth/OAuth1/Service/QuickBooks.php new file mode 100644 index 00000000000..0014ca817d5 --- /dev/null +++ b/htdocs/includes/OAuth/OAuth1/Service/QuickBooks.php @@ -0,0 +1,120 @@ +baseApiUri = new Uri('https://quickbooks.api.intuit.com/'); + } + } + + /** + * {@inheritdoc} + */ + public function getRequestTokenEndpoint() + { + return new Uri('https://oauth.intuit.com/oauth/v1/get_request_token'); + } + + /** + * {@inheritdoc} + */ + public function getAuthorizationEndpoint() + { + return new Uri('https://appcenter.intuit.com/Connect/Begin'); + } + + /** + * {@inheritdoc} + */ + public function getAccessTokenEndpoint() + { + return new Uri('https://oauth.intuit.com/oauth/v1/get_access_token'); + } + + /** + * {@inheritdoc} + */ + protected function parseRequestTokenResponse($responseBody) + { + parse_str($responseBody, $data); + + if (null === $data || !is_array($data)) { + throw new TokenResponseException('Unable to parse response.'); + } elseif (!isset($data['oauth_callback_confirmed']) + || $data['oauth_callback_confirmed'] !== 'true') { + throw new TokenResponseException('Error in retrieving token.'); + } + + return $this->parseAccessTokenResponse($responseBody); + } + + /** + * {@inheritdoc} + */ + protected function parseAccessTokenResponse($responseBody) + { + parse_str($responseBody, $data); + + if (null === $data || !is_array($data)) { + throw new TokenResponseException('Unable to parse response.'); + } elseif (isset($data['error'])) { + $message = 'Error in retrieving token: "' . $data['error'] . '"'; + throw new TokenResponseException($message); + } + + $token = new StdOAuth1Token(); + + $token->setRequestToken($data['oauth_token']); + $token->setRequestTokenSecret($data['oauth_token_secret']); + $token->setAccessToken($data['oauth_token']); + $token->setAccessTokenSecret($data['oauth_token_secret']); + + $token->setEndOfLife(StdOAuth1Token::EOL_NEVER_EXPIRES); + unset($data['oauth_token'], $data['oauth_token_secret']); + $token->setExtraParams($data); + + return $token; + } + + /** + * {@inheritDoc} + */ + public function request( + $path, + $method = 'GET', + $body = null, + array $extraHeaders = array() + ) { + $extraHeaders['Accept'] = 'application/json'; + return parent::request($path, $method, $body, $extraHeaders); + } +} diff --git a/htdocs/includes/OAuth/OAuth1/Service/Redmine.php b/htdocs/includes/OAuth/OAuth1/Service/Redmine.php new file mode 100644 index 00000000000..55f89a27594 --- /dev/null +++ b/htdocs/includes/OAuth/OAuth1/Service/Redmine.php @@ -0,0 +1,96 @@ +baseApiUri->getAbsoluteUri() . '/request_token'); + } + + /** + * {@inheritdoc} + */ + public function getAuthorizationEndpoint() + { + return new Uri($this->baseApiUri->getAbsoluteUri() . '/authorize'); + } + + /** + * {@inheritdoc} + */ + public function getAccessTokenEndpoint() + { + return new Uri($this->baseApiUri->getAbsoluteUri() . '/access_token'); + } + + /** + * {@inheritdoc} + */ + protected function parseRequestTokenResponse($responseBody) + { + parse_str($responseBody, $data); + + if (null === $data || !is_array($data)) { + throw new TokenResponseException('Unable to parse response.'); + } elseif (!isset($data['oauth_callback_confirmed']) || $data['oauth_callback_confirmed'] !== 'true') { + throw new TokenResponseException('Error in retrieving token.'); + } + + return $this->parseAccessTokenResponse($responseBody); + } + + /** + * {@inheritdoc} + */ + protected function parseAccessTokenResponse($responseBody) + { + parse_str($responseBody, $data); + + if (null === $data || !is_array($data)) { + throw new TokenResponseException('Unable to parse response.'); + } elseif (isset($data['error'])) { + throw new TokenResponseException('Error in retrieving token: "' . $data['error'] . '"'); + } + + $token = new StdOAuth1Token(); + + $token->setRequestToken($data['oauth_token']); + $token->setRequestTokenSecret($data['oauth_token_secret']); + $token->setAccessToken($data['oauth_token']); + $token->setAccessTokenSecret($data['oauth_token_secret']); + + $token->setEndOfLife(StdOAuth1Token::EOL_NEVER_EXPIRES); + unset($data['oauth_token'], $data['oauth_token_secret']); + $token->setExtraParams($data); + + return $token; + } +} diff --git a/htdocs/includes/OAuth/OAuth1/Service/ScoopIt.php b/htdocs/includes/OAuth/OAuth1/Service/ScoopIt.php new file mode 100644 index 00000000000..28bd250b79f --- /dev/null +++ b/htdocs/includes/OAuth/OAuth1/Service/ScoopIt.php @@ -0,0 +1,96 @@ +baseApiUri = new Uri('https://www.scoop.it/api/1/'); + } + } + + /** + * {@inheritDoc} + */ + public function getRequestTokenEndpoint() + { + return new Uri('https://www.scoop.it/oauth/request'); + } + + /** + * {@inheritdoc} + */ + public function getAuthorizationEndpoint() + { + return new Uri('https://www.scoop.it/oauth/authorize'); + } + + /** + * {@inheritdoc} + */ + public function getAccessTokenEndpoint() + { + return new Uri('https://www.scoop.it/oauth/access'); + } + + /** + * {@inheritdoc} + */ + protected function parseRequestTokenResponse($responseBody) + { + parse_str($responseBody, $data); + + if (null === $data || !is_array($data)) { + throw new TokenResponseException('Unable to parse response.'); + } elseif (!isset($data['oauth_callback_confirmed']) || $data['oauth_callback_confirmed'] !== 'true') { + throw new TokenResponseException('Error in retrieving token.'); + } + + return $this->parseAccessTokenResponse($responseBody); + } + + /** + * {@inheritdoc} + */ + protected function parseAccessTokenResponse($responseBody) + { + parse_str($responseBody, $data); + + if (null === $data || !is_array($data)) { + throw new TokenResponseException('Unable to parse response.'); + } elseif (isset($data['error'])) { + throw new TokenResponseException('Error in retrieving token: "' . $data['error'] . '"'); + } + + $token = new StdOAuth1Token(); + + $token->setRequestToken($data['oauth_token']); + $token->setRequestTokenSecret($data['oauth_token_secret']); + $token->setAccessToken($data['oauth_token']); + $token->setAccessTokenSecret($data['oauth_token_secret']); + + $token->setEndOfLife(StdOAuth1Token::EOL_NEVER_EXPIRES); + unset($data['oauth_token'], $data['oauth_token_secret']); + $token->setExtraParams($data); + + return $token; + } +} diff --git a/htdocs/includes/OAuth/OAuth1/Service/ServiceInterface.php b/htdocs/includes/OAuth/OAuth1/Service/ServiceInterface.php new file mode 100644 index 00000000000..3f91fbf2c4c --- /dev/null +++ b/htdocs/includes/OAuth/OAuth1/Service/ServiceInterface.php @@ -0,0 +1,45 @@ +baseApiUri = new Uri('https://api.tumblr.com/v2/'); + } + } + + /** + * {@inheritdoc} + */ + public function getRequestTokenEndpoint() + { + return new Uri('https://www.tumblr.com/oauth/request_token'); + } + + /** + * {@inheritdoc} + */ + public function getAuthorizationEndpoint() + { + return new Uri('https://www.tumblr.com/oauth/authorize'); + } + + /** + * {@inheritdoc} + */ + public function getAccessTokenEndpoint() + { + return new Uri('https://www.tumblr.com/oauth/access_token'); + } + + /** + * {@inheritdoc} + */ + protected function parseRequestTokenResponse($responseBody) + { + parse_str($responseBody, $data); + + if (null === $data || !is_array($data)) { + throw new TokenResponseException('Unable to parse response.'); + } elseif (!isset($data['oauth_callback_confirmed']) || $data['oauth_callback_confirmed'] !== 'true') { + throw new TokenResponseException('Error in retrieving token.'); + } + + return $this->parseAccessTokenResponse($responseBody); + } + + /** + * {@inheritdoc} + */ + protected function parseAccessTokenResponse($responseBody) + { + parse_str($responseBody, $data); + + if (null === $data || !is_array($data)) { + throw new TokenResponseException('Unable to parse response.'); + } elseif (isset($data['error'])) { + throw new TokenResponseException('Error in retrieving token: "' . $data['error'] . '"'); + } + + $token = new StdOAuth1Token(); + + $token->setRequestToken($data['oauth_token']); + $token->setRequestTokenSecret($data['oauth_token_secret']); + $token->setAccessToken($data['oauth_token']); + $token->setAccessTokenSecret($data['oauth_token_secret']); + + $token->setEndOfLife(StdOAuth1Token::EOL_NEVER_EXPIRES); + unset($data['oauth_token'], $data['oauth_token_secret']); + $token->setExtraParams($data); + + return $token; + } +} diff --git a/htdocs/includes/OAuth/OAuth1/Service/Twitter.php b/htdocs/includes/OAuth/OAuth1/Service/Twitter.php new file mode 100644 index 00000000000..dea680fe44d --- /dev/null +++ b/htdocs/includes/OAuth/OAuth1/Service/Twitter.php @@ -0,0 +1,123 @@ +baseApiUri = new Uri('https://api.twitter.com/1.1/'); + } + } + + /** + * {@inheritdoc} + */ + public function getRequestTokenEndpoint() + { + return new Uri('https://api.twitter.com/oauth/request_token'); + } + + /** + * {@inheritdoc} + */ + public function getAuthorizationEndpoint() + { + if ($this->authorizationEndpoint != self::ENDPOINT_AUTHENTICATE + && $this->authorizationEndpoint != self::ENDPOINT_AUTHORIZE) { + $this->authorizationEndpoint = self::ENDPOINT_AUTHENTICATE; + } + return new Uri($this->authorizationEndpoint); + } + + /** + * @param string $authorizationEndpoint + * + * @throws Exception + */ + public function setAuthorizationEndpoint($endpoint) + { + if ($endpoint != self::ENDPOINT_AUTHENTICATE && $endpoint != self::ENDPOINT_AUTHORIZE) { + throw new Exception( + sprintf("'%s' is not a correct Twitter authorization endpoint.", $endpoint) + ); + } + $this->authorizationEndpoint = $endpoint; + } + + /** + * {@inheritdoc} + */ + public function getAccessTokenEndpoint() + { + return new Uri('https://api.twitter.com/oauth/access_token'); + } + + /** + * {@inheritdoc} + */ + protected function parseRequestTokenResponse($responseBody) + { + parse_str($responseBody, $data); + + if (null === $data || !is_array($data)) { + throw new TokenResponseException('Unable to parse response.'); + } elseif (!isset($data['oauth_callback_confirmed']) || $data['oauth_callback_confirmed'] !== 'true') { + throw new TokenResponseException('Error in retrieving token.'); + } + + return $this->parseAccessTokenResponse($responseBody); + } + + /** + * {@inheritdoc} + */ + protected function parseAccessTokenResponse($responseBody) + { + parse_str($responseBody, $data); + + if (null === $data || !is_array($data)) { + throw new TokenResponseException('Unable to parse response: ' . $responseBody); + } elseif (isset($data['error'])) { + throw new TokenResponseException('Error in retrieving token: "' . $data['error'] . '"'); + } elseif (!isset($data["oauth_token"]) || !isset($data["oauth_token_secret"])) { + throw new TokenResponseException('Invalid response. OAuth Token data not set: ' . $responseBody); + } + + $token = new StdOAuth1Token(); + + $token->setRequestToken($data['oauth_token']); + $token->setRequestTokenSecret($data['oauth_token_secret']); + $token->setAccessToken($data['oauth_token']); + $token->setAccessTokenSecret($data['oauth_token_secret']); + + $token->setEndOfLife(StdOAuth1Token::EOL_NEVER_EXPIRES); + unset($data['oauth_token'], $data['oauth_token_secret']); + $token->setExtraParams($data); + + return $token; + } +} diff --git a/htdocs/includes/OAuth/OAuth1/Service/Xing.php b/htdocs/includes/OAuth/OAuth1/Service/Xing.php new file mode 100644 index 00000000000..e6824db3f0b --- /dev/null +++ b/htdocs/includes/OAuth/OAuth1/Service/Xing.php @@ -0,0 +1,97 @@ +baseApiUri = new Uri('https://api.xing.com/v1/'); + } + } + + /** + * {@inheritdoc} + */ + public function getAuthorizationEndpoint() + { + return new Uri('https://api.xing.com/v1/authorize'); + } + + /** + * {@inheritdoc} + */ + public function getAccessTokenEndpoint() + { + return new Uri('https://api.xing.com/v1/access_token'); + } + + /** + * {@inheritdoc} + */ + public function getRequestTokenEndpoint() + { + return new Uri('https://api.xing.com/v1/request_token'); + } + + /** + * {@inheritdoc} + */ + protected function parseRequestTokenResponse($responseBody) + { + parse_str($responseBody, $data); + + if (null === $data || !is_array($data)) { + throw new TokenResponseException('Unable to parse response.'); + } elseif (!isset($data['oauth_callback_confirmed']) || $data['oauth_callback_confirmed'] !== 'true') { + throw new TokenResponseException('Error in retrieving token.'); + } + + return $this->parseAccessTokenResponse($responseBody); + } + + /** + * {@inheritdoc} + */ + protected function parseAccessTokenResponse($responseBody) + { + parse_str($responseBody, $data); + $errors = json_decode($responseBody); + + if (null === $data || !is_array($data)) { + throw new TokenResponseException('Unable to parse response.'); + } elseif ($errors) { + throw new TokenResponseException('Error in retrieving token: "' . $errors->error_name . '"'); + } + + $token = new StdOAuth1Token(); + + $token->setRequestToken($data['oauth_token']); + $token->setRequestTokenSecret($data['oauth_token_secret']); + $token->setAccessToken($data['oauth_token']); + $token->setAccessTokenSecret($data['oauth_token_secret']); + + $token->setEndOfLife(StdOAuth1Token::EOL_NEVER_EXPIRES); + unset($data['oauth_token'], $data['oauth_token_secret']); + $token->setExtraParams($data); + + return $token; + } +} diff --git a/htdocs/includes/OAuth/OAuth1/Service/Yahoo.php b/htdocs/includes/OAuth/OAuth1/Service/Yahoo.php new file mode 100644 index 00000000000..50a825b2546 --- /dev/null +++ b/htdocs/includes/OAuth/OAuth1/Service/Yahoo.php @@ -0,0 +1,131 @@ +baseApiUri = new Uri('https://social.yahooapis.com/v1/'); + } + } + + /** + * {@inheritDoc} + */ + public function getRequestTokenEndpoint() + { + return new Uri('https://api.login.yahoo.com/oauth/v2/get_request_token'); + } + + /** + * {@inheritdoc} + */ + public function getAuthorizationEndpoint() + { + return new Uri('https://api.login.yahoo.com/oauth/v2/request_auth'); + } + + /** + * {@inheritdoc} + */ + public function getAccessTokenEndpoint() + { + return new Uri('https://api.login.yahoo.com/oauth/v2/get_token'); + } + + /** + * {@inheritdoc} + */ + public function refreshAccessToken(TokenInterface $token) + { + $extraParams = $token->getExtraParams(); + $bodyParams = array('oauth_session_handle' => $extraParams['oauth_session_handle']); + + $authorizationHeader = array( + 'Authorization' => $this->buildAuthorizationHeaderForAPIRequest( + 'POST', + $this->getAccessTokenEndpoint(), + $this->storage->retrieveAccessToken($this->service()), + $bodyParams + ) + ); + + + + $headers = array_merge($authorizationHeader, $this->getExtraOAuthHeaders(), array()); + + $responseBody = $this->httpClient->retrieveResponse($this->getAccessTokenEndpoint(), $bodyParams, $headers); + + $token = $this->parseAccessTokenResponse($responseBody); + $this->storage->storeAccessToken($this->service(), $token); + + return $token; + } + + /** + * {@inheritdoc} + */ + protected function parseRequestTokenResponse($responseBody) + { + parse_str($responseBody, $data); + + if (null === $data || !is_array($data)) { + throw new TokenResponseException('Unable to parse response.'); + } elseif (!isset($data['oauth_callback_confirmed']) || $data['oauth_callback_confirmed'] !== 'true') { + throw new TokenResponseException('Error in retrieving token.'); + } + + return $this->parseAccessTokenResponse($responseBody); + } + + /** + * {@inheritdoc} + */ + protected function parseAccessTokenResponse($responseBody) + { + parse_str($responseBody, $data); + + if (null === $data || !is_array($data)) { + throw new TokenResponseException('Unable to parse response.'); + } elseif (isset($data['error'])) { + throw new TokenResponseException('Error in retrieving token: "' . $data['error'] . '"'); + } + + $token = new StdOAuth1Token(); + + $token->setRequestToken($data['oauth_token']); + $token->setRequestTokenSecret($data['oauth_token_secret']); + $token->setAccessToken($data['oauth_token']); + $token->setAccessTokenSecret($data['oauth_token_secret']); + + if (isset($data['oauth_expires_in'])) { + $token->setLifetime($data['oauth_expires_in']); + } else { + $token->setEndOfLife(StdOAuth1Token::EOL_NEVER_EXPIRES); + } + + unset($data['oauth_token'], $data['oauth_token_secret']); + $token->setExtraParams($data); + + return $token; + } +} diff --git a/htdocs/includes/OAuth/OAuth1/Signature/Exception/UnsupportedHashAlgorithmException.php b/htdocs/includes/OAuth/OAuth1/Signature/Exception/UnsupportedHashAlgorithmException.php new file mode 100644 index 00000000000..44c36ce77cc --- /dev/null +++ b/htdocs/includes/OAuth/OAuth1/Signature/Exception/UnsupportedHashAlgorithmException.php @@ -0,0 +1,12 @@ +credentials = $credentials; + } + + /** + * @param string $algorithm + */ + public function setHashingAlgorithm($algorithm) + { + $this->algorithm = $algorithm; + } + + /** + * @param string $token + */ + public function setTokenSecret($token) + { + $this->tokenSecret = $token; + } + + /** + * @param UriInterface $uri + * @param array $params + * @param string $method + * + * @return string + */ + public function getSignature(UriInterface $uri, array $params, $method = 'POST') + { + parse_str($uri->getQuery(), $queryStringData); + + foreach (array_merge($queryStringData, $params) as $key => $value) { + $signatureData[rawurlencode($key)] = rawurlencode($value); + } + + ksort($signatureData); + + // determine base uri + $baseUri = $uri->getScheme() . '://' . $uri->getRawAuthority(); + + if ('/' === $uri->getPath()) { + $baseUri .= $uri->hasExplicitTrailingHostSlash() ? '/' : ''; + } else { + $baseUri .= $uri->getPath(); + } + + $baseString = strtoupper($method) . '&'; + $baseString .= rawurlencode($baseUri) . '&'; + $baseString .= rawurlencode($this->buildSignatureDataString($signatureData)); + + return base64_encode($this->hash($baseString)); + } + + /** + * @param array $signatureData + * + * @return string + */ + protected function buildSignatureDataString(array $signatureData) + { + $signatureString = ''; + $delimiter = ''; + foreach ($signatureData as $key => $value) { + $signatureString .= $delimiter . $key . '=' . $value; + + $delimiter = '&'; + } + + return $signatureString; + } + + /** + * @return string + */ + protected function getSigningKey() + { + $signingKey = rawurlencode($this->credentials->getConsumerSecret()) . '&'; + if ($this->tokenSecret !== null) { + $signingKey .= rawurlencode($this->tokenSecret); + } + + return $signingKey; + } + + /** + * @param string $data + * + * @return string + * + * @throws UnsupportedHashAlgorithmException + */ + protected function hash($data) + { + switch (strtoupper($this->algorithm)) { + case 'HMAC-SHA1': + return hash_hmac('sha1', $data, $this->getSigningKey(), true); + default: + throw new UnsupportedHashAlgorithmException( + 'Unsupported hashing algorithm (' . $this->algorithm . ') used.' + ); + } + } +} diff --git a/htdocs/includes/OAuth/OAuth1/Signature/SignatureInterface.php b/htdocs/includes/OAuth/OAuth1/Signature/SignatureInterface.php new file mode 100644 index 00000000000..da50ddb6da6 --- /dev/null +++ b/htdocs/includes/OAuth/OAuth1/Signature/SignatureInterface.php @@ -0,0 +1,28 @@ +requestToken = $requestToken; + } + + /** + * @return string + */ + public function getRequestToken() + { + return $this->requestToken; + } + + /** + * @param string $requestTokenSecret + */ + public function setRequestTokenSecret($requestTokenSecret) + { + $this->requestTokenSecret = $requestTokenSecret; + } + + /** + * @return string + */ + public function getRequestTokenSecret() + { + return $this->requestTokenSecret; + } + + /** + * @param string $accessTokenSecret + */ + public function setAccessTokenSecret($accessTokenSecret) + { + $this->accessTokenSecret = $accessTokenSecret; + } + + /** + * @return string + */ + public function getAccessTokenSecret() + { + return $this->accessTokenSecret; + } +} diff --git a/htdocs/includes/OAuth/OAuth1/Token/TokenInterface.php b/htdocs/includes/OAuth/OAuth1/Token/TokenInterface.php new file mode 100644 index 00000000000..0bc3f7396f4 --- /dev/null +++ b/htdocs/includes/OAuth/OAuth1/Token/TokenInterface.php @@ -0,0 +1,41 @@ +stateParameterInAuthUrl = $stateParameterInAutUrl; + + foreach ($scopes as $scope) { + if (!$this->isValidScope($scope)) { + throw new InvalidScopeException('Scope ' . $scope . ' is not valid for service ' . get_class($this)); + } + } + + $this->scopes = $scopes; + + $this->baseApiUri = $baseApiUri; + + $this->apiVersion = $apiVersion; + } + + /** + * {@inheritdoc} + */ + public function getAuthorizationUri(array $additionalParameters = array()) + { + $parameters = array_merge( + $additionalParameters, + array( + 'type' => 'web_server', + 'client_id' => $this->credentials->getConsumerId(), + 'redirect_uri' => $this->credentials->getCallbackUrl(), + 'response_type' => 'code', + ) + ); + + $parameters['scope'] = implode($this->getScopesDelimiter(), $this->scopes); + + if ($this->needsStateParameterInAuthUrl()) { + if (!isset($parameters['state'])) { + $parameters['state'] = $this->generateAuthorizationState(); + } + $this->storeAuthorizationState($parameters['state']); + } + + // Build the url + $url = clone $this->getAuthorizationEndpoint(); + foreach ($parameters as $key => $val) { + $url->addToQuery($key, $val); + } + + return $url; + } + + /** + * {@inheritdoc} + */ + public function requestAccessToken($code, $state = null) + { + if (null !== $state) { + $this->validateAuthorizationState($state); + } + + $bodyParams = array( + 'code' => $code, + 'client_id' => $this->credentials->getConsumerId(), + 'client_secret' => $this->credentials->getConsumerSecret(), + 'redirect_uri' => $this->credentials->getCallbackUrl(), + 'grant_type' => 'authorization_code', + ); + + $responseBody = $this->httpClient->retrieveResponse( + $this->getAccessTokenEndpoint(), + $bodyParams, + $this->getExtraOAuthHeaders() + ); + + $token = $this->parseAccessTokenResponse($responseBody); + $this->storage->storeAccessToken($this->service(), $token); + + return $token; + } + + /** + * Sends an authenticated API request to the path provided. + * If the path provided is not an absolute URI, the base API Uri (must be passed into constructor) will be used. + * + * @param string|UriInterface $path + * @param string $method HTTP method + * @param array $body Request body if applicable. + * @param array $extraHeaders Extra headers if applicable. These will override service-specific + * any defaults. + * + * @return string + * + * @throws ExpiredTokenException + * @throws Exception + */ + public function request($path, $method = 'GET', $body = null, array $extraHeaders = array()) + { + $uri = $this->determineRequestUriFromPath($path, $this->baseApiUri); + $token = $this->storage->retrieveAccessToken($this->service()); + + if ($token->getEndOfLife() !== TokenInterface::EOL_NEVER_EXPIRES + && $token->getEndOfLife() !== TokenInterface::EOL_UNKNOWN + && time() > $token->getEndOfLife() + ) { + throw new ExpiredTokenException( + sprintf( + 'Token expired on %s at %s', + date('m/d/Y', $token->getEndOfLife()), + date('h:i:s A', $token->getEndOfLife()) + ) + ); + } + + // add the token where it may be needed + if (static::AUTHORIZATION_METHOD_HEADER_OAUTH === $this->getAuthorizationMethod()) { + $extraHeaders = array_merge(array('Authorization' => 'OAuth ' . $token->getAccessToken()), $extraHeaders); + } elseif (static::AUTHORIZATION_METHOD_QUERY_STRING === $this->getAuthorizationMethod()) { + $uri->addToQuery('access_token', $token->getAccessToken()); + } elseif (static::AUTHORIZATION_METHOD_QUERY_STRING_V2 === $this->getAuthorizationMethod()) { + $uri->addToQuery('oauth2_access_token', $token->getAccessToken()); + } elseif (static::AUTHORIZATION_METHOD_QUERY_STRING_V3 === $this->getAuthorizationMethod()) { + $uri->addToQuery('apikey', $token->getAccessToken()); + } elseif (static::AUTHORIZATION_METHOD_QUERY_STRING_V4 === $this->getAuthorizationMethod()) { + $uri->addToQuery('auth', $token->getAccessToken()); + } elseif (static::AUTHORIZATION_METHOD_HEADER_BEARER === $this->getAuthorizationMethod()) { + $extraHeaders = array_merge(array('Authorization' => 'Bearer ' . $token->getAccessToken()), $extraHeaders); + } + + $extraHeaders = array_merge($this->getExtraApiHeaders(), $extraHeaders); + + return $this->httpClient->retrieveResponse($uri, $body, $extraHeaders, $method); + } + + /** + * Accessor to the storage adapter to be able to retrieve tokens + * + * @return TokenStorageInterface + */ + public function getStorage() + { + return $this->storage; + } + + /** + * Refreshes an OAuth2 access token. + * + * @param TokenInterface $token + * + * @return TokenInterface $token + * + * @throws MissingRefreshTokenException + */ + public function refreshAccessToken(TokenInterface $token) + { + $refreshToken = $token->getRefreshToken(); + + if (empty($refreshToken)) { + throw new MissingRefreshTokenException(); + } + + $parameters = array( + 'grant_type' => 'refresh_token', + 'type' => 'web_server', + 'client_id' => $this->credentials->getConsumerId(), + 'client_secret' => $this->credentials->getConsumerSecret(), + 'refresh_token' => $refreshToken, + ); + + $responseBody = $this->httpClient->retrieveResponse( + $this->getAccessTokenEndpoint(), + $parameters, + $this->getExtraOAuthHeaders() + ); + $token = $this->parseAccessTokenResponse($responseBody); + $this->storage->storeAccessToken($this->service(), $token); + + return $token; + } + + /** + * Return whether or not the passed scope value is valid. + * + * @param string $scope + * + * @return bool + */ + public function isValidScope($scope) + { + $reflectionClass = new \ReflectionClass(get_class($this)); + + return in_array($scope, $reflectionClass->getConstants(), true); + } + + /** + * Check if the given service need to generate a unique state token to build the authorization url + * + * @return bool + */ + public function needsStateParameterInAuthUrl() + { + return $this->stateParameterInAuthUrl; + } + + /** + * Validates the authorization state against a given one + * + * @param string $state + * @throws InvalidAuthorizationStateException + */ + protected function validateAuthorizationState($state) + { + if ($this->retrieveAuthorizationState() !== $state) { + throw new InvalidAuthorizationStateException(); + } + } + + /** + * Generates a random string to be used as state + * + * @return string + */ + protected function generateAuthorizationState() + { + return md5(rand()); + } + + /** + * Retrieves the authorization state for the current service + * + * @return string + */ + protected function retrieveAuthorizationState() + { + return $this->storage->retrieveAuthorizationState($this->service()); + } + + /** + * Stores a given authorization state into the storage + * + * @param string $state + */ + protected function storeAuthorizationState($state) + { + $this->storage->storeAuthorizationState($this->service(), $state); + } + + /** + * Return any additional headers always needed for this service implementation's OAuth calls. + * + * @return array + */ + protected function getExtraOAuthHeaders() + { + return array(); + } + + /** + * Return any additional headers always needed for this service implementation's API calls. + * + * @return array + */ + protected function getExtraApiHeaders() + { + return array(); + } + + /** + * Parses the access token response and returns a TokenInterface. + * + * @abstract + * + * @param string $responseBody + * + * @return TokenInterface + * + * @throws TokenResponseException + */ + abstract protected function parseAccessTokenResponse($responseBody); + + /** + * Returns a class constant from ServiceInterface defining the authorization method used for the API + * Header is the sane default. + * + * @return int + */ + protected function getAuthorizationMethod() + { + return static::AUTHORIZATION_METHOD_HEADER_OAUTH; + } + + /** + * Returns api version string if is set else retrun empty string + * + * @return string + */ + protected function getApiVersionString() + { + return !(empty($this->apiVersion)) ? "/".$this->apiVersion : "" ; + } + + /** + * Returns delimiter to scopes in getAuthorizationUri + * For services that do not fully respect the Oauth's RFC, + * and use scopes with commas as delimiter + * + * @return string + */ + protected function getScopesDelimiter() + { + return ' '; + } +} diff --git a/htdocs/includes/OAuth/OAuth2/Service/Amazon.php b/htdocs/includes/OAuth/OAuth2/Service/Amazon.php new file mode 100644 index 00000000000..035d1a557f8 --- /dev/null +++ b/htdocs/includes/OAuth/OAuth2/Service/Amazon.php @@ -0,0 +1,97 @@ + + * @link https://images-na.ssl-images-amazon.com/images/G/01/lwa/dev/docs/website-developer-guide._TTH_.pdf + */ +class Amazon extends AbstractService +{ + /** + * Defined scopes + * @link https://images-na.ssl-images-amazon.com/images/G/01/lwa/dev/docs/website-developer-guide._TTH_.pdf + */ + const SCOPE_PROFILE = 'profile'; + const SCOPE_POSTAL_CODE = 'postal_code'; + + public function __construct( + CredentialsInterface $credentials, + ClientInterface $httpClient, + TokenStorageInterface $storage, + $scopes = array(), + UriInterface $baseApiUri = null + ) { + parent::__construct($credentials, $httpClient, $storage, $scopes, $baseApiUri); + + if (null === $baseApiUri) { + $this->baseApiUri = new Uri('https://api.amazon.com/'); + } + } + + /** + * {@inheritdoc} + */ + public function getAuthorizationEndpoint() + { + return new Uri('https://www.amazon.com/ap/oa'); + } + + /** + * {@inheritdoc} + */ + public function getAccessTokenEndpoint() + { + return new Uri('https://www.amazon.com/ap/oatoken'); + } + + /** + * {@inheritdoc} + */ + protected function getAuthorizationMethod() + { + return static::AUTHORIZATION_METHOD_HEADER_BEARER; + } + + /** + * {@inheritdoc} + */ + protected function parseAccessTokenResponse($responseBody) + { + $data = json_decode($responseBody, true); + + if (null === $data || !is_array($data)) { + throw new TokenResponseException('Unable to parse response.'); + } elseif (isset($data['error_description'])) { + throw new TokenResponseException('Error in retrieving token: "' . $data['error_description'] . '"'); + } elseif (isset($data['error'])) { + throw new TokenResponseException('Error in retrieving token: "' . $data['error'] . '"'); + } + + $token = new StdOAuth2Token(); + $token->setAccessToken($data['access_token']); + $token->setLifeTime($data['expires_in']); + + if (isset($data['refresh_token'])) { + $token->setRefreshToken($data['refresh_token']); + unset($data['refresh_token']); + } + + unset($data['access_token']); + unset($data['expires_in']); + + $token->setExtraParams($data); + + return $token; + } +} diff --git a/htdocs/includes/OAuth/OAuth2/Service/Bitly.php b/htdocs/includes/OAuth/OAuth2/Service/Bitly.php new file mode 100644 index 00000000000..e01cbc4296e --- /dev/null +++ b/htdocs/includes/OAuth/OAuth2/Service/Bitly.php @@ -0,0 +1,111 @@ +baseApiUri = new Uri('https://api-ssl.bitly.com/v3/'); + } + } + + /** + * {@inheritdoc} + */ + public function getAuthorizationEndpoint() + { + return new Uri('https://bitly.com/oauth/authorize'); + } + + /** + * {@inheritdoc} + */ + public function getAccessTokenEndpoint() + { + return new Uri('https://api-ssl.bitly.com/oauth/access_token'); + } + + /** + * {@inheritdoc} + */ + protected function getAuthorizationMethod() + { + return static::AUTHORIZATION_METHOD_QUERY_STRING; + } + + /** + * {@inheritdoc} + */ + protected function parseAccessTokenResponse($responseBody) + { + $data = json_decode($responseBody, true); + + if (null === $data || !is_array($data)) { + throw new TokenResponseException('Unable to parse response.'); + } elseif (isset($data['error'])) { + throw new TokenResponseException('Error in retrieving token: "' . $data['error'] . '"'); + } + + $token = new StdOAuth2Token(); + $token->setAccessToken($data['access_token']); + // I'm invincible!!! + $token->setEndOfLife(StdOAuth2Token::EOL_NEVER_EXPIRES); + unset($data['access_token']); + + $token->setExtraParams($data); + + return $token; + } + + /** + * {@inheritdoc} + */ + public function requestAccessToken($code, $state = null) + { + if (null !== $state) { + $this->validateAuthorizationState($state); + } + + $bodyParams = array( + 'code' => $code, + 'client_id' => $this->credentials->getConsumerId(), + 'client_secret' => $this->credentials->getConsumerSecret(), + 'redirect_uri' => $this->credentials->getCallbackUrl(), + 'grant_type' => 'authorization_code', + ); + + $responseBody = $this->httpClient->retrieveResponse( + $this->getAccessTokenEndpoint(), + $bodyParams, + $this->getExtraOAuthHeaders() + ); + + // we can scream what we want that we want bitly to return a json encoded string (format=json), but the + // WOAH WATCH YOUR LANGUAGE ;) service doesn't seem to like screaming, hence we need to manually + // parse the result + $parsedResult = array(); + parse_str($responseBody, $parsedResult); + + $token = $this->parseAccessTokenResponse(json_encode($parsedResult)); + $this->storage->storeAccessToken($this->service(), $token); + + return $token; + } +} diff --git a/htdocs/includes/OAuth/OAuth2/Service/Bitrix24.php b/htdocs/includes/OAuth/OAuth2/Service/Bitrix24.php new file mode 100644 index 00000000000..1630d30dce5 --- /dev/null +++ b/htdocs/includes/OAuth/OAuth2/Service/Bitrix24.php @@ -0,0 +1,118 @@ +baseApiUri)); + } + + /** + * {@inheritdoc} + */ + public function getAccessTokenEndpoint() + { + return new Uri(sprintf('%s/oauth/token/', $this->baseApiUri)); + } + + /** + * {@inheritdoc} + */ + public function requestAccessToken($code, $state = null) + { + if (null !== $state) { + $this->validateAuthorizationState($state); + } + + $responseBody = $this->httpClient->retrieveResponse( + $this->getAccessTokenUri($code), + array(), + $this->getExtraOAuthHeaders(), + 'GET' + ); + + $token = $this->parseAccessTokenResponse($responseBody); + $this->storage->storeAccessToken($this->service(), $token); + + return $token; + } + + /** + * {@inheritdoc} + */ + public function getAccessTokenUri($code) + { + $parameters = array( + 'code' => $code, + 'client_id' => $this->credentials->getConsumerId(), + 'client_secret' => $this->credentials->getConsumerSecret(), + 'redirect_uri' => $this->credentials->getCallbackUrl(), + 'grant_type' => 'authorization_code', + 'scope' => $this->scopes + ); + + $parameters['scope'] = implode(' ', $this->scopes); + + // Build the url + $url = $this->getAccessTokenEndpoint(); + foreach ($parameters as $key => $val) { + $url->addToQuery($key, $val); + } + + return $url; + } + + /** + * {@inheritdoc} + */ + protected function parseAccessTokenResponse($responseBody) + { + $data = json_decode($responseBody, true); + + if (null === $data || !is_array($data)) { + throw new TokenResponseException('Unable to parse response.'); + } elseif (isset($data['error'])) { + throw new TokenResponseException('Error in retrieving token: "' . $data['error'] . '"'); + } + + $token = new StdOAuth2Token(); + $token->setAccessToken($data['access_token']); + $token->setLifetime($data['expires_in']); + + if (isset($data['refresh_token'])) { + $token->setRefreshToken($data['refresh_token']); + unset($data['refresh_token']); + } + + unset($data['access_token']); + unset($data['expires_in']); + + $token->setExtraParams($data); + + return $token; + } +} diff --git a/htdocs/includes/OAuth/OAuth2/Service/Box.php b/htdocs/includes/OAuth/OAuth2/Service/Box.php new file mode 100644 index 00000000000..14696c5936d --- /dev/null +++ b/htdocs/includes/OAuth/OAuth2/Service/Box.php @@ -0,0 +1,88 @@ + + * @link https://developers.box.com/oauth/ + */ +class Box extends AbstractService +{ + public function __construct( + CredentialsInterface $credentials, + ClientInterface $httpClient, + TokenStorageInterface $storage, + $scopes = array(), + UriInterface $baseApiUri = null + ) { + parent::__construct($credentials, $httpClient, $storage, $scopes, $baseApiUri, true); + + if (null === $baseApiUri) { + $this->baseApiUri = new Uri('https://api.box.com/2.0/'); + } + } + + /** + * {@inheritdoc} + */ + public function getAuthorizationEndpoint() + { + return new Uri('https://www.box.com/api/oauth2/authorize'); + } + + /** + * {@inheritdoc} + */ + public function getAccessTokenEndpoint() + { + return new Uri('https://www.box.com/api/oauth2/token'); + } + + /** + * {@inheritdoc} + */ + protected function getAuthorizationMethod() + { + return static::AUTHORIZATION_METHOD_HEADER_BEARER; + } + + /** + * {@inheritdoc} + */ + protected function parseAccessTokenResponse($responseBody) + { + $data = json_decode($responseBody, true); + + if (null === $data || !is_array($data)) { + throw new TokenResponseException('Unable to parse response.'); + } elseif (isset($data['error'])) { + throw new TokenResponseException('Error in retrieving token: "' . $data['error'] . '"'); + } + + $token = new StdOAuth2Token(); + $token->setAccessToken($data['access_token']); + $token->setLifeTime($data['expires_in']); + + if (isset($data['refresh_token'])) { + $token->setRefreshToken($data['refresh_token']); + unset($data['refresh_token']); + } + + unset($data['access_token']); + unset($data['expires_in']); + + $token->setExtraParams($data); + + return $token; + } +} diff --git a/htdocs/includes/OAuth/OAuth2/Service/Buffer.php b/htdocs/includes/OAuth/OAuth2/Service/Buffer.php new file mode 100644 index 00000000000..5905678e8c6 --- /dev/null +++ b/htdocs/includes/OAuth/OAuth2/Service/Buffer.php @@ -0,0 +1,151 @@ + + * @link https://bufferapp.com/developers/api + */ +class Buffer extends AbstractService +{ + public function __construct( + CredentialsInterface $credentials, + ClientInterface $httpClient, + TokenStorageInterface $storage, + $scopes = array(), + UriInterface $baseApiUri = null + ) { + parent::__construct($credentials, $httpClient, $storage, $scopes, $baseApiUri); + if ($baseApiUri === null) { + $this->baseApiUri = new Uri('https://api.bufferapp.com/1/'); + } + } + + /** + * {@inheritdoc} + */ + public function getAuthorizationEndpoint() + { + return new Uri('https://bufferapp.com/oauth2/authorize'); + } + + /** + * {@inheritdoc} + */ + public function getAccessTokenEndpoint() + { + return new Uri('https://api.bufferapp.com/1/oauth2/token.json'); + } + + /** + * {@inheritdoc} + */ + protected function getAuthorizationMethod() + { + return static::AUTHORIZATION_METHOD_QUERY_STRING; + } + + /** + * {@inheritdoc} + */ + public function getAuthorizationUri(array $additionalParameters = array()) + { + $parameters = array_merge( + $additionalParameters, + array( + 'client_id' => $this->credentials->getConsumerId(), + 'redirect_uri' => $this->credentials->getCallbackUrl(), + 'response_type' => 'code', + ) + ); + + // Build the url + $url = clone $this->getAuthorizationEndpoint(); + foreach ($parameters as $key => $val) { + $url->addToQuery($key, $val); + } + + return $url; + } + + /** + * {@inheritdoc} + */ + public function requestRequestToken() + { + $responseBody = $this->httpClient->retrieveResponse( + $this->getRequestTokenEndpoint(), + array( + 'client_key' => $this->credentials->getConsumerId(), + 'redirect_uri' => $this->credentials->getCallbackUrl(), + 'response_type' => 'code', + ) + ); + + $code = $this->parseRequestTokenResponse($responseBody); + + return $code; + } + + protected function parseRequestTokenResponse($responseBody) + { + parse_str($responseBody, $data); + + if (null === $data || !is_array($data)) { + throw new TokenResponseException('Unable to parse response.'); + } elseif (!isset($data['code'])) { + throw new TokenResponseException('Error in retrieving code.'); + } + return $data['code']; + } + + public function requestAccessToken($code) + { + $bodyParams = array( + 'client_id' => $this->credentials->getConsumerId(), + 'client_secret' => $this->credentials->getConsumerSecret(), + 'redirect_uri' => $this->credentials->getCallbackUrl(), + 'code' => $code, + 'grant_type' => 'authorization_code', + ); + + $responseBody = $this->httpClient->retrieveResponse( + $this->getAccessTokenEndpoint(), + $bodyParams, + $this->getExtraOAuthHeaders() + ); + $token = $this->parseAccessTokenResponse($responseBody); + $this->storage->storeAccessToken($this->service(), $token); + + return $token; + } + + protected function parseAccessTokenResponse($responseBody) + { + $data = json_decode($responseBody, true); + + if ($data === null || !is_array($data)) { + throw new TokenResponseException('Unable to parse response.'); + } elseif (isset($data['error'])) { + throw new TokenResponseException('Error in retrieving token: "' . $data['error'] . '"'); + } + + $token = new StdOAuth2Token(); + $token->setAccessToken($data['access_token']); + + $token->setEndOfLife(StdOAuth2Token::EOL_NEVER_EXPIRES); + unset($data['access_token']); + $token->setExtraParams($data); + + return $token; + } +} diff --git a/htdocs/includes/OAuth/OAuth2/Service/Dailymotion.php b/htdocs/includes/OAuth/OAuth2/Service/Dailymotion.php new file mode 100644 index 00000000000..095a467fd98 --- /dev/null +++ b/htdocs/includes/OAuth/OAuth2/Service/Dailymotion.php @@ -0,0 +1,129 @@ + + * @link http://www.dailymotion.com/doc/api/authentication.html + */ +class Dailymotion extends AbstractService +{ + /** + * Scopes + * + * @var string + */ + const SCOPE_EMAIL = 'email', + SCOPE_PROFILE = 'userinfo', + SCOPE_VIDEOS = 'manage_videos', + SCOPE_COMMENTS = 'manage_comments', + SCOPE_PLAYLIST = 'manage_playlists', + SCOPE_TILES = 'manage_tiles', + SCOPE_SUBSCRIPTIONS = 'manage_subscriptions', + SCOPE_FRIENDS = 'manage_friends', + SCOPE_FAVORITES = 'manage_favorites', + SCOPE_GROUPS = 'manage_groups'; + + /** + * Dialog form factors + * + * @var string + */ + const DISPLAY_PAGE = 'page', + DISPLAY_POPUP = 'popup', + DISPLAY_MOBILE = 'mobile'; + + /** + * {@inheritdoc} + */ + public function __construct( + CredentialsInterface $credentials, + ClientInterface $httpClient, + TokenStorageInterface $storage, + $scopes = array(), + UriInterface $baseApiUri = null + ) { + parent::__construct($credentials, $httpClient, $storage, $scopes, $baseApiUri); + + if (null === $baseApiUri) { + $this->baseApiUri = new Uri('https://api.dailymotion.com/'); + } + } + + /** + * {@inheritdoc} + */ + public function getAuthorizationEndpoint() + { + return new Uri('https://api.dailymotion.com/oauth/authorize'); + } + + /** + * {@inheritdoc} + */ + public function getAccessTokenEndpoint() + { + return new Uri('https://api.dailymotion.com/oauth/token'); + } + + /** + * {@inheritdoc} + */ + protected function getAuthorizationMethod() + { + return static::AUTHORIZATION_METHOD_HEADER_OAUTH; + } + + /** + * {@inheritdoc} + */ + protected function parseAccessTokenResponse($responseBody) + { + $data = json_decode($responseBody, true); + + if (null === $data || !is_array($data)) { + throw new TokenResponseException('Unable to parse response.'); + } elseif (isset($data['error_description']) || isset($data['error'])) { + throw new TokenResponseException( + sprintf( + 'Error in retrieving token: "%s"', + isset($data['error_description']) ? $data['error_description'] : $data['error'] + ) + ); + } + + $token = new StdOAuth2Token(); + $token->setAccessToken($data['access_token']); + $token->setLifeTime($data['expires_in']); + + if (isset($data['refresh_token'])) { + $token->setRefreshToken($data['refresh_token']); + unset($data['refresh_token']); + } + + unset($data['access_token']); + unset($data['expires_in']); + + $token->setExtraParams($data); + + return $token; + } + + /** + * {@inheritdoc} + */ + protected function getExtraOAuthHeaders() + { + return array('Accept' => 'application/json'); + } +} diff --git a/htdocs/includes/OAuth/OAuth2/Service/Delicious.php b/htdocs/includes/OAuth/OAuth2/Service/Delicious.php new file mode 100644 index 00000000000..eba6035f39d --- /dev/null +++ b/htdocs/includes/OAuth/OAuth2/Service/Delicious.php @@ -0,0 +1,139 @@ + + * @license http://www.opensource.org/licenses/mit-license.html MIT License + * @link https://github.com/SciDevs/delicious-api/blob/master/api/oauth.md + */ + +namespace OAuth\OAuth2\Service; + +use OAuth\OAuth2\Token\StdOAuth2Token; +use OAuth\Common\Http\Exception\TokenResponseException; +use OAuth\Common\Http\Uri\Uri; +use OAuth\Common\Consumer\CredentialsInterface; +use OAuth\Common\Http\Client\ClientInterface; +use OAuth\Common\Storage\TokenStorageInterface; +use OAuth\Common\Http\Uri\UriInterface; + +/** + * Delicious service. + * + * @author Pedro Amorim + * @license http://www.opensource.org/licenses/mit-license.html MIT License + * @link https://github.com/SciDevs/delicious-api/blob/master/api/oauth.md + */ +class Delicious extends AbstractService +{ + public function __construct( + CredentialsInterface $credentials, + ClientInterface $httpClient, + TokenStorageInterface $storage, + $scopes = array(), + UriInterface $baseApiUri = null + ) { + parent::__construct( + $credentials, + $httpClient, + $storage, + $scopes, + $baseApiUri, + true + ); + + if (null === $baseApiUri) { + $this->baseApiUri = new Uri('https://api.del.icio.us/v1/'); + } + } + + /** + * {@inheritdoc} + */ + public function getAuthorizationEndpoint() + { + return new Uri('https://delicious.com/auth/authorize'); + + } + + /** + * {@inheritdoc} + */ + public function getAccessTokenEndpoint() + { + return new Uri('https://avosapi.delicious.com/api/v1/oauth/token'); + } + + /** + * {@inheritdoc} + */ + protected function getAuthorizationMethod() + { + return static::AUTHORIZATION_METHOD_HEADER_BEARER; + } + + /** + * {@inheritdoc} + */ + protected function parseAccessTokenResponse($responseBody) + { + $data = json_decode($responseBody, true); + + if (null === $data || !is_array($data)) { + throw new TokenResponseException('Unable to parse response.'); + } elseif (isset($data['error'])) { + throw new TokenResponseException( + 'Error in retrieving token: "' . $data['error'] . '"' + ); + } + + $token = new StdOAuth2Token(); + $token->setAccessToken($data['access_token']); + + if (isset($data['expires_in'])) { + $token->setLifetime($data['expires_in']); + unset($data['expires_in']); + } + if (isset($data['refresh_token'])) { + $token->setRefreshToken($data['refresh_token']); + unset($data['refresh_token']); + } + + unset($data['access_token']); + + $token->setExtraParams($data); + + return $token; + } + + + // Special, delicious didn't respect the oauth2 RFC and need a grant_type='code' + /** + * {@inheritdoc} + */ + public function requestAccessToken($code, $state = null) + { + if (null !== $state) { + $this->validateAuthorizationState($state); + } + + $bodyParams = array( + 'code' => $code, + 'client_id' => $this->credentials->getConsumerId(), + 'client_secret' => $this->credentials->getConsumerSecret(), + 'redirect_uri' => $this->credentials->getCallbackUrl(), + 'grant_type' => 'code', + ); + + $responseBody = $this->httpClient->retrieveResponse( + $this->getAccessTokenEndpoint(), + $bodyParams, + $this->getExtraOAuthHeaders() + ); + + $token = $this->parseAccessTokenResponse($responseBody); + $this->storage->storeAccessToken($this->service(), $token); + + return $token; + } +} diff --git a/htdocs/includes/OAuth/OAuth2/Service/DeviantArt.php b/htdocs/includes/OAuth/OAuth2/Service/DeviantArt.php new file mode 100644 index 00000000000..31e94b45dbd --- /dev/null +++ b/htdocs/includes/OAuth/OAuth2/Service/DeviantArt.php @@ -0,0 +1,99 @@ +baseApiUri = new Uri('https://www.deviantart.com/api/v1/oauth2/'); + } + } + + /** + * {@inheritdoc} + */ + public function getAuthorizationEndpoint() + { + return new Uri('https://www.deviantart.com/oauth2/authorize'); + } + + /** + * {@inheritdoc} + */ + public function getAccessTokenEndpoint() + { + return new Uri('https://www.deviantart.com/oauth2/token'); + } + + /** + * {@inheritdoc} + */ + protected function parseAccessTokenResponse($responseBody) + { + + $data = json_decode($responseBody, true); + + if (null === $data || !is_array($data)) { + throw new TokenResponseException('Unable to parse response.'); + } elseif (isset($data['error'])) { + throw new TokenResponseException('Error in retrieving token: "' . $data['error'] . '"'); + } + + $token = new StdOAuth2Token(); + $token->setAccessToken($data['access_token']); + + if (isset($data['expires_in'])) { + $token->setLifeTime($data['expires_in']); + } + + if (isset($data['refresh_token'])) { + $token->setRefreshToken($data['refresh_token']); + unset($data['refresh_token']); + } + + unset($data['access_token']); + unset($data['expires_in']); + + $token->setExtraParams($data); + + return $token; + } +} diff --git a/htdocs/includes/OAuth/OAuth2/Service/Dropbox.php b/htdocs/includes/OAuth/OAuth2/Service/Dropbox.php new file mode 100644 index 00000000000..43ec6c7f081 --- /dev/null +++ b/htdocs/includes/OAuth/OAuth2/Service/Dropbox.php @@ -0,0 +1,111 @@ + + * @link https://www.dropbox.com/developers/core/docs + */ +class Dropbox extends AbstractService +{ + public function __construct( + CredentialsInterface $credentials, + ClientInterface $httpClient, + TokenStorageInterface $storage, + $scopes = array(), + UriInterface $baseApiUri = null + ) { + parent::__construct($credentials, $httpClient, $storage, $scopes, $baseApiUri); + + if (null === $baseApiUri) { + $this->baseApiUri = new Uri('https://api.dropbox.com/1/'); + } + } + + /** + * {@inheritdoc} + */ + public function getAuthorizationUri(array $additionalParameters = array()) + { + $parameters = array_merge( + $additionalParameters, + array( + 'client_id' => $this->credentials->getConsumerId(), + 'redirect_uri' => $this->credentials->getCallbackUrl(), + 'response_type' => 'code', + ) + ); + + $parameters['scope'] = implode(' ', $this->scopes); + + // Build the url + $url = clone $this->getAuthorizationEndpoint(); + foreach ($parameters as $key => $val) { + $url->addToQuery($key, $val); + } + + return $url; + } + + /** + * {@inheritdoc} + */ + public function getAuthorizationEndpoint() + { + return new Uri('https://www.dropbox.com/1/oauth2/authorize'); + } + + /** + * {@inheritdoc} + */ + public function getAccessTokenEndpoint() + { + return new Uri('https://api.dropbox.com/1/oauth2/token'); + } + + /** + * {@inheritdoc} + */ + protected function getAuthorizationMethod() + { + return static::AUTHORIZATION_METHOD_QUERY_STRING; + } + + /** + * {@inheritdoc} + */ + protected function parseAccessTokenResponse($responseBody) + { + $data = json_decode($responseBody, true); + + if (null === $data || !is_array($data)) { + throw new TokenResponseException('Unable to parse response.'); + } elseif (isset($data['error'])) { + throw new TokenResponseException('Error in retrieving token: "' . $data['error'] . '"'); + } + + $token = new StdOAuth2Token(); + $token->setAccessToken($data['access_token']); + + if (isset($data['refresh_token'])) { + $token->setRefreshToken($data['refresh_token']); + unset($data['refresh_token']); + } + + unset($data['access_token']); + + $token->setExtraParams($data); + + return $token; + } +} diff --git a/htdocs/includes/OAuth/OAuth2/Service/EveOnline.php b/htdocs/includes/OAuth/OAuth2/Service/EveOnline.php new file mode 100644 index 00000000000..76fafa6d7ee --- /dev/null +++ b/htdocs/includes/OAuth/OAuth2/Service/EveOnline.php @@ -0,0 +1,100 @@ + + */ +namespace OAuth\OAuth2\Service; + +use OAuth\Common\Consumer\CredentialsInterface; +use OAuth\Common\Http\Client\ClientInterface; +use OAuth\Common\Http\Exception\TokenResponseException; +use OAuth\Common\Http\Uri\Uri; +use OAuth\Common\Http\Uri\UriInterface; +use OAuth\Common\Storage\TokenStorageInterface; +use OAuth\Common\Token\TokenInterface; +use OAuth\OAuth2\Token\StdOAuth2Token; + +/** + * Class EveOnline + */ +class EveOnline extends AbstractService +{ + public function __construct( + CredentialsInterface $credentials, + ClientInterface $httpClient, + TokenStorageInterface $storage, + $scopes = array(), + UriInterface $baseApiUri = null + ) { + parent::__construct($credentials, $httpClient, $storage, $scopes, $baseApiUri); + + if (null === $baseApiUri) { + $this->baseApiUri = new Uri('https://login.eveonline.com'); + } + } + + /** + * Returns the authorization API endpoint. + * @return UriInterface + */ + public function getAuthorizationEndpoint() + { + return new Uri($this->baseApiUri . '/oauth/authorize'); + } + + /** + * Returns the access token API endpoint. + * @return UriInterface + */ + public function getAccessTokenEndpoint() + { + return new Uri($this->baseApiUri . '/oauth/token'); + } + + /** + * Parses the access token response and returns a TokenInterface. + * + * @param string $responseBody + * + * @return TokenInterface + * @throws TokenResponseException + */ + protected function parseAccessTokenResponse($responseBody) + { + $data = json_decode($responseBody, true); + + if (null === $data || !is_array($data)) { + throw new TokenResponseException('Unable to parse response.'); + } elseif (isset($data['error_description'])) { + throw new TokenResponseException('Error in retrieving token: "' . $data['error_description'] . '"'); + } elseif (isset($data['error'])) { + throw new TokenResponseException('Error in retrieving token: "' . $data['error'] . '"'); + } + + $token = new StdOAuth2Token(); + $token->setAccessToken($data['access_token']); + $token->setLifeTime($data['expires_in']); + + if (isset($data['refresh_token'])) { + $token->setRefreshToken($data['refresh_token']); + unset($data['refresh_token']); + } + + unset($data['access_token']); + unset($data['expires_in']); + + $token->setExtraParams($data); + + return $token; + } + + /** + * {@inheritdoc} + */ + protected function getAuthorizationMethod() + { + return static::AUTHORIZATION_METHOD_HEADER_BEARER; + } +} diff --git a/htdocs/includes/OAuth/OAuth2/Service/Exception/InvalidAccessTypeException.php b/htdocs/includes/OAuth/OAuth2/Service/Exception/InvalidAccessTypeException.php new file mode 100644 index 00000000000..398df2fdcfa --- /dev/null +++ b/htdocs/includes/OAuth/OAuth2/Service/Exception/InvalidAccessTypeException.php @@ -0,0 +1,12 @@ + + * Released under the MIT license. + */ + +namespace OAuth\OAuth2\Service\Exception; + +use OAuth\Common\Exception\Exception; + +/** + * Exception thrown when a scope provided to a service is invalid. + */ +class InvalidScopeException extends Exception +{ +} diff --git a/htdocs/includes/OAuth/OAuth2/Service/Exception/MissingRefreshTokenException.php b/htdocs/includes/OAuth/OAuth2/Service/Exception/MissingRefreshTokenException.php new file mode 100644 index 00000000000..21eece6ac1b --- /dev/null +++ b/htdocs/includes/OAuth/OAuth2/Service/Exception/MissingRefreshTokenException.php @@ -0,0 +1,17 @@ + + * Released under the MIT license. + */ + +namespace OAuth\OAuth2\Service\Exception; + +use OAuth\Common\Exception\Exception; + +/** + * Exception thrown when service is requested to refresh the access token but no refresh token can be found. + */ +class MissingRefreshTokenException extends Exception +{ +} diff --git a/htdocs/includes/OAuth/OAuth2/Service/Facebook.php b/htdocs/includes/OAuth/OAuth2/Service/Facebook.php new file mode 100644 index 00000000000..308513bce94 --- /dev/null +++ b/htdocs/includes/OAuth/OAuth2/Service/Facebook.php @@ -0,0 +1,208 @@ +baseApiUri = new Uri('https://graph.facebook.com'.$this->getApiVersionString().'/'); + } + } + + /** + * {@inheritdoc} + */ + public function getAuthorizationEndpoint() + { + return new Uri('https://www.facebook.com'.$this->getApiVersionString().'/dialog/oauth'); + } + + /** + * {@inheritdoc} + */ + public function getAccessTokenEndpoint() + { + return new Uri('https://graph.facebook.com'.$this->getApiVersionString().'/oauth/access_token'); + } + + /** + * {@inheritdoc} + */ + protected function parseAccessTokenResponse($responseBody) + { + // Facebook gives us a query string ... Oh wait. JSON is too simple, understand ? + parse_str($responseBody, $data); + + if (null === $data || !is_array($data)) { + throw new TokenResponseException('Unable to parse response.'); + } elseif (isset($data['error'])) { + throw new TokenResponseException('Error in retrieving token: "' . $data['error'] . '"'); + } + + $token = new StdOAuth2Token(); + $token->setAccessToken($data['access_token']); + + if (isset($data['expires'])) { + $token->setLifeTime($data['expires']); + } + + if (isset($data['refresh_token'])) { + $token->setRefreshToken($data['refresh_token']); + unset($data['refresh_token']); + } + + unset($data['access_token']); + unset($data['expires']); + + $token->setExtraParams($data); + + return $token; + } + + public function getDialogUri($dialogPath, array $parameters) + { + if (!isset($parameters['redirect_uri'])) { + throw new Exception("Redirect uri is mandatory for this request"); + } + $parameters['app_id'] = $this->credentials->getConsumerId(); + $baseUrl = self::WWW_URL .$this->getApiVersionString(). '/dialog/' . $dialogPath; + $query = http_build_query($parameters); + return new Uri($baseUrl . '?' . $query); + } + + /** + * {@inheritdoc} + */ + protected function getScopesDelimiter() + { + return ','; + } +} diff --git a/htdocs/includes/OAuth/OAuth2/Service/Foursquare.php b/htdocs/includes/OAuth/OAuth2/Service/Foursquare.php new file mode 100644 index 00000000000..981ff44f691 --- /dev/null +++ b/htdocs/includes/OAuth/OAuth2/Service/Foursquare.php @@ -0,0 +1,81 @@ +baseApiUri = new Uri('https://api.foursquare.com/v2/'); + } + } + + /** + * {@inheritdoc} + */ + public function getAuthorizationEndpoint() + { + return new Uri('https://foursquare.com/oauth2/authenticate'); + } + + /** + * {@inheritdoc} + */ + public function getAccessTokenEndpoint() + { + return new Uri('https://foursquare.com/oauth2/access_token'); + } + + /** + * {@inheritdoc} + */ + protected function parseAccessTokenResponse($responseBody) + { + $data = json_decode($responseBody, true); + + if (null === $data || !is_array($data)) { + throw new TokenResponseException('Unable to parse response.'); + } elseif (isset($data['error'])) { + throw new TokenResponseException('Error in retrieving token: "' . $data['error'] . '"'); + } + + $token = new StdOAuth2Token(); + $token->setAccessToken($data['access_token']); + // Foursquare tokens evidently never expire... + $token->setEndOfLife(StdOAuth2Token::EOL_NEVER_EXPIRES); + unset($data['access_token']); + + $token->setExtraParams($data); + + return $token; + } + + /** + * {@inheritdoc} + */ + public function request($path, $method = 'GET', $body = null, array $extraHeaders = array()) + { + $uri = $this->determineRequestUriFromPath($path, $this->baseApiUri); + $uri->addToQuery('v', $this->apiVersionDate); + + return parent::request($uri, $method, $body, $extraHeaders); + } +} diff --git a/htdocs/includes/OAuth/OAuth2/Service/GitHub.php b/htdocs/includes/OAuth/OAuth2/Service/GitHub.php new file mode 100644 index 00000000000..8d4d122f1fc --- /dev/null +++ b/htdocs/includes/OAuth/OAuth2/Service/GitHub.php @@ -0,0 +1,216 @@ +baseApiUri = new Uri('https://api.github.com/'); + } + } + + /** + * {@inheritdoc} + */ + public function getAuthorizationEndpoint() + { + return new Uri('https://github.com/login/oauth/authorize'); + } + + /** + * {@inheritdoc} + */ + public function getAccessTokenEndpoint() + { + return new Uri('https://github.com/login/oauth/access_token'); + } + + /** + * {@inheritdoc} + */ + protected function getAuthorizationMethod() + { + return static::AUTHORIZATION_METHOD_QUERY_STRING; + } + + /** + * {@inheritdoc} + */ + protected function parseAccessTokenResponse($responseBody) + { + $data = json_decode($responseBody, true); + + if (null === $data || !is_array($data)) { + throw new TokenResponseException('Unable to parse response.'); + } elseif (isset($data['error'])) { + throw new TokenResponseException('Error in retrieving token: "' . $data['error'] . '"'); + } + + $token = new StdOAuth2Token(); + $token->setAccessToken($data['access_token']); + // Github tokens evidently never expire... + $token->setEndOfLife(StdOAuth2Token::EOL_NEVER_EXPIRES); + unset($data['access_token']); + + $token->setExtraParams($data); + + return $token; + } + + /** + * Used to configure response type -- we want JSON from github, default is query string format + * + * @return array + */ + protected function getExtraOAuthHeaders() + { + return array('Accept' => 'application/json'); + } + + /** + * Required for GitHub API calls. + * + * @return array + */ + protected function getExtraApiHeaders() + { + return array('Accept' => 'application/vnd.github.beta+json'); + } + + /** + * {@inheritdoc} + */ + protected function getScopesDelimiter() + { + return ','; + } +} diff --git a/htdocs/includes/OAuth/OAuth2/Service/Google.php b/htdocs/includes/OAuth/OAuth2/Service/Google.php new file mode 100644 index 00000000000..a8bb44d8238 --- /dev/null +++ b/htdocs/includes/OAuth/OAuth2/Service/Google.php @@ -0,0 +1,188 @@ +baseApiUri = new Uri('https://www.googleapis.com/oauth2/v1/'); + } + } + + public function setAccessType($accessType) + { + if (!in_array($accessType, array('online', 'offline'), true)) { + throw new InvalidAccessTypeException('Invalid accessType, expected either online or offline'); + } + $this->accessType = $accessType; + } + + /** + * {@inheritdoc} + */ + public function getAuthorizationEndpoint() + { + return new Uri('https://accounts.google.com/o/oauth2/auth?access_type=' . $this->accessType); + } + + /** + * {@inheritdoc} + */ + public function getAccessTokenEndpoint() + { + return new Uri('https://accounts.google.com/o/oauth2/token'); + } + + /** + * {@inheritdoc} + */ + protected function parseAccessTokenResponse($responseBody) + { + $data = json_decode($responseBody, true); + + if (null === $data || !is_array($data)) { + throw new TokenResponseException('Unable to parse response.'); + } elseif (isset($data['error'])) { + throw new TokenResponseException('Error in retrieving token: "' . $data['error'] . '"'); + } + + $token = new StdOAuth2Token(); + $token->setAccessToken($data['access_token']); + $token->setLifetime($data['expires_in']); + + if (isset($data['refresh_token'])) { + $token->setRefreshToken($data['refresh_token']); + unset($data['refresh_token']); + } + + unset($data['access_token']); + unset($data['expires_in']); + + $token->setExtraParams($data); + + return $token; + } +} diff --git a/htdocs/includes/OAuth/OAuth2/Service/Harvest.php b/htdocs/includes/OAuth/OAuth2/Service/Harvest.php new file mode 100644 index 00000000000..96fb0f2da7d --- /dev/null +++ b/htdocs/includes/OAuth/OAuth2/Service/Harvest.php @@ -0,0 +1,157 @@ +baseApiUri = new Uri('https://api.harvestapp.com/'); + } + } + + /** + * {@inheritdoc} + */ + public function getAuthorizationUri(array $additionalParameters = array()) + { + $parameters = array_merge( + $additionalParameters, + array( + 'client_id' => $this->credentials->getConsumerId(), + 'redirect_uri' => $this->credentials->getCallbackUrl(), + 'state' => 'optional-csrf-token', + 'response_type' => 'code', + ) + ); + + // Build the url + $url = clone $this->getAuthorizationEndpoint(); + foreach ($parameters as $key => $val) { + $url->addToQuery($key, $val); + } + + return $url; + } + + /** + * {@inheritdoc} + */ + public function getAuthorizationEndpoint() + { + return new Uri('https://api.harvestapp.com/oauth2/authorize'); + } + + /** + * {@inheritdoc} + */ + public function getAccessTokenEndpoint() + { + return new Uri('https://api.harvestapp.com/oauth2/token'); + } + + /** + * {@inheritdoc} + */ + protected function getAuthorizationMethod() + { + return static::AUTHORIZATION_METHOD_QUERY_STRING; + } + + /** + * {@inheritdoc} + */ + protected function parseAccessTokenResponse($responseBody) + { + $data = json_decode($responseBody, true); + + if (null === $data || ! is_array($data)) { + throw new TokenResponseException('Unable to parse response.'); + } elseif (isset($data['error'])) { + throw new TokenResponseException('Error in retrieving token: "' . $data['error'] . '"'); + } + + $token = new StdOAuth2Token(); + $token->setAccessToken($data['access_token']); + $token->setLifetime($data['expires_in']); + $token->setRefreshToken($data['refresh_token']); + + unset($data['access_token']); + + $token->setExtraParams($data); + + return $token; + } + + /** + * Refreshes an OAuth2 access token. + * + * @param TokenInterface $token + * + * @return TokenInterface $token + * + * @throws MissingRefreshTokenException + */ + public function refreshAccessToken(TokenInterface $token) + { + $refreshToken = $token->getRefreshToken(); + + if (empty($refreshToken)) { + throw new MissingRefreshTokenException(); + } + + $parameters = array( + 'grant_type' => 'refresh_token', + 'type' => 'web_server', + 'client_id' => $this->credentials->getConsumerId(), + 'client_secret' => $this->credentials->getConsumerSecret(), + 'refresh_token' => $refreshToken, + ); + + $responseBody = $this->httpClient->retrieveResponse( + $this->getAccessTokenEndpoint(), + $parameters, + $this->getExtraOAuthHeaders() + ); + $token = $this->parseAccessTokenResponse($responseBody); + $this->storage->storeAccessToken($this->service(), $token); + + return $token; + } + + /** + * @return array + */ + protected function getExtraOAuthHeaders() + { + return array('Accept' => 'application/json'); + } + + /** + * Return any additional headers always needed for this service implementation's API calls. + * + * @return array + */ + protected function getExtraApiHeaders() + { + return array('Accept' => 'application/json'); + } +} diff --git a/htdocs/includes/OAuth/OAuth2/Service/Heroku.php b/htdocs/includes/OAuth/OAuth2/Service/Heroku.php new file mode 100644 index 00000000000..470cedc3398 --- /dev/null +++ b/htdocs/includes/OAuth/OAuth2/Service/Heroku.php @@ -0,0 +1,123 @@ + + * @link https://devcenter.heroku.com/articles/oauth + */ +class Heroku extends AbstractService +{ + /** + * Defined scopes + * @link https://devcenter.heroku.com/articles/oauth#scopes + */ + const SCOPE_GLOBAL = 'global'; + const SCOPE_IDENTITY = 'identity'; + const SCOPE_READ = 'read'; + const SCOPE_WRITE = 'write'; + const SCOPE_READ_PROTECTED = 'read-protected'; + const SCOPE_WRITE_PROTECTED = 'write-protected'; + + /** + * {@inheritdoc} + */ + public function __construct( + CredentialsInterface $credentials, + ClientInterface $httpClient, + TokenStorageInterface $storage, + $scopes = array(), + UriInterface $baseApiUri = null + ) { + parent::__construct($credentials, $httpClient, $storage, $scopes, $baseApiUri); + + if (null === $baseApiUri) { + $this->baseApiUri = new Uri('https://api.heroku.com/'); + } + } + + /** + * {@inheritdoc} + */ + public function getAuthorizationEndpoint() + { + return new Uri('https://id.heroku.com/oauth/authorize'); + } + + /** + * {@inheritdoc} + */ + public function getAccessTokenEndpoint() + { + return new Uri('https://id.heroku.com/oauth/token'); + } + + /** + * {@inheritdoc} + */ + protected function getAuthorizationMethod() + { + return static::AUTHORIZATION_METHOD_HEADER_BEARER; + } + + /** + * {@inheritdoc} + */ + protected function parseAccessTokenResponse($responseBody) + { + $data = json_decode($responseBody, true); + + if (null === $data || !is_array($data)) { + throw new TokenResponseException('Unable to parse response.'); + } elseif (isset($data['error_description']) || isset($data['error'])) { + throw new TokenResponseException( + sprintf( + 'Error in retrieving token: "%s"', + isset($data['error_description']) ? $data['error_description'] : $data['error'] + ) + ); + } + + $token = new StdOAuth2Token(); + $token->setAccessToken($data['access_token']); + $token->setLifeTime($data['expires_in']); + + if (isset($data['refresh_token'])) { + $token->setRefreshToken($data['refresh_token']); + unset($data['refresh_token']); + } + + unset($data['access_token']); + unset($data['expires_in']); + + $token->setExtraParams($data); + + return $token; + } + + /** + * {@inheritdoc} + */ + protected function getExtraOAuthHeaders() + { + return array('Accept' => 'application/vnd.heroku+json; version=3'); + } + + /** + * {@inheritdoc} + */ + protected function getExtraApiHeaders() + { + return array('Accept' => 'application/vnd.heroku+json; version=3', 'Content-Type' => 'application/json'); + } +} diff --git a/htdocs/includes/OAuth/OAuth2/Service/Hubic.php b/htdocs/includes/OAuth/OAuth2/Service/Hubic.php new file mode 100644 index 00000000000..b9954503f59 --- /dev/null +++ b/htdocs/includes/OAuth/OAuth2/Service/Hubic.php @@ -0,0 +1,155 @@ + + * @license http://www.opensource.org/licenses/mit-license.html MIT License + * @link https://api.hubic.com/docs/ + */ + +namespace OAuth\OAuth2\Service; + +use OAuth\OAuth2\Token\StdOAuth2Token; +use OAuth\Common\Http\Exception\TokenResponseException; +use OAuth\Common\Http\Uri\Uri; +use OAuth\Common\Consumer\CredentialsInterface; +use OAuth\Common\Http\Client\ClientInterface; +use OAuth\Common\Storage\TokenStorageInterface; +use OAuth\Common\Http\Uri\UriInterface; + +/** + * Hubic service. + * + * @author Pedro Amorim + * @license http://www.opensource.org/licenses/mit-license.html MIT License + * @link https://api.hubic.com/docs/ + */ +class Hubic extends AbstractService +{ + + // Scopes + const SCOPE_USAGE_GET = 'usage.r'; + const SCOPE_ACCOUNT_GET = 'account.r'; + const SCOPE_GETALLLINKS_GET = 'getAllLinks.r'; + const SCOPE_CREDENTIALS_GET = 'credentials.r'; + const SCOPE_SPONSORCODE_GET = 'sponsorCode.r'; + const SCOPE_ACTIVATE_POST = 'activate.w'; + const SCOPE_SPONSORED_GET = 'sponsored.r'; + const SCOPE_LINKS_GET = 'links.r'; + const SCOPE_LINKS_POST = 'links.rw'; + const SCOPE_LINKS_ALL = 'links.drw'; + + public function __construct( + CredentialsInterface $credentials, + ClientInterface $httpClient, + TokenStorageInterface $storage, + $scopes = array(), + UriInterface $baseApiUri = null + ) { + parent::__construct( + $credentials, + $httpClient, + $storage, + $scopes, + $baseApiUri, + true + ); + + if (null === $baseApiUri) { + $this->baseApiUri = new Uri('https://api.hubic.com/'); + } + } + + /** + * {@inheritdoc} + */ + public function getAuthorizationEndpoint() + { + return new Uri('https://api.hubic.com/oauth/auth'); + + } + + /** + * {@inheritdoc} + */ + public function getAccessTokenEndpoint() + { + return new Uri('https://api.hubic.com/oauth/token'); + } + + /** + * {@inheritdoc} + */ + protected function getAuthorizationMethod() + { + return static::AUTHORIZATION_METHOD_HEADER_BEARER; + } + + /** + * {@inheritdoc} + */ + protected function parseAccessTokenResponse($responseBody) + { + $data = json_decode($responseBody, true); + + if (null === $data || !is_array($data)) { + throw new TokenResponseException('Unable to parse response.'); + } elseif (isset($data['error'])) { + throw new TokenResponseException( + 'Error in retrieving token: "' . $data['error'] . '"' + ); + } + + $token = new StdOAuth2Token(); + $token->setAccessToken($data['access_token']); + $token->setLifetime($data['expires_in']); + + if (isset($data['refresh_token'])) { + $token->setRefreshToken($data['refresh_token']); + unset($data['refresh_token']); + } + + unset($data['access_token']); + unset($data['expires_in']); + + $token->setExtraParams($data); + + return $token; + } + + + /** + * {@inheritdoc} + */ + public function getAuthorizationUri(array $additionalParameters = array()) + { + $parameters = array_merge( + $additionalParameters, + array( + 'type' => 'web_server', + 'client_id' => $this->credentials->getConsumerId(), + 'redirect_uri' => $this->credentials->getCallbackUrl(), + 'response_type' => 'code', + ) + ); + + // special, hubic use a param scope with commas + // between scopes instead of spaces + $parameters['scope'] = implode(',', $this->scopes); + + if ($this->needsStateParameterInAuthUrl()) { + if (!isset($parameters['state'])) { + $parameters['state'] = $this->generateAuthorizationState(); + } + $this->storeAuthorizationState($parameters['state']); + } + + // Build the url + $url = clone $this->getAuthorizationEndpoint(); + foreach ($parameters as $key => $val) { + $url->addToQuery($key, $val); + } + + return $url; + } +} diff --git a/htdocs/includes/OAuth/OAuth2/Service/Instagram.php b/htdocs/includes/OAuth/OAuth2/Service/Instagram.php new file mode 100644 index 00000000000..c60c455f492 --- /dev/null +++ b/htdocs/includes/OAuth/OAuth2/Service/Instagram.php @@ -0,0 +1,85 @@ +baseApiUri = new Uri('https://api.instagram.com/v1/'); + } + } + + /** + * {@inheritdoc} + */ + public function getAuthorizationEndpoint() + { + return new Uri('https://api.instagram.com/oauth/authorize/'); + } + + /** + * {@inheritdoc} + */ + public function getAccessTokenEndpoint() + { + return new Uri('https://api.instagram.com/oauth/access_token'); + } + + /** + * {@inheritdoc} + */ + protected function getAuthorizationMethod() + { + return static::AUTHORIZATION_METHOD_QUERY_STRING; + } + + /** + * {@inheritdoc} + */ + protected function parseAccessTokenResponse($responseBody) + { + $data = json_decode($responseBody, true); + + if (null === $data || !is_array($data)) { + throw new TokenResponseException('Unable to parse response.'); + } elseif (isset($data['error'])) { + throw new TokenResponseException('Error in retrieving token: "' . $data['error'] . '"'); + } + + $token = new StdOAuth2Token(); + $token->setAccessToken($data['access_token']); + // Instagram tokens evidently never expire... + $token->setEndOfLife(StdOAuth2Token::EOL_NEVER_EXPIRES); + unset($data['access_token']); + + $token->setExtraParams($data); + + return $token; + } +} diff --git a/htdocs/includes/OAuth/OAuth2/Service/JawboneUP.php b/htdocs/includes/OAuth/OAuth2/Service/JawboneUP.php new file mode 100644 index 00000000000..fad112536ce --- /dev/null +++ b/htdocs/includes/OAuth/OAuth2/Service/JawboneUP.php @@ -0,0 +1,144 @@ + + * @link https://jawbone.com/up/developer/authentication + */ +class JawboneUP extends AbstractService +{ + /** + * Defined scopes + * + * + * @link https://jawbone.com/up/developer/authentication + */ + // general information scopes + const SCOPE_BASIC_READ = 'basic_read'; + const SCOPE_EXTENDED_READ = 'extended_read'; + const SCOPE_LOCATION_READ = 'location_read'; + const SCOPE_FRIENDS_READ = 'friends_read'; + // mood scopes + const SCOPE_MOOD_READ = 'mood_read'; + const SCOPE_MOOD_WRITE = 'mood_write'; + // move scopes + const SCOPE_MOVE_READ = 'move_read'; + const SCOPE_MOVE_WRITE = 'move_write'; + // sleep scopes + const SCOPE_SLEEP_READ = 'sleep_read'; + const SCOPE_SLEEP_WRITE = 'sleep_write'; + // meal scopes + const SCOPE_MEAL_READ = 'meal_read'; + const SCOPE_MEAL_WRITE = 'meal_write'; + // weight scopes + const SCOPE_WEIGHT_READ = 'weight_read'; + const SCOPE_WEIGHT_WRITE = 'weight_write'; + // generic event scopes + const SCOPE_GENERIC_EVENT_READ = 'generic_event_read'; + const SCOPE_GENERIC_EVENT_WRITE = 'generic_event_write'; + + + public function __construct( + CredentialsInterface $credentials, + ClientInterface $httpClient, + TokenStorageInterface $storage, + $scopes = array(), + UriInterface $baseApiUri = null + ) { + parent::__construct($credentials, $httpClient, $storage, $scopes, $baseApiUri); + + if (null === $baseApiUri) { + $this->baseApiUri = new Uri('https://jawbone.com/nudge/api/v.1.1/'); + } + } + + /** + * {@inheritdoc} + */ + public function getAuthorizationUri(array $additionalParameters = array()) + { + $parameters = array_merge( + $additionalParameters, + array( + 'client_id' => $this->credentials->getConsumerId(), + 'redirect_uri' => $this->credentials->getCallbackUrl(), + 'response_type' => 'code', + ) + ); + + $parameters['scope'] = implode(' ', $this->scopes); + + // Build the url + $url = clone $this->getAuthorizationEndpoint(); + foreach ($parameters as $key => $val) { + $url->addToQuery($key, $val); + } + + return $url; + } + + /** + * {@inheritdoc} + */ + public function getAuthorizationEndpoint() + { + return new Uri('https://jawbone.com/auth/oauth2/auth'); + } + + /** + * {@inheritdoc} + */ + public function getAccessTokenEndpoint() + { + return new Uri('https://jawbone.com/auth/oauth2/token'); + } + + /** + * {@inheritdoc} + */ + protected function getAuthorizationMethod() + { + return static::AUTHORIZATION_METHOD_HEADER_BEARER; + } + + /** + * {@inheritdoc} + */ + protected function parseAccessTokenResponse($responseBody) + { + $data = json_decode($responseBody, true); + + if (null === $data || !is_array($data)) { + throw new TokenResponseException('Unable to parse response.'); + } elseif (isset($data['error'])) { + throw new TokenResponseException('Error in retrieving token: "' . $data['error'] . '"'); + } + + $token = new StdOAuth2Token(); + $token->setAccessToken($data['access_token']); + $token->setLifeTime($data['expires_in']); + + if (isset($data['refresh_token'])) { + $token->setRefreshToken($data['refresh_token']); + unset($data['refresh_token']); + } + + unset($data['access_token']); + unset($data['expires_in']); + + $token->setExtraParams($data); + + return $token; + } +} diff --git a/htdocs/includes/OAuth/OAuth2/Service/Linkedin.php b/htdocs/includes/OAuth/OAuth2/Service/Linkedin.php new file mode 100644 index 00000000000..9c0674c5142 --- /dev/null +++ b/htdocs/includes/OAuth/OAuth2/Service/Linkedin.php @@ -0,0 +1,103 @@ + + * @link http://developer.linkedin.com/documents/authentication + */ +class Linkedin extends AbstractService +{ + /** + * Defined scopes + * @link http://developer.linkedin.com/documents/authentication#granting + */ + const SCOPE_R_BASICPROFILE = 'r_basicprofile'; + const SCOPE_R_FULLPROFILE = 'r_fullprofile'; + const SCOPE_R_EMAILADDRESS = 'r_emailaddress'; + const SCOPE_R_NETWORK = 'r_network'; + const SCOPE_R_CONTACTINFO = 'r_contactinfo'; + const SCOPE_RW_NUS = 'rw_nus'; + const SCOPE_RW_COMPANY_ADMIN = 'rw_company_admin'; + const SCOPE_RW_GROUPS = 'rw_groups'; + const SCOPE_W_MESSAGES = 'w_messages'; + const SCOPE_W_SHARE = 'w_share'; + + public function __construct( + CredentialsInterface $credentials, + ClientInterface $httpClient, + TokenStorageInterface $storage, + $scopes = array(), + UriInterface $baseApiUri = null + ) { + parent::__construct($credentials, $httpClient, $storage, $scopes, $baseApiUri, true); + + if (null === $baseApiUri) { + $this->baseApiUri = new Uri('https://api.linkedin.com/v1/'); + } + } + + /** + * {@inheritdoc} + */ + public function getAuthorizationEndpoint() + { + return new Uri('https://www.linkedin.com/uas/oauth2/authorization'); + } + + /** + * {@inheritdoc} + */ + public function getAccessTokenEndpoint() + { + return new Uri('https://www.linkedin.com/uas/oauth2/accessToken'); + } + + /** + * {@inheritdoc} + */ + protected function getAuthorizationMethod() + { + return static::AUTHORIZATION_METHOD_QUERY_STRING_V2; + } + + /** + * {@inheritdoc} + */ + protected function parseAccessTokenResponse($responseBody) + { + $data = json_decode($responseBody, true); + + if (null === $data || !is_array($data)) { + throw new TokenResponseException('Unable to parse response.'); + } elseif (isset($data['error'])) { + throw new TokenResponseException('Error in retrieving token: "' . $data['error'] . '"'); + } + + $token = new StdOAuth2Token(); + $token->setAccessToken($data['access_token']); + $token->setLifeTime($data['expires_in']); + + if (isset($data['refresh_token'])) { + $token->setRefreshToken($data['refresh_token']); + unset($data['refresh_token']); + } + + unset($data['access_token']); + unset($data['expires_in']); + + $token->setExtraParams($data); + + return $token; + } +} diff --git a/htdocs/includes/OAuth/OAuth2/Service/Mailchimp.php b/htdocs/includes/OAuth/OAuth2/Service/Mailchimp.php new file mode 100644 index 00000000000..842153de2e7 --- /dev/null +++ b/htdocs/includes/OAuth/OAuth2/Service/Mailchimp.php @@ -0,0 +1,114 @@ +baseApiUri) && $storage->hasAccessToken($this->service())) { + $this->setBaseApiUri($storage->retrieveAccessToken($this->service())); + } + } + + /** + * {@inheritdoc} + */ + protected function getAuthorizationMethod() + { + return static::AUTHORIZATION_METHOD_QUERY_STRING_V3; + } + + /** + * {@inheritdoc} + */ + public function getAuthorizationEndpoint() + { + return new Uri('https://login.mailchimp.com/oauth2/authorize'); + } + + /** + * {@inheritdoc} + */ + public function getAccessTokenEndpoint() + { + return new Uri('https://login.mailchimp.com/oauth2/token'); + } + + /** + * {@inheritdoc} + */ + protected function parseAccessTokenResponse($responseBody) + { + // Parse JSON + $data = json_decode($responseBody, true); + + // Do validation. + if (null === $data || !is_array($data)) { + throw new TokenResponseException('Unable to parse response.'); + } elseif (isset($data['error'])) { + throw new TokenResponseException('Error in retrieving token: "' . $data['error'] . '"'); + } + + // Create token object. + $token = new StdOAuth2Token($data['access_token']); + + // Set the right API endpoint. + $this->setBaseApiUri($token); + + // Mailchimp tokens evidently never expire... + $token->setEndOfLife(StdOAuth2Token::EOL_NEVER_EXPIRES); + + return $token; + } + + /** + * {@inheritdoc} + */ + public function request($path, $method = 'GET', $body = null, array $extraHeaders = array()) + { + if (is_null($this->baseApiUri)) { + $this->setBaseApiUri($this->storage->retrieveAccessToken($this->service())); + } + + return parent::request($path, $method, $body, $extraHeaders); + } + + /** + * Set the right base endpoint. + * + * @param StdOAuth2Token $token + */ + protected function setBaseApiUri(StdOAuth2Token $token) + { + // Make request uri. + $endpoint = 'https://login.mailchimp.com/oauth2/metadata?oauth_token='. $token->getAccessToken(); + + // Grab meta data about the token. + $response = $this->httpClient->retrieveResponse(new Uri($endpoint), array(), array(), 'GET'); + + // Parse JSON. + $meta = json_decode($response, true); + + // Set base api uri. + $this->baseApiUri = new Uri('https://'. $meta['dc'] .'.api.mailchimp.com/2.0/'); + + // Allow chaining. + return $this; + } +} diff --git a/htdocs/includes/OAuth/OAuth2/Service/Microsoft.php b/htdocs/includes/OAuth/OAuth2/Service/Microsoft.php new file mode 100644 index 00000000000..c815b22bd44 --- /dev/null +++ b/htdocs/includes/OAuth/OAuth2/Service/Microsoft.php @@ -0,0 +1,120 @@ +baseApiUri = new Uri('https://apis.live.net/v5.0/'); + } + } + + /** + * {@inheritdoc} + */ + public function getAuthorizationEndpoint() + { + return new Uri('https://login.live.com/oauth20_authorize.srf'); + } + + /** + * {@inheritdoc} + */ + public function getAccessTokenEndpoint() + { + return new Uri('https://login.live.com/oauth20_token.srf'); + } + + /** + * {@inheritdoc} + */ + public function getAuthorizationMethod() + { + return static::AUTHORIZATION_METHOD_QUERY_STRING; + } + + /** + * {@inheritdoc} + */ + protected function parseAccessTokenResponse($responseBody) + { + $data = json_decode($responseBody, true); + + if (null === $data || !is_array($data)) { + throw new TokenResponseException('Unable to parse response.'); + } elseif (isset($data['error'])) { + throw new TokenResponseException('Error in retrieving token: "' . $data['error'] . '"'); + } + + $token = new StdOAuth2Token(); + $token->setAccessToken($data['access_token']); + $token->setLifetime($data['expires_in']); + + if (isset($data['refresh_token'])) { + $token->setRefreshToken($data['refresh_token']); + unset($data['refresh_token']); + } + + unset($data['access_token']); + unset($data['expires_in']); + + $token->setExtraParams($data); + + return $token; + } +} diff --git a/htdocs/includes/OAuth/OAuth2/Service/Nest.php b/htdocs/includes/OAuth/OAuth2/Service/Nest.php new file mode 100644 index 00000000000..7659e4fb74b --- /dev/null +++ b/htdocs/includes/OAuth/OAuth2/Service/Nest.php @@ -0,0 +1,106 @@ + + * @license http://www.opensource.org/licenses/mit-license.html MIT License + * @link https://developer.nest.com/documentation + */ + +namespace OAuth\OAuth2\Service; + +use OAuth\OAuth2\Token\StdOAuth2Token; +use OAuth\Common\Http\Exception\TokenResponseException; +use OAuth\Common\Http\Uri\Uri; +use OAuth\Common\Consumer\CredentialsInterface; +use OAuth\Common\Http\Client\ClientInterface; +use OAuth\Common\Storage\TokenStorageInterface; +use OAuth\Common\Http\Uri\UriInterface; + +/** + * Nest service. + * + * @author Pedro Amorim + * @license http://www.opensource.org/licenses/mit-license.html MIT License + * @link https://developer.nest.com/documentation + */ +class Nest extends AbstractService +{ + + public function __construct( + CredentialsInterface $credentials, + ClientInterface $httpClient, + TokenStorageInterface $storage, + $scopes = array(), + UriInterface $baseApiUri = null + ) { + parent::__construct( + $credentials, + $httpClient, + $storage, + $scopes, + $baseApiUri, + true + ); + + if (null === $baseApiUri) { + $this->baseApiUri = new Uri('https://developer-api.nest.com/'); + } + } + + /** + * {@inheritdoc} + */ + public function getAuthorizationEndpoint() + { + return new Uri('https://home.nest.com/login/oauth2'); + } + + /** + * {@inheritdoc} + */ + public function getAccessTokenEndpoint() + { + return new Uri('https://api.home.nest.com/oauth2/access_token'); + } + + /** + * {@inheritdoc} + */ + protected function getAuthorizationMethod() + { + return static::AUTHORIZATION_METHOD_QUERY_STRING_V4; + } + + /** + * {@inheritdoc} + */ + protected function parseAccessTokenResponse($responseBody) + { + $data = json_decode($responseBody, true); + + if (null === $data || !is_array($data)) { + throw new TokenResponseException('Unable to parse response.'); + } elseif (isset($data['error'])) { + throw new TokenResponseException( + 'Error in retrieving token: "' . $data['error'] . '"' + ); + } + + $token = new StdOAuth2Token(); + $token->setAccessToken($data['access_token']); + $token->setLifeTime($data['expires_in']); + + if (isset($data['refresh_token'])) { + $token->setRefreshToken($data['refresh_token']); + unset($data['refresh_token']); + } + + unset($data['access_token']); + unset($data['expires_in']); + + $token->setExtraParams($data); + + return $token; + } +} diff --git a/htdocs/includes/OAuth/OAuth2/Service/Netatmo.php b/htdocs/includes/OAuth/OAuth2/Service/Netatmo.php new file mode 100644 index 00000000000..eb5c68d9eb6 --- /dev/null +++ b/htdocs/includes/OAuth/OAuth2/Service/Netatmo.php @@ -0,0 +1,117 @@ + + * @license http://www.opensource.org/licenses/mit-license.html MIT License + * @link https://dev.netatmo.com/doc/ + */ + +namespace OAuth\OAuth2\Service; + +use OAuth\OAuth2\Token\StdOAuth2Token; +use OAuth\Common\Http\Exception\TokenResponseException; +use OAuth\Common\Http\Uri\Uri; +use OAuth\Common\Consumer\CredentialsInterface; +use OAuth\Common\Http\Client\ClientInterface; +use OAuth\Common\Storage\TokenStorageInterface; +use OAuth\Common\Http\Uri\UriInterface; + +/** + * Netatmo service. + * + * @author Pedro Amorim + * @license http://www.opensource.org/licenses/mit-license.html MIT License + * @link https://dev.netatmo.com/doc/ + */ +class Netatmo extends AbstractService +{ + + // SCOPES + // @link https://dev.netatmo.com/doc/authentication/scopes + + // Used to read weather station's data (devicelist, getmeasure) + const SCOPE_STATION_READ = 'read_station'; + // Used to read thermostat's data (devicelist, getmeasure, getthermstate) + const SCOPE_THERMOSTAT_READ = 'read_thermostat'; + // Used to configure the thermostat (syncschedule, setthermpoint) + const SCOPE_THERMOSTAT_WRITE = 'write_thermostat'; + + public function __construct( + CredentialsInterface $credentials, + ClientInterface $httpClient, + TokenStorageInterface $storage, + $scopes = array(), + UriInterface $baseApiUri = null + ) { + parent::__construct( + $credentials, + $httpClient, + $storage, + $scopes, + $baseApiUri, + true // use parameter state + ); + + if (null === $baseApiUri) { + $this->baseApiUri = new Uri('https://api.netatmo.net/'); + } + } + + /** + * {@inheritdoc} + */ + public function getAuthorizationEndpoint() + { + return new Uri($this->baseApiUri.'oauth2/authorize'); + + } + + /** + * {@inheritdoc} + */ + public function getAccessTokenEndpoint() + { + return new Uri($this->baseApiUri.'oauth2/token'); + } + + /** + * {@inheritdoc} + */ + protected function getAuthorizationMethod() + { + return static::AUTHORIZATION_METHOD_QUERY_STRING; + } + + /** + * {@inheritdoc} + */ + protected function parseAccessTokenResponse($responseBody) + { + $data = json_decode($responseBody, true); + + if (null === $data || !is_array($data)) { + throw new TokenResponseException('Unable to parse response.'); + } elseif (isset($data['error'])) { + throw new TokenResponseException( + 'Error in retrieving token: "' . $data['error'] . '"' + ); + } + + $token = new StdOAuth2Token(); + $token->setAccessToken($data['access_token']); + $token->setLifetime($data['expires_in']); + + if (isset($data['refresh_token'])) { + $token->setRefreshToken($data['refresh_token']); + unset($data['refresh_token']); + } + + unset($data['access_token']); + unset($data['expires_in']); + + $token->setExtraParams($data); + + return $token; + } +} diff --git a/htdocs/includes/OAuth/OAuth2/Service/ParrotFlowerPower.php b/htdocs/includes/OAuth/OAuth2/Service/ParrotFlowerPower.php new file mode 100644 index 00000000000..78ef94257c0 --- /dev/null +++ b/htdocs/includes/OAuth/OAuth2/Service/ParrotFlowerPower.php @@ -0,0 +1,142 @@ + + * @license http://www.opensource.org/licenses/mit-license.html MIT License + * @link https://flowerpowerdev.parrot.com/projects/flower-power-web-service-api/wiki + */ + +namespace OAuth\OAuth2\Service; + +use OAuth\OAuth2\Token\StdOAuth2Token; +use OAuth\Common\Http\Exception\TokenResponseException; +use OAuth\Common\Http\Uri\Uri; +use OAuth\Common\Consumer\CredentialsInterface; +use OAuth\Common\Http\Client\ClientInterface; +use OAuth\Common\Storage\TokenStorageInterface; +use OAuth\Common\Http\Uri\UriInterface; +use OAuth\OAuth2\Service\Exception\MissingRefreshTokenException; +use OAuth\Common\Token\TokenInterface; + +/** + * ParrotFlowerPower service. + * + * @author Pedro Amorim + * @license http://www.opensource.org/licenses/mit-license.html MIT License + * @link https://flowerpowerdev.parrot.com/projects/flower-power-web-service-api/wiki + */ +class ParrotFlowerPower extends AbstractService +{ + + public function __construct( + CredentialsInterface $credentials, + ClientInterface $httpClient, + TokenStorageInterface $storage, + $scopes = array(), + UriInterface $baseApiUri = null + ) { + parent::__construct( + $credentials, + $httpClient, + $storage, + $scopes, + $baseApiUri, + true + ); + + if (null === $baseApiUri) { + $this->baseApiUri = new Uri('https://apiflowerpower.parrot.com/'); + } + } + + /** + * {@inheritdoc} + */ + public function getAuthorizationEndpoint() + { + return new Uri($this->baseApiUri.'oauth2/v1/authorize'); + + } + + /** + * {@inheritdoc} + */ + public function getAccessTokenEndpoint() + { + return new Uri($this->baseApiUri.'user/v1/authenticate'); + } + + /** + * {@inheritdoc} + */ + protected function getAuthorizationMethod() + { + return static::AUTHORIZATION_METHOD_HEADER_BEARER; + } + + /** + * {@inheritdoc} + */ + protected function parseAccessTokenResponse($responseBody) + { + $data = json_decode($responseBody, true); + + if (null === $data || !is_array($data)) { + throw new TokenResponseException('Unable to parse response.'); + } elseif (isset($data['error'])) { + throw new TokenResponseException( + 'Error in retrieving token: "' . $data['error'] . '"' + ); + } + + $token = new StdOAuth2Token(); + $token->setAccessToken($data['access_token']); + $token->setLifetime($data['expires_in']); + + if (isset($data['refresh_token'])) { + $token->setRefreshToken($data['refresh_token']); + unset($data['refresh_token']); + } + + unset($data['access_token']); + unset($data['expires_in']); + + $token->setExtraParams($data); + + return $token; + } + + + /** + * Parrot use a different endpoint for refresh a token + * + * {@inheritdoc} + */ + public function refreshAccessToken(TokenInterface $token) + { + $refreshToken = $token->getRefreshToken(); + + if (empty($refreshToken)) { + throw new MissingRefreshTokenException(); + } + + $parameters = array( + 'grant_type' => 'refresh_token', + 'type' => 'web_server', + 'client_id' => $this->credentials->getConsumerId(), + 'client_secret' => $this->credentials->getConsumerSecret(), + 'refresh_token' => $refreshToken, + ); + + $responseBody = $this->httpClient->retrieveResponse( + new Uri($this->baseApiUri.'user/v1/refresh'), + $parameters, + $this->getExtraOAuthHeaders() + ); + $token = $this->parseAccessTokenResponse($responseBody); + $this->storage->storeAccessToken($this->service(), $token); + + return $token; + } +} diff --git a/htdocs/includes/OAuth/OAuth2/Service/Paypal.php b/htdocs/includes/OAuth/OAuth2/Service/Paypal.php new file mode 100644 index 00000000000..761c09d6696 --- /dev/null +++ b/htdocs/includes/OAuth/OAuth2/Service/Paypal.php @@ -0,0 +1,103 @@ + + * @link https://developer.paypal.com/webapps/developer/docs/integration/direct/log-in-with-paypal/detailed/ + */ +class Paypal extends AbstractService +{ + /** + * Defined scopes + * @link https://developer.paypal.com/webapps/developer/docs/integration/direct/log-in-with-paypal/detailed/ + * @see #attributes + */ + const SCOPE_OPENID = 'openid'; + const SCOPE_PROFILE = 'profile'; + const SCOPE_PAYPALATTRIBUTES = 'https://uri.paypal.com/services/paypalattributes'; + const SCOPE_EMAIL = 'email'; + const SCOPE_ADDRESS = 'address'; + const SCOPE_PHONE = 'phone'; + const SCOPE_EXPRESSCHECKOUT = 'https://uri.paypal.com/services/expresscheckout'; + + public function __construct( + CredentialsInterface $credentials, + ClientInterface $httpClient, + TokenStorageInterface $storage, + $scopes = array(), + UriInterface $baseApiUri = null + ) { + parent::__construct($credentials, $httpClient, $storage, $scopes, $baseApiUri); + + if (null === $baseApiUri) { + $this->baseApiUri = new Uri('https://api.paypal.com/v1/'); + } + } + + /** + * {@inheritdoc} + */ + public function getAuthorizationEndpoint() + { + return new Uri('https://www.paypal.com/webapps/auth/protocol/openidconnect/v1/authorize'); + } + + /** + * {@inheritdoc} + */ + public function getAccessTokenEndpoint() + { + return new Uri('https://api.paypal.com/v1/identity/openidconnect/tokenservice'); + } + + /** + * {@inheritdoc} + */ + protected function getAuthorizationMethod() + { + return static::AUTHORIZATION_METHOD_HEADER_BEARER; + } + + /** + * {@inheritdoc} + */ + protected function parseAccessTokenResponse($responseBody) + { + $data = json_decode($responseBody, true); + + if (null === $data || !is_array($data)) { + throw new TokenResponseException('Unable to parse response.'); + } elseif (isset($data['message'])) { + throw new TokenResponseException('Error in retrieving token: "' . $data['message'] . '"'); + } elseif (isset($data['name'])) { + throw new TokenResponseException('Error in retrieving token: "' . $data['name'] . '"'); + } + + $token = new StdOAuth2Token(); + $token->setAccessToken($data['access_token']); + $token->setLifeTime($data['expires_in']); + + if (isset($data['refresh_token'])) { + $token->setRefreshToken($data['refresh_token']); + unset($data['refresh_token']); + } + + unset($data['access_token']); + unset($data['expires_in']); + + $token->setExtraParams($data); + + return $token; + } +} diff --git a/htdocs/includes/OAuth/OAuth2/Service/Pocket.php b/htdocs/includes/OAuth/OAuth2/Service/Pocket.php new file mode 100644 index 00000000000..8c955440e27 --- /dev/null +++ b/htdocs/includes/OAuth/OAuth2/Service/Pocket.php @@ -0,0 +1,125 @@ +baseApiUri = new Uri('https://getpocket.com/v3/'); + } + } + + public function getRequestTokenEndpoint() + { + return new Uri('https://getpocket.com/v3/oauth/request'); + } + + public function getAuthorizationEndpoint() + { + return new Uri('https://getpocket.com/auth/authorize'); + } + + public function getAccessTokenEndpoint() + { + return new Uri('https://getpocket.com/v3/oauth/authorize'); + } + + public function getAuthorizationUri(array $additionalParameters = array()) + { + $parameters = array_merge( + $additionalParameters, + array( + 'redirect_uri' => $this->credentials->getCallbackUrl(), + ) + ); + + // Build the url + $url = clone $this->getAuthorizationEndpoint(); + foreach ($parameters as $key => $val) { + $url->addToQuery($key, $val); + } + + return $url; + } + + public function requestRequestToken() + { + $responseBody = $this->httpClient->retrieveResponse( + $this->getRequestTokenEndpoint(), + array( + 'consumer_key' => $this->credentials->getConsumerId(), + 'redirect_uri' => $this->credentials->getCallbackUrl(), + ) + ); + + $code = $this->parseRequestTokenResponse($responseBody); + + return $code; + } + + protected function parseRequestTokenResponse($responseBody) + { + parse_str($responseBody, $data); + + if (null === $data || !is_array($data)) { + throw new TokenResponseException('Unable to parse response.'); + } elseif (!isset($data['code'])) { + throw new TokenResponseException('Error in retrieving code.'); + } + return $data['code']; + } + + public function requestAccessToken($code) + { + $bodyParams = array( + 'consumer_key' => $this->credentials->getConsumerId(), + 'code' => $code, + ); + + $responseBody = $this->httpClient->retrieveResponse( + $this->getAccessTokenEndpoint(), + $bodyParams, + $this->getExtraOAuthHeaders() + ); + $token = $this->parseAccessTokenResponse($responseBody); + $this->storage->storeAccessToken($this->service(), $token); + + return $token; + } + + protected function parseAccessTokenResponse($responseBody) + { + parse_str($responseBody, $data); + + if ($data === null || !is_array($data)) { + throw new TokenResponseException('Unable to parse response.'); + } elseif (isset($data['error'])) { + throw new TokenResponseException('Error in retrieving token: "' . $data['error'] . '"'); + } + + $token = new StdOAuth2Token(); + #$token->setRequestToken($data['access_token']); + $token->setAccessToken($data['access_token']); + $token->setEndOfLife(StdOAuth2Token::EOL_NEVER_EXPIRES); + unset($data['access_token']); + $token->setExtraParams($data); + + return $token; + } +} diff --git a/htdocs/includes/OAuth/OAuth2/Service/Reddit.php b/htdocs/includes/OAuth/OAuth2/Service/Reddit.php new file mode 100644 index 00000000000..9e524d12144 --- /dev/null +++ b/htdocs/includes/OAuth/OAuth2/Service/Reddit.php @@ -0,0 +1,114 @@ +baseApiUri = new Uri('https://oauth.reddit.com'); + } + } + + /** + * {@inheritdoc} + */ + public function getAuthorizationEndpoint() + { + return new Uri('https://ssl.reddit.com/api/v1/authorize'); + } + + /** + * {@inheritdoc} + */ + public function getAccessTokenEndpoint() + { + return new Uri('https://ssl.reddit.com/api/v1/access_token'); + } + + /** + * {@inheritdoc} + */ + protected function getAuthorizationMethod() + { + return static::AUTHORIZATION_METHOD_HEADER_BEARER; + } + + /** + * {@inheritdoc} + */ + protected function parseAccessTokenResponse($responseBody) + { + $data = json_decode($responseBody, true); + + if (null === $data || !is_array($data)) { + throw new TokenResponseException('Unable to parse response.'); + } elseif (isset($data['error'])) { + throw new TokenResponseException('Error in retrieving token: "' . $data['error'] . '"'); + } + + $token = new StdOAuth2Token(); + $token->setAccessToken($data['access_token']); + $token->setLifeTime($data['expires_in']); + + if (isset($data['refresh_token'])) { + $token->setRefreshToken($data['refresh_token']); + unset($data['refresh_token']); + } + + unset($data['access_token']); + unset($data['expires_in']); + + $token->setExtraParams($data); + + return $token; + } + + /** + * {@inheritdoc} + */ + protected function getExtraOAuthHeaders() + { + // Reddit uses a Basic OAuth header + return array('Authorization' => 'Basic ' . + base64_encode($this->credentials->getConsumerId() . ':' . $this->credentials->getConsumerSecret())); + } +} diff --git a/htdocs/includes/OAuth/OAuth2/Service/RunKeeper.php b/htdocs/includes/OAuth/OAuth2/Service/RunKeeper.php new file mode 100644 index 00000000000..715840767fe --- /dev/null +++ b/htdocs/includes/OAuth/OAuth2/Service/RunKeeper.php @@ -0,0 +1,105 @@ +baseApiUri = new Uri('https://api.runkeeper.com/'); + } + } + + /** + * {@inheritdoc} + */ + public function getAuthorizationUri(array $additionalParameters = array()) + { + $parameters = array_merge( + $additionalParameters, + array( + 'client_id' => $this->credentials->getConsumerId(), + 'redirect_uri' => $this->credentials->getCallbackUrl(), + 'response_type' => 'code', + ) + ); + + $parameters['scope'] = implode(' ', $this->scopes); + + // Build the url + $url = clone $this->getAuthorizationEndpoint(); + foreach ($parameters as $key => $val) { + $url->addToQuery($key, $val); + } + + return $url; + } + + /** + * {@inheritdoc} + */ + public function getAuthorizationEndpoint() + { + return new Uri('https://runkeeper.com/apps/authorize'); + } + + /** + * {@inheritdoc} + */ + public function getAccessTokenEndpoint() + { + return new Uri('https://runkeeper.com/apps/token'); + } + + /** + * {@inheritdoc} + */ + protected function getAuthorizationMethod() + { + return static::AUTHORIZATION_METHOD_HEADER_BEARER; + } + + /** + * {@inheritdoc} + */ + protected function parseAccessTokenResponse($responseBody) + { + $data = json_decode($responseBody, true); + + if (null === $data || !is_array($data)) { + throw new TokenResponseException('Unable to parse response.'); + } elseif (isset($data['error'])) { + throw new TokenResponseException('Error in retrieving token: "' . $data['error'] . '"'); + } + + $token = new StdOAuth2Token(); + $token->setAccessToken($data['access_token']); + + unset($data['access_token']); + + $token->setExtraParams($data); + + return $token; + } +} diff --git a/htdocs/includes/OAuth/OAuth2/Service/Salesforce.php b/htdocs/includes/OAuth/OAuth2/Service/Salesforce.php new file mode 100644 index 00000000000..a50de1123a4 --- /dev/null +++ b/htdocs/includes/OAuth/OAuth2/Service/Salesforce.php @@ -0,0 +1,92 @@ +parseAccessTokenResponse($responseBody); + } + + /** + * {@inheritdoc} + */ + protected function parseAccessTokenResponse($responseBody) + { + $data = json_decode($responseBody, true); + + if (null === $data || !is_array($data)) { + throw new TokenResponseException('Unable to parse response.'); + } elseif (isset($data['error'])) { + throw new TokenResponseException('Error in retrieving token: "' . $data['error'] . '"'); + } + + $token = new StdOAuth2Token(); + $token->setAccessToken($data['access_token']); + // Salesforce tokens evidently never expire... + $token->setEndOfLife(StdOAuth2Token::EOL_NEVER_EXPIRES); + unset($data['access_token']); + + if (isset($data['refresh_token'])) { + $token->setRefreshToken($data['refresh_token']); + unset($data['refresh_token']); + } + + $token->setExtraParams($data); + + return $token; + } + + /** + * {@inheritdoc} + */ + protected function getExtraOAuthHeaders() + { + return array('Accept' => 'application/json'); + } +} diff --git a/htdocs/includes/OAuth/OAuth2/Service/ServiceInterface.php b/htdocs/includes/OAuth/OAuth2/Service/ServiceInterface.php new file mode 100644 index 00000000000..e689a4c0d3a --- /dev/null +++ b/htdocs/includes/OAuth/OAuth2/Service/ServiceInterface.php @@ -0,0 +1,38 @@ +baseApiUri = new Uri('https://api.soundcloud.com/'); + } + } + + /** + * {@inheritdoc} + */ + public function getAuthorizationEndpoint() + { + return new Uri('https://soundcloud.com/connect'); + } + + /** + * {@inheritdoc} + */ + public function getAccessTokenEndpoint() + { + return new Uri('https://api.soundcloud.com/oauth2/token'); + } + + /** + * {@inheritdoc} + */ + protected function parseAccessTokenResponse($responseBody) + { + $data = json_decode($responseBody, true); + + if (null === $data || !is_array($data)) { + throw new TokenResponseException('Unable to parse response.'); + } elseif (isset($data['error'])) { + throw new TokenResponseException('Error in retrieving token: "' . $data['error'] . '"'); + } + + $token = new StdOAuth2Token(); + $token->setAccessToken($data['access_token']); + + if (isset($data['expires_in'])) { + $token->setLifetime($data['expires_in']); + unset($data['expires_in']); + } + + if (isset($data['refresh_token'])) { + $token->setRefreshToken($data['refresh_token']); + unset($data['refresh_token']); + } + + unset($data['access_token']); + + $token->setExtraParams($data); + + return $token; + } +} diff --git a/htdocs/includes/OAuth/OAuth2/Service/Spotify.php b/htdocs/includes/OAuth/OAuth2/Service/Spotify.php new file mode 100644 index 00000000000..5baf7aef7ae --- /dev/null +++ b/htdocs/includes/OAuth/OAuth2/Service/Spotify.php @@ -0,0 +1,109 @@ +baseApiUri = new Uri('https://api.spotify.com/v1/'); + } + } + + /** + * {@inheritdoc} + */ + public function getAuthorizationEndpoint() + { + return new Uri('https://accounts.spotify.com/authorize'); + } + + /** + * {@inheritdoc} + */ + public function getAccessTokenEndpoint() + { + return new Uri('https://accounts.spotify.com/api/token'); + } + + /** + * {@inheritdoc} + */ + protected function getAuthorizationMethod() + { + return static::AUTHORIZATION_METHOD_HEADER_BEARER; + } + + /** + * {@inheritdoc} + */ + protected function parseAccessTokenResponse($responseBody) + { + $data = json_decode($responseBody, true); + + if (null === $data || !is_array($data)) { + throw new TokenResponseException('Unable to parse response.'); + } elseif (isset($data['error'])) { + throw new TokenResponseException('Error in retrieving token: "' . $data['error'] . '"'); + } + + + $token = new StdOAuth2Token(); + $token->setAccessToken($data['access_token']); + + if (isset($data['expires_in'])) { + $token->setLifetime($data['expires_in']); + unset($data['expires_in']); + } + + if (isset($data['refresh_token'])) { + $token->setRefreshToken($data['refresh_token']); + unset($data['refresh_token']); + } + + unset($data['access_token']); + + $token->setExtraParams($data); + + return $token; + } + + /** + * {@inheritdoc} + */ + protected function getExtraOAuthHeaders() + { + return array('Authorization' => 'Basic ' . + base64_encode($this->credentials->getConsumerId() . ':' . $this->credentials->getConsumerSecret())); + } +} diff --git a/htdocs/includes/OAuth/OAuth2/Service/Strava.php b/htdocs/includes/OAuth/OAuth2/Service/Strava.php new file mode 100644 index 00000000000..208ec635913 --- /dev/null +++ b/htdocs/includes/OAuth/OAuth2/Service/Strava.php @@ -0,0 +1,147 @@ + + * @license http://www.opensource.org/licenses/mit-license.html MIT License + * @link http://strava.github.io/ + * @link http://strava.github.io/api/v3/oauth/ + */ + +namespace OAuth\OAuth2\Service; + +use OAuth\OAuth2\Token\StdOAuth2Token; +use OAuth\Common\Http\Exception\TokenResponseException; +use OAuth\Common\Http\Uri\Uri; +use OAuth\Common\Consumer\CredentialsInterface; +use OAuth\Common\Http\Client\ClientInterface; +use OAuth\Common\Storage\TokenStorageInterface; +use OAuth\Common\Http\Uri\UriInterface; +use OAuth\OAuth2\Service\Exception\InvalidAccessTypeException; + +/** + * Strava service. + * + * @author Pedro Amorim + * @license http://www.opensource.org/licenses/mit-license.html MIT License + * @link http://strava.github.io/ + * @link http://strava.github.io/api/v3/oauth/ + */ +class Strava extends AbstractService +{ + /** + * Scopes + */ + // default + const SCOPE_PUBLIC = 'public'; + // Modify activities, upload on the user’s behalf + const SCOPE_WRITE = 'write'; + // View private activities and data within privacy zones + const SCOPE_VIEW_PRIVATE = 'view_private'; + + protected $approvalPrompt = 'auto'; + + public function __construct( + CredentialsInterface $credentials, + ClientInterface $httpClient, + TokenStorageInterface $storage, + $scopes = array(), + UriInterface $baseApiUri = null + ) { + if (empty($scopes)) { + $scopes = array(self::SCOPE_PUBLIC); + } + + parent::__construct( + $credentials, + $httpClient, + $storage, + $scopes, + $baseApiUri, + true + ); + + if (null === $baseApiUri) { + $this->baseApiUri = new Uri('https://www.strava.com/api/v3/'); + } + } + + /** + * {@inheritdoc} + */ + public function getAuthorizationEndpoint() + { + return new Uri('https://www.strava.com/oauth/authorize?approval_prompt=' . $this->approvalPrompt); + } + + /** + * {@inheritdoc} + */ + public function getAccessTokenEndpoint() + { + return new Uri('https://www.strava.com/oauth/token'); + } + + /** + * {@inheritdoc} + */ + protected function getAuthorizationMethod() + { + return static::AUTHORIZATION_METHOD_HEADER_BEARER; + } + + /** + * {@inheritdoc} + */ + protected function parseAccessTokenResponse($responseBody) + { + $data = json_decode($responseBody, true); + + if (null === $data || !is_array($data)) { + throw new TokenResponseException('Unable to parse response.'); + } elseif (isset($data['error_description'])) { + throw new TokenResponseException( + 'Error in retrieving token: "' . $data['error_description'] . '"' + ); + } elseif (isset($data['error'])) { + throw new TokenResponseException( + 'Error in retrieving token: "' . $data['error'] . '"' + ); + } + + $token = new StdOAuth2Token(); + $token->setAccessToken($data['access_token']); + + if (isset($data['expires_in'])) { + $token->setLifeTime($data['expires_in']); + unset($data['expires_in']); + } + if (isset($data['refresh_token'])) { + $token->setRefreshToken($data['refresh_token']); + unset($data['refresh_token']); + } + + unset($data['access_token']); + + $token->setExtraParams($data); + + return $token; + } + + public function setApprouvalPrompt($prompt) + { + if (!in_array($prompt, array('auto', 'force'), true)) { + // @todo Maybe could we rename this exception + throw new InvalidAccessTypeException('Invalid approuvalPrompt, expected either auto or force.'); + } + $this->approvalPrompt = $prompt; + } + + /** + * {@inheritdoc} + */ + protected function getScopesDelimiter() + { + return ','; + } +} diff --git a/htdocs/includes/OAuth/OAuth2/Service/Ustream.php b/htdocs/includes/OAuth/OAuth2/Service/Ustream.php new file mode 100644 index 00000000000..7e5581532a3 --- /dev/null +++ b/htdocs/includes/OAuth/OAuth2/Service/Ustream.php @@ -0,0 +1,98 @@ +baseApiUri = new Uri('https://api.ustream.tv/'); + } + } + + /** + * {@inheritdoc} + */ + public function getAuthorizationEndpoint() + { + return new Uri('https://www.ustream.tv/oauth2/authorize'); + } + + /** + * {@inheritdoc} + */ + public function getAccessTokenEndpoint() + { + return new Uri('https://www.ustream.tv/oauth2/token'); + } + + /** + * {@inheritdoc} + */ + protected function getAuthorizationMethod() + { + return static::AUTHORIZATION_METHOD_HEADER_BEARER; + } + + /** + * {@inheritdoc} + */ + protected function parseAccessTokenResponse($responseBody) + { + $data = json_decode($responseBody, true); + + if (null === $data || !is_array($data)) { + throw new TokenResponseException('Unable to parse response.'); + } elseif (isset($data['error'])) { + throw new TokenResponseException('Error in retrieving token: "' . $data['error'] . '"'); + } + + $token = new StdOAuth2Token(); + $token->setAccessToken($data['access_token']); + $token->setLifeTime($data['expires_in']); + + if (isset($data['refresh_token'])) { + $token->setRefreshToken($data['refresh_token']); + unset($data['refresh_token']); + } + + unset($data['access_token']); + unset($data['expires_in']); + + $token->setExtraParams($data); + + return $token; + } + + /** + * {@inheritdoc} + */ + protected function getExtraOAuthHeaders() + { + return array('Authorization' => 'Basic ' . $this->credentials->getConsumerSecret()); + } +} diff --git a/htdocs/includes/OAuth/OAuth2/Service/Vimeo.php b/htdocs/includes/OAuth/OAuth2/Service/Vimeo.php new file mode 100644 index 00000000000..2efe6b254ba --- /dev/null +++ b/htdocs/includes/OAuth/OAuth2/Service/Vimeo.php @@ -0,0 +1,156 @@ + + * @license http://www.opensource.org/licenses/mit-license.html MIT License + * @link https://developer.vimeo.com/ + * @link https://developer.vimeo.com/api/authentication + */ + +namespace OAuth\OAuth2\Service; + +use OAuth\OAuth2\Token\StdOAuth2Token; +use OAuth\Common\Http\Exception\TokenResponseException; +use OAuth\Common\Http\Uri\Uri; +use OAuth\Common\Consumer\CredentialsInterface; +use OAuth\Common\Http\Client\ClientInterface; +use OAuth\Common\Storage\TokenStorageInterface; +use OAuth\Common\Http\Uri\UriInterface; + +/** + * Vimeo service. + * + * @author Pedro Amorim + * @license http://www.opensource.org/licenses/mit-license.html MIT License + * @link https://developer.vimeo.com/ + * @link https://developer.vimeo.com/api/authentication + */ +class Vimeo extends AbstractService +{ + // API version + const VERSION = '3.2'; + // API Header Accept + const HEADER_ACCEPT = 'application/vnd.vimeo.*+json;version=3.2'; + + /** + * Scopes + * @see https://developer.vimeo.com/api/authentication#scope + */ + // View public videos + const SCOPE_PUBLIC = 'public'; + // View private videos + const SCOPE_PRIVATE = 'private'; + // View Vimeo On Demand purchase history + const SCOPE_PURCHASED = 'purchased'; + // Create new videos, groups, albums, etc. + const SCOPE_CREATE = 'create'; + // Edit videos, groups, albums, etc. + const SCOPE_EDIT = 'edit'; + // Delete videos, groups, albums, etc. + const SCOPE_DELETE = 'delete'; + // Interact with a video on behalf of a user, such as liking + // a video or adding it to your watch later queue + const SCOPE_INTERACT = 'interact'; + // Upload a video + const SCOPE_UPLOAD = 'upload'; + + public function __construct( + CredentialsInterface $credentials, + ClientInterface $httpClient, + TokenStorageInterface $storage, + $scopes = array(), + UriInterface $baseApiUri = null + ) { + parent::__construct( + $credentials, + $httpClient, + $storage, + $scopes, + $baseApiUri, + true + ); + + if (null === $baseApiUri) { + $this->baseApiUri = new Uri('https://api.vimeo.com/'); + } + } + + /** + * {@inheritdoc} + */ + public function getAuthorizationEndpoint() + { + return new Uri('https://api.vimeo.com/oauth/authorize'); + } + + /** + * {@inheritdoc} + */ + public function getAccessTokenEndpoint() + { + return new Uri('https://api.vimeo.com/oauth/access_token'); + } + + /** + * {@inheritdoc} + */ + protected function getAuthorizationMethod() + { + return static::AUTHORIZATION_METHOD_HEADER_BEARER; + } + + /** + * {@inheritdoc} + */ + protected function parseAccessTokenResponse($responseBody) + { + $data = json_decode($responseBody, true); + + if (null === $data || !is_array($data)) { + throw new TokenResponseException('Unable to parse response.'); + } elseif (isset($data['error_description'])) { + throw new TokenResponseException( + 'Error in retrieving token: "' . $data['error_description'] . '"' + ); + } elseif (isset($data['error'])) { + throw new TokenResponseException( + 'Error in retrieving token: "' . $data['error'] . '"' + ); + } + + $token = new StdOAuth2Token(); + $token->setAccessToken($data['access_token']); + + if (isset($data['expires_in'])) { + $token->setLifeTime($data['expires_in']); + unset($data['expires_in']); + } + if (isset($data['refresh_token'])) { + $token->setRefreshToken($data['refresh_token']); + unset($data['refresh_token']); + } + + unset($data['access_token']); + + $token->setExtraParams($data); + + return $token; + } + + /** + * {@inheritdoc} + */ + protected function getExtraOAuthHeaders() + { + return array('Accept' => self::HEADER_ACCEPT); + } + + /** + * {@inheritdoc} + */ + protected function getExtraApiHeaders() + { + return array('Accept' => self::HEADER_ACCEPT); + } +} diff --git a/htdocs/includes/OAuth/OAuth2/Service/Vkontakte.php b/htdocs/includes/OAuth/OAuth2/Service/Vkontakte.php new file mode 100644 index 00000000000..4a7744ecad7 --- /dev/null +++ b/htdocs/includes/OAuth/OAuth2/Service/Vkontakte.php @@ -0,0 +1,109 @@ +baseApiUri = new Uri('https://api.vk.com/method/'); + } + } + + /** + * {@inheritdoc} + */ + public function getAuthorizationEndpoint() + { + return new Uri('https://oauth.vk.com/authorize'); + } + + /** + * {@inheritdoc} + */ + public function getAccessTokenEndpoint() + { + return new Uri('https://oauth.vk.com/access_token'); + } + + /** + * {@inheritdoc} + */ + protected function parseAccessTokenResponse($responseBody) + { + $data = json_decode($responseBody, true); + + if (null === $data || !is_array($data)) { + throw new TokenResponseException('Unable to parse response.'); + } elseif (isset($data['error'])) { + throw new TokenResponseException('Error in retrieving token: "' . $data['error'] . '"'); + } + + $token = new StdOAuth2Token(); + $token->setAccessToken($data['access_token']); + $token->setLifeTime($data['expires_in']); + + if (isset($data['refresh_token'])) { + $token->setRefreshToken($data['refresh_token']); + unset($data['refresh_token']); + } + + unset($data['access_token']); + unset($data['expires_in']); + + $token->setExtraParams($data); + + return $token; + } + + /** + * {@inheritdoc} + */ + protected function getAuthorizationMethod() + { + return static::AUTHORIZATION_METHOD_QUERY_STRING; + } +} diff --git a/htdocs/includes/OAuth/OAuth2/Service/Yahoo.php b/htdocs/includes/OAuth/OAuth2/Service/Yahoo.php new file mode 100644 index 00000000000..270e240325e --- /dev/null +++ b/htdocs/includes/OAuth/OAuth2/Service/Yahoo.php @@ -0,0 +1,78 @@ +setAccessToken($data['access_token']); + $token->setLifetime($data['expires_in']); + + if (isset($data['refresh_token'])) + { + $token->setRefreshToken($data['refresh_token']); + unset($data['refresh_token']); + } + + unset($data['access_token']); + unset($data['expires_in']); + + $token->setExtraParams($data); + + return $token; + } + + /** + * {@inheritdoc} + */ + protected function getExtraOAuthHeaders() + { + $encodedCredentials = base64_encode($this->credentials->getConsumerId() . ':' . $this->credentials->getConsumerSecret()); + return array('Authorization' => 'Basic ' . $encodedCredentials); + } + +} diff --git a/htdocs/includes/OAuth/OAuth2/Service/Yammer.php b/htdocs/includes/OAuth/OAuth2/Service/Yammer.php new file mode 100644 index 00000000000..994a2935432 --- /dev/null +++ b/htdocs/includes/OAuth/OAuth2/Service/Yammer.php @@ -0,0 +1,82 @@ +baseApiUri = new Uri('https://www.yammer.com/api/v1/'); + } + } + + /** + * {@inheritdoc} + */ + public function getAuthorizationEndpoint() + { + return new Uri('https://www.yammer.com/dialog/oauth'); + } + + /** + * {@inheritdoc} + */ + public function getAccessTokenEndpoint() + { + return new Uri('https://www.yammer.com/oauth2/access_token.json'); + } + + /** + * {@inheritdoc} + */ + public function getAuthorizationMethod() + { + return static::AUTHORIZATION_METHOD_HEADER_BEARER; + } + + /** + * {@inheritdoc} + */ + protected function parseAccessTokenResponse($responseBody) + { + $data = json_decode($responseBody, true); + + if (null === $data || !is_array($data)) { + throw new TokenResponseException('Unable to parse response.'); + } elseif (isset($data['error'])) { + throw new TokenResponseException('Error in retrieving token: "' . $data['error'] . '"'); + } + + $token = new StdOAuth2Token(); + $token->setAccessToken($data['access_token']['token']); + $token->setLifetime($data['access_token']['expires_at']); + + if (isset($data['refresh_token'])) { + $token->setRefreshToken($data['refresh_token']); + unset($data['refresh_token']); + } + + unset($data['access_token']); + unset($data['expires_in']); + + $token->setExtraParams($data); + + return $token; + } +} diff --git a/htdocs/includes/OAuth/OAuth2/Token/StdOAuth2Token.php b/htdocs/includes/OAuth/OAuth2/Token/StdOAuth2Token.php new file mode 100644 index 00000000000..eaaacac778b --- /dev/null +++ b/htdocs/includes/OAuth/OAuth2/Token/StdOAuth2Token.php @@ -0,0 +1,13 @@ + + * @author Pieter Hordijk + * @copyright Copyright (c) 2013 The authors + * @license http://www.opensource.org/licenses/mit-license.html MIT License + */ + +namespace OAuth; + +use OAuth\Common\Service\ServiceInterface; +use OAuth\Common\Consumer\CredentialsInterface; +use OAuth\Common\Storage\TokenStorageInterface; +use OAuth\Common\Http\Client\ClientInterface; +use OAuth\Common\Http\Client\StreamClient; +use OAuth\Common\Http\Uri\UriInterface; +use OAuth\Common\Exception\Exception; +use OAuth\OAuth1\Signature\Signature; + +class ServiceFactory +{ + /** + *@var ClientInterface + */ + protected $httpClient; + + /** + * @var array + */ + protected $serviceClassMap = array( + 'OAuth1' => array(), + 'OAuth2' => array() + ); + + /** + * @var array + */ + protected $serviceBuilders = array( + 'OAuth2' => 'buildV2Service', + 'OAuth1' => 'buildV1Service', + ); + + /** + * @param ClientInterface $httpClient + * + * @return ServiceFactory + */ + public function setHttpClient(ClientInterface $httpClient) + { + $this->httpClient = $httpClient; + + return $this; + } + + /** + * Register a custom service to classname mapping. + * + * @param string $serviceName Name of the service + * @param string $className Class to instantiate + * + * @return ServiceFactory + * + * @throws Exception If the class is nonexistent or does not implement a valid ServiceInterface + */ + public function registerService($serviceName, $className) + { + if (!class_exists($className)) { + throw new Exception(sprintf('Service class %s does not exist.', $className)); + } + + $reflClass = new \ReflectionClass($className); + + foreach (array('OAuth2', 'OAuth1') as $version) { + if ($reflClass->implementsInterface('OAuth\\' . $version . '\\Service\\ServiceInterface')) { + $this->serviceClassMap[$version][ucfirst($serviceName)] = $className; + + return $this; + } + } + + throw new Exception(sprintf('Service class %s must implement ServiceInterface.', $className)); + } + + /** + * Builds and returns oauth services + * + * It will first try to build an OAuth2 service and if none found it will try to build an OAuth1 service + * + * @param string $serviceName Name of service to create + * @param CredentialsInterface $credentials + * @param TokenStorageInterface $storage + * @param array|null $scopes If creating an oauth2 service, array of scopes + * @param UriInterface|null $baseApiUri + * @param string $apiVersion version of the api call + * + * @return ServiceInterface + */ + public function createService( + $serviceName, + CredentialsInterface $credentials, + TokenStorageInterface $storage, + $scopes = array(), + UriInterface $baseApiUri = null, + $apiVersion = "" + ) { + if (!$this->httpClient) { + // for backwards compatibility. + $this->httpClient = new StreamClient(); + } + + foreach ($this->serviceBuilders as $version => $buildMethod) { + $fullyQualifiedServiceName = $this->getFullyQualifiedServiceName($serviceName, $version); + + if (class_exists($fullyQualifiedServiceName)) { + return $this->$buildMethod( + $fullyQualifiedServiceName, + $credentials, + $storage, + $scopes, + $baseApiUri, + $apiVersion + ); + } + } + + return null; + } + + /** + * Gets the fully qualified name of the service + * + * @param string $serviceName The name of the service of which to get the fully qualified name + * @param string $type The type of the service to get (either OAuth1 or OAuth2) + * + * @return string The fully qualified name of the service + */ + private function getFullyQualifiedServiceName($serviceName, $type) + { + $serviceName = ucfirst($serviceName); + + if (isset($this->serviceClassMap[$type][$serviceName])) { + return $this->serviceClassMap[$type][$serviceName]; + } + + return '\\OAuth\\' . $type . '\\Service\\' . $serviceName; + } + + /** + * Builds v2 services + * + * @param string $serviceName The fully qualified service name + * @param CredentialsInterface $credentials + * @param TokenStorageInterface $storage + * @param array|null $scopes Array of scopes for the service + * @param UriInterface|null $baseApiUri + * + * @return ServiceInterface + * + * @throws Exception + */ + private function buildV2Service( + $serviceName, + CredentialsInterface $credentials, + TokenStorageInterface $storage, + array $scopes, + UriInterface $baseApiUri = null, + $apiVersion = "" + ) { + return new $serviceName( + $credentials, + $this->httpClient, + $storage, + $this->resolveScopes($serviceName, $scopes), + $baseApiUri, + $apiVersion + ); + } + + /** + * Resolves scopes for v2 services + * + * @param string $serviceName The fully qualified service name + * @param array $scopes List of scopes for the service + * + * @return array List of resolved scopes + */ + private function resolveScopes($serviceName, array $scopes) + { + $reflClass = new \ReflectionClass($serviceName); + $constants = $reflClass->getConstants(); + + $resolvedScopes = array(); + foreach ($scopes as $scope) { + $key = strtoupper('SCOPE_' . $scope); + + if (array_key_exists($key, $constants)) { + $resolvedScopes[] = $constants[$key]; + } else { + $resolvedScopes[] = $scope; + } + } + + return $resolvedScopes; + } + + /** + * Builds v1 services + * + * @param string $serviceName The fully qualified service name + * @param CredentialsInterface $credentials + * @param TokenStorageInterface $storage + * @param array $scopes + * @param UriInterface $baseApiUri + * + * @return ServiceInterface + * + * @throws Exception + */ + private function buildV1Service( + $serviceName, + CredentialsInterface $credentials, + TokenStorageInterface $storage, + $scopes, + UriInterface $baseApiUri = null + ) { + if (!empty($scopes)) { + throw new Exception( + 'Scopes passed to ServiceFactory::createService but an OAuth1 service was requested.' + ); + } + + return new $serviceName($credentials, $this->httpClient, $storage, new Signature($credentials), $baseApiUri); + } +} diff --git a/htdocs/includes/OAuth/bootstrap.php b/htdocs/includes/OAuth/bootstrap.php new file mode 100644 index 00000000000..548678aa115 --- /dev/null +++ b/htdocs/includes/OAuth/bootstrap.php @@ -0,0 +1,13 @@ +register(); diff --git a/htdocs/includes/odtphp/odf.php b/htdocs/includes/odtphp/odf.php index 351a5969b14..0bc54416fd1 100644 --- a/htdocs/includes/odtphp/odf.php +++ b/htdocs/includes/odtphp/odf.php @@ -283,12 +283,25 @@ IMG; */ private function _parse($type='content') { + // Search all tags fou into condition to complete $this->vars, so we will proceed all tests even if not defined + $reg='@\[!--\sIF\s([{}a-zA-Z_]+)\s--\]@smU'; + preg_match_all($reg, $this->contentXml, $matches, PREG_SET_ORDER); + //var_dump($this->vars);exit; + foreach($matches as $match) // For each match, if there is no entry into this->vars, we add it + { + if (! empty($match[1]) && ! isset($this->vars[$match[1]])) + { + $this->vars[$match[1]] = ''; // Not defined, so we set it to '', we just need entry into this->vars for next loop + } + } + //var_dump($this->vars);exit; + // Conditionals substitution // Note: must be done before static substitution, else the variable will be replaced by its value and the conditional won't work anymore - foreach($this->vars as $key => $value) + foreach($this->vars as $key => $value) { // If value is true (not 0 nor false nor null nor empty string) - if($value) + if ($value) { // Remove the IF tag $this->contentXml = str_replace('[!-- IF '.$key.' --]', '', $this->contentXml); diff --git a/htdocs/install/doctemplates/invoices/template_invoice.odt b/htdocs/install/doctemplates/invoices/template_invoice.odt index dad29a292ef..925d9f087cd 100644 Binary files a/htdocs/install/doctemplates/invoices/template_invoice.odt and b/htdocs/install/doctemplates/invoices/template_invoice.odt differ diff --git a/htdocs/install/filelist.xml b/htdocs/install/filelist.xml deleted file mode 100644 index f9a296ebde4..00000000000 --- a/htdocs/install/filelist.xml +++ /dev/null @@ -1,13363 +0,0 @@ - - - - -d41d8cd98f00b204e9800998ecf8427e -75d01810c3b8e5a95cbf57f10cd5021b - - -2b63072e8314cb7e4b936c457ff8437e -67798229e915f5841274ee70487feec4 -e3634943f8374be65b59bb08cb8975c0 - - -d41d8cd98f00b204e9800998ecf8427e -fe8968597576694701ac27172db9fc79 - - -6734d43389eded6e6ec04df0d0ac6a0c -b8ba9640c14960e0d4a5fc1065c8ed3d -8948df2f592a82d0f5e8a9b438267127 -aa62843d604aa6a058bc2a342a3f4abf - - -9f5b847472c19606e9ffc71373ebc1ec -e96ac27ffffd6c056faada99f2238a59 -2848bc03343a8855143addb33c993024 - - -6d57fc3e3529573832640f2d8f5431fa -d41d8cd98f00b204e9800998ecf8427e -8aab867ba0d3ae540ed3ba143a9ac209 -441a6eda734c5b5275784b0feddd4f4a -af84e26d495c27b0132cf3b565c756a7 -0edc7dc4e4eca0cf7e2a016ea4fc38a4 -cec7bbbcd81cb1fe36e5b49ee36b7dea -757aa607cbcd1616ced5a336e56b0e6c -c3da79f5f54f904a89becbfdd77d0dd0 -90748eec5b2aa7985d2792bf470d6c90 -c27047f9fee70ff22fd43c59f4b9a612 -765552dbd7152ea2877eec94be358555 -efb7978f299dada5666d9cb924790493 -83168a773a55c95c061c4f8e0acfd1a0 -c6274cd0dfefaab01570605b5175d36e -1faa9edc4b6caae44e72683642199927 -6877820eee61e7159f1b50d17b63c2df - - -e9744918d6277c1403a7c1cbe42b12f7 -6c5b043b72d32408f4002090e802d6e8 -f994d768919712c348a9f4018c6d4ee5 -e7a0c91845d001672e8238f4f4b608c7 -6151a7c4134040854886bc5006a0f7c9 -73e54239e073c5e776f0c9b0318ba330 -9f557f8d1c3e22bcd014bc5082aa6f3c -78f3bac5801105879cebaeb0bdcbb03b -313274ccfbc6586080382c481cd00264 -a7288deb697b6946baff286db59b738d -6c6185d0031ae718c1909e3c04d1fcc3 -7b2ad6fb7dc44d8a84517cd164a3883d -4aed9d2cb22a7353d72fc8355de5342d - - -de36a72317540bb861c69aa3aa246a29 -54d476f65c25daed84640cb24336ded0 -43a4b52b9b9e90f95b6102d2f561295e - - -d41d8cd98f00b204e9800998ecf8427e -7aba69716e92939377bccee8b5c4ada2 - - -d41d8cd98f00b204e9800998ecf8427e -d80628560310197b51451941990f41a5 - - -7620d3c593e0756c6a52a14be719fa4a -9f008f58c3338ecfd47392eaa38db8d9 - - -d41d8cd98f00b204e9800998ecf8427e -a0a3d92196fb3d14f1a8e32686c4e8f7 -e7063a977fb2302b64681468ccc5ac2f - - -bc640abf203b20a3e9d3e3d456b44f3b -9526e47774ea9c97832d4bb5fe000376 - - -d41d8cd98f00b204e9800998ecf8427e -148ea77f922122bea3bd1bb5a3471568 - - -604a3c1fd670af360b4e8dd070316b32 -1d9d76e09b19523c85101bbe153e1c97 -08194ccdf2c8801e9ce4acd3fc6a8829 - - -d0a6afda3d75393d3a09e43bb1135b87 -0f28a7630e864c959d4fb6d6f92304b0 -a92b0b6374f698c980928a3bee17ff9a -92c1d275d0117efbece0312787a0736c -f8ba5662241d9c908f1f791f72481eb7 -491d3762c5040d7f09f82be0b27ddbea -7367da82258c07fb35aaf3aafd3e1bb7 -dd9cf0fdcd7a32f49882b31d894f9bcb -eb6e5f08d24f10bdb9f17e6da6f1df6e -4e708e91d45b1d44047b29cdd6768fa1 -ab1c40ca3be7e21725ce114881dc332b - - -b702c4be259106f2e031a8d7a57462a9 -ab13e413223fede4e27cdd0d5a112cd4 -876371cf283ebd2982d4cacc1640536c -c7db3ca4d5477082bd3251f7d02170ea -e3fa076bfc94a80430f9a32aee318da8 -c31f65e979da57d157bfb7ec4cdc65df -2a13bfa6db4c63aeab46d3aa2beb353c -6e164b380b852fe7cd5ba652e651cecd -0e1e52293768d3b3be9bbe7eda4a07de - - -9eb9f1b8f927ab504d4418b356dfe7c5 - - -828de5d20d08feba47b7f29c75cd13ca -0dccae7621b59c1e1a30999d6cea6a2f -408203a970401705d1735235ba7be850 - - -f931df27f98e7f817c266281013860cb -b3d708e374e21a5b90cd9b4fc0be482a -52c51ac0c1e841314d48328b7c32b7d3 -9d56c5024279a4f5f9b799c6950f18ef -c07ed6242e02cf7244ca15d501b8efa7 -9167ee0137e4d8e27a380b605409b0a0 -c704d69e4e509d8fecd98259b4dc4696 -0b5e44a54c9e9f7c5e5fb56cc7551aea -7d5a6b14598de5cea0cffe96a69eec7a -7bfd53154d651a07bf5d6861b382d50a -7a48e375b7d77c532d3fad60186f1aa9 -7d63e6e9475d16e4599040b8a41a53fe -9e98b6ebcb40a3efd59fefe1647eb676 -25439159688546129372ffb05788b0e3 -808060eafd55007016cda2fd9096cc95 -492dc95d5efe02dd3bca4574a8682830 -f61c878d3c2b9d7e12dc91384426b5c2 -116e9a092013cf1274f96985a620ce6c -616208b226e5d0f544681f69cd65b19b -9471d2c20faef2788d72085029d086ad - - -1aa139c5f297ba65303cbb1dc6690044 -3d004a3c15cd75a45126bace56f8e571 -7a603b1f2377ad48683ebd36121ee543 -1d4faf84da5cb7cf4ec45f41fca4c789 -2695ed2349894ec554415bab0cb731ed -5d4aefbb80446c57442e7e7e45471c29 -f7aa8e26c09d03918937902ad4a44348 -34958e258b87fc1ec821e6b088e79c8d -fd5d1d799fde0113ed7dfff59ce7f829 -149760ed8fadcb899e8ba8e3e4a564c3 -f723e0514d0a3b56160b072da038081d -67753ac07c72a9faac35bf474dd820ac -ef909e4522e762772f5f5ddc63d7ee05 -5851d5e285e2ca13d469bd52bbdc7bc7 -64b89438be28585863692b07b28d92c7 -0dc61c4116c08c367e26b71502dead57 - - -4eb6bf940da326c8d507b96e02441a30 -e418c1f44e48e5d1efd949eec8854d41 -9723236a5c42cbf2475ab9d61a904375 -63a117bad7a888f3ec6afda0e7fd16c2 -b06bdb8f2eb308f51eac8eb213ce324a -eb3573fcc14887e31aaf4f00800e1ab4 -7b48253be9aaf706a214862fda962144 -2ebfa2593d94dad9c8f758780e48b529 -fe1caea2173bad3842ec90af117c7468 -5c28e8fc82116d557114064745bad800 -10d040f2d8710bfa077f96d7861d2445 -c08cef9b254c721cbcf8d583715f3312 -d4b44e7363df82a4d4ab909105c62b1c -7d5f0705f6492a926a558fa1ec2ad186 -6dc5d10cfbdd1b0b194b44f8bb3b369d -a7520db2c94a8c640ac3566eea390071 -8d961f94da4667b144e1eb113c7874fa -4786d8e95b4fceb269f3d6a62ea66ef8 -01e7e410650ffc5f9877826e085b44a4 -8868b7d0779aa09e9b52c965e1e96b8a -5c06b9772a487667c388ae2b5714fa91 -b2e983fe3f64bb7ec0bd09a8d7225acc -f4852e3a84cb84e07ab5a08e082bdb69 -bc667a42f1ade75c59cb5ad6103847b7 -d63455783346f56c804c166f71bf72b0 -31bbae8a1de3e1fb630ac4d83db62d71 -77b0d9800746216db7aeb6d6ae97c120 -dffbd73d8de5768a2cc32565732dd9cc -9b9cdf0d964ecc76eddfbe5331c15c53 -07b0a3d9980fdc81c37bfedb597204a6 -4bf3ac228b311e0cf07ef2fc4fc8037e -db66a55e69c3d86828051d75c0dedf1c -15e33c41fec315a0dc8b0a1f4e08ce93 -deab2738e25782c55f8daefd0157de3e -ae8c315cfbe5998e5a067a09866e455b -62a7d69cf85d612ce8df9956b6d9a77e -8a009d5933a9c9c35b01d210febb6e21 -a0024e1b8052eb2bc9bb8622b329cdb8 - - -d41d8cd98f00b204e9800998ecf8427e -59cb9f641e231673bed98341a8208d40 - - -667cd8a71a675fe06ea29427443e4642 - - -d41d8cd98f00b204e9800998ecf8427e -638b941ae4b6d882194e84b826fe80d5 - - -d41d8cd98f00b204e9800998ecf8427e - - -d41d8cd98f00b204e9800998ecf8427e -c6fb4c534b13919a61a7cda2675182cd - - -d41d8cd98f00b204e9800998ecf8427e -30dd0792cad95cf9efe1ad703856ff10 -296b5b4000a78d2b6641d6f87b54b1d5 - - -d41d8cd98f00b204e9800998ecf8427e -b3557974ee09698bf75f5908dce5ede1 - - -d41d8cd98f00b204e9800998ecf8427e -c3a091f382b8d46073d526656abafa08 -9b3010ffba6af811bceb8d53ef7cd4a4 -3e49a455e52720605b60a343d9c3fd3f - - -d41d8cd98f00b204e9800998ecf8427e -a345b7179b0b8624a64ac33dff310df8 - - -37ed710e40414cc35a8451695d101da9 -26c66f78f5db62e9af07cb11280afc24 -1eb0907a7926acae06fd61b54c0d2bab -0dce719c0539bf9d75cbbdf3de32817f - - -d41d8cd98f00b204e9800998ecf8427e -120b660df099ef9207e084810b95643b -a0765816715c1bbe18e9f87846a2b710 -28d24390fb0fc34b881439a3e1fde041 -f180d27636c3a69c402e244791499c59 - - -d41d8cd98f00b204e9800998ecf8427e - - -0d772a38306fde52cab75b8a42b45688 -b829e1c2687849a67387ad8e4c55404f - - -d41d8cd98f00b204e9800998ecf8427e -ef1cf954f3d42f0812e26142a6704e0c - - -aace231a5cfec37aceaf64e87a6985e4 -562e10fdf9aceb3c277f6d9b13d98fc1 - - -4c09ead3612beefe457740591551f103 -05a2e51b59ec243e96c710c5a05462f6 - - -a05ff7085b07193b2c2e8222b4a049b5 -6ddc99ed13c9297a09bd1dbebc2685b8 -3ce8b7b6c087edc1b162861dcf29ee60 -7fe43f107fd4873f0b7a4750888b0e7d -618e818af8dea17de322d782157dce72 -1e0c1dc858a4dc5d57c6f5dc4beff437 -bd499cdcff25d83aefa453d16327fb31 -bfa0bba21e124aa73b63eae9b9a6c47f -4be815e975625b73ee6e925d97b9d1cf - - -1736b2041754ba66b0f078d8e1abaff2 -669da5a688185e4b472e7c0d8166d149 - - -b2b0dd629761bfc7fd5b8d2d3ed167f7 -5d74f87d9094023a958641957469a45a -432ce2e547c5e3f33850a064c373ffec -829b1540f684e2828f877e3e4d551734 - - -1559f68beb136775818d5ea6002cb2fa -5eeefef845922b742f3c8948728d93d2 -53f705a8191c09c9a14ba304d1ab46ac - - -9a756c5551ae9339d6e1d852c17174be -ad61a40e5452254cc2c0984b68f3100c -16af6f6d04e4cd2180690cfcab4a7f9d -f0c7e782bd7bba13c9662714c7b8b08f -538514e549d114f3d68b1d54200857a2 -5c8369ba5b6db0212bd4430bf2dfcfd7 - - -449b52d23d51c23ed29877609090963b - - -1761c41741b70f05925340d5506387e9 - - -4f196e19ed8ad0fdd14cb73c93fee1ab -2f0f661518f1dbda9eedda2b6bee734e -060e9e0bb5a4e5dc1fe0d2fb20b2c801 -dde71309b78bdb3b366654446adea123 -6c65bfeac7e5b5b28af498f2d757f3f0 -2c56066f59944c0167a8e4321f193913 -5a24be2dbcae65e78db23bf732ae39fd -b4f2152a14d790847565aa176161acab -198d39094c81152155f8f35108845bbe -05e8b4037cfbb469f9ddc37e8fc9e970 -5468e59e8840a0a6799d6db5d36733dc - - -778f8940843f53dc769d8058c68ab83f -70dd831c761a20467a6ba9e5ae736f91 - - -6318d2b6f7fc79b4ed0404ffbc2dac1e - - -66be5c2031ea52e84d32950433ab9e1e -80cf4a974ffe1a69b6d6b85abb391d6f - - -59caae8ab95b2eeba9444ba219446c75 - - -af5ab9d4a4d612302de8ec9585c2490a - - -c1f4b71c61e227690c2a91f5e22ee912 - - -028b01567cdbe95028d6badc35611592 -6602994ed72d4352ecbb2c9850146b09 -a3db8a782df812506b9d6cad27f8e954 -473ca9e5542894f994dede38e28066b0 -d89a7e86895762a2607e598caedc34db -3e013fd6dc388618a30da7a3f1b5a8ed -dae7a05de8492aabf5292e1627843166 -fc565819ba9a958ea560b84032c25423 -0034ffb7a27471f3eb757631582f87b8 -2b84890e6b3235715348b30628a7d988 -0ffe86a454e9a2e570b96610e0a3555f -cd35055300e57f0671b50fc9c387efd8 -7535a09b90cebdabf4dfb79035e945c2 -7e6e4fe81e0ec0764125e763e637c8dc -0a9ebc5aee36ab0a70d52a64cbc6a8d0 -b745e148ae7a29be55d3b468c02358d5 -1f0a736e423e47f3d8227b20a1af8a86 -a2edf8c5e77fa7790cedb28ea673adfe -d5dff411425653893b2da14d14eec340 -a22482d39c2459c642da4302f3a8e1b0 -014d8d796b91bbcd60b3eedbc75863c6 -e12203a069336f9295ba7dc2799db8e0 -a34665a76b93875acb85a2aa370f3607 -920f3546842878108f3e2b6ee8ce5257 -b96a4e2d85b9f8c0b9eedc62d7c4eebe -7786d1011b89d457e8e6b93e84cd82cc -ff5ee012df7e6eb1b184496b487b502a -8e807cf3b227b692047cefa6853a6d94 -3dae2c76a373126a1e0f557be13388e7 -819fa45bca5f27217ba7548bd5a7f845 -cac02cb00571d77e1e4c5b43d255304d -0865eb4eba2e849d7a0695907ab9cef9 -6e549c4c7afb8a58163c09b4cb05b9a1 -763755c2a64da8d115345fe9efdc29e3 -c91d55c71290f701def881a2ac4c187f -b46ae112d32a7bf573e91e1a5317b1ae -7a9603c07c7c3e954696f19521a15d73 -214546da09bc6e0308a2ad20b6b3044f -0ba05d36d4770ee2b157a429247fdadb -5f826dc572e1c8dcd3c558d780ec0063 -c034d80005cbbe505d978c18200358d5 -daaf526c37518f8f8ab2f3e94ad484ea -4f2197b4ce860bf58a77fa2b3d13cac3 -7df68de6ef4b2321ad1fbd2b99a17a40 -4351922fd2f520fda06d12a2b2289b3b - - -befacdcc4c5bf6a333b8c82fbebe282c - - -278509efbcd2e9f657549d42026b8bf5 - - -96e717a4a3dc49d675258c5f28825006 - - -77404b5590596de508a542979f3cda84 - - -a35562e7cdd0b804bd17ada24f7ce67a -7acea37f626cfe23c2ffaaa2238b9199 -f6cf516b7a668b636bce3c5d02f4761b -3b0a4f3b0163c594c2edf81e74c5376b -a2429a31fdd47c1041ce0251c2134293 -d0e3fb63def4c4ab3adb6106526084ee -0db27eb29d36875409041464d20c7ebb -d2a8d93b1fce8d3f7d94c48f5b09a8b1 -5b06bd221c347124078cb9f718c9833b -9c3dee5474541512a47b8f597fe8ced5 -c0f621725c1a854f5883923c10774c78 -83bcea63258aa7e2ba9b84c363e1dcab -96a11168844b45dd2fca97f0bc837143 -38022cf76ca5323acb76f40157455a33 -f1c004946d7ce517f2404c1503ee9743 -90266c6f598dbc6cf93a656778f8b187 -19179da170c46f684b02f761b92d1105 -20706e57cf4f66b384e1c97f4d979ec8 -ddd8c57cac45d04eccbaa0fcf34bb16c -32b424542cabc58cd1b48d03faedd6f0 -9ad8c1b6a3a1090ef1e9ca2cc4011dc0 -927571178a7bc2392ddf51ed9c7671fc -d3302c5817c5e14efadaf79f8e60289d -7249a77c5170e115f8cf2708e549183d -3fd47d203a4b3cc1b81dfee881147e25 -80559b296b0e6a9d5bf8c874f87926d7 -b58fca4a93a1198c875274945f654449 -d9fc51a5f9cbee44a00ac11d054be3d3 -d8f1f839d819e5a5422e19c9d846a26f -4776bad83eddbd7ca0b0bf9ab1268a4a -73b48a65098d2479d6d17599d2325eb1 -d223d3a210dae0c8c4450d2d767bc0f8 -80d1206a9520fc1d5c0514bb5a5f96fe -82b2d5fec7e2ddff86d3c5317793ce5d -311ae2c1c1e88e46f811fbdb1aa0959a -7aff809832eb6487d3c2032d3e42ca84 -c779d67662315aae394469c636e9a503 -191fcb39e7ebd469b742960329e960f2 -4504e1996db85389682d7494173f52b4 -c5893d068b103ca774c452f53231f2d1 -6657d900bfc5bc7e17b7d3e59f0bf5f0 -1628c9d5dd6258b71e6b29f1828ec052 -ea8f05f3e2dc69ff98dc16cd23b3a88e -fe101b83892261f6d154031e760dc8b0 -1dbd2d84c6c8de8fbb57cd9bdc36c6a7 -f62d66d8f69ade8f9ce8813ef1478415 -4b458e4a1c672b1b46f0527067f5591b -8d7e4124317ef382bf6d0a287be4c46b -973f3cbbd4b28320f06640b6f6863f6f -830de31b0ab7362c161f3bb33321dbd0 -b76dfbee5e2d20e8f8dfe1acca2eb3ef -953b41e51544b16e28af08c8036ec664 -7f73d5e04aab56c6a59cb8ca9b49b3dd -fe4e06252d5ce74ffc29c7f7f5478e77 -9e11c7384ac4b7e6123e18c918719a2d - - -fe6176c431b43e26a961ab3920734dbf - - -af95de23736bb1eafad749b899ac4d40 - - -2da765d2b1a8e8992a48a676b956db7c - - -952e216a7803312fa67ee61c06f3c532 - - -a39f2e668c624cb0b7298c633486caec - - -17093167095a9ea2f4d7015fcf1c039b - - -4ab54cbceb647be525aab443e86249a2 -6d10783b288fe54b3e50f828992d0745 -1415a98b14e5cb9afe748c674bae25af -030c9387085c667ce9014f8f17dc0908 -a19b5c291ea2495e2432a27a54353606 -25b67ef8c30f1bd5520742c943025538 -1805943c3c41a0aece435f873cb86703 -95cffdc2b1e72e9b8baae9e00aff08ec -e38d30e0053468a2789af17d38f9c444 -457178c3e1e5a10eeab9f0f920df8926 -93e6fff7bffc55153d9c2859ac28e48b -ae7676fbfbf82586f79479b56756cce1 -11510868ce8e8ed585a6ad563ee22a9d -0813f938cc098ddc751cbef6bdecf7cd -3d403bb930953d625b0a771484cc85e9 -e24a05f22bf8f9d91fb17899c3ac56fd -94ac3c915312d3e4445343bc99be0c54 -0c7f9b9d0824505bd03fa82b4cc753a3 -a23c0a40efc09de6a7640b5d0d9f4bb7 -14eaed2d73022fca3bebfae0052b0c6b -c4b9c95d9f742081196beb6e72ded20f -a1fef4cefd9e43603349f8e4d9775029 -f3f0b68b3af528ca89254103743c048e -166b5085bfb3eaa3d73326a8829a34b3 -640883a64b98eca9219958f0c9a3c777 -1b3f37880568ec36e07297ddc71e2baa -9683369b3890d4830e9e0ba0e65743f3 -5da336a24e940842244ba5365f8f391a -fbcb93b073c2737f2238a68e0e8d173f -bd17ba6ddc0c45fa6b7b7dd3704a88d7 -a8642b488c4247b15aa815bd0fb20c3b -a0bc93f53f35404900f567504449f73f -b1f0a29724f70701011af095dccf9da6 -68b71eb39de968b214aee59c7aee63f2 -746058795a92d2278489bdac1c9eb850 -82f4dcbc8b788985f547dccef636c95e -10c1c4d475f9050f55a4f30d321f68c8 -3bfda8ed81210d7473e60dfd1c5fb2b9 -a6472d528369b797a46bfb37d6ed972c -6d10783b288fe54b3e50f828992d0745 -166b5085bfb3eaa3d73326a8829a34b3 -58d03455e940b51010a2a56a8cb04ef8 -e9421d09d8e14616be9571c92125933c -71a6cf09e9f6d0f95ada2ec5d99b3865 - - -8ed32273f32368492ee999ecd0aabe32 - - -df3e567d6f16d040326c7a0ea29a4f41 - - -bfa0bba21e124aa73b63eae9b9a6c47f -16af6f6d04e4cd2180690cfcab4a7f9d - - -6105439c866957299f095b3d7846bc23 - - -271a12927f090ebc5287e8b0b5e9d9e6 -fa289af1974267e9531614663efea272 - - -b61cb3c36c0363df2b0ebf91a8b814a0 - - -5ff2733687ed023674151563277f9606 - - -2cdcde2cc55e76e3bbf24d02cf0d5edb -800020de3c5e41aa2e1887c2fca17095 -b2b5a3ec23189f079c587821b665d271 -87d3ebf2feaa2b176b4eebbac3c088c4 -3627aa8209fbb1c672443bc6bdce8923 -4869bcd4fb1502311f94519cda884950 -b7a2f3050293050b58a79bca2cd9833e -7674233880679083e8ff7a23695679d4 - - -c724101436b085bf318e695fd784d658 - - -5fa3923b76e77bd28b072bf20bb0acf2 - - -ce2c91ad6dfd86639dbd6fad1fbef509 -31f3882cc425568f4276987a0aba2b0d -272ead8eec497be617cc3d390c427477 -fd9e4859f8b774b936461669096cdf31 -b340ddf06546f0c481260cf31af607f0 -2cab0bd74fdd7b997aba318b7c90eed5 - - -4fd58f34401bd65ac6e428a695289076 - - -02087b98d2508beeff533581d41c148d -502ec066ce17658bc228175aa6d2bb51 - - -8a4d45166ebeef73e222270a8113d66f -fc667c4366fe133c30ab122fe2ee7f20 -b8650f06582ac88ece68948bac1bf734 - - -ea413228af8c99c7afe67a10acb0ae39 - - -a6191ed337fb956171397255b5b256e2 - - -e9ac9384237d8d1cdaab68d31a22005d - - -8c10865beddd7b64913db21f12059c64 - - -d009e5dbfe5f3a20be203586165c6567 - - -cb682e94976a833702918c30350cdf92 - - -26de1f4efdbea90dc07b2d66d9e98f3e -33dfb82a79bfd5cd05b336e1c9d7e972 -0826365fe3595c15372b8aacbe0a050d -a86fe4f29f0b81bba412d2d443538282 -f5774b1f9313dd43fd39a7c1e2c49c98 -f2fe25865fb26d8a60799cbb700aec31 -3a16d03720c344ace88ac9f4557e5da6 -dd52c331a81417dfa817ae740317e839 -726f61ec81224067b92d3b5c8c66d16d -89fe2062ff820aa1cfe0d73fcd75b8a0 -83e4d18f829b194bfeda62d7374a7706 -87f8ce4d8fe767f9ad78c76b54dcbe63 -7bd02886e8a02672e68d7f9ca82989f0 -c8cb9e2990d4823212d9adbd3904d612 -135c15c8da02cbddabd2830ff17f1f90 -673d347d114623bc685bd6960a975b98 -b0262a6867fa221fe3d1d1cfcd0c55ca -6f906400cf7764ee9b99c5f062284a33 -f7a43d21c05827078185dfd3f1898a0f -c11a232f8789d4c81cc7b99ed6a5a6b7 -be80996f8def6c9a756f99e2d6ab063d -f687c08e85b9c6d3b98ea103e274285e -36cf39ebed632539610e00972d066d66 -c84baa08f37224a274adeff9b38857d8 -3e77aa1c3743a9e66ad430d565d5bba9 -d197d53598e59e38d6b53e4493878a37 -3bf26c69a67bba08b33ab9a1cfa913ab -7260e1fef9a19946b0b9997f0835d28c -1ad9babe1124b8ce470d94369c466cc6 -34ace00de3d8f572a795b92afd8182e1 -1dd9c8b444e2c6bcde222d7480a789c6 -3a05dda84962024153be0c897f7fce74 -b35cabdd2609ed64c6aacfcc62de2d1b -d96b9150972b45c9d342d631733e2adb -d61f773d2fb9d3c45fa3696dbac3c9bd -7090962dff4fc5fea54bf747f9762cb4 -27269177df2db78584bc130e8da427b9 -ccd660c0e96ac3a5bad8c55c57c171e3 -a379a744cf64f76e44191fd83ae5660c -dcc4141b642e5b91722db9fc5641c3ff -c404a5cb3e2d0c7dd3560e6db70dc0af -e76061a42101f521a01031aef0759b24 -158e329a2f7aed3469479f8f9ca4017e -43d892662422c27d6d6da3ea4a84ea14 -7da25cffe11482c608af3eead69e9a72 -512f8fb3042cca9b5492906df80c8d1c -294600d0d52d86683cf6b17fedfc1794 -97e9ad68e43dd571ee2dd32453b579e5 -659a267cde3be07c1b3ef6388ca5b034 -f4e01b5d04b992dbdf05a536386e43ae -9b1fa0f7b10bb71d25926e108bd33a7c -194a664f4110062a5e5fc61e4c41d380 -99042f7adff906f9933d08a02d6d87f6 -7302e05f5eba2dc64003cd74e1c3fefa -a4e35b5662f37aa780b2b665625e9e3d -38062f6727bd12537a6434bc070d633c -b77d5b396676b9018dbbb98dfa3540dc -764fb4541826961d8b07302fdfa19855 -31fa16bfc0c36de373ac2aa9eb44147a -e817fb4adea53ff6fec6fe9fded710dc -09fb96e516325be267b5253ed86ddcc8 -aae28f0dcc80ea5771e96fa2b85384b2 -dab061d0b54998d4b61de139a368c9dd -1596278a679167aeccfa3ad3ce84ef5e -49af03a5a811b6c74ef0b1db74b0ce55 - - -33a20a15ff624caf095a70d941844501 -86414fd484ecf3d234ed74d44a654a12 - - -e66e9eb7cbfabb44ab0ad0907e78bbcb -5d71f443ff4a119b970d1446eb9e4331 -9ba3289e9a9cbcb00ad24cf05ee61052 -f85c610b97db0d0c6d9a4a080f4fe72b -1248dd3c3036921f8dfc9a029acea033 -f03fa5a7df87681274d6d7bd6d450ced -da32c073db3a1981a3ee939f99b49285 -fad40b8184678de95bb0ba0b81fec208 -edf0938b11cc3848f8084b68a31355f9 - - -56c557bdd702896e8e076c3081e473b2 -50997d9fb65b02489760c78eae407edc -3fd7cce0383f0a53942f944e744bfb2b -c2e66f879f8c7063b30ca7e69f31f1b0 -c45eaec9eb14a27da49011c02adf3a51 -a11dff5fe4e86ecc62be49088ffea855 -4cf6cd7a6e0d99a58e3b1745aeb27199 -7b32bb71dbde86104e8a2651a0f678fd -c9a17a1c85b85d5d306f529c8a3adf46 -319963e6815ba4311bf548ca102ee6f5 -8f34c8654f8e475af529e3bb7459f54e -c0e04a4fddc99fd59f7597b5596ce974 -86b708daa84d59d331682bee9892e85f -1241ba263a9be7c581f875fb4d1fa7c5 -339da1ab31dc9cccbcf13e19787f32cb -0bdc181700120677a20a475a986713c5 -7ec2d1bc85219648e666a51798ee852b -16845ff77ddf90cc0ecdb71b56af8ee8 -69703c2680a20175e0f6ff614ac78058 -5e1923144f861d00820902f847f2eb85 -e6db5f2f060d5f9043679494dac018b2 -c5ca42e5b9a303dd6af35b105346e4af -e871685a98946ca4c8b69a788445f1ce -03ab5f4dee17c243959ab547318f253b -884910e45e2af8b06310473028b89efc -5b9638d72c2e3da6f9f2f3065f0bb838 -e0b821fb1bd51698f9605a5f10c412ae -1aa7a4d31b327012f0d82767b1d3c2eb -87414ee7df77d4c9d1fe67d5f1cedb57 -6aab61a89be474d3834ace048aee8215 -c0cf1619503636f2e510a4ad4b5ddfe8 -e80d05e8f07bc7a9c28bad9218fc3065 -aad095174c7048e4a69870115ad6b31c -db3c9c925a27a7b21639195b99f8e4a7 -7226d89117fc5ac6857b99c8be92bcc8 -8a8b1be3faf887f79648add1f27e1b27 -29a83e90e646d322fc5927f85d4852f4 -db06b5525d74d001f4d5f0cc6b34a12d -7d75e3b46ecc1a8e9127999c2b395343 -5f346f8ec0669638b98d39313d395af1 -cefe770c34e74c464ecfc1d631e1ca7d -a7d644a48b076360087a7a79ef16eb15 -019d661924ad0e08fba33d4640062948 -a9e4f979c124b66bcef17fe804848dee -db7179a1e24cbacb8e38d9aa20649e91 -91e614515ba574d4070c122565883a73 -519bf115c5c9e778efca8d4c102d5047 -76f78ddf57c04618eeaf91bececf5070 -b66742d49c03112fdddc0f124674eda9 -2c93bd8b0859a6063fc46e9936349be4 -89da62f432454d38e9d390c6755045de -339da1ab31dc9cccbcf13e19787f32cb -91f86050486e00b05570c05a19fc19ae -01255ebdaee025b76aba812ac120a8ac -74f64a752fe2e6ae40410c0cc8c6409f -0672e3b38e39e2da6b12396046b2937c -0016a818ba0e5e80338f772d496b029e -cceafae6cc15d9f207d1343abb1ff87a -a34ab3d3db924dd1d886b28355b7175e -a9534f82f0bdee1b54ec994cd1983701 -3b4fa04dc11a6e53545ef0477ac5183a -234f6edca3b318e354044327427104c5 -68b62695aa7282666496e8e717d50d9c -75e036f626780dbeb1dad742acf50799 -49be3f76782716d636811a5ec6ca04b1 -a71bbb5349e4cf1e586f57a3d561bb69 -d70d0fc33efbe51901ad0d0ea441d086 -1fb4d036eff2822c256cb5fa0d23d220 -91c5d82c8305a0e3e21d16b1eb375660 -a733db7d8ef9106107b0810d2d0bdba9 -b62825ff9f9334fd7f805a5a4fe8d5cb -22643a84c533ce44120c10fb36eab40e -5b94dbe7748b69a93e0773d961faf144 -212ec409cb0cf752f27376cc5cafaf9f -10335c5cbc53b01da174fb889eb182f7 -4fc646f85aedd3f6f2875a164839e864 -6cd7b0f700ef9c8a4f198075bad202cd -74ed6ef670b00441f37e64c157720ff8 -1666e8c4705830acd13ee691a4741d55 -1f30aa3f9407a10e4f703b1af6b16f85 -db621a89d6126c8926c2674d68701e4c -e80d05e8f07bc7a9c28bad9218fc3065 -248aa4981a7cde501e58f84acb3877cc -a11dff5fe4e86ecc62be49088ffea855 - - -d0027d668c71a7ad863ee8acce1f91b7 -d6045b65dbb2ba38a4f113f9aacde587 -5358770d6c46d49d3e8bd54f426e6699 -3b0b4802fad7a92aeba2b1e308afed38 -feb97272d66c597cd9edac65acdaaba4 - - -1736b2041754ba66b0f078d8e1abaff2 -669da5a688185e4b472e7c0d8166d149 - - -b2b0dd629761bfc7fd5b8d2d3ed167f7 -5d74f87d9094023a958641957469a45a -432ce2e547c5e3f33850a064c373ffec -829b1540f684e2828f877e3e4d551734 - - -1559f68beb136775818d5ea6002cb2fa -5eeefef845922b742f3c8948728d93d2 -53f705a8191c09c9a14ba304d1ab46ac - - -9db06a7d00754a56a880b0b2840c7206 -9307f277c8eca3d6aadb747e0488590f -877fc4512a836590d97afd52a061a8b9 -0bfbf3d7aca8183b21df3d3e89a5fe8e -e55c1d03dec8ed13c5d3dc07b475a6f6 -03aa90b73362c9ea7992ddebe0c05a76 -8bbcfb26c88be66b335615ace22a13b8 -181cd7e0c4e3aee620bb6b1419143c4a - - -74b6ecca3710147d87712eafb36462c3 - - -7f4d91d401913000068e27694421094c -8e3cffa1da8be98668c562421fc859f4 - - -406082d01ab1415f333b23bceecb9e2c -6cd8f5c9f1717ee73ceba5683d9a8a8e - - -a99cbc0f37a87adc024e1b73c90f020b -f7d3b25b8383affe405ccc7d5520a037 -697a2829a99eb956dbd10748c117cc78 -00f978d26f57a925cbb25655a8611582 -a5dbc5478b058344cab126fe37e81205 -ae24380f9d45f4b7bac2050ce8dfb3c8 -ae79a19f64be5aea70c115f8255dd835 -441cdfd7ba1feb089bc3a423d068f9e0 -baf082b9e90e7e4d6812bbf0373cc607 -e2cf998acb9c8017f3ceeff4f583593e -a46fcde339e4260686e19c1074ea006a -9fe7f36dd10f438653ed48ca9373137a -d3134c6c9a847c3459c89ac6a7e29ad3 -3dadee4718b9777aef137e589260ef71 -9e574aa8ef5742657d4761ea590bcc02 -b3b6cc0f994d14e8a62103c8bfc21882 -df20aeaa69ef080a06060eba30d1e658 -58c4b49556ec3db5e02b1cbccc70b5b3 -e2983c0de2b9fb5cd06f1b5811e7adc5 -6363f698668a40602f462850d4c25f12 -e3b9a6128f379e070c4b5899707a0602 -9baadd2aa9e1de012fddc697c09cad3f -57d4381904bcc9a1447b416b782637e0 -98ae0c9ccdbeb50ba601b98bf67cf6d8 -e304041ed01654e365947acc9fb1d14c -b928bdce0d72bed17fe44576c42982e4 -46a3b08d3faf5bb3625bc38218d47d3e -cc19e43dd168d6be5e21701a6ed7e32a -3a5f3bf957587a46b9a704956ff1481a -deef6c173ca516df1dc003198865ef82 -213a4fcd11e4b256bea106c5b270ceb8 -fd3527c05093fddefcbf6211d2894c2c -193d4af6e0e6712b7a209fd67e93abf3 -7603a607972637b1c0ff71e2596527ca -9f4c93b61a1c68dd9bd30039a29add31 -82b7ec40dda186fb73fe7cd1ac4fc1db -d1204c1552417abbd0552a30f9518329 -3a004ec9782fe8641061c737bcc4c5b4 -11116f8d3cf5c4ef1be973f9e6abd134 -3251760626952fcae88770155112e9a5 -9edbcb7c5c4a7302017327b91b101a0d -85145018ad16e0ab05c8f50f61e0794e -0539ca2a10f92b1f7e2d2ae8d8c8033c -90a818a12527d815dde625cc0cde03d8 -28daa476010b8e6e78cbaaa8568a6611 -4271b68296af1b267b960df4e1794fe3 -69ce2bbcad4a3ebab718ee1dd8d712d3 -4d167ba23f487bb71f7c8d2cbec38864 -1b1c432b9dae46e45d8bb8f59a93b0fa -ea27fc1a059305edd6a37bdde556eceb -2ca3a315405f31ee3b8964a3a46989c4 -d10483f203f2d03ca7c2d05b87ae7bbb -8439670b64da2645d451a6b7fa17a75f -390d090c861a2fb31df9cc8b61ccd3b8 -7833b5dbb1acb30e57e3c6b041b21f2c -eb2bd9a3a7ac1a61a4f6bcdf81ec67b3 -dc4cd9fc4b1168633b3795cc782a5321 -d60b5ff021116b6d23a72201fd71fae6 -f804896363c3c3fa6efe77015da7f7b5 -8ba7cf9afe2511eab38617b27953a20b -e43a69585d1b9a065c06fdc43bf05e9b -0b600c49e6886b114468455404dfedab -f679ac711c84e892be1c2e6360661ea3 -6159fdae83bd1af5e503ced6c485d7f9 -5b50d480029b579c532f51bf70375b3d - - -69093bdaa5daeae6c38aaff4fd56889a - - -2b250cf01dc18e37e2193a957ea8d4f3 - - -00f9e6921782590db265fabe0385a000 - - -5c2000762f2496f6dea7c85d5e76394b - - -2e0fc091488364fa5dce78e28935f772 - - -d033e4f6d584e6c005ab98b75cfdc791 -d033e4f6d584e6c005ab98b75cfdc791 -016f786cfe21feb1af8ef4139fff7b90 - - -ba0b6ffcbfe503f0b4af39f6d292042b -ba0b6ffcbfe503f0b4af39f6d292042b -03654d950ab0ad4ad32a5586f3ab7617 -03654d950ab0ad4ad32a5586f3ab7617 -f832060d1857f1e4faf65d15d687ab43 -f832060d1857f1e4faf65d15d687ab43 - - -016f786cfe21feb1af8ef4139fff7b90 -a73b8885237ec16124ec960c5ec5af11 -a73b8885237ec16124ec960c5ec5af11 - - -e105f20bcf593d08b574d666a4659fdc -b288b09cbe915f05d94f37b402547e1e -a91c20099677f7cdeada8fd1a0fe90f5 -d6293a67d76f33b7fd8a479847589517 -4d90073c0ff78733556c5d39b861581c -59a0fd9ecd7de0b42d8295fa58e0c2bf -91ab25c960808374d8c43cde798d271b -b49063e50418e2d19b5566e588e661e8 -f4b4691d1e7a01e3b662bea34e79bee2 -9c4b83283c96a6ae1f63a556933c9d98 -5737b4aa9ebec80710fd46a3920822b5 -329247bb2a92a2fcaba89e7ec980eaaf -1f07177e6539cb5747d29ae51b867669 -944f5bfde4920dc5075164b83475e264 -9187a95d9a20180f3f520d6a4dc17107 -f57ea9c530cebc193afab16022342a49 -810f1f8ff19faaeffff0c4738db008f2 -bfe22db4f51e8a452666d894c43b78c7 -96f101af9311167f4ecabf15f2215b34 -8a781f7bb83695ba35c4db1a77a575d8 -00c41ccb3dbf4b9f5320aa0b07ca6c03 -67a2b6cac6b5c64a2cfd977d2262a736 -f03f9ba07ede1347f117cd6c47de68b5 -c897a6579efde9449f38572c02968ea2 -7ecf64cf4c33beb7f731a2acd0ac509f -9bccc0d5f26adc27cd1d2ad25da2b340 -5a78236713f3d2c88291eb069ec7b0cc -b744a252a876b7ff3cf19d8fee208f9e -6992f9b3ce6856117513bc470b021e23 -56a003fe558d2e69229d2dd6ab5db6cc -c7ed58416f23cb2060943c032f5fd713 -8d395ecfd1534bc52f2697ede733558c -554aafd4e41fbdfe81d88310ebeb8259 -776d3e7b0b45496e666d0c222d2895ec -6e27b0b67f03b2b7e9e27c6f73bb40da -cdbf2f00cc40173559dba34b0407ec91 -9a02ce2013a481c64f2ab5323ef9b377 -3f7ec71ce8bf00af32d17edada11ab81 -8c98501f49d11930cd11018f5b67516c -e4ae0100bc2dd1dfa8f9f9792e5f3c9c -3f61d424e62d222059e3d9b114e54573 -3e9bb121320670472c99be79df37ad4a -878398701d2b4f92a79366adece358f8 -a31bcd82061c1d29aea61767fb4d9534 -6e6992107277cb5d6c7dae437de22a71 -5ca808111551091c45a6c6b91a6db684 -f628f08b549f90df6f9332a24a097a14 -22bbf1056712b882fcb0e3712b8500bf -c701b5d076dec29b96566f6f5ed4cdf8 -41fb79fb13d479fc297555e981ef296a -ecb65a697fd592b4149e4c0a56fc6f37 -e429800cc74245f0343705f19db80032 -c3e33c1816e058858501bdcc32914525 -4f69cb8660473547df5a50ac5b16d106 -750372f7968345d08f8e03f99d085fc7 -3a74a2e94211f9966f39701c25c24d24 -f67b3160455accad85fb4082d15b90a8 -83d7d646a25b170a42992a58ac9feddc -1d1a12787536f6c18207a29abe45310c -3a536e553fae15137a315e22d602eb01 -90a78dc63d3bcfece5d0d02e19941e5e -f759e454f73d38cebd808908be3ab19b -d1c6fd4dd062fa5f23531e9f99f7d943 -5a41fe6909b58519b84ed41047c87a75 -79cdbd1a21e1a76da2cde3c44e94cb87 - - -7a60f63f2ed6ce4b34b69ae8a12b9e7c - - -3c101adddca552fe762857dd51514b05 - - -abb18e4402964d4a3e2e90a1227b57ca - - -8d810500e27b8e755b654caa4df91702 -aee2edefb32ae7de72e8bc2e3a835f05 -17ebed1965f283a0e355a911e67cdd42 -8ae64e6251b4a32ef73969486c6bc677 -d783e773a5632ec96cf785b34c790224 -63edb5dfe58fe647b48fb10076b80cd3 -a28d1de5cbbd5c1feafd57333316bad6 -7f4bcf9651de4dfe4d8bc7396fd3ced6 -fe73f93158162bb96eeb52086e15eef9 -4a6e5690adc1eb3c04cb5a83e1213a0f -b33774833944d2a851d7b6e423109647 -be417aaadad9434b5e779d589dfb83d2 -e07c074f8deba3734bd30033b8a4e80a -1105672b1e2eb65c7548c15007eb4304 -ccf3ef03ed707f213f3ff9134cf0d312 -edbed6795ec27dc155a46ae5f959ee9c -928d3512a0c9d91b855ea5481abd507f -e9ea3271dd2ab50e653772d4175c2fb1 -e296aa6685367e788d30a2837597d450 -54bec3f653978661367752c9e628d22e -426d8c4e93926b42afdf63888639786b -236c8471ed1afffaa68f6c57a5976a28 -665aad81deacfc0a1b9c6f89ad0585ea -08cf5c523fd24adecf802dca245e233f -3a5a60ab0e5491fcce784f387d083302 -0fc4802635927cae7f21af301cce1f77 -0924932b2c03a76ac238c31e55644cbf -7971ee68c1f857464a8ad7dac20985d4 -faa918ba3cbf5c46dde471bf3ff2a8aa -7354ea435851364c370985d7d24d4497 -133f1492dcedd08ffcd818e991172213 -6949d9e4ff130f69e1e9dce9c7bc5f64 -a30e49c6818076ad738baf78e91da858 -19404b76a93672eefa7c381cbd687a1b -851d2b6d36a195c9d2da8810880c3a82 -875e429bf3e3dfc2f53e81d60e6c41ce -ca699b3cf1848166fa4a572ae1dcb392 -b4e13aaa01146c08f44e6fbce5b655d5 -15ca0e1c397ecb962a119f83b0e0d77f -0a07296598fce745fb340b4f226e0362 -9e066557cf677056fb9e51d6a8318b1e -ef4bc9523da3115da39359c6f8a63e10 -07e0d0321008a117336147347ea5dfed -c2a132b937c15f5568baed293770487a -9337c147a195beb432386401d6bfe2f0 -5672b4a1646cd83c8caf4ffeafcac103 -e89f87e3fe4be3c381427546c046f2e2 -e7d5b939c4d10f2fa257cbeb76a5fb0f -5b1c345ae0af8a8b746531f4481a8e34 -f38372dd7ec12c6371bfc69a9f3441bf -1fca6974e13ca098896e13990a5b2702 -9ed5fb2c7a78a2b99198bc9ea8ff36fb -6081d09eaba74eabe94d543b16f41a1d -bbe779c69c7c34db6137c6615d59c714 -ffa8b499248bd19862899b718ee06032 -ad870aab20024333f5f00dafb69035e9 -fbea47a45ccf651d66b9773af098dd96 -7f278921f0a176026439244bc1e17f99 -55499dfa3ca8c63dac57c659336eccb1 -f492346b0c82d7f7963b0ed24c452144 -9c6a59f403e1912a41fa839067582b5b -4effc64ea261d49cb41ef4eea26c009a -fd4ca56fa36bc5b6eb5dd7027e564994 -d6a0c9838da7670e7e0e743749adf31e -c3d392446f6ba7187b33bb74a79adf3a - - -7916791c506e6d9ba5c997b4b139500a - - -b02b670044deb0d0c6c7c0e08e158d9c - - -b1e7296ca42039d382ed5a4af666a4c1 - - -46b2c579d215b307ea6f519c47682639 -f0d86983e280b6364b2ded29791ce93b -7ee09d2d39cebe9aab818ded8825d6aa -8b118d141b8b3e5083cb8522796d00a6 -812e0b0be7cc0485057a51d49f3d3110 -ff320977a1116935f37ac576fd1a0018 -473c75604c49b3ce9e6ef0c0cac85744 -ec2e4850337430bd8922868931c315b8 -66f920be1d1805e448d468eaddebb4d5 -d34dec52f1645063a35e7ea06631d1df -7f52a8c1446a8b39f3b2184b4779cf78 -a5a9b42f09fc50663bae6a30866a85c9 -879a8b36a6862a9f3d16cbde68ef2b12 -7b9bb98354bfa0cb4c6da385185af33a -6191751d51da5bb0c0e50115607c263a -fc5f2424dc2629f1fd66cce3583c0a5d -e21236622a913d00b91329f253b16cb7 -e9ece6086374f3b96f30d83685c43866 -c532162792df71becfe1b557e4615ec9 -0f0bde0a6e9b373263ee14b02668160d -20a6e8978c06ff0d0c8ba10e62b70567 -ad3b074f50b800059b97ca1ba186daba -61a80b1c45bdf47187acd4a303731128 -ae174e3c3923d123da4ed97c38206b7c -7e4a4f85bd80b6d27ebee757f00d1161 -5213815c80ab888e913dac33e2cf49de -73ed303d1baa66412a591394baaceeb8 -fd1e90e63ce563ecbfc3e86d51c9f959 -24c29902d209ca376efbdb43b313d288 -a33c54dafb734391d511d72fce28f535 -27b25332e3538ee896152374d3d0cd8f -96d7eea17d0c1c8137b4b6011173f6a5 -09d56d5a100b0cdf0a6c0a0a4b2d7be7 -8bd60a8db03080080ddd3db86db612a2 -0c283c2fedca38ac515c9c38d0d9833e -cb73adf02a7a885af1fff21930af635b -648b8ee67b57a2131a1681e7a085d1f0 -a7c255677fa6ddae2000a54d99967c35 -73c2cf52c013db3a34407199cd61e01c -bf2c298ae86ac9a9017315f0efc062cb -38b6b214ec3c08716a4df82ba842f5f2 -79f24d886bce41f691dff2a4181a58be -bcfbb9bbeba0d02466f2c3e0dbe5d5a7 -26698969f814885f602a6e98cc0ab33e -a6567409e398eb1be6c22e9e7d825a30 -9fe7697855378c903fd6ca477e39ac3c -560784bf56f8e13f2cc6704ea91a10ac -4d064d20d107427da0985e39c268dc16 -13adeb185bc4da1f790d1799c57a4e5c -9a67c1100d37fd7f8e6d516b4526f06e -294a361cb7917e4ad72720426d48f2e4 -f8e786710ced1bbb94a512a87a729245 -cef0502cc3063495cf0ed8589d5faa1d -01449c67cbeaa2a8cb389717019120f6 -2ac6e19f28ff7a279f44dac7b403cad9 -a702e1d81f743786d0584078dae74555 -03d5b8f6a7e05fe561af8bbbe3b39b9a -dfd26c7ff7fbcc37780eb8bcbce4b853 -67d575f4441b2cac67961b696b77e08d -49592f24b459f9672bad02c559382454 -ddbc03e4643c8edc265269203e1aba65 -98bc9064118e90da2c3b75b6b1c18d70 -159f965140bec8fa865543d98ff658b0 -b985d77653ca5153e9173b5414df5c72 -a9a21e63f4c04330c72b8a79100996cd - - -505d35a020c3e95a860024c7a5eb9eaf - - -f1d0fbc57f779f34414f4f0849c51b17 - - -0f8445add9c19fc76f727d3d9974f129 - - -85567169f77de390688e544d315fbdfe -d2f6e04c2f462935d7ac0a39202459b9 -584db3452b60853ae62fbec4f3fed0df -3b54b00adc7f1dd61b7b72846d01a12c -511c1450b8c4affa475c9a72dcfb2219 -e96b8982f3eecd354b8a1309fbf53c21 -f923cf394a3ec09acf5c0be0d09c71f7 -b52d9b6ab6397921ca48c51fe9b920e3 -283ff80aa9ea29624fbc8a47c5256dda -9b4e5f878b7ff58d19bc9048403e3fa8 -6711f6af3acea07893ca4de7062e96fd -e03f6d88bd7d5a73bba6ff78d837ed85 -0839098d2866e61089ba2206d9acc7b0 -22e6d79b5c0256b97859ac2c458678da -792f359a06a98ad61be97c1e04294f60 -eaaa62b79cf78d85b17e3050e642ea83 -c27bb791493a8c3a0897910d1bead0f3 -513f126be06516dc462279e7fc9da953 -9ef16638b24be7b644483ff0be3f6894 -6664f632ec2794f87f873a98f0d3b8eb -7256da17ff5fcd51b04e54cae58b2f51 -18ae75b486d291f425e4358f06c1c9b1 -88e4f96a6a9c6a5add80985a71fda711 -176a4677cbea19ae22bd04e4a5a1a26c -5af78d27eda0614b17a6bfe05ebe8770 -0d9e8f2c93d3e69899463f78329cfeff -e671c0cbdb2cfa50c3b403f61dd50eae -364a82d644f2efbfa3c54e8be3027e3e -8085b21104a2f32acdfa8e54327f6677 -2cf657d8a3c0a51709ce088c4c52b14a -e5e8e4897f6f5255da586d938398f581 -efaf2fa0bd52d1c8a35c5a11c0a8ee58 -d0076e1e08b4f3a04ec3fa787d426d8c -aa6fdf4784b2fb7553ed0b282ef65f6f -d7adfcc1c4d0dd457ce1ea7a83e984f3 -f77e45491b3ae5618b5637bd047ff332 -af30de7a70be80c51c68a7daf1480bca -6fa6584fadd3b270d8ed14c28b5b5e6a -2340ef6647c8df3ca993f5c3bfd3eadf -fbc8855c1dd6e97c844ff6a464be8e0d -3c477a25498dba0e4115a57a385c214f -941ca059e613fbd1beda1950b55bfa68 -8ec7f7b6e8122fb21950c9e2790cbc84 -0ef9eb4728101b352a0e54130bacfae1 -b87d24561d1041809379e63c5b5c13cc -1297339260b5a08aaabd804f5ff9f08b -0bad9c2320033f0a681748c49b6fabe7 -f739d7e5aa72c55076ba3907c51567cf -ee7ed9d0a9fe0111a84861ba65c79a0b -0cb648977481b1608eb0fd2d35cdda0c -2434e9f7a150296dc220efe0f96cc5dd -2d2f350f9332044aba8fd6517ff6548e -403107806865932700a494ddd0026a76 -7c93196f6b6b371a45d1ccac761b54e6 -66fb99008c0aa47890a26ae11e67ade2 -3584fbcd77e1e3a5698778f7941b42f0 -d062b919dbb47927c94473ae74a48422 -2df4268d6719d7d641eb8545149ba74e -a83e83cf3f03aa946ee59ea77e332c96 -098c9cee2e2276d519a41596b29dac38 -b496233cebe3c0ea2e07a31630f3f4e0 -38ba9d33755a22dedac3eb54515e3fff -5a9470926a65242e34cbd5494397f338 -0e585d336d1a97d13cd85969e086daaa -313b3aa8af39eaeba70f90adc54dcfd4 - - -c315400a45f06b307e2a928b8bb0d22e - - -ca4f96b00022fc21773cdc793807b331 - - -8bc05b4906a79fb95d8bc5c3779bea61 - - -4e4f5d0da4f9b323484843d730dd5f05 -77f7069c17acbe7583a7aaa54863a953 -e0da0accd9d3e1cb5601745cb3118848 -97e401958b087b42ee41d47fcbd7cddb -df7cd4654d5e8a6887e89cdfc3e5c15b -e271da98e1b48ffa8f0faba1f52be339 -d63db58d5ca04922822ac7fec1b06be3 -36b928fc1c67ff216aa85b2319b7851d -abd481d000b9ddae6e5bc9f40c052315 -4b5ba2f72d862062688cd8503d709b54 -5d1693d8228a6cc01dd1e3c64bce7791 -314c95d0d44e1daef3fa171cef5a6db9 -6b31066076cd62ac7a2b21039b100476 -bf10a795f02fdf2f7db0b5929ab6987f -e86a3509c0ed5311507200951f740416 -d931f108ba25d7871cbe3b0fd0c9bc3c -0fc4288e8f885df3f3bbd3edc352a884 -1b448fc80ec12b58abb098e95b09e2af -6b90f91d18afaddee24e541942d9e398 -ff4301f1bf0e3c03caf0c022e946cf3d -f8c4707f3a9b67471054b852801dafd5 -3e941d9d249ab568e5845b3dfdad7593 -acf6bad57e64e8fbedff8d3fde78a1de -9b761532aa571c82ee562b49d53dcdc6 -92d4dd57c6280c63cc50e3f7bd38d781 -ac81a7901da6ff5571a817dd995e9c9e -d8208897922ceb99afb95ee77e2d0573 -0c50df79d516083f267b0f43ce5c5eed -483f187ad80c6e7e52dd3ce33a4a3f1e -17115d818e0353a7d69f242dd1e040ec -9c7343768397776cf10dc721ba55f628 -a28a99fba3dbaf91ebb70a304ee3d452 -a0afc5a40edde3c60bec05f463c86c56 -1b228d54f552e0b977a9b104197266f2 -fcfac9ce265a497d4907c6e0fd3f691b -5a4f4e8a830cc5617aa08644b5868457 -dd2a9d6b3bb61736a607d397bb44bec7 -1f2b6042f028cf2f74fa22f5a9628400 -3a4e981e7337eb3ba0d6716b259b43cd -332a892dec0dbd682378267dd6ac9810 -1f58792f47090b2316e7ab8dff0b757b -e2f187970c63bc88bed835c845a08fab -70f1d1179fa35286c0fb1aea8018ad39 -ae26c4a7ad8db871be1c1ffac8f5d4c3 -b6ac82f9c20dde42d1a15dae34d685f5 -09e47f0f49bf06d35d87ca4fb49509f7 -f6a1fe00173e7197d4fbcc1f8bec1bb5 -c2db9127a4bf89e27540dab11f6cffff -8168a4c9369b3daf558cfd0e10f40b37 -155a8ee4906fa6ed322e5038f3ac35ff -b20cb322d689f54ddf4261b5a0c388cf -e88f7e7dc83fbd428ad39d1d0e424138 -2103aaa2430bdf15cb322b18ab97f65f -5e3a5eef3e1966f6c7fef066bd0c5ff3 -a5caddfcff2cb3196b67f25e388a920f -6b019c23817ebe1fd5023547cd978dc2 -7e0672ab53134d15a0630f82428a895a -d5ea0e5b3f4ee59c2da697975cf66fd3 -b494b4e3bd52dd6b2017848004442d87 -589b91350a270fb1e1d415b8c01e45fb -e0689485d20b3d89ad7ada7fba1483d7 -7bb2bb7484870d2f8a1b808587ee8622 -85dbf65b7873a5b8e16a7be35350618f -a18e8625095eb56f92a155905d353847 -d841ddfcf69249b6fea7dad27cff5547 - - -1559ed2016dfa0857648f982d552e2f8 - - -c5a13380a70c3d942c9f47bc9c66f105 -54b267b28293967140a526badcc79467 - - -da21b5ee018be5687a12c5a5de31c237 -133ff41644a3702f60d7a2c6bf429c5f - - -33eb9d37aac780309bedbd367dfa7b9d -f43b829530596e7a7ca5686a2e0c8dd5 -099547d733b446bf5576a9d98e61f6a8 -3225616065c4d6800742c4198d01fc34 -92268d20daa8335e3888b244e34f1621 -a26643c93a91237ce4f902269437aae4 -00fc8d87b30b91f6c7b53f7b07b4aff3 -4f4bad87986619b74e512fa04524cc65 -55ff6a279099f13a30c64dd90d25e448 -6a5b84a20b5d6744c8b378ef774356bc -d672c7ac1364a6c1ae768a8726298e43 -83db029d3e555ba20c33026096385d22 -7771aa687808cb57e8f1ca9b82f9cc49 -b1f7c3f8a3e263904850213e499ec2c1 -3be72ba54273b69970f4deb1c765f2be -7fee923b4bce3c354ed833635fcc25f8 -3cd6621cb7ebf8b18f9c545970472c18 -ff91c33a9497542a3c7d613e71d68cdd -fdb72fb5d64b1d884a8b4f8bfc48e4b2 -b6b19a1f5c8565fa5fd147955c37f425 -37835a005599a339eecccf470297ebd8 -41e8f0fdd4ee766f84ddb8ce2ee8689e -d70fc51a1be7e17a7676400a4cc0e327 -49fb15445f366f40756933f3a7f4a33d -ddda6421482133fc6ebf760e7740e270 -4cd817a326c70db4b25c865d715c9e4b -050efb47569d68b89fdda0728718b41d -2d0c78c2f6c18aa1b6d39647734b743e -e95ccf0083061be790bf0a4c5bc7596a -ca8d3ec0716ce3a9dc106f49163bd2b9 -a4828e471c2d89ad6117658ac6d4baf2 -10dc04fefa6c077eb0fc9d4cf6b08976 -264d5915e61d0d70c292457555a0362f -1ce8c0fb4e668c71b60bca1b713d2246 -36177571aafbbc7b748a6ac7f88c7f8c -a1261ee684ed9c5180b6eeb47c432e80 -74e1dadce9a1bbc6ad0278613b08277d -695f3984b4470225a5b28f73ec31e9c5 -3162dff0d73c0e11d364e83a257d59af -d471282b57726f2e8ebf9a73d1d61132 -cff140b6cd011f3ed1b2b8515dacd71d -2eff43c00544e8d108ac301b7baf06b3 -22744e9c76554e1b64204da77f9df1ba -38e7547ca4ed955bfbf37ad9904d15f4 -b10b22cd5e94f18ac574d0717987d7ff -4aa01ab70881c0b058766bf9a120435d -f2ca8754e05addac7f5608956e99cc04 -d93d0b2e8b8ceee14deba51bba71a8fd -8d3b04e9380f76ce10432e1145e5bb40 -fe259e0af5af7530a36f03bda2bb04a4 -7cdd9c45bbb60ec4c7f7fd5c2793c6e5 -38ef2773a2ae7ba320afd4e1631bd1fb -a6cbe488abf24b390c8ee5894e4ba442 -eae263e4fb8ad72ecc19d7368e3e20d7 -0c85c979b3a4d7ef49a1db4c71e832d6 -39a65c3ee253571623ed7250371d2d30 -e28a50ca2f93a95a2b664fb1bda5f673 -8e1276429504053eaa454d90306e43cd -a841286cb90b2a5239aa6ae6ccf8d9a1 -57f8c6bca226cb035a424145104d80f4 -e6758c7da41b4954fbe02ef708e7b676 -635897206aea1cc4d3e7dfe2cdd5e148 -075807c22283ddd452460c45eb1be3de -482aef6f653e109970bbc89144661b83 -084975b28a1ac65fbbff282a44dab580 - - -4f196e19ed8ad0fdd14cb73c93fee1ab -2f0f661518f1dbda9eedda2b6bee734e -060e9e0bb5a4e5dc1fe0d2fb20b2c801 -dde71309b78bdb3b366654446adea123 -6c65bfeac7e5b5b28af498f2d757f3f0 -2c56066f59944c0167a8e4321f193913 -5a24be2dbcae65e78db23bf732ae39fd -b4f2152a14d790847565aa176161acab -198d39094c81152155f8f35108845bbe -05e8b4037cfbb469f9ddc37e8fc9e970 -5468e59e8840a0a6799d6db5d36733dc - - -b903050b3c2f2f9c2e14a68d547d6e7c - - -e553e7e359fdaacc24ac6cf70f4ef63b - - -f563c5d770cd2ddca273bddd51d0ea7b -b6876439fa39e5d7e38b4569fe4b0ae0 -5d9111a43bb0a61dd556482ebeff87ea -fce01c02efb6de65ee2351ceb7f4c59f -4d9bac9a5df4418c150c7cb5755d8508 -5ce2841167ecceaa0593eb98090f3603 -18226c20d232aef820c24b181d52a1da -7462de701b3d82e26afaed3f6750d4c0 -4e556c738df97da21c645c6649f0ac2a -c8f9632a0d92283f0c21c9686404e307 -e7236f084a71ff0c305870e3dbcf9286 -dae7509aa3315d022b8b3123039f721b -e739960cb1fb56aa14fe39cc78fddbcb -5e3b2b96468e6a399272ee4cf7de3567 -03820e89cbc0d1394eb04849b2c63984 -e8452eb04184077138d8d57545efe898 -e1ec911fa666669ade4249a880515fda -7e93cc4be5b856f684f8263ed6ad7893 - - -00b237debf90b03aa19f2434f4a737fb - - -d1cdc4aa945f242012d3314ebb90c379 - - -20e8096a0c96d4d714a8c7b0812df9ec - - -f1c4a408a59c2506f30b04b8c7ebec24 -687d662e2190066557c48315447e71c3 -e226079cbd508677716f1e67e0c2b3ec -cfcc4edb9d8fdc7b5d959d9a359ba701 -b75017ebfe925b4d7b2afb9f019b284b -66d59e4a4c93b2c3155faab56a011860 -5b429dcbe483e7ca76b181d296fe9077 -4e442121767f25d7f57ac109818d5369 -b36c4eeccc9e7687b62e312e60edb399 -34219dc52c1412f478c26f9be6ddce83 -1733eb4e925889d531e1afaf3815489f -27f3b162fa166cd675bfd91d3d91b178 -6a419f5ecf5bb2169d4c88ccce7e9b54 -b2626c8a7c8ad7b9be51c6609f53d5b7 -1cd7ec0b74e032f0afbd1835110c9b88 -0ca038e8df3efb73e1c92e37a92382a7 -fb23cac75b1dea5ae3dfb24975cf9866 -fe2bde886e0037a591ec302ed73d6237 -12cbfda1e77501e3660fb9fdce89e9fc -fbabf3796f25c65efeaba71adffaa3cd -c6522ae31395edbc1c88cedbe2bfcc94 -534d37a6e6c3bdfad645a4da407aba08 -a3bd20b4f0b536aec482b863d26824bb -4b7eed62c19eab2ce3f5ec0dddfb0f57 -d657463b2be2b286022c63a829b3f7df -72475c099fbb56229801bfd40d4681ce -2dfb26c7eed3351632c30bbade02b98b -2844d875f221d127ae17322fe4cd8e5e -2a8b20539961ccdc54db302d0e5ca2b0 -de286d5c93b7300531e60503ef646ed6 -15e9864d9ea2a8f94477e883466d682f -1158a4874d23585511cb139def353037 -32f0d7b69529c61355c4757ec37687e7 -26981674da504bf0480255399aac86ae -e9753e2685a6a9ffe15d6938eed6f039 -43e34e0d77eaf601e95ea87ab163750f -fe56cd84d50a1585fef402535bcea5ec -c39eab48fdb9139537207e921ac72fae -16d3c1f635fb496053e19679b0cef8fd -8e516f7e71fc8787af24749d7d013a4f -da82a19df2ca3ab1289fb5d353b766e5 -bbf66d184beed2679b7938efa107e028 -ea349a9f69190c4cbe423f0398a5e736 -1b8d85f16427b022d92229086a207d95 -4af5244b59afd4b153e8c774a37fff95 -f7a64b7e9e31806690753b25abd3cad0 -404260c2d095c7eb5abeff51afd7b66d -b0e85e9c7768548f8b0cf271fbd39618 -79561205fe5aa7f348e34b5a4e05abfc -41073876e590fdf7ad35e2d32030fd0f -a3a2f2f9e59155adf4ec27e1c1ca0c9c -a705f84bad0ebeda655035eef200ff15 -2a6b79ec64e1583c702953f58013799e -0eae092c6634629e68831278b2295847 -23f532046aad65b41df8c6f609f8fce0 -a4d7b4cf5719833de8b85a003c660241 -c4c0043ac6a4049c996c825be63e2c14 -cc7485d89c6f2d3930fcf9fe3be04753 -4b0feff6823f0c60af3df3ecda8088ea -0f146acf599607f2b51def0622807687 -7436665e004edf441d43e15c307557c8 -a9b40ac34f3ad961d8b4076da2bf1849 -ba8b35c68f8e23895a388fba66baa214 -4c975efdf2e5d3a82063629afc7280d1 -4799d28d2dfb6e621c9fb0ad4efc2c30 - - -9c01c7151deb4c01ab1d6526073d33c1 -70dd831c761a20467a6ba9e5ae736f91 - - -6318d2b6f7fc79b4ed0404ffbc2dac1e - - -d4eb63e694ef031ac6e47d866a87e4d5 - - -dbef1372cbf2a09a2937da2ba8de64ec - - -80e05442985a4013b2513e3a4a89731f - - -cb231afc280b240f9bd06f891a8bac76 -c9a37af62da873b493e63d9bdca04afd -6f4595225c1742546849e9563060e806 -3f11953332dea768ee301fdd473878ee -533db66c8daa7675b21d06929c5854a3 -442bca7275355ca1d243480f8789872e -6c108801e2848282658e18d4dce8ad1f -b15ccd1e2cbe69ad2888204c96c477b9 -9304cd2325c648abaead7575c9870a8a -afeef5b70f5916024e687fd2247e207b -04ced724f3e21f46a3a318fc826f0f53 -c0a5715cefa918bcf84162bee116e7ad -669294c29d0e81fa6bf061c6e11d24da -2b716932699999c49de304b438c423e6 -a351b9fd2e17f1d36117a7a4b8e63988 -c022af21846d6a19546cf84ab88f0353 -c9dcd6c960407a7c6df856e0864e0e14 -7728caee8caa768be46bb3e5935a99b2 -91de20ed06553981dddafbc71f6e3e46 -01ff7811a46bf81fb3cdb45d0aa45621 -287f94960a19fefdeeab3e305fdf6eba -3354c99e3d13fa549c1975a03e4458d0 -5a6ad22debe78604fe30a693a5a525a8 -d587dd16b12f792c242df0a13acfb3a6 -bf54c20e2cc1f0603003c01974ceab07 -917f93e80da604aa435cb5b2c3d35d17 -74de0258ffa05523b5712d7d71984f97 -a1e3a62992d9112aeeeda28362e4ee14 -e7d43d1c9e3b8a2867bac544d2317c61 -47500df641a8ec3416b461af6a284151 -9fd648ec1f7464c286f96eceafb59b79 -fd5a4352cfc0365b5a9a8102090a46a9 -d4894f811c249080ecd49600cd8baf87 -9bb357565c95d6fb79f7106433f58f12 -594a0b6888327f9172eb0308a455777a -cbc52d8e46d0f8e3482c0644d643df0f -f27516d1807413c92770f320bd1f5f72 -2509e1c6672bc4d0325b79b98c7fe332 -f6bb67304472c650935fc5609989e4af -78d82f8b8ac1a9cf6b0645a9e230234a -f4c2722163d7f13ddd8e4c70c2db8cb1 -5129f1ba3348028f3667111746cb69b0 -b19fbbfda365bc79a6b851e60ec847d2 -1f54fca16bd38f93cb1b1c9b72feb1f1 -90813c26dc6b88bd481c92b3ece556b9 -568ce66622eecc7aef3ac6a24b63a421 -b0fdc716e42a1bfc7bfff77d4632d3dc -fcce102f54fc2393127bf91092758548 -a4d6765081911dc2787694e370431cf0 -3e5387e454802270ff818eb8907f1114 -0e207d98892f464ace855b44ed2e6a97 -edc647f9bea27c5ba109d13388a659d7 -6d472ed88958b1e5ece0950bfb3cd651 -0ad21fdd63f826df4e12e2ad7e6be04d -28768c91ca1316fa7168c8d7fefeb4f5 -4371e9b00b0260e1db0dae222153b564 -eb73d3da4b84c421676593777e8e2355 -28f7ddde20e5f86d71f9876c3627cddd -096183df1e822ad1dbcf0a5732625bdb -ef4f3d18c2153c03b4c5ef6fb15153bd -b95fcd358ca788cc5df66b1f0c86c07a -eae93802b5e1be0cb52fedc23cd7622b -446048d0ef92f96f835f152b29d8c3c9 -a9a2ace0dd19f72bbd1fe902528b2f15 -0c20ea56c48466954dbb5db83f39900c - - -d644d1dad1639671a0a08ac8d7cf2cda - - -ec300fcfe3b8060c918daee81cb6e740 -8a46d92eab527b57b421805b53b35193 - - -e84bef582a60d7baee95406173f95c6d -65555bcd6129a59922d4844a51f2a66e - - -4cf9f56d8067e2de5add44f6ac08aa39 -18d904050b6087e1a1878ed36f5bedbc -34d7acef8f0f218cab66da7c0e99211f -b1e2c0f3fd0a52410a5941a05b34492d -063ddca3bb7e703ba6d53dee0fa5019e -cb383912b1e9fef30d0309e3754cab09 -8b6d54c4ab7c9789c177231a715aafbc -ebacade0265c156a14d9c4cd9ee1aea0 -31023158e7c92530f262bf9e159ecb1c -2c6e91a13693717a1183ea384ff43f8e -822eae32e99ca75914e16f03daac619d -f8ea6e5c8819bb16855cf4c9c551fb73 -a1acff3c4e6bc6ab9e79fb506ae661b5 -16243b5859d618d8a65a7f462980737d -51845e853f433558c35bfe844f0a9215 -e1a4a79048eb46e05113a865859fdb37 -5b68d8515f0127c01755f84a8dbc75d9 -fcbe711b3aadb001b4fb4a5c8fa7b76c -e8b3b444682a1dc3efabe14653f1d0d2 -939d4ddac16edb5b36a415b15b165ff9 -7034fb1f10ffbe30036cd64a82cf6d13 -0aeb60633dd742edefb678f90d680718 -b3ed03c588eff65bc0815b9600b11a69 -5fb9bf0b10d1e7d0e2cb2a75ab8761f3 -65d22dc7f7eb7575986f3593604bcba1 -9d5c60f11872665e5c3e7f13328892d0 -57929505563108105922fd66ed58d567 -0b703646c93500a79347305f812c806c -31396720b520b3bb9f8b3a3fb57d27a4 -e017fcd72abfcdb3ada2ece84b141396 -b34a109edace291b40a56bcfa8fa2f74 -7385d48ac2e6148a6f1b60432b7dc8dc -e1f12cc73c14812fe51a9170cceaad4f -47cd20e59d9e9e47f3cd269b9d6f7579 -e514fbc10583cf759b04cdb8443e0a2c -5087e6d1810e83275b6af4fd1726a70e -52dbc06b316a3b71818fc804c9fa420e -a204d5f90107479e7316f683c9c4607a -fb65d82191472109ddf59b62d5779f2c -7e1d2f38a17f9b41650d4bda8d3da264 -9f68c3e8bfa450b72ee7d17acafb297f -cdcac5329fc8f57a9a7b420a88dc0ebb -57ad3dbec6bb122f9a0ca95f67c70814 -b4f13b20b3790186ae2baf051be79aec -0283fc038e449adcd3616d4419f5d093 -f3d44a5a85bbd3e013cd4de3341e89d5 -9874abc53037f2f38f511e742e30ee4a -e4ee16b8821c426711570560dcac5871 -cd859bb39099199582d4e94380982de6 -0d879986f44f9c64632ccf168da9e4cc -125f68078e5e6a1e9d11b75d15797900 -2ea9f6817c3f70cb4c3d7ecb451b4746 -a33b0b16b842e712d9cdd77a7fdcbbc6 -1ba07c2b0466d37a57cabd2bc12739f3 -1c4b03c6d879c610365522f9d88fb95d -9d9d72c07c81e41dd427559c6d4007a8 -a46a6619f90e933ada76af43913e6996 -592bce160e3975e31cb006370388efd7 -b1581f30826aeb7c9bf791425b67887a -9c8bac10a946e485681c9854eb064c0b -beedbd377d6231a9c75215c7ad0660ac -b18f1fe773329e1c368190a05096adea -a6c8966c4e93226e8fcccf99685cc4e7 -fa3dc191f76e8fc8ed5790524bc1ed43 -502d5d6d029eaab690bb4010ab28077b - - -365c361ff007348b8f79006a19e74e09 - - -8515eb9ce71bacc468ecdbb2dc766578 - - -c1efaf570aa80e11b02bafff0b51c16c - - -2dad3c71219a4201fab5e505272019d3 -14a2e420e7492217fd0a86991d52528a -7a90e0bb0618c3ae3dea1978c403bd84 -034798d01e3c2c0c2d2bbb394eb8501c -1deedd61a314c31b6567833c89d052ae -d934252bd228548693aedbf8169f7ff7 -b3e45580bd7dbeed7191060313256642 -b51ffcd2c91d8ed96df607002becd1e3 -9586da17ac1f90d08d20b04d17b49f97 -5c0b1e4aab4fe83bb5330e6f632b1ea0 -bd51080f0518510a2ff4819a60029b1b -6c6b1ea9bf7b6758126b5ee6527f76da -d7664d91439f8c6a2a214320a863e130 -e6ef40bd74c37ab1e302a156adb03a35 -a8ce7e2c7f0c51d8cd52972cfd2afa2d -5a12a23a67e5681ccbc279a9f6fbae15 -6372450456caa25eaaa1a45bd56f63cc -f71ca4688b411be6f52e48161d179025 -994719b22ca2628db29cbef70e13c4e3 -05ac3a78463aeb98058b9a10fa9a55fb -a139de011e1380dc9a4413f1e0f2fad5 -fe20f28c0334943984c87baa623b1c50 -8bb10f34c327adfe6d2aaa2a077edf5e -d5f86a87cb6212b2388a84ede7d51074 -cb1cd97b07c77e0835240f7e63012247 -945622657924660c72b73a27d5f63e1b -b526f428e8855806068da83cf63265cb -1d017bfd1e71478f184a62b9694a684c -eb9bdf965678a08dcbf378ad2e5daa4b -b0c2cc96f55278e5a21991575ce8024e -e11daaa41501227ae40484f4854f32bd -61cb2d4c36d4ba917c167447c2233d2f -21d06f61277c86ed48e6e8f4e49ee3b5 -4acda9b26cbc697a6817cc64e254e10b -30f9e470cb903ff4484593b5a0c6697c -cb55b769623d604a50ffab79b3d4d502 -1fba419b5fb66ee748bc47c5c94d1605 -e128b974dced4b7a258e148f1533be4f -8bb532d8e283ba1068788410dbc08329 -9c377d1fc734ab4b3692e6049ea498d9 -c667df92801521d707613b2b5e179c5d -81738a615ab84bda20eec985ab2e23cc -c1a3b889c21c19cf94e40928deba6f08 -fb24e12af22a6e0c5492056d6869f22c -afea44b4611b127391c2765e67bb888f -cfae719624412d6aed6930f865f3c639 -7bfaaf1c3f6cfb3cd6ebf94aaaeeab19 -198341911abe0c15937eee94088bdb86 -4a7fbaa242a59298e87bb07fa6d168df -89baa9f6ab06c02e7939a4eca7c2b9b9 -eb6c20862e0fd101f3b158c5591008dc -008e75649675852a7ab2bd3e8418b215 -d72021d07a222d699ae2345de41cf7e2 -8c9ac43196d509da6187f66bf9683bf4 -359c3d1d5b8ac6537a36ee5a83ded4d0 -564a09b37cebf4b1806481b2cfe4ea3e -daa3a460cde0c3e4473b68ff14dd5a75 -f8f54d966d531f28a305047fe818036a -aa9b93b7270a1a73b4ce3754b7bccf73 -5f9a0a067a1b83b665598ecccf5a7b63 -384cba065ba0bd57ae862c3288fcbcba -02a14ab247753e76996aff89e93bece9 -5bbc25117d805eb14b98b96743a91c3a -70c107b517f82576cf21b333ea681b3d -f9310a1c87b2453c24c0c8eb0d525277 - - -08a21603a4c8b0fbae33477838b82b00 - - -bd6cf96e05438cd47803d19ed3ecbd5d - - -254df5a7ff156ec65a3997a119999809 - - -70ab052ed51dfdad78f49615a6f69e60 - - -2638e97161f75de012118be31a22004e -0929f0b5e3254b6e40b527b1abce1815 -5d7b9b21d92eb1240486722d97d74f0a -b9b21157ffad702054136dfacad80e75 -95d2d2e08aaa0d1426b4cd4093ff5101 -a592864eae4b1fd55af82e98ba07d326 -33f550335ca0c18fb4af1bbe009e435f -8f9d5c66907f6a702a3395d2f6202cd5 -3ba6aa4f3f9c0a7b3198846cdd8d10db -564d13340a864d2ae601a0ddfbb1cacc -ae4b2db4b903230ee38d2ee40a2c6e56 -17f4d13b497c8ce80783340248cb0f26 -f0e5b29c15f18eab63138d7589148fcd -78450c1ab58ef126f29a21a9ac2e6dc2 -0848a1e0e3751ffe698f8f929eaf59ac -ae4d5ffcfba43c43792a00948e400a4c -00c223cc64d4c68665cf8d3c0d32a632 -c046f7d33ce43b59ca977140b91c8383 -8efcc3d6ab70c2ec60d28732b3e08c9a -f35a9a0c87ef782b937b3e24fe981c06 -ce0378f488c6ac4a0149d63ce950198d -dbc68fab8f657c2fdb11ff969b55109b -041cd0d0dae4436f410042efe7542929 -8d7b7ab42b7cd5334f5e18c0441abc9d -98e5199b0c3a6d3dab240f22a2e1c17c -763fa2a8c242e5541f0e9c59e5be0c91 -ea65decdd7c578fcfc738ed1c77bdb26 -d7494cd76abc606a2c200a217d2a6a07 -6b7052928a1a865a23f59fba1d313a88 -7929c963cdf3a8850d7d54928ca662eb -62957cdfb1790a620593f891892b4cf4 -94dab6d35ae6fc0993b7040012c37e3d -d4cc0a019c0056f9c6001fbb2210b766 -8472dd267a7c0f36258c1b1c33fefe1c -e1ba46513dcffe328ed67ade611e6582 -885828de452fd48669a7665a5c69e88f -c1178fffd3c603cd2257f1542c072dd3 -43aa2ae8adc95e1b176fc6e5428a096b -d3dbcc4565d7661ee3f45e84401bb34d -c36c3335ffe9f52485f7f9246d991b1b -b47d2bc1ca376839d48dd683583b54c2 -8b3785fa44dffe6cebbd50d78d84af3b -20190b4ea32a3cdaff054deb7c00f467 -b93d26deda65dbd18455cc7479f06e08 -39c3e78a97c37b5a302826a4684a3e75 -68ecba33735d58488e91f9fe817b5dbc -8ae6d716d87e25ff59e1c2d3d49150d2 -3c0a6e724f60b955074b1425c0dc52a6 -5d644468784d7d7951291b2a6bcfcc77 -8acbae37164eef94b59dbe8742676e89 -1f56f8a03d45c2a8ed59c019d94eaa5c -2be3062d24c05edc8df4a0c9b1d2b2ff -8110985385772ac7b2d9e90adf08f769 -b26b6cd27dff99f6d51ca1e3a1ef4743 -fc547a5eaa20d5e5bb777e52640ffbb2 -9abdf8612325424ada32c03738082e68 -6abb3a6b47621e4b1aacc1e3521ff7c3 -4b48b9e8b02f76f13c5f39d17f1ad71b -f14944e3d5877e8dc213a0c81ad67214 -29ab57ec4a083e9c51eb073002d08682 -c240bb7dbb2e85d910b8c85343d68c80 -b753dbc9b05f352c159b88304815cb7c - - -1e3f6f4bcbcec87e78be9a8cd0c11dcc -80cf4a974ffe1a69b6d6b85abb391d6f - - -ad8c831d187419e5499883a1ecc2df68 - - -c4d652a582af1421eb9a0b1f99c6d250 - - -c4dc9ebb0311552c6f3dac4b11334a5d - - -c46ecff421b412f95a3a1c54617557f0 -4816217f35fd66a1de1c7ebc7c976651 -7624ab4dba58de5f82b466f4eb08d9bc -91819a724a8053510d604238e4b58ab3 -d93a7cc7cb0762305676fc94a39a4a09 -8cc8036acb5131a42149179eb99973de -e292cf48a7bf4a79c9773a31cf2934c4 -1f99f7b52822d4c59d916447dfd7559e -1894d5f165701a24bf022017230c8df9 -d72b2aad7510c0e3ef72683b26fd027a -90bd57b60223a7433a16ceff05d97344 -a6e50f2dbe1ff84ca43f5bee0ae51275 -edcebd7174cb5d346fc1bb0e8ad4d6ea -5ad064f7e5e4973c6ff8adf20fdc9097 -7e81750ff74ff1569318f9f795584910 -cc7099e04e2b587cd785e517e1592eb9 -ec3a39c8e3b05819cb4f9ebe74fd3323 -bd2acd5c4e1dbf8abb0e8cbcd63941da -7a268a6642797b76d4f627f39c64a2d5 -15f0bcb8fe5c5b09d84155879155c6a5 -9bc75d901e6f5d74521f9508f66853d4 -134f4b70f31132a44eebd688fa862959 -02194779d3c20eef4dbc9a30b72385db -75f56656276c886a12736c9c0a7befb8 -6bd22e44e3eee865a50c7bd147353352 -97fe3406679f991bec2a84bb0d648907 -8b1b7e2797bfd86c3682f589ce17ddaa -cf70c10a5cecf9ae26fb704e9421d237 -aa92065e9d29a0d969480e18d9a7c45b -28d916b5a88825b69f709262e601b0ee -5cf74ca41c491f9c15151253feaaebc7 -32d0997f17421fbb3a86ee4c2bf67a9b -ed99d9404cdfa63b7f6a97e287c62b97 -5da7eade584cdea9e697d1c0e2f2c19f -45eabec8f4f074109c3e824500dc08d9 -283893fc0dbd7cc5b7679ae48b412f14 -eaba0797ccfdf0276124f6f99797bf99 -c117bb40e20b69f3da526944681473d8 -22cabd0be8bcbf938fa644ae3a6bffd5 -ebca6beafd3730935bbc822b52bd5603 -b2e047eebfac3ea92afd25ef98666658 -0be5ff53733331351419a804fec2d65c -5983992ebbf53f21ceeacf95623eed77 -2b4d9dcaa5ab568a61ed251819fef29e -565d4f7285e25e20677d947592f18615 -76c81607e4038f4d5c31f2c55f4b2f12 -02c42629f742ab4a4d9a27ce6c703143 -1b55b35346283436334c8baf3fa3dfab -c6d7514fec5ea3f911328b5a2ff65bc0 -a08d4045664a3a807699f0537bdb93e7 -ec5ee3c5d17db65eacb68f961fb6b373 -384e3d95df61a3f08137014035ee77e1 -fc28aa5e01775d72c6c509d671993bcb -768ab1e7379aa67845b73ae6b7114be1 -820ff8a3aba1d08a4966c828848aed56 -60424c97daad69207a74991017e259ac -aad364a44a1ef32ef0e722b4ddf900b3 -3bb9937553a7e043b34145d94372c4cc -61ae7c24ef5c91164263b3542e8b8f0b -92d3ec3fc776d88fbc6c60503afa5556 -f1b9b989b039f70783a38b8abcc29d3d -27cf3a2166066e7c046a92c69e173696 -57742bc53357148832b47a87e3369791 -bac68714b2912742376e52bae764ec59 -3270657a91feebc923013a5b1dd26e1d - - -a81d80968d54b8e6d31db1fbbd2763c8 - - -57b267688a0a287fbef73fa98384f51f -4d8b00e613dc9a2e4a4ffe3d485aa7d8 - - -51a3723412559c54daad822880716e2c -1c047c61f8c7c14d3e92634d7506de32 -51a3723412559c54daad822880716e2c -1c047c61f8c7c14d3e92634d7506de32 - - -6b93fd06a12f6bc0c74fc10dee98631e -4d8b00e613dc9a2e4a4ffe3d485aa7d8 - - -ae3cb083c91bbf97212cd97e02243609 -1a4b8ccfffe1da99a0244108beb16543 -d1f746d9bc0926785c04b811f3fb7966 -8ee4be957243e408f83238f60768a62e -d1d27ba3c484d69a50ea82359699baf7 -3f08c5537c877607b1b38a3f4628d300 -201ec03c86cf2054397dc8b2cdee587b -dc20105ad59ac69313a47db1691e716b -b7ba3ffdaf7c925cf02db8f6af000e19 -343d7bec72f569a5e5d7ccd4634823d4 -1afbf4b8ae361df5b07e40f4ce036b28 -4f0cba964ff3c374759ea96f7c500307 -6a1dd8ab3e701824124cb63eaaa81faf -bebbe5127ca9f7c16d10b78d6f4efe8b -bee70c7277935058bee76570544c2e7b -1101b7fa25c611245ec0bf3c5a7dba6e -c7f7b6a9269e9c5218bd6cf36f6c2a23 -5f0a85714b27bae10b591d97ec559d20 -65fba3e749586eb076249ba3c482b35c -49589a58849149505f18c39fabd41c8a -6aed0195f236b45819a8c39f4f2bab8a -5e3e069f70a0ded9d0ee0eb7cf0406dc -66aacc6ffd7e53adc3ca755317c22a63 -697e2261a085361a28067caeac366fd1 -4048c98914cd79c0aae66280000b3561 -3a2206dbc797fe66ce48b9cc878256f6 -6301df0d24884adc8c535de1c5a9e98b -f8fd950310c41d00a0097b5db79de259 -4a738bce271c763b1f0ccf4b442a44ae -ce6d51be7d2712bb25fb3da7ac755b23 -341af811b1496a4696c5d19ec20bbee2 -fa440492f96bcc0fdc48b5bd66e21389 -51238c690fbcb8afc6eaf6f27459ce5b -4e34b926b397349a7a399d9e2f6a623f -87c853d3f2fdcf32be3154c14324b626 -a85d6f6c9dfdabdbad59f048657ab05d -82d25454413650c9afce0c152f621456 -83e71e5bf598cc37ba54e1f4186a46f0 -5b16411a39be252dce43f6f84ee0b023 -93022bac37cadac7f1bdcdca314145fe -2087699af94eaaa7177b92c9c0ba9e72 -3dfd4391047ce944aef697e571dfa124 -e6c29e3ffeee1f20d265b95decb300d1 -5dbf6b1ee18e05b2f68efea7cddd6581 -edbbea920740cbcfa074607d3b169ed9 -91af40689eb5e30ab56ef95322d63dd9 -d523cc1f7ca3a4a13e11ad16e4e801c1 -8c6bca9edd3666ae2d7fe6004c8046ce -a6dfe45836ad9efae21ec474f6b0a360 -24cb8074e5621e8703181b98047a5a12 -098a74062c560323cf5b527bed594155 -5815ec05a565d909cb97507b294e76a6 -aa85f538dd855b04e154b6f9603973c2 -f9326b6eca3ff2cf4c6ad9fd2f238b7e -5420a4876d0f545323defab7add12c1d -c0e1028850e1771e7260629853155452 -21c2bd507e206a1bfe3384839b996bdf -d5a99c1a3afdfd41705bfa5fadf18b04 -22da431a7c7f89ec111dec1a80591058 -6badad2af73e4b042c8887c0addc7f8c -07cf193499b14b4aa2dcd2d8d0a81332 -531aa6eb0b9d51d6b45b54e1d8f7adda -59223a63757c54efd157db106076951d -a233c31b4d3824db7be5a7a8bd453b20 -bc544b7cf64e2e4b50074bbe9e783ca6 - - -0e3b2d7155b680d864cc63dd7a085610 - - -e5bf44e2803bf12aaa79208bc33bf39d - - -825ad0b1b3d2856a9919701895c301dc -59768a023b4746ce905b48b15b701eb5 - - -625acbfb79ef0ef7c548312fad2026c8 - - -9fed987110c75de38190452dbef8fe5c -477d93050f1263cc40ac9d69d1f535aa -3d878037e552a800898f385252a66132 -27052de320e652808dc308d56fa81fe7 -6bfd83d6b548af1f492860ad787efd3c -bd55061fbf3f78a7b9b9464931850d24 -f48d59c4c07611f93063308a88147075 -a3c84f9f621ddc0c5b98da56c129dba7 -84a6b4aa628062a1976a05c7de342247 -a0b1c3ef87e7644e083a4686df3c52eb -873efeaea1762bc8e6de524749521803 -bc0f7acea73bdce2b414d78535b14cfd -e385f2a5a742c08c33df37979ac7ede2 -eba21292ad522a1f5a116d783cae786c -6ef2e8666ba15887ea19211bdaee8e23 -113bb3671892d3362a7af53f18e00a5d -5f5f5bd5be56890be74c690e2e4f6086 -7878235b2a665f85fddf9c4766d0a291 -e0b09b89fcc0a67e97eb9ad4d2d5f739 -13ea49b54ede207b559c1a3fa8229e60 -642139f0e9e5b65eda856a5f326fc79c -0c06b2e3cdf0f98380812e3aba9f4dc3 -dfa31e414e448bae60fcf506f383c1e8 -b3a3740510a41e510d98725bfde5aca1 -be0e97b53e0da1f6b756f0d4c55cf022 -08a8916335ace5bb4b9805d1e0b5e8fe -bff0ad390064c7e2b31462f7ddbc3f88 -7cc05403e345ccb5e96f61d7fb36830f -53fe627e8236690664d6028a094d4ae1 -8debd5c821e24b704f66f0a10b4e2e6b -fa411083fb752aa47a0245c18e4ccfe2 -94161501225717d85d7af627537051dc -4d1c5569f6eecc77b5fd1f5ad572809a -3148092fecba9ead1ca889d868fa02b0 -af3ca2bf26f0465023bfd82c10ceed89 -524ddf7870ecd5c6fe899640bbac2029 -1ea16ffec75ea17ba8ad18b473a796fa -a7804359a276810cab36d93aaeb215bc -e624f3976c3f5d726a8353432a0c04c5 -a7541c8b7e02be34e75512b856fa1ec2 -aa68d711d69293957a9d69db1c22f3be -fe59a2b5f8216e2b157a6212f00bcede -65501c86d18f49ebf32bc3c0fd47e062 -d2f253d3da990772bb926b6012bfc18d -bc5dd6a30e2267713c4098bcc4f45f4a -79ef0811865c309f1565784a027c32ae -946892a6b29f610bc2f7cf99907fd673 -b40fa1136de474a69e6d4915f9b2a80c -cc8c47d1fa6dc294be5701efd1dd591d -5ec51fdbf3e58f8b64eaa81989c45271 -880f18b929ba47f3eecc446da05e63f0 -aaf1d42d655eb5d01f0c50c071989e5a -c892f44e925b21a4d6fb5ac6d22e6a85 -0030a0fa29b1ca57e61e6ac61e0674d2 -6083f371e6147be632379528b0e47a4b -94bd08b7859e9bb2140e6b70cb4a1ac8 -eac379790742d4618280407a55ef80f0 -84d768fe278aa3543546547897608946 -90f6dab5e408048c9bccc711302eb9a7 -789b2d89b82a91a1af067b9d83442f03 -609b886e7db3455e35fa3345a5f5ae5a -a669661b6cffcb1f6c6968250494896b -15a2d96bc1446cd93b5255d9e3b635ab -29cae020df4221ec9a54a36e438be517 -bf69258cea05265f4726b82ce0cf7438 - - -59caae8ab95b2eeba9444ba219446c75 - - -d23aac026cedcbfd9ac907d8b381c409 - - -f07c4c80135c24e1767c97e892dd91d1 - - -09d96357be13183ecebe78a78594bae3 - - -7ab4facaf458a4151978751e427e09c8 -59b09897951b4ae8033095a679c7eaea -fbabac0f628ea94dc81ce720ffe5b518 -6b268a08ba04c73389cdbe40b43e02d6 -a8f24c81d4356c863d0312fe22d60682 -5208c1dab4bd87a0ba9395e2053bbcb8 -dd7ace62fc1cf90e2f1aeb03140f332c -b62adcce233f417c439a3582598599e4 -84f2c91ad62ba9a338031ede50f03a37 -e1211327091a19c78aca0ea542a12bc6 -4de94dd78abc3d9bc5770ef7c5869895 -e136cff7ab9e595bffb5a5b3d71bf6ba -a1c69fd47e495a974e2b0f27d3e61cd7 -5a0fd20838f9ea420e236d2ac5fb0354 -fab94f16ec6471dd6edc07ffe1a3d92f -b99a13b28a4220b6d44e0dbb71e6453e -e4bccb7903f9cc37f2a5b758a64bfeb9 -4faf9a59c65d3587e028e8f209231ca4 -ad925e2851b226d2f976075a6ceeafda -910cd8728664a40c8fff90a42b329666 -4c71d865203bbed2c3e0cc613016ef16 -84c56529c746e9a255b446a856110eb8 -4cc2ae9ff71559bbe8c3ec9c2e0b0db1 -5c78c6047674bd80d65b295c9739443b -5eba97b678bb765760b3083303750ebc -4e0b2d6ad47a939cbd1aed18a3b18447 -1f0eff83daa5702fd156fc52633601f4 -8879893e08299e2cc3359a89b1be866b -f78fa13842ee5d3d094c20ad6bad1f6a -c1f8a62dd7788a5d4993c3c38f28a459 -bb260c3a099a844105d259dd4e43e7c7 -1a3460d32cada73ea61c05cdac89f199 -dba3d9b98aac5eedf4992a700ef43bb7 -c61ff1e348b67b36a8448ee040797ef9 -accf7951f475a87a9467498d58f55b4b -722fc583fcaf8aa04dced888396b46b5 -269421e00bca25d525a924b61dc183d8 -559df83e590334268ca422c4ba7ad261 -06eefb58b35916b5e82c8db0dd4f1e1a -b68897e92e920881b26ba8cb8403c53c -549c90e46303cef910afd3d8af1be63e -3b506686090dc9c874f243505121d0eb -4c5566ae3f96d929ae07e8621c6001b6 -f76258d204bfd2affbf78c075f255959 -791609c6bc4281feba925b1d9ffc41bb -825a3df16f2c1ade9b9d3094417db9d0 -b3d67d0b1356d80f548c3c2f48bbd21d -1365cb505cc38e32fb6e8c60c08a0b32 -abde8f135963a84439d39f6cef3342bb -1f8918e682f9da7d37aa17e94017384a -3d6c8535c245323350a1bb1addd80283 -5b717e20cad8756656a51b7d8f0e2815 -ec0d0db678292150c81c5cb6efdd9124 -166e20952300293e9b6c8fa8c48b3235 -bd00db7de155418fde890169f111ba0d -bf802d3ce72fea135d916e6beb47550f -1bcfd3cea96c9ac5adb052f67a1d3468 -b97a4d30e31f0da9a172d5c3420f77d4 -cc9edb760200803033e74b717665ca51 -5e511d66b4ef4b960e7c0088137ba5da -2d8ea15d9cd527c9b6e940befa77a69f -a0626961fb2ee10b5372dc79428615c8 -868628aced072c27c25684f70bca43c0 -a51873ca0099f6148114532d9d56ed81 -6fcf5f47fbe7ebcddec5f6ae0e712fe4 - - -e88cb5ee4055519600dcfd7a4bfb45cc - - -03afb32f7ff3e1eb0d61cf619dda3895 - - -9fdf0ee74a688f3e884f9e5ab927f198 - - -3f8d8e5cf37f5bb6190a6fd44d3bbef6 - - -08e157806b9d8deceea99c99f1f63c1a -08e157806b9d8deceea99c99f1f63c1a - - -97eb305e815b69a291d4cb1f59896b68 -97eb305e815b69a291d4cb1f59896b68 -81c71033f134ccbe045fdb1712bb6eb1 - - -5c4a2600c7b5e80fed83112a6a594d4a - - -e900b5594bb0527f300f97e06c187384 -9c737c70861de22fd0e3f03393808520 -3b4dda2859c74f4bfdabb95492dd9280 -cddfcc06e590e90644d3d3e33b3f034e -d00ff3e12914fdfa24e295270d70a749 -007ad466b9de8d487aa4031316141e1d -a29b9d99adde2ba2909b6f94b14d74f7 -426b43afe9927fd220415b0afa68679a -ab11f34bd4155be2ec424adf7cee7d3a -0ee913e0599e8600eaea6ff34035af13 -b48112fecbb1cf9b8f59a18dec1fa552 -ed91c73f2ac84ce445e2a0e8fbd36743 -f95fe28a5aa8a210a900cd6ea52b67a8 -42ff4c35d96bf751db1202cb0f89a236 -31f7ae6a20c4f0c4ae09f09c123d63f5 -c85a6538545fe3184cb1df6239850f9d -2dee15542d8f9756bff59c4c511bb5cc -756af74d72e5f473bcf7ee412df4748e -17e5efc6d1001460f09128243797d159 -b1c2b62786638489504669075cf6b27c -135cdbde7d4014af5d8a53941e022bde -b7f4e2eb0261882d091d08d5112317b9 -3526122cbc319aaab506326e9730d80e -ca41301b89d8410100e0a0c288ccf977 -ded46de770d90adb4156d71e1502fdce -fa73136cfbdfc9a98fc14cc0b60f287f -f2461e9e90ba08a3bff9224c58923254 -24c027a7a399d696469b17caa87c80a4 -b8cc34ce3dde40ee25ff9883c78ec9f1 -88bb1d27e679bfa171113a1c69a078ed -4c82d9f492c61232fa53c199d1fc3934 -38e93f63a3878a77e0e9ffc271c09fc5 -be03e591ed45adf75b4bc882e991572b -dbc9531550440dcd06127ad3effc4a77 -2aa4dc4d5f969a199fcad338789a8ff5 -4ebd5489630d7789a317438425c08280 -1217616f0fc32f54deb52ff1e512ebde -8e9151bd050cd64a2de231ece857333c -c08f2440712c7c5504bcf5e4effcfc42 -b1052ffcd0411db4d2d7de9171dd1626 -d4ed67350cd0982247ca9d3e0f382c5d -7ae5fd6013f4e76bfd2b8f43b6366044 -79e08909b35f69f1ceb781254f2c607a -fce9852f312c03cadfa20b70ee7ca8ee -3fc438d7b9078e8a825ffad968364f0e -61ea0d9489ecaf2f41988a00f3cbd9b3 -ba37b327f20d13a6381021aa9c4884e4 -cfa52487e324db96d0f065e1ee40bccf -231416aaed1db74048f5042045f82ecb -e7a7ffc954bd797c1fa91de37ad284e9 -4580c046af8c3d573c7fdc41b8315fd2 -0ce34481c49596f91a1ba6adf7e9b1e5 -298deec06a5177e42ed9f206a84dbf8f -e33c94dedbc1d4f8d67fd6e840addb0f -d9b9888e1625142da3eb8731a964a36f -d11ce33f08a9512a484a123640c5b5ae -78abe963b940659c36e476174487e8b3 -c4ce5c5861b21fbd5f931d2b446ae4a0 -3aec21be1a3d90b65fe4b8e29b0f1f03 -b9e622859e98fcf8fb44f7226aaf16a1 -758369d0784d0502680cd28c4966ca61 -e85575ae819585f25a8e7beb4bd86d00 -4df0a837930869243f02395fb75ad97d -79f403eec1d865029f24b8c32978e6e3 -b7ec82f70319afcec7e1c61084106286 - - -78a50a94432d86044f05c1a287b9c071 - - -cf2a58dbf1d1b58a5cf40a053b23fd3b - - -a9db294fbbbc538ff69acd16bcde77ed - - -47f605252aadd95c22ed142487fda3e7 - - -030248e13d61044617b36ca9258f0f53 -18bd2fdf15e5ec00f94519e5209ef0e4 -9ab450d8da00188c33ea6825c0f9709f -4034e1ac9e465861e63834c81d25a9c0 -983176b7f9a38f2275ef35074adfb5f8 -19683d962a67840e10fd8d271249d4d6 -c772ea24f117d1f1ae698f9465096330 -fc3fdd0cc9040c14b18c9e6481c07308 -b190e581221f6047139c48495ebeeee8 -7cebeda4fde32a8b9122e600898a4f27 -583da2de81547e5be899003c87f014fa -f0b9c426b53cae801ca7ab42d177e054 -94f01242b07d2f8dd29b2e92717bdea1 -082aec1700e31d4aa0757c90bbff0fef -a278f525013fe44144bfb76f9ccd641c -5c62739ccd5a7703ea322654c547b828 -97aa4dcdb5e27a85ca72cd7b5643d898 -992cd98766048aa3d405082a639a43ef -ca90a99c6e63f993b11bb52b5252686f -5c5dae956041d12cd573c0772fff75df -45b0f1a4f0d307ee461daab3e053d1c3 -2d2aa3b671e422ad187b8853e4b8a663 -2ae2f8de46573581587b3de66f31ef91 -3470a858bb82cab07c13cb8da67331b6 -a6316fbaf0b2fc38b90c5d8129e26585 -cbdfb8bccf81c07de980f3858e8e8de3 -f4d1dcbc3360000d88060e8673191fdd -1177ccafd6fb5aa04c46267b1d9d57da -8ef83741c8ac64ad956e4dfce8cac46c -1ca687ead00d32ac93356c70d0228ffd -43def4256809d3b496c5eaa92355b21f -4dd56c9562abd48648ce1b2b01228ced -c2fe480cbe6df6aa629f79205abf89ba -cef772a0f10113e3ef7a4854468d6158 -6f4ba2870ce64b0bcd7860f07b973b45 -60aa29a1d281796d255d19faf9463054 -d44bf025db4cf0641339b169a3026bc7 -01d72c29793cc7a5002a9a62dc44c216 -d0843e2cb2d7e1b2a5e0196105f5f070 -5d8ca0b11276d0a1eacb6450b0cd08e9 -20ca93c037764476146e9c796578136b -2fd82abbbebc9d5522dc7a30a9cc48ba -d0b080b2b4cfb85b9b477ea971f46cbf -a24a6c90c177a114c8ab214f43db7227 -e72b0a117ab12047daf8d764b09d7351 -5a4c29b8a92a8cbf912ceed74f841f3f -0421ee072598da0de952f933934f78a4 -4df3f182d365fb49852aa6273624550b -0b53b51d64ab737e7d26622301c0b4e6 -b004ca49e480496fcb1eb2d2265d9f96 -00561b49649191b0a71485544966de56 -1c6762de88604a103c1b58fb1a662abc -25e9da32e0d667a6ba31cb66ab137ead -e33dbf7e21300e1982478524e3328d47 -467a15fbd135255d8b985d7f7128c0df -ef0f2197c4ed9038bd237e51c1119083 -55bf774a83d9f08bff1982bcff33c58f -65ab78bb8d883c44f7bf266727b01154 -cd691dcd5065f061270d8aef246d9926 -6371a45ca52232c3c7fe46c3fd46ed82 -4a74c457308e13e3c87fb50bc2aff7c0 -ae64505398e6f6127250864b1d4595b3 -85373c1eab9eafb64dd708e57a9652c6 -d9ce94791fae3da15baf022e148f1e4c -d8ea9bc8825d21950867672bf140f0b7 - - -721ef95b0094678f4649627ae2a59ec4 - - -accab4230d9411331e5301630048a5e2 - - -ffc48f1ffde7924a1adc4be3e85f96bf - - -c9f3e02069c982036e19fdbad60a3c82 -2e00151a478a8d5898bbd3b486a2a3d4 -5463f954c60ef565e2982a8f60c940af -fa5aeff24e2b1e646f01f9219e1f4b31 -1d61871a075da69fb6a66ca0870a6e5b -7c09b1415801cd7a2d1fc6bf3122c182 -f9f216704c893ad5fad21cf6887e312b -6ff23c9054f454cf05da98f8be975a83 -81ad2c14e9462f7a94c2d44459d51246 -c7245b45878f02ef6de41582fb9270f6 -d16c6bf5384fd64e9a2c9514bd9e39ff -a298abf1d5f956a39f1c07a8c606e862 -2241c36d8f39f9d45bb94662de5007af -f5afbbec7c0c4043ed0ce255c3801fc0 -fa798861376bfa8c7e9b814fabb27af0 -49aa5f83f36bb1b67a3178a095a522a4 -619a4182d7f8ae40abaa0ad405aa79e6 -6fb13b77dc08c87950f0b064f8ebee8b -e91392ba55c589df3f6e9d235c148a47 -87ba4660955ed43c76a894ebae23f41a -34ddb664d0ab4de2050f93ae3dfd4d37 -ad7355ee1a27a92d56f0ea3d0528210a -61a69f52f637ee714fecc4c723bfb9c5 -956293d2ad25f84ab223b5f53cef2390 -a7de96e55db2eb0a7cbc4226c5763546 -fe9f4ccbbc7951fc61fbc94ab3092a6e -97a29a9a109bf806f2ccb930cf097ada -20a0cf537a7a61809d6f0ab25520c302 -3907cc81fb7e7fcce1a94f0bbb51d3af -210fb494a11fab76614fbf5d08881a77 -56bde2dff60059cacc95e478fad11c1d -686084517ffd9057809a0ccf25838f9c -6673dcc97bca838f5636c36369a77dc2 -bae54fd8ece7a085248f4293767365ac -06c3338556f7c625361fb1e60f2c64cd -cf3016d2d8d477406c762d58dabbbbfe -51ff71dada11446c64b27c892326a87c -1013b203fd0e4c2da6853f781df70a18 -5c25d9aabd6aaa2a4bf443c7008bff64 -d2ed3c4af62db9cf4b48802b67ab6468 -63610106f8fbf5414802aea71cc4a4e9 -6d458a1f1acd9ee6f92c450923910cf8 -4ff541158352d4ababb236a6aa5e9061 -30975da6c7fa7b556ac2ad20eaca5dae -a7a7914e881b57a69ee3ee50ba4f39a4 -89461c2afdbe30e1b5d1db586e06652f -0b5718ac6b1f7dedca8615f9811e2ae2 -a5d6f963b9fafbb25bf11297cfb90a2e -542d2f2ac444fa694049230e4b50dad7 -3f8bb8d347a12d31ddd9c44a334e0084 -ee20b0b1a78fe03948ee53587a24c396 -35f19f9f71f3e9803a5e5af22fabdaca -2c53c5efbd7464c95db97e373d7ea35c -5bfd0c6631b801853e954756e42de150 -b7a418a6de870057dff3eb1d077b2e52 -6d847079cc77cf103dd4277e9d4fdae5 -22e9eca179b58a57467cff5659b36b8f -bf9a7425668bde0c9027556ededbd7a2 -30bd33dd5867bca8ae4b7c03363db4f6 -794201010c95f1c43d6ca4c5160673de -fb4971d46e41755e42348220576845fa -4298c4c0ef40f1d5c051356f1b2a17ef -b112314c309eacbb45235456b3fe3e71 -0349dfde60d4f7ea1676e23b85c2e911 -5fbe153aece58eab309ddd19226e3f92 - - -bf5dc59bca9bc1f7793d6893040eb9ce - - -6f7bdb6a244ea8a1a51a271be1641487 -a92e2573661f4989a4dd972f58345a58 -af13d14c1fc24dd90412b33e20e42a13 -9c1afded1ce7798b1cd6ca4cc61dfae4 -7be86c67bf8f88d06e5b6ce754c5a18a -5737cd18191c5c11ece98fad73482125 -68fed2691e16e97938c695ba009ec514 -af58c45143890421c6c0c84cf513540e -58b24de5b00796597ec404cb95bc84a5 -874ef15719b219c69477988f8dfbc3b8 -bd10043cf4f91c6931fd27868223c530 -cf67c993408f4d06b374ba9a4ffbd21e -15e02ff036a1f2aad1788996d094996f -4768144a2156d01dad0df8b0ac120095 -91ab4e09bf3f12e32a2bd18c0f1c7e66 -33296b9bf12e7de6dd8eff02809e05e2 -08b9a65ed172b1392385a25d673616d4 -108062868b30a4df24a6ab2ca90b56f2 -95e800bc5cbe3202cfe41b1b17c7022f -62957579a880b5603f9c32a50bdb14ce -14df362aadc8a850e182698367819d98 -a459d5984067d8da16a7d47f35c67b8f -a2794fb493f5cab0a1c1b4bce6ebef46 -819a0a3761a90a651ec448a1aaa1a630 -3a4bdfedca9792320466e9c0fed58c05 -a03c188d2d679b98a79a82b0342614e8 -8e0e256003a8d1dec7a5ac13a7ae304d -fc13f9688977fc797a256646faffa866 -2e7dd26b014e5b72329ec8f6ed9975ca -2a3671ea78a3a7b4f1946625737235be -12f0382bcb4cd8d6c8a4aab117c09350 -d8a6028a77d0aa2a08894e4749a03428 -92d44534a8292ad7002070c4a999c90c -dbdabc48188f62860eadcb1aede7f6f7 -6f920dc7718dbcebc8bfcd967e8ae326 -32e573b584637f2ef0e4e6c6c9c30aaa -e9427a836bdbdce255e9134de57484e8 -1643b60ba6afede59477f1725a65aaa2 -08c0505df349f5ff61e7fbc57aeb34aa -a5cc8e70457f127f77765c2d77644e21 -c01a8e77be74f42d89f956540b2dd8f0 -b0c392b0be31f2861ad74e2f4a5d1c49 -fbf62cf8cddb04f96617c487b097cfe3 -3e6cfd8c21d6a8ad1022a3883a0db65a -2c862aa33e458ad30001166581f0eb07 - - -f4c5e92cfd800f12aa1650424fe5674a - - -fcac34b6eefc89912ab4a9ad63e4d1dd - - -9ca4eac488b90f3a72d3ae5e09ba7350 -e622810a8a875363e00f5a020051837b -69d62596107f4be1d2b435856c56582f -03c7c5297a51dcbe13f88cf72e010740 -a9fb0f1230286144a33fca5a1a141fcd -807822cc53f25e63e2e3ab54a4eef2d0 -07633bb947e7004df22a1d4b59179644 -c956d479542d9762707617ab46283e94 -f087349a358e5cfe09b9904ba75f7b96 -c7b669a5bc86de8f785342c666ef1a0c -a80b57f06217aa2116cc67cd53f6bff4 -4e96ccaaa0f067c0d849d0face6a5bd1 -600beef9a502a6ae30698365fb805257 -c3c3ba226a9acb79b05712726b6ab3d7 -02dde6e74ea514cb0da1612219cf0564 -d37340d5af6d82bb1a77a34d13c7197c -a4b95999f598abaa2735d67eca2b5a86 -4ed5332265904758626a4377406acdf1 -28640ff5a9b34be5798de29104f10709 -c2868310d29e3b390fdc6c7453f4e222 -e641dac10a7da90286a2f36f99efec59 -8e1cb6be2143e1d41d29e97d5aeea8d1 -ac9abd799f64b2ec55406c26da23bb55 -950d2c68708d84790cc279a62f0b1135 -0f42549d7a1c92aacf4ac0d3fdd18a25 -575c8f0b0a3052d9f993139374d50acb -a23d826c38c1829a2b4911d452244c1f -402031221b6a5aafcba9c1f028f2aba9 -506ecd48c4eb7b26a27f25146983b6da -78c9cef5e3c130487178275af3eb12ee -2b843f296f68153a645a90e297180a85 -c1057178c24b2f34816c5830dfbbc730 -026a3b563a858ecd4c8441feb88aa332 -10892847c57ac4058eb41a7699d333c2 -b560d8814737ffc35d0d250d07e3aa4d -949665e8322fd9fed753cd9243e16e09 -29278f465cbc15084b428ed2c7cb87b3 -0ff07e35235504d0f3b06105afab6922 -409a6cd22ff78013b3d29080f1a165a9 -d8304fe1ad07e1c3da0d2ad88530f921 -a183f48bee470bdb205c3328c5372a9f -11030fbdd985c52ff97b2295a2dd8d22 -85501e3ec766837f57886c9c0f04d010 -2a22876139cb9189d8c27a18e1a243d7 -f485cde96f056c42868745ba54a744f8 -8b33d7da529c59b8564d7d40fb9c262a - - -befacdcc4c5bf6a333b8c82fbebe282c - - -278509efbcd2e9f657549d42026b8bf5 - - -14e21c3045d6d3010e816af81d7c7280 - - -c3e3c06d870a13664c24c1e574991f51 - - -6405ccd00a5c2c81221b82a9a6fbdbf7 - - -b6d7bf775170c096cec0c3008cfafe75 - - -5e3a2c9ca377739914e8ae68a20bc04f -31fd312485aecf39ca856829e83ce728 - - -a58e595ddf165baa3098f33784833dab - - -8e51715957cebe1a603da9ef05daa521 -674204d15d22befafdd4358e070c87a6 -a7e69e437e2201a4729b3addad008453 -b6390a186a02babb56fd815543f36918 -3b3c3843adecf1550c725cc6eb788885 -e2556816007e8b2bc69c0464eead55d6 -4e3172d169f123f2ed42e6457098e352 -74b7bc756d82755bfc722244ba59c85b -f4318b158b63b42f8e9e559df9aa9895 -389f2ea1704535252b2ebda860943187 -9f7faf573ab7aee8a85091f8141d48cd -65855a76e55303a76c6f0be1fa835a19 -21a632653af19eaa8070fdd6176b5d11 -da3a7f1f22d8e177fd667b744d25d4fd -1052f1d14c1ed7000296df653c8754fc -ff352494114e6def4abb66e0a60c73fa -39ef21fca72b05149d766b6559ffe2e7 -3bd8da7cb54b869814e51db5cc9127b7 -8a6725237e3a8f05d4aca9652f4e796c -eee10a1f140523369f5d61f48cde2abb -b3184a5e6f07fe0d7db54f1ae98fe48d -c16bd597445766f625bf05ba2b14079d -e225555211216fbba789e9b30ae7675e -01b0463a2f3d259b1a73405d14bae002 -815368e4e80aa28db96aa5ffa1bb9b25 -512a614742aeac612106b38f36830c1f -63259862d9111982fc2bfdcbea692635 -a30f68bb98cdc06a4c9823a692295001 -5eb89aaee2713ad9c9ea914841863785 -cf0308117211b637f65c28d27f4bdb2e -3b4b18d60044fe6bfbc33548d90d06c4 -53d7d7885ff03fe25ddcc30d60840525 -f9e4c2571171b37dba9e05f342b6dd6f -c3eac116d382d837c98ccab27f9f3a90 -c9b22172e811ed9b1640c3e3972bc2c1 -5bd595f803c08f5ec452e0e26b44c8d4 -3c98ba89d8b41bfeddb43d49851a6451 -bf7d2f0a171f6117848b160d845b65d1 -dcab548e1155b0c379dfda56b4178a6a -b8067869917807971ab0c87cc12833ee -1d4d3c60401ae26ff1f010deb0f266aa -d52137206851980ebe7a88360f7ebf72 -60b2e4d2a719eb487b456fcb66b8bda5 -4d043abdec007dd6218514286e048799 -0316e7a6684ca2c2f06c13c8ac15117a -4df2330346ff724461480ae6f292010e -0b0eab64eaa80a0e96b09acd785a461f -6ecf16935435936403cd8da4e38d6305 -74f6d5aaf64a6a3c76fa5eef1967eb60 -2e818af7d25611b385c63d33d6685ff4 -cf9010320d6a8427f2cebc5eb9ffe5f2 -ea260364fcf259f67efc42b29919210d -03cf5413ba9eb436693ffa6ca8e80c58 -f10a00f26eb8bc8ef7de129bd482dc92 -dc8d46e6ea50a07791978c262648d00c -645356825c05e2f24653dcd1d6ae5a6c -2ea8c9e0cff569583b9f10139381c945 -d15d13a3ea77233149a91517227af14c -bb5cc7a600501a46833bcbaea20d7a87 -804b5912e5eeb307632392aed646be82 -a50933ec09dfd04403d15be88975d2e3 -1b344a5c954401e30c236c65e6f7de73 -6a0419c5a77c660861e642f6b23b466b -c5277ee6b21bb7ecc094964daab552d2 -2a6a62fd49941a7165def6478109539e - - -628cf40a4ba7a223b5993c7994cf21b2 - - -f63ef04a501398c9ea62416285a49ba3 - - -58e184b5c2e12e749884af75e9df2365 - - -560238a26a83c9a5772a0a66aa8c6496 -aba848bb94ad4ed9c3e4dc3089283444 -a2136087f9caf4b0cac18229f3690dc8 -41b3681c9defb8e0762bbf7c1397d821 -8de0815b2069fb7f1cb1ec3044751918 -1cc42aa2860a8d3c7f3e62cfa327e7cc -6e4ca7bb21309d0864ff5b4c35d812ef -a11798714ae699ee25d3f54265e4fb30 -b2006f50997760d862e35c5c360226cb -865cad73eb89c01651d884589bd4763f -40750367691dd20603551d026b2cf4d4 -d754c0655472ca097ebdfe812abdb264 -e0cf2713564fac2e99a72ee6ee57925a -8b1a3789e6ee83787a070eb690990dab -a2c77b8f765e5d093138b59ddecee582 -65ebc33d28ef411e036d5649afea5d00 -154583a21b3d64d8b26cf410f241793e -31cacba9e412c90a0f9f21e9ad9c81a0 -8151355b62e2515b90d752fc32452a54 -ca00bc92c1e71069f89c768e3176a0d5 -b9f778b98c45c31ec95691a1fc4740d3 -0cde5a1109bd464ea2b1724328cc6a62 -613574e726883dbcd2d93c1e7e968f1f -851dbeb4901fed90de52fe0d4336ce0b -aba59b9e43759d10a9da893198c8e9eb -53475de47389aedff8e7f9c603230184 -59c3dc093e6bc0bc0881730531898dce -2ea6dda2513d324414bbd8ac05b79d0f -34100700bf8a90401fa1bc3863a5ef06 -194e20e5ee6c7a5c79eca598e1665bdc -bb155e898159727529c39dbfde416f01 -bd72a5424aac4b4038a2f4cb2af74c8a -0a19bcccb97274a88b86003285637260 -bee383a14dacb5f2ba3b1deb8b84f54d -035255a8d30488964e4677513bc14789 -829c46e07c543f12879941999be47123 -e5f41d8abd451b44c5f92bfe6780b692 -8b914474fc3f2502f64f5e8288443a34 -096402ea8d76b9a8bc2c4cc56a4cd823 -a9bd287a830192f3038bb327df668791 -b5f41268ad9db1a4578bbb4d5eb07b9e -16fb1e3b659211cf67245486cbd9ef3d -bfa591574eed530ac9577fffa5fc543e -b6652eecc62028456111cf056d8b5812 -b1cb4d617393d1f38502b65b988df321 -15feaea674502dfb321e05240f7e10f9 -68f6059323f7587650925bba9dc6caf7 -f77470d1c3c831b2f443b8a1bb7e553f -9d74fcb626d5beaabb3f6b6d3b7b8ef1 -96f19a72812f90d34846cf72b4bb09cc -b60a3bdd85a269e7dd90252f987e7c0e -1721b63576167a05f0e306f6baabe3e0 -dbd015b2051d98db083351905f5d03dd -3f0605393e4248214bb0d8014121f1b6 -014e0b3032e71c8874ce0a44adae40fc -76f05447a6e19b0ba92e8913db3f0475 -590f0e56dda084a184fad737e6b8d80c -7371f1cb0309696c7d6ac33ad75a5c89 -5df6c6102516a57c741fdfd303c4ecda -687367c7a131a2b0b660f0ca30aabf73 -2281057903ffd3f5b0a4bf95ce8d3aee -2bd55711575c9ed0f34ce5d891e63cd5 -34c94d5146f17226fc5af7ac3ba81d6e -4697bf31f23200726d4fa8da13ebf106 -f2cd34ee65ce4804dd5f49d5d8d764ce - - -bfdeb2451b2f7fc2e429b93a7fbe8c8d - - -77404b5590596de508a542979f3cda84 - - -4cd22b579216b800efaebf4ad967f4b9 - - -7707f892d65975d434b0d353274ecd37 -128d503e78dfb80bb117f36e08c29e77 -88946514351c89d510346dcfbed7c237 -639c6622389ed4d92dc5203af5450b2e -c6b27890c0485cd16677d56507551416 -30e323cd262fffbfa81d283aea3a7c4c -b347b3f7ec52933999acb9dd40334b5e -752f4ab14934dc51b0e1c7533218e66c -22a3574e96ebf1e8a38c44fd8a55d411 -cc26117afd59cd39f0aa7850b4118848 -0b8f23197743e7e3fdbb330162606a47 -8ad26513a0572bca3544c64042be6bda -8dc9ba170a1391983e685113ea06880a -75914188f4dd766686e1112476f537f2 -f5022c47307973fa47ec431adcbbfd23 -85cfee1df402b0e6edd3c00ea301949e -f18db89f637d124187becb74e306f8b1 -685dd527cfbc1fd0f81a577209f5fc97 -ab13630cbd56a3e966841bb42bc97ec3 -687a45c78ca99dda76c3551e804b0a8a -8730b71b7adf7b84e6d2e7cae5ad46ea -1ff4c951aec067c3608ab6ec27d3f365 -ff174d3693adc6caa5d8b288bd7af1aa -a1bbb530fff30728fafa1b28aa715869 -664445e2248ad3b95fce168000f88c6e -54d4fedce75e01c45dee02b803114969 -a8659fc797d16b15fe111d5daf904aee -720a5708df097d7ff4ada620e7581a07 -0d455ea395c76621e0dd5a7716c63450 -57dbf0be20009c16757813d53ddc5c7f -4fd49cdd0ab52eb820b06f6b91f7b535 -4c1dcfed2ae2814618e2a45010459d37 -44868567341823104594ced2f842d48b -11b04aa7980130f62e3ac1bcd0e93a5e -0042f12911964e76802761cb775e14b8 -b570f6494885f32748a306efaf7c6d4a -8068829accf72a96bfe8000f56391f7c -a8e08e0a047ed303115fc61362bf186c -32a94143326b67c8d178b6132e3b725b -96b997c9623e32c40c37b30feafde59e -5daef170c5fbe68cd5f100d107e01504 -4afe82bd50007fb49423ca8a311cb00c -c8c4bdb4a1b617322cfcd26fd926e58f -c5f4573cdcd1b640a2a2b708c6183d47 -948ca535f90f2dc7ad9107cfa7aa53f9 -82bf1c25a7d5e5c391280bca715092e8 -01378ce47159a00fc35ed3a2b0c5f38d -39be56b5d7583f5d2b0ccc6fdfc769dd -5c678c0150ec5275dfda6d176794728a -f000ef2caf08334b13d4a2e394432612 -62c402b877c46cf02cc35beb17a1f731 -c1ae7e25e06352749f6fb0642ac45a24 -c4ac34f0381e28b826a88de77b97cd68 -8edda65f22bb0c407203d1402652e3a0 -a46fb6600d397ac28629fbd869821160 -3113648d39e5735411d9c11e780ad4a9 -b2af0f5e003d559139701663a502cae4 -e85e4d6872aac0ba336e6668e896985d -d9518e038a35a88a20e66e0bbc07e5f1 -efb7ececd6c8a55a744c4215dc178926 -32d36311e6dc45a2416667c034f7d461 -4e2a0fcc1a79296818800542d47b78f1 -5c0a653e0953467f63585f1122af3a6c -4471c14eeea5f72781d82f17895d5aa5 -f0f59095d0e9130e93b9e5e084868a21 - - -146a3438dc882b98c821e65ccb6533af - - -48efb991345980388b972a538c801e3b - - -decc55acb3447421b0a38d668853ebac - - -903f2c24d07168492b4cd9d513366b36 - - -730b2178e96e36abf7595d4663cb9a71 -2c98b4264c72874757a6eb6ba708f159 -2f05ce9a8e0b064f051662429cbe7c15 -b981877c761b388a5c2258afe118ab07 - - -0018a234ac89fade98a4a34b682c0be7 -49888cb47623a90b671b82c07bfd7755 -6104899503d5d45f216a16d791cdc09a - - -e9a6b8f89d741f5f66cdebe5338b94dd -0cb79627c76e9f5a2f6d0028fd5b9c7a -de1a854afa7be8bffb6094cea1ae0f49 -69835eb2a149e57a6bdcf506cdd470e4 -f74615c4acf2c37adce3468715ce1883 -02684a3aa4e0fa3c70c8f3ac18ec44e6 -1a326cb3e268428027376c7968813552 -fe7c7f4957cf56fbd2fc5d04489bdbbc -b144bf1399a9c3bf537f87091ac51af1 -0b83651cbd18a25b1278851cb42c7a16 -7632beb918653ccbbfcc1943e9739d3e -6d2f4f0c4588bab4192c5aa999f39e27 -387a6465de40b3d3e07d68612c97a169 -ef7d42f093f18a724028545bd3e10c0d -7835fd21fa3387409f2cfda2adf3bbb0 -6a8173b88aadb794a256bbb80862dd37 -dd814a607d93845515a52317fff7d7a2 -ed1d4ac42414cbbf8d0a8fcce9be5aea -acc7f66154278876e21c427c3d31eb75 -db0c97e5870453e77ba448f874662423 -2f03bb3e6cc6e7af97d2e139cdbc373f -3232538a85b81791d4ddf6aa78457ca9 -2a1ec952faff1c8a3896d599a031f928 -c84423522d204853ccddb147550f342a -79c3ea0423816e32bfe05ebacdb52cd7 -47a41514248347535aeca61eb3e5f87f -733abe84eaf125cfff136c23c09bad77 -a1666383d423bf454b13130f0d4fc234 -2efed899cb065cd7ec7f0e3c2e012396 -fcf4a19d65287dc290223e9555f6e7a2 -ff05ba323fcc1b2f9b31fe6085ecf329 -4eb088fc41f820bfadb4930da1669e46 -6627e78497bebbfe7d03c9e5929951d1 -7d6596134647efe995e984474a711bfd -dc6144c7724d4e5d4574847c7b63fc6d -f3099ec7f12a24bd061fe25d1182b16a -1236fa5e516b6ddfe391f42c142d120e -46713812c6e45c0243387d22d6f8622a -3e58a741e320f2e35a95cb1df2ee7e6a -ccf3bd5df0a92678efeebb27ba759e33 -54b9e40db64a48de20f8d0643f1224d6 -dd3e4baee07ad530f36b53c699934600 -49bcefc242ac99efdf656f0f95757eb6 -197b01e4a102e93a75a70a0a80789885 -b6f9dee6600c7c3e668af4b732be80f3 -898721e70adc38efbdbcb3757dce762a -c718afa7838175f9d03ddbc04dfca03c -2a9472fdeb3f13f6e9a7e05ccb5a5666 -bd3283d5022bfd341064e344c0188365 -591551f798f0cfd1507bd360c4ca8777 -6c4381828243cc9d1e84080df62cf43e -78a6e71c5b6002761a34323f85e03946 -7666e65fc755c867b1aabc0217fcefae -51086417bb7cf0f16f213a9bdb571002 -38fb12879e47ec572fef934b1224b272 -b576e50720b63f798eefb315703c8cff -c38283cdeaa95378218d3665cc597c9b -0b190ad7f8168e07facfa8d4d34c665b -a94d05759d168786d31b91b9b742a47f -7f9810edad92becc0a5fa850f4d92550 -01b0e97a8103bc9b715f35b4ebad33cc -f540b3ee0426841d5c3b410ac223642b -753f7961e38db702eb94f35a5ec0a691 -73181022f59b20bf9878c2f4ab88dcfc -4790650b0d5ff5ee1d53c743eb0eceb1 - - -0e01bf38772c698d9b5d4c2aed89bacd - - -8a873d673c98970c8e7a1a583ad3bf69 -d3411df3119a34813c2843d410542e6d -adba5f2e8aea36ae13491de788d3cd29 -f92e5160709f56509dc816e483a1d13c - - -6227aba90c0bea16120263d97a144acd -9fb077a1e341ec0e5b98ad4e185fd22d -dce28e58d0613b9042843c263adbe2d9 -1fbf7dacf324a615b97aeec5b983f4a8 - - -866057ad079489fe7e32838d8c499380 -41db43f5238fea2640e496a67e97c1c8 -6d4d90557420948fc764041b7341a4bd -e676ca891c4261577e3d0702c7f4c25a -a876bec439bd56f63e52aaf6551e9624 -9864405349e038742860612798e6a918 -346beeebdd3a7079e71b62d5938889ab -717ce376997563e923eaec2c9fa1c106 -584219e2ee406f237e1ba56d08b11f95 -76509ad5ab8986b87491407540d2984b -62d9b8189157bd1bbb683f252ff6169f -0f95064fd9f16a82c99f4fac06d3a737 -d51316e9ad60e35da9b7a84992bbf53a -8c0eaf4e49ebc4b64dad07a574ddb52d -34cab56913a12c8f3cfbdd7cbedba361 -7e71199d2334d96bf245fa287f5a4a1a -47521b7184d705554518a3ff1f94073f -4a1a0fbbaca8abf409c6f16a109b7aba -2b866d348468dbe6404f6c56f448f9c4 -33fa3560ac1f86f39f5a2c9ca61b993c -2c8a34dbcf92650dfd9b6b2a68bbb906 -5e37a2ee5874098bafa6c51cfea80123 -502ea8699641cf83217b6cb5972cd1c5 -a635cd73069c12bb0e0e81d4a7a39c8b -c2ec5e1cb7d7d288f3931fb32673b60d -a123b9382bd9ef7386175f1f71528486 -325aa87334b1ebefbc8d879248d300ca -d05920075a6b578127adbc1b6592fbce -7d50a67aa58530da49dfa5f21d2ab35e -31b50a949a9663738ef5d8ce1e3a9f7d -9cc343774932c4ce9f66bc38b232cbc5 -5f271406fa10507bde1cda5dfda82514 -110f53f6746e569898757a8de6a9b880 -cdc6e9c3375ace1bf1ec3ce9b7a95b20 -6dcfc5060233f29772b6c99ad7c6f188 -87a5ef6d5b632077c6bbb92fe3b9fed3 -a0acc37715fc34be00d3fc5720a67c65 -6d0cbc4ab99cedb6152d97d40383d3f9 -b45f087d77eedf4d7c63a4c4f1970bb8 -b6650f4118bafaaf48e623b4523bce8d -e48c8bc4397207061bf9672ddb7504f8 -f44efd782607f2a29ac3a09a8a8686f3 -443d60344ed3ec1decde608ba71cb29d -c6b327fc7149061e10a3de9b2f5395e2 -3d34025630c995e743260ef6fdd83690 -89267d685e2a8de5a1bd2ac67d9a1292 -6dac2208bf80ae8ef95ee1270dc0fe9a -be4e7ef4697e4939dc614302f0509d74 -e674a2cb9e2218198d8b8bc056097f3d -b7e65c55dd1db4b7d2a0a569eac854e2 -73fe1c847d82415bd179e0a776f53936 -d55016476f3bb7d1dd767fe8acca0c39 -c255d5dd8cb46c1619c2243649945423 -69827e6237546ba1da3fefe76ada31ef -d078560c79300da89352b34e319df9af -af144dad27092ed2076a2954faabe9ea -b3484084cdb615343b7ba6ac9701d6fc -2ddd9cc3010c8f0cafaa92d8aa22c087 -dfa2272a26e608fd14263e0c7b15578e -cf8945e482db9bf76d77af1580965378 -52f495a9cb8521fb22e921337b35ff8b -a51b8f8a516859bc9a9897b3a57b38ba -79e52827473a93a473166e21d3346138 -f75871ec96c9234377b3921fc4b1fdd3 -e46cd3a29608b66bb2818aa1792e8797 - - -15e73b634e4d8aaa8f17409806133a5c - - -ba07bc8eb2bce812a1d2040905149fa4 -aefd18959df85443c31ded83a17ce11c -6ef0beafe86b835ccf854c1a92cec69f -dd89569990b558fd73df26d470738628 -8f1044e1d1fa94a1136be2093ba4cb2f -3a778b1f22c9fc3d1b599131fbe16f4a -015653fc33b263a5b28169fd824db09e -46fc048c4a7514cdb99e9b437f526d13 -c03334df58008c983387bfece1426c9d -2b424d9e6d8e59302b9916a20241e52a -e8aabf620e6a5d98b7cc2c64c6b0af74 -4b871b31bd8de664d48b2f29458f6db3 -11bd0047df947ab88590059a78e16ff1 -f8e0a1a8f13733d6a7a5270fcebae393 -634b15f413f91c22de004de56830b035 -293eb819c592c012e300fdc18b3b0ca1 -83b0a925f2ca66740d1e8c11a2dab0c8 -97594b67e693c6b57969599b64a15b41 -6c59e43757c9c401120359ee46ddfbd7 -a751778d6a7d2387bb61b5adb378adb9 -8013ac340c2505e26de39c361b326ca9 -90e542e8785b3a08b183ac28aa574de7 -be4640834859b04f5a0ef291471be787 -2f20a73be82bf96207f148a3ab31e36a -d505eea409a4c2415a12b3240b4e7d78 -e7439a0718652088eb46679f10b75f30 -f085dd2f8370d44dac293957cdbf67ce -7fdf271038be6c5e9018c1cca6d3ab85 -f334305f7a526767cd39ad271952e783 -f28b76a2a50fea055e7dee2bdceb7562 -8e8f2342574c3f374678d3eb23c78ce8 -5db09e799c2817e5d7d43c7178cf142f -0a508c373b6e833d8d2a09d57b8565cd -f8d11c86b5dfc618655478757f5e1c84 -b94ee3e355209d8e560600e45475d9f8 -a6875466be585088add2e326588a462e -4fe9a2c16f1741bf588d581012ee7c24 -d333b0c4e981f824e1b6349458ddb2e4 -197445ba8fa68273f8d506c6c684128a -ed467f7a3f09b21ae9fbf7cdf85e92c4 -0c1e7e4facb9242d5b5299603bb0a36a -34fddeba90f9a39442fc8d0fcb1f0fe2 -8a06f205553f05c953067ca5272f7800 -7e52e6107c178007bf76b14a8b542dd5 -17337154b07f2ae57043031c0240a5f9 -abc6ff7471a439c3fd4c7a1e4824d2c0 -8fbc8ba712ac0c6849d40b83a81d0e56 -16f9242faae03079564ce4a8a1e73ac7 -aea7950d0d1571aaa570b963a26c47ee -8373a764a7ee48b781f6317dfc722ffe -988c6509ce54baa98d85a019c9009e7b -ba461beeb4645d9135a8a0c9378b300a -3bf25c192fbd7a2440342bf0dbf3e789 -79993e0fd423b00535d60ca50932f279 -80ff9bbb6e5bcbe8f2bc1d29e531683c - - -53304157a61719498aafb6d14629c970 - - -202e57e1f2578b749e55a931c7c3ed49 - - -5a2ad8755f17303808847633d189ea5d - - -04a3847804af946c34ed58e4a9d3eded - - -538dbfd4ad06c3907f75c86543063ef4 -132d1087675ee7be2e15150b5911e830 -d23d9fae5e3471e0a43c4f8913ac71ff -5b73046afba55901acb028cf26459847 -6db46553ad49d8cc62977513fbc122c9 -4c77b990588f8c567dafaa8dea2d1af8 -534cb2fb7f566eead9fc4d8ef33d99d3 -43bbf14fb91c6e401cc17ad26463cb30 -e5feadc0b8d745697956ea2adac95065 -bcb7f401ad3609ce70899241bf4ce292 -633ef5a001c1d0d102653abf2ab39611 -f5b23eb364ff3fa1759b988948ea85d1 -7e0853471fa2c39842af65fe25406219 -ff971213cafa87b9a0bcdd94e0ece8a3 -053b5f60b782a1bafa0bd41d3c433a1d -1735251075c6340d7002784b214b456c -5a6afe1158f28fde9b726c5201fc0f2a -75327548ab625afc438a4be204e4d0a5 -8ba662099c5baa99532e13b759a58a0f -c62bb50dc9bba44cc9669a970e47e8d5 -f71b5c95a615e672f2ea326bf2b60db6 -275fcbdcf6cf367fb9d3a4ff1ecb4ce7 -cae9d8045ba0a0baf1c028020541fca7 -23f67d63140d11accfbee7bec1ec283f -2fc2563909edc54ed91d37c7d3898fd5 -000c85c95f433df8930acfa34774fde0 -86ff7473d2ca25eb055fbe794bafc472 -3cda05435e8c01a4b6d35899f7eff465 -b45cf3999cee9f61c18dd7d1715af65d -f0273f3d0c92180c8188a8858cbf61e9 -cda62084753f224d0a6456a2428a2e89 -56300b715f1fda9c6653153011c995c2 -60f91114adae55ef0303695d42e58b46 -689fdf742b8557a9559495e442fc2fb8 -1e58e80fac734bb1326bae32e654a9f2 -0199b65a17b17381c2f4d876a9776f56 -df5c17977324a9f462d3d56fa2bba89f -ce11ee2e7fabfae1f603fc5a7a58a6ad -54d73a0f2b0e8fe9bf2aac2340d06d44 -8b00c222f6251d38d0c569ef3aad370d -8fb092cf2ee9839b48362848d9f3de03 -124ce5b27da467279b69783855ed3e7e -1859b0693aff46053c183fcc15626105 -9c1cd25cbb532f3e0b231fda75b3f507 -715aae34317a11cbd5915231e16fec87 -9e98398caae7b17077d0058b88d94937 -3895e3229dc416a0c28b814d02ca2e00 -f50887498e1a0be76300190abcc72e51 -a72501d080cb9bb829a169476280dfd1 -689607fa0fad4b9eba86b1ac19b08237 -209338263e4d3ddbd799b025980d6436 -43ff40adae01510fc1f20d0994727a81 -2f98062a90772f93729c2ada7a45bc20 -9c5a124b37d8dc2a518f6f710559e570 -84da593eb8c2320960b1de541d829a9a -53a55b3ababbea9f154d74c62f1a6b22 -a4c3a9a7545e4994e142990d5a58387f -48d2bcb938967416dacc402a93909d80 -d103fb8065c428fabbbe4c885b138c7a -ab38212ff73defd1c8fbfbe534c75b0b -7223ca84c20bee8ff6fbc4f47c8518f5 -d1bc33f0bdb0b31d8f2c351078338d5a -77e8869f3eff348fed0c7c69207a1042 -b33b43a608a5fa7491869775ffc458c2 -a799c44bf982bc6a4ba93c4d3d84ec4a - - -bc835218d97a41329962f0d54b01777a - - -8612915036f094ce416865172e14e97d - - -cf68254069073f12a201863b736e5943 - - -1752a7036efef4ab87c293bdc99a6ef5 - - -ce61f11c776100d7781a2f1e80bdd253 -c2c1de58f780372fa723cf91b29dd84e -58b40d3dd0f82414bee402b565e45f42 -0e7864f7b7f3fd0e500111603c3dbbdc -aa9f9f8076579ebb988b5fddb117565f -12a37231dd9df6bced0a70a162fcd29e -e764c61f036660af1390793f559cd15a -03ad35fc72a3ee50552a90aacca15c9f -2a522071bd65605dee2b97ce28abcb27 -a62f14439f9273f0d757bfc005c44467 -e937dc205ea0564f197bcdf8f758f5d9 -c7cd351bb10ca27f5e5135c511612edb -a0c7413cad31c78be00757a4d696a9b7 -35666c7db479d5ff1399b1487279c793 -63222c5f758cc294bb0e41787be95c07 -6ececb35454176da1813e95478263bd7 -e6e6ce33b1422bf712053607361f1cc6 -39efe21774f3459aecf3b7c5f2673fb3 -6a12a0fe421e4a943f5fdc7a76c862d7 -3961f6099feabe54add76f6c43ae718c -b658f44e1c6b6886be7ece9762db3641 -0c881a0aebf3f15ffb44a4c400116bc5 -b4e6032229209b334fe3757e0d5f6d58 -4f9ee63ded566a36de4b77a537defeed -689a14afbd00e0f481b91085e129984b -8e2f4a4cd02922d7d5e40738aa6ca7e5 -c0287826d7c0e72ab0443149be998667 -4c2d7019cb51d6323c5605badc3462a7 -72f3897af71eee7f2dbb5070bc21bd06 -af8e31e935468d979fb007bec07e71cd -eb316ffae28674defd706633e6e15874 -3ce46c8ec132f2f44018b5179effcbe6 -b097eb2697f635ce95aee06d7d3a2e7b -1177aaeb8fe88c302e5b7d7a3a6e39cd -4d66d071c1b967db68e1570dee5ac60b -43cdfabca51ac1ec8e82096ee825a509 -efc5f604f027765105d4e8f10eafcb2c -77ee294fab4927c6b05295ac7f52565c -52730c662e20f0457d617bd222e3363a -61619d87d4aa8c7b432f47d8c42a9ede -fb606b68fc0a94ef747bb5b609ee4ae4 -7a3655e71885f07ca9a540c7405ed67b -5f080bcf82583f9cef8d07bdd7abf41c -dede2e95e289800654f3be1d6b4aae05 -8162219cafc1a2a931892a3581a64492 -77203c41eb8c95f8c367efc0d10281f4 -cb31651660813ebe9130e025d6a48e0f -7bb4133e9481f1a3bb5047ed1983ee0f -556417b9941a3d4a517321ca7dbc605a -665d5a5a68a1de104557d2e35ee38f4f -c5374a7a57b661d075c83e694f29ecb2 -3d45af8782202cf34ed80274c239414c -376b751819a332d219dc4331b9d9f62a -1d1c1eaa6cd7ca65cc1cc163f962a206 -90d0f624581156184f07e08e3d5432ea -6de95928c986caf142526e2290d71813 -cb554f4400d9f2ab8b0d05d037b3b987 -6283f604b51b4c8436c19989d1d04c3d -afce0de88f049a56a0e2b1d7ef58514a -25a25ecfc0e1b63fac9ddfacc0cdf8df -8ab789172fe09ae5895b1e59ab201ac1 -d58a433bac370d044569b7d8bdec99fc -c1fc94b7fd1c4a40071501d0e062c9cb -4ba5542783c491b5585f72f6e24b38ed -30ca3cb8c6b80285993187191322a178 - - -82c1b74104395011f886f59c92dd03d7 - - -952e216a7803312fa67ee61c06f3c532 - - -7c09d7502b1003f037335975bdf8c7dd - - -60e76204774e71ef96b26185d68d38c4 - - -274f439e4dfc674581c0c72fbc7ed430 -0e3faa2a3959f81d79377f971b7aca93 - - -a519b7d68b3059c94689ff74a4740d8e -426f07c0798e1505ba9e971f2dd47313 - - -0f3d7ac5cbba9e704e0d26d8b515b371 -f5788fc7a0f1033f63da79e866548c85 -dcff781648fe33410c48967931017e2f -eb997b9d9f545d0e417ff6b6f835e1b4 -4bb67bf400590e434860f08db98fa46c -91dcdd9171330bf1fe2a68c75781cacc -ba52be3319719dea18f13a00e186dd8a -9636bdc181cbd89f1a3cf4a282309770 -abf3374cceab6e094a48b353980eced3 -44d36c782ef3bd210e3880685b20d9ad -93d0d0a5c0f829d01b9eb2d4c53c6bee -783c6fe18aa38884e7308148bbf8a284 -b740cd6c774df05b4c924cf0f42b5b13 -fec94613049294e536d3e4950fcc3dc7 -6e1d92ef906107124621ff5c541de67a -fe8c72747f740588ef09b74c3445f444 -0087533a55047448cc2fa174051fc466 -f51640826ce645e6ecca937c5375c92f -8e92714657b67232e7bf174630be8a8f -4fb44b127ca30b811af3230159460f1c -9536a078ef77aaff6c4db757e42efa78 -59cf7de75879f055850f81ac48274d20 -702865c717365f25ecfc9de0fb865db5 -9a0637260928288f4da423cfe527c2ce -6bf8714bb481b3511e42d6df5fac1ca7 -96ad06e54daef6725d2dcbac1cb90a42 -9f7dd0c7c5c0bd66ee32e2514ffc028a -26070cb9eb665c0c4758e0c5b133c283 -a29cc607c2198093066636105cfc0007 -83e90e9669014742999eda33936167e6 -5e46c8a04b9765c01d9386747fdd1bae -91e3aed95d9eaff1179580268c668ad8 -c45e4464772f1cbe27d9f14205f6f6e9 -f4aef961a8314c0aa559cd22ac8bed79 -1f8a24000c0a982800c0eacd1c33c5ff -40e0aa210fca124252fed7e441e300fa -25a7e146d67fd2720cb6ea10cd21bbe7 -a405f65660a02154d2cd022d21a8f816 -a6bb840e317357a855e7970e0197aa49 -eca38931fc26931ac695d6ebc8b1d470 -28367261bd0930840d0fcd563299da80 -761e3fc90e2c4675f75bccba7ba9aa5e -bc29ea9a5bddfc52d70edbf81d340186 -f712b155531e614b9fa18a9e99fef5d4 -3d980736a5e30ffe613edaecb0c60f72 -42c4aadf8ac6bf0b4784adb23eb04d64 -0c554ac4e30366566ca47133eb068084 -d155b3131c606911d779b87473fd9a65 -5660169f40ed8a6aea22a178864198b9 -5d7e7485d9832042e8da7a420663ca26 -305778bf22b14d32832b1bbc5c167c8a -1859d4258d23bf9ab57ceabad5ac0a07 -d77471c5ba4d6b0aafd041b366c089cd -5c389e5703aaa95c615231c9be30fc33 -bd97c5e7cd704fe29b5036cc107c4e12 -5ae453453198e5403d1673163e468224 -d5135f45590ce7bf7d0c902d13f6a2e3 -e398480ad7b1c3e8e923368923e344d2 -34d7f6131031d76a22cc316260cc65af -b2eb70b61009ce12a9b62f89d1853728 -26617630e0aa5bbcc4c28872dde424b4 -93cd0b3f03eb9bba86c79509810f9dcd -44ba81bf0aafabbcb26d420346eb959c -103d78b92539c7b44f22373d06f1d767 -40883fb361fc5de2a4fffc39e1e23cac - - -18a80c4fdd6880bd19be5a10dabdb048 - - -1a40d00a1e7269a80e45923f67e9f5a8 - - -8fe98c303f4642d919ff7dae5b865d27 - - -4dca28d39c883c265755c22e7e862688 -39f190894937b1f55e2df3276bafc229 -ca553844064d55a929c15b6206b7dbd4 -f0ea23df199cedcd015f754e67ee2f2d -d8185b6534928c2c27c3bd7842311735 -dae98fa4994180c0131251b81b438490 -370181d8cb642b916a09caf945a749e1 -0627099bbe99859c133d245036920813 -f839cf450e568e6a4c8e1db0a0b20fbe -53217574d8abaaeb0ba5f788407c0ab9 -e862dc16e5bee2285354de770dfd072b -acfcaf6448c9c745959e0499b08ae7b1 -3c5af3d9b79fcfbfcf538056f88d9eed -4736c55401db3a05ae6dbabf89133295 -a64c683f02af2f644d924d8655bf44c8 -6b809b39a0a46a9169f4db859663ebb7 -ef358d40f208b4cd2e2fa4da1ad9658b -a5c88f09491161c3ad9497c4ae263a7e -69b9fc03b4785ac400d4193253b4c6b6 -6c479c20624e3d0a3e58ece610af52cd -12c6543aa68a7bd8150fbe9e3b083608 -46dc66cf74689c57a92009a07ee976a9 -5689663399bc0b6fec8c107866c65b26 -a630f0b0df9868af5a0346f21bd7c0e9 -0da2ac555bb4df1b95c2482e19b3f69d -1d3260c0a3818c10ad13891dace380ba -cad168632e760ef4b052c0cfd9eedd7c -217f4354eba011a1904c9fb62467b65a -ef843e2689c25c68466d6daf39c9d4b1 -61a9a7f7d8571f8c11083c0942cfc265 -163a8358ec114acac5a2672ad4e37b2e -1545a5c74ed936a58e33dbad6a62ad29 -d98d2d362d93297d345ad4bcddd51792 -e8e8b9986faaecb3e83d01ef2689f087 -835772ea7744a5e195ac52ce27d761a3 -ef403b20c412cb9e46e7859831d7abee -909b41ad567a4d741b3813fb2955989a -f6b5953439b5be09382bfcf678c66c7f -50a82501f08a3723ec41f8f6a7f79247 -88ffc04442458e992cb35ef5be8211c8 -0fd72a4260a889cfc3e5a8e0e4ef1892 -faf618f0b2d199a246b4b922414e3d4a -8d1422de45899d51c8bec323da009715 -b73ea3bb9c43b5cc8980633dc76a87c5 -372850e153891cfaf349c7411f953146 -f3ea58b26b1ab4a3be56ad0f921c0b54 -3b83879c6f64194a2e0fbb919055180c -c274b99226ddc7e2db79152f57889501 -8b2a47a567e56d47dc1f88db9a9f9c1a -e2cbb038a2453d9e740d702133f36cef -961666e004788edf9e751d461350f27a -46d32f0f94c4524868004e728a51b132 -c5ea60aa79a8809a9e778625d2d18d8f -210567b7ca250975dae6a2f1a4787a23 -94b1498250d321469a72fb0c71ba012a -14d8f11646b47766ecff76b6feb93ece -0b88fbee7a06b6cf2d661089f1b32afc -0ceaba2ab6237ab2d1d4ac619b89b2a5 -b2c53dac18aaa333ea14b46f51b18151 -b58b6bc08c4bdc1f3e229745feeb0572 -8403e47adcd8429e23eeaf6cb6b15bc5 -cfa2f5fbdd3d8ab3d1249bd758c7a2eb -340190ebea4fca04c19e01deb0d3a823 -5942cbd2a0ac63ae845307fa087e2f7e -40c1b14bf010d494817bbf3816790be2 - - -199ceffa80f4db1e3e7fabf74bdee32a - - -4ab54cbceb647be525aab443e86249a2 -6d10783b288fe54b3e50f828992d0745 -1415a98b14e5cb9afe748c674bae25af -030c9387085c667ce9014f8f17dc0908 -a19b5c291ea2495e2432a27a54353606 -25b67ef8c30f1bd5520742c943025538 -1805943c3c41a0aece435f873cb86703 -95cffdc2b1e72e9b8baae9e00aff08ec -e38d30e0053468a2789af17d38f9c444 -457178c3e1e5a10eeab9f0f920df8926 -93e6fff7bffc55153d9c2859ac28e48b -ae7676fbfbf82586f79479b56756cce1 -11510868ce8e8ed585a6ad563ee22a9d -0813f938cc098ddc751cbef6bdecf7cd -3d403bb930953d625b0a771484cc85e9 -e24a05f22bf8f9d91fb17899c3ac56fd -94ac3c915312d3e4445343bc99be0c54 -0c7f9b9d0824505bd03fa82b4cc753a3 -a23c0a40efc09de6a7640b5d0d9f4bb7 -14eaed2d73022fca3bebfae0052b0c6b -c4b9c95d9f742081196beb6e72ded20f -a1fef4cefd9e43603349f8e4d9775029 -f3f0b68b3af528ca89254103743c048e -166b5085bfb3eaa3d73326a8829a34b3 -640883a64b98eca9219958f0c9a3c777 -1b3f37880568ec36e07297ddc71e2baa -9683369b3890d4830e9e0ba0e65743f3 -5da336a24e940842244ba5365f8f391a -fbcb93b073c2737f2238a68e0e8d173f -bd17ba6ddc0c45fa6b7b7dd3704a88d7 -a8642b488c4247b15aa815bd0fb20c3b -a0bc93f53f35404900f567504449f73f -b1f0a29724f70701011af095dccf9da6 -68b71eb39de968b214aee59c7aee63f2 -746058795a92d2278489bdac1c9eb850 -82f4dcbc8b788985f547dccef636c95e -10c1c4d475f9050f55a4f30d321f68c8 -3bfda8ed81210d7473e60dfd1c5fb2b9 -a6472d528369b797a46bfb37d6ed972c -6d10783b288fe54b3e50f828992d0745 -166b5085bfb3eaa3d73326a8829a34b3 -58d03455e940b51010a2a56a8cb04ef8 -e9421d09d8e14616be9571c92125933c -71a6cf09e9f6d0f95ada2ec5d99b3865 - - -1ccdf2386a0f9ccdfb330c73d94e605e - - -00b40ae23c989caac858fb873d3ac124 -14faf3792bf93d633f5df02aad6030b5 -14f78c71cd3162d636189600d5f84974 -5021762bbe4d4798fcb665a3d8d1af32 -76768f4cd58c2c1843cd813359dc1c76 -df375804789f9690e28a249614ad7ba6 -b12ff5e4167d297bf133f2094bee6efa -131e3c919ea28b49b7a6d9a65c78a4f6 -e9cadc621fc6628900ae43bedc2588c2 -1ec75ac93040da667c202b28ef25c0ce -057e7bc9937cec27a5edfed1a42ac7c8 -11af3251e27f66c27515faf2f5230091 -8c06d1a432e946a46d36e2a0340621e9 -2e3d0ea285ae9017f538b7e44c937dec -249da4d382d5c402d55e5f4226b49717 -5e06642539e4c61baca4a653e4efccad -f6717612edc2d0fee57a7383566834c1 -89bbd0ee8a97d0c98b41b3a8f391c99b -b368be2dddfe4e1cee45ccc0b6fdcf68 -42aadd458f7a79453311bbcea86375b5 -5b4cfb1ba0b67adc7050fba492406cf4 -8d6c1bfdc8e23551b69c9ac0ec57e3f5 -2bec7a43e0a9b86c1f4be7d637f509b6 -f0413ffb9757b5e863a1f9253f0dc107 -83ce32f33027169c99c7c9ddbc0b2771 -36568775c9e37f9dfe71d9d29919e80e -68727476ca31236f8df200932ebbc304 -4a03d1a28ec39d45f7b7bda42b6c0ff2 -150d7d0fdbdc7455bf6806dbd6ef8a4c -e87c11a090aa0ac30a05ac2245c19af4 -05fa3667e7b38623db709904cd5d07d7 -f28187b54876865cb4c5f31f7fc2e33c -cfb636eff493d1438720b919049bdc1c -13c7b52746b52a5fd50b680881b47fbc -43b6bb71820d5c965140e62ab0b6c3ea -6e77850fca8b589703d58a4045266d61 -0b8c38e9869d2009c9b4fafb5b1109d7 -d0d02638396f0ea62ef23688b1a9483a -a719d20393cb1c8e6b40d96af550ebc3 -1ff2a2539b5b1cec552808f21f5a3816 -9fc4893e57426d217821f655591eac53 -efd6769107962d232cbb8453379302ad -f9fc5a95271f30728d96175e87dbb012 -e67871a9add3ef7ffbc50f6d6739ce5c -2055df6f0dd7e414aa6a73601798c119 -1a23745064a7dfeba86800a6e7545c58 -8f27ff406d99a4e69e7d53134a275d77 -1b463c26612a0c5bc7f6fc75eb01d946 -5037c3a630b41bc07fb3984bdadd1372 -ea0ad12dfae55282afcea286dde41636 -e17665b3b8e8142359d071a7422610cf -21c5cbf4314d815a0996789863c1d0af -2c53f94fe98a68097223483ad95c9a12 -717845ad41a7329687625e3b84312352 -5bf6082634b5e94fd4681c219b7cc42f -e1ce013fe04374129b55062fd7aece7d -e81be4a426762dffe4ee817c9d29d5c6 -7ad9dd30a550dc372d944939e63367ac -a82511d139f1fbad44748d7b0b0b3924 -a053e427ed77db13e2aafb7525780c32 -dad1b372fa7c2fc8c7563747e36ce044 -635778eaa8fe3385e4955f11d78c8eea -ad9b58ba80716a5302e96d49989d047d -25f1cd2f6964253c2d1e62108eded2b8 - - -37a5e104be6e4b2d95c862e1d0867c46 - - -cf48ddbfd3ea5d66e3c67944c8da8773 - - -d3854403cf08e84d30463f89a32f2dc4 - - -c834d231620c7df3f385c3a49a6b3d46 - - -983729c2e3729c8a76110af3191cf532 -d2fdf22855dfb470dd12a98d193b0294 -37e189ba7e650c04a0ed30c447f123cf -74c1560a1e90e3fd07fb62ec94853dea -ab8923da645d6abf8d6b1b1d29a67dce -701c785c5095faef2d96dcf67f25a56b -84bd4993d9940e95b43efb672703e508 -63d15f15aef078f0b344588d6122bd35 -6c3864e371c0cf46cf9894192c93fd53 -758b08db561feca036035c0c2f8c486a -74223e79d1cb08e07996a4d82cbf699d -7194ff79bc8f0633eb12c043b2fae8f8 -4a01469a35089d4c0fe9b4dec861d481 -4ae96a812d3347007b85c60b809b621d -b9065e340d80545ffd52c987d6e1cdde -7813b6214da575376a7226f33ca92d64 -fb32dbc233692718ee8d705f3795818e -a6056a5f565a5afe1125dd5ec345bbae -d6162c59f219e35307890afb8363d931 -9fb7a245311f94cb5485d0716a91b46b -04b885f006f73d99a0d14db935c649b5 -5a29a70d0cce273c9c7e763d73157f12 -d2139add9c63754cc9a46f8e87001b78 -7a6808af6ee2a7d55d4cfeeeacfb5613 -b1f41e4a0b970090882c46bfecccd175 -865c234fdf958ffd0a2d75df9d919c18 - - -0f205d1900bc5a85c83967b4ab2e88b4 - - -2932f3e33313df2fcb0c151e3423def3 - - -bf76bbe3bb9f4fa1f38c723472f0e17c -892f495fafcb992cd6e250d16bd2005f -16f07562ae67f4d23ec913141d96155a -8dfca1c2cd9749aedc6bd6a7a2028ca5 -528bf5586e6dbb2a5befe26b2e40a51b -468cb9134a7361314437e9805096279f -17741b03432725359322e3824eb0365a -c0d4092aeaa089311e571e1a8d1305d0 -b8df58fc0a4fbb24c541c5f33650ca12 -41ff7f20d77fcd1896c013d78f062d35 -2ed8327235a36f38ae84f04a134e2ed9 -88d4ee1abb183b534cff35c0d90c40f2 -c667376098bd057f286ad96a8be557b6 -5c92c9449da6c737a38452922b4bcaff -a1163525e054dc09dea22027e5611dc4 -dd0fe1770571a9dbd89ea429fcaace93 -4d4ee3f261ec6a4801269377ac754e9b -dcc398ce47d249796a9541d2daf5977b -969853a18bc1c5a8fc1b6da66f46667c -900db2034b2d7a6184c7be13c86f2ffc -dfa42d2c349eac38be7ebbf0b4d5ebf0 -cd82e20ad7bf0dbacd5bf56ade775044 -404c2aca474520364bb6d7d95503d5ab -44a199bd8b6c8bae49426dd80fe68aa5 -b2ca0cd3a8d500830daf81940aa2e217 -f2a4457dfc4020bd6f86b614e72d64ea -c5e753209040963031aa2ecb1967f844 -21fe0227445c576740c80171336e7140 -08889d90c128bc986e6f33daa81de111 -fb24fe30463b754cad50ca0c8fb2a61a -6b32e52c1d8ae19f221e82b6658ec6ed -590749d0bb4f01cbe9419fd575cf9bb5 -b3aa20154f2c168489a0f025845bcc8b -e508f520803b6a25c98ba5b50a7d2460 -25c804e7e9a20379225cb03cf159f37d -4def3bd05c46b7c544700cceff48f2b6 -001d8342078c130a854a5fc2ba3e5fe0 -800cf8ce3aa715c4832c37048f5f2ef2 -c780ee5145fa21c13a14c081142c368c -35ee66e976455f7945b047682f1f4734 -a6f41e9047f174358364f070a1c9e085 -7374905c6244ad66e8c96f5ce3b87019 -4b7860f21d571f2b011e9c8bc3bd934b -0316f35bcd972c39bec12bf39ce8b848 -0b9d4f88bd9f89b40fa1de3a70d7b9be -8338e554a27ff4cabf09b75f4a437571 -a279995f8747fb597f20adb229f458f0 -345004bd7d7b7b965c0ed874b11890cd -94872f902b930385cef1169767d5e627 -39a5d39d564daceb561f5fbd44f618e9 -9bc50b2be0ce0833aee8d4112c0dba90 -b1e11a91a505d57a8c67502b914114a9 -1f1438bf681d3639cd200349e199a321 -3bfbe8485673e6d5182ea4356bcbc69f -c1cf7cb1fcc86adf53b852c5c386d80c -51fa2383746497ffd868f2c41a9b9916 -82ecae8ae815f91e8ed31a153326d8ac -c13d065a12474a08b3c1967dd412d3bf -269de249b303ae7df6f86174fb84ebe5 -7b58466546979c617c630397758804bc -27fb09849811598bc2a9d1ac4d256388 -46a74789d877e3031e3681dd8a79c95f -0e73a8e6e29fb65e20302d7b14932373 -c53c492d3c9cd649e87097aaf3cbf1b1 - - -d24b9af5ca5c9d722db69d1af4e3db57 - - -d66d1e7b6a373eff09f71de6991e22ae -14c68008d94f6d3f61f6cca02cd8ede8 -cff68e4998b2a8c3981c8f9f09fdcb66 -0bd95e0651a2ac03255ce19543439bf9 -58738e91241853705cc89688d779ef67 -adcdcbb989ce471063d6f5f213298417 -f44e973ae2e5ff86237b9213617fb822 -af688b341e9fc7a2a4b0bdcdb3b0c40a -8a7ac96d733528b9117bb34ceabe2afd -b3ed6329af1133bc6f138980929b687c -de3db480653c80d66ac3617983c562d5 -5c3ef78288b759fbac600079943871d3 -4a2724f5b8fcdc7f0302aa9fd153da63 -e36abbb542a080efdc037ab5b5892b30 -a623c86e9add2870c0590afc5f949bbd -bd237395ea9a7a64f1d09260d5ec9fdb -ae0879a75ca966dc197b8402a2162ab5 -e2c4206b699b0a3d50cc11518fdd8b80 -661750ea7a3b438f1f1f9827f3aeb993 -4186064e46463e1ba447f4e87197db6e -295385b41cf155abeef31139bceb22af -86f70ad4a8940724e813be06c1813ef6 -25c1bd469f655f5bdc5b1c4e460adda3 -ac510a2014fe6e9033bd65e3ca7d5997 -09c77138ec31fa2c72384cc2ca27d9cf -1decef4f4c89fe4c950038cf39bbb76c -b2fdf0078f2ddef407d32a20f3c55cdc -1d5084fdd27662a5828dba33edeecaa6 -65d9564a4cac04972338da24811437c3 -24b661483ef46368bf5c3d10b7d22165 -9c880cf3060d4146f93941b2a1c4df9b -8863eda18d8d7d8086441d029e8e0cf8 -00e1d7fec8ca8316f2d85a5a4b33fc44 -d01ae13baeed029832b3718143e8f4a0 -3dd88d8c7a7aba125c3fd8fbdcd2ea73 -5fb5bebcac4f2685fd9f8849dcf9b812 -a736f34d542d40c887cb595ee83c5a1f -24341da6955553e788c3a2564584758e -2f3d776b19bc39e993ce41c859839286 -22657bd140ac2202e2bf629bae03fa5c -1177f3b2688e025a98c04ab77b0c0e1c -16d98685acb2d7bbbf8bd790722cfc8e -0bc16529a959eb0dde97ebf8fb17fd0b -4f2daf7c00acab18efd05da010c78361 -df22a0b9c83465670f9d1ebf7632229d -8ab1f8fadb4c9f8816d055e7658a5e6d -1d98cd5f2f25e0591c11e41e2afc9c23 -738fc1d9f4eb5c4ab9cbee2b95ab7ddb -0ab38b3075fb9d3c9515862de613aa16 -114bcc9d8d93b490e63fdf91e3acb551 -3cef8a6e019d9c765e0fdadc3de9e2e6 -fc4ca09947a8b6a942ce2c1c8161d117 -dd8f860c6ef110e9de82e37fa8afb184 -9c173f277ea1483d1280e8c155a61bee -5febfc5e97dc2aeb2557b4de112db24e -726973b7ca45c04bb222e1664e8ed817 -45026a8580338b72244a03ad96e26ad8 -058041c70c87b2173b351b0c7995688b -25642619bfad6452050065405f23ce57 -13e67c57c640c49533942da28ceca657 -ea15b2fbcaa5a42956607cd8021faab4 -99479c0e5007fa0a86496e2373b0cae7 -bdb1c8f55784f7d8f12d7092db1efe9c -0dce132c559ca76638e532472b6370de -a69ea93297fe0452c1426b611515fd7b - - -df3e567d6f16d040326c7a0ea29a4f41 - - -15fb5433cf915aa2be398666363c8ca7 - - -86e1b26fb22425ba2e5c88d450ebe4c2 - - -cb4357c41b35084a10ea91b6f0cb8873 -6c11a20d3f2aee3890d163c714db76f4 - - -a5b115effaf63469aacc14b2f367d3e6 - - -652b4c23d9d52bfbb97a5f772dc026f3 -1e30220cd1c4d69488b59242a05788c1 -fb5fc514e5132640de7feecf3f6cc7b3 -6a5c8cc05b333d062f330d2430493bab -f1fe5e39f45acb48c465866c5de3602d -da084fb806ccfab38f46e2c981a21a67 -e7118b21bf601e8cd63f97302d7ecdd4 -e4a3547bfda39ce77369ba0ac530cde9 -799271e4b2e7a15bbdb7c125b0ea9f5d -18a99293f81a734a2086c0aca26c47d9 -b2f6e0e312e6f4fd395ed5eaf5ef3d13 -a44de256251de559963b599511a5e0b6 -c13ae1d3a6da0bb2aa323e186dd1d386 -31b0fe94d3cbd166075e6cd8ad01330e -a4acafa29fa8877e29fd2089359efbac -73f30beba864e65933a6520d1dfac7b4 -a63c5a0d19a26ecf48648e9f258d9ba1 -95a0103c5fda9a5b38a8e5ce90de43f4 -6f628d6a5f2c1ec73d7b740d0dc15693 -1f61c0621f1b3c205552e2c7e5b71636 -7f6a06b4122d989a3649f3e91bd988a5 -f14c76da432414dcc70dfffe6617b217 -c547ff36adf3f10501629741f159e236 -d9e276fa43be5a8ad48c94a4f7089fcc -945573cd76cd8640a58536054efe5517 -e5931e3a09b21d75678e74b4ab9ea607 -c622148ceda49da4faf56ae49a65336d -e5d9746d761dac5450cdfa82fa59ad99 -c09ade70ef2e492c1c5220aad72a2bc6 -cfa19319b2fbe6f87683e5c743d0905a -846a1dd4a26752300cc4239b4c84b864 -53e6ea416c84879576b4881f9266067b -85cb52767e4db268c9ab7c4b703821fb -a296e114b598141152fec8be15f50e54 -cd3627c392a4241a15c6e8965a6b2eae -3cf27c83b3f3dbe7a4a6f8ab17570f1a -bfc88159098d140c910c1a0eeec04fa1 -5731622ee20f93f4b44c3770f8f71c05 -c3c1e5581c85375440d5009e6d54d049 -c39626c5a90ae521a6d553f950c5ac5d -6d8d9d876bbfb7d535a2ad37fa3c288b -2a8b760d0700c3abe671145d267cff38 -3e7fed8b0a65773cb17750532994b395 -daec3ec1f80e3ca8da943a8ff57eddcd -8dcee24049e4b61868645a49553171e4 -8998061b08a4497932e91f87a821e01c -bafe6e2b89c924169cb82ab47315e0e7 -e5a1edee079f2cca0f52f7a80476b8f3 -b062eb07fa84ad1e905ab499398ccf14 -ec2661871e8f1903ec84fbc469dc809d -10f34289c45d690c9b22b4f4ca69389b -0d7b25603ef778a20dc8fbb403d4e905 -de9e574c0b44c4719bb1f83578b815e6 -e672e525da9adefc7be55534c15a4d77 -7ec306afaca26ed3c3000ae5c5aa8b8f -8a99077724ed433d911e3287f33fe5d0 -e587ce3591e950f68827b7677d27b516 -26bbd172479da8b66150c1a86afdc0fd -e0b0924f8c81c13dbbf9aa3e6671268f -04353f0157697b48f3f3d673258081ac -e4e8236aca00672d547d1f3613e48d3c -487a96cefc1be133cd1a3a4979d1e182 -d2beeb43f28ab2fb956d236a053cfe49 -6b2b4d990bdcd974683755a444f0fb89 -ad4ea14b69345cc7e9091041ac77fca8 - - -e3f2dc130c8b1ae2713f49bed2ee9d11 - - -f295e37b60cca30b2e38c0b01189ca36 - - -ec0e0682c767499a01f763530606916f -83c4afa5a7847671031e28e86833add2 -68617e25f0ec7dd701dd59a5656d9434 - - -b2a5bc92369b85991380abc7ba8ed9ff -86ada72552105dc8605abaddda6359e6 -f518a701ab61f6e1faf7b64a38cdc111 -14afc6144d0b738020f86f26530f5aed -391730a825903621dedd1167f0089813 -dd21483e8e30fe859c606e175cf816e9 - - -441c1e7d8779e39d3ddd5a21ef184cdb -abf053577f529a4fdca7ae577e6cdb90 -64aa12fb017e3a9b0bfc5a49fd73f8fb - - -b5648c532a8c2d01b20f4fa70523613c -fda34032c64605a76f5eec353889b28a -9e9680de469660972b639a94f801b473 -e274f1f497f272001e290079cd057dd0 -3d7dc891dd108074b057aee494c9f16f -68e9d18cdd5f9a0c5535bc9d75f7e55f -9b96558d6967fee68825aa7f8bf30a6f -82373d35e673d674a37b202ecc836f75 -604860eda6d86d052407127da3555b0d -30f0d6af687195da02d62f2a1d7d4277 -6634d42a866e9d1865a813520c322557 -184914a2152e0deff0a864793c1c4772 -0e5d1aab952117e0b2bc3a68b6547a98 -ef8602fb45d26e9c585b6f83d014a467 -a0a207416e883b5590e61c0c69f95838 -e6b9dd5fd0911c0055118d0da4cf6bff -ca5480758aa1dbb0afdf65b4429857d8 -9671727fd23c033251676c862a1905b5 -90fd4bf888b0ac7f996ecc5d416ee6e2 -d8f8e228928d660038783a51593a7e10 -1c38d071cd56bc2c8a7c041bc523b96b -3dbe4c6f39b6aaa0400182e83b32e952 -0981ce1b80a31d780650cac53be31aec -1e7c9458e6d8747b4f113f4a115edd81 -13492d0e4e3327c50611de639cca4212 -648d23549f0c9ffdd907ba5288573ab9 -b3ea90b5ebc790f7c45b0e6eec843bc4 -c08e4efbd854113a3ea6e134b9a6fafe -8bfa9092cfe223046e08e52e73c0a961 -06fccb32b8a54154fe1550bbe266eba6 -be1123f843fa34b639adf5fc0ed6e207 -dd5892a8544b3e8b00ebe1ea35c0e3a1 -cfd65facfc85f50bce8561162bc9847c -962d6ba633f1681a012235ff79aa6953 -b53338983384427805961c97ae6594e0 -2867007a78f3f919f590d8791a8c3592 -4c5ad546597e328452f5fde9f63b1c74 -f5fcd399a62088eb1625b6d2124fabcf -87b8149044a984eae6fc351ddfd89cef -daf8bd522c595c9524dc81a0c1ae692f -8435905698e56cb4343a7aca9d56f8ea -34c172bc776dc6e2fd7a0400f90acf5f -ad657c22136c9403be51eb81180ac630 -3e3b3127dba8c3d4d23f15570dc9bca0 -f53576f970cd091b07516078ac9aa0cb -b032e9d995bff30f0e2c7c5300507b33 -cd6bbcc0ae36e31539559dc2661fce08 -2ece63d1f03462376dbfb520a38cc0bc -5088de94dbc97c7e41956211f81c796c -9d636e84bafcfd303708a5a946ba7f0b -7f7f0f4172d4ce2f5520b91020a06d4c -4edc60b7914df59a495749d51757ca34 -7062e01b179df61d63d268c66a9f46b2 -70536fe0b9146c54d6785650174528eb -879890853daded7283a92e712b16eec1 -63032b8081ce5a2b366dc9d6b6595deb -d7b9023040d400148647b1ab461f04d8 -82c4f23da497d5e455883095774b8e74 -22a8703a365355fe4150e8305abe8aa6 -f08f2e3366c04ba0104285dac3731337 -20816917ecd2e4dcb9775493400bfc17 -2cabf886429af06001b048dcdd2191fa -ba6ee7d2e2714cfc26ba032e53f418b0 -c2e8095b6a0a8afda92cd11d30eb6a8b -df7b2860d7e2dddf4c38ddd17cf88009 - - -38b2c0ea8a8c30d66d17bf0e524a8a1d - - -e186a374ae736b0a383642251246a03d -39c21946426cba4b60723422377e42a4 - - -8aa196e802d6f72bfdefa3b5e8809f16 -4063d77c780ff6b5b79ec48debf060ac -fe69c569852a83a358f823da141e53c8 -c777aa8285dc3b9d75301b7a17a6a23c - - -47c80f0d87725ea324804bfe3f63ebd4 -3ae9af24508fe9ffc8664852465d57e3 - - -6d58a503c85896bf06c411f3d95eccbf -4ce4b06d71ba3840a33a4dcb9735072f -e7848d2a0fe7eecfe333449d7b3c4f71 -3698319e7851b8854df81e47b6917dad -8fa3e78c68fb039161dc55bbb3f0f746 -bedeb3d6dc2b6517985393fe933f3f23 -7fe75636cb1cec491dbee64b3756cfda -0215a306552933b811bc7930ce19116c -4c22f876df5b8465dd209a5840a30bb7 -1addc62af2f559c5abd2ad53f5bff10b -d3cc8565b641fdfafcdcae9af57c8d59 -a86b0ad84cb3ce606036c81e5a242503 -42bf4f22044979c4f2a5da2227b4db95 -1f4fac1c26ce40f9f1e6139aa5ee1bb9 -688e479abbaaa0165afd0e3c9e22c298 -3af14c6c1dc916c1f1adedf692f7ae89 -f4a939c3c11fd0e67994c11f3f1634a9 -554ce7dad70ccf08345739bcdb79416f -37bb7c54512900c38f6ef1fc5c0f5ea3 -00560e1c0b81e49d69f6029799a6dd72 -72154b5948886cd1eeb03e270f87926f -4e79ca699e46300843fe180d5f295846 -3cdcddc70edb076a0e93f0df0094070e -897bcbbda4f5cabb498fac37c621d7e4 -18e15b3477d8965aa8cb41d553d6847e -79a28bff4f078b130bec0e27567d3185 -7bb5f909b31b4a14985abdbb84b80832 -faab6d83f12ab9cb40aa95160986e981 -e8e6b1d6c936cf4d7149500198a7dac3 -2011a9c889baf4243f192e02dd63aafb -a6d5abf2300c19feb8afc7ac17de9614 -611d0184bd3366554cb614c0378fd4bf -903de14ab89a0fa174f58ef73ac64235 -e90b617bcbc89e5d827fd687e1d7b353 -a351f05bda1c6a42dc480283d96ea60b -7fc052151fc84448599edcbf1f583e2e -3b481f8b7853c799adabdace62e15be3 -aae36c3dfac9b0f559326afc8c4bef61 -b1dfed485aa260d46c31c32af3cf16ad -d6af3c9d9b3d1bfcdb39aa457460b728 -42afecb8bd19da681aaab1da177cb2fc -176311151547c8c1fa7791e1f96d7bba -11ddd08d54fa8b02bb74540d832dfc99 -2ad3fa79c3095329ae66eed2711c54b1 -3d968921d0f53e26e9113ee6489a4211 -15aab5dd87e29c927b85328dea18d614 -1e4fa7fbc1072ba458b641f11d742a12 -6fc13bae80547277c7899ead77450acd -6cbc423fb38b55cf80483bae13f0daf3 -421afea8d2305fbdb5b21202d1d3daa4 -a5988e9c564c0a0d6580ee763de7a6ee -397b59991b940fdbc8e0bf3e76241e55 -d162715195dff0e91e06442ca54d517f -f5165766cc964ab024eccb8fd65f98a9 -7d22d4c6cc8ad8b5110eb2a4a178f3a8 -fc1d9bc8b43e2454db7260a063882308 -c27094395975d1d5fee8107e06d0e5ca -74e7461fd3c4b7edf35bcf567f864bc7 -81e725d20e4792d0c832934e0b4d1768 -cdd5842f24fb7eee1fde3405b5db54a3 -33589ae7a0009cb26a8515630ac73304 -c50d66b224e0149040bae1471d3a2ca1 -1a8a32edbc28dca8ea58f0dcb7bb3aec -2ac655d2f1be28fd2933cae2d40e2313 -552c968ad48444896dfdb713f9d1a950 - - -d4ebc7510d06937836f84961c55be335 - - -1f744b872301f7a1ce8e969262a87dd4 - - -f585fa2017c232c9700d71dbd2bb8be2 - - -492da0005fcf299ba996cc907a422986 - - -cb801c21cb362fee6567539612849b27 -80c26f6c43e856fe7168ca0dfa5eeeb1 - - -22925cbc2dff31926cd9465a2981f8f3 -09559453b8c02af20aac399b753968d6 - - -1b0cb4219e01fc2496d44fbac2e278c7 -e76d8bec66c15432a6b952304c074bb2 -91258c9b718d472e07d903906ee3b1f5 -277d433baac7350184bd1d27775eeb24 - - -f2999d6a0d2a72f23ba2a011b0846a51 -1b82e756cead981f5cdc488918e11fa1 - - -85fc3d042805f52560599736ce53229d -7e97d995c0bc1eeaa6227f89d5cfc8d1 -c06f1639ee703e071ef61bdbb9edcd47 -236a7b4215aca10bc6be201f98ff3c52 -8096ff02b1136d9b70f3122341aafb61 -0e2386bbef9aba32802ac8238a13bdf9 -8d6314b0b5e183d1e6a60e9abc4d845e -d07ce5609796ed3bc9bc7d8c2d72b9b4 -29f6507d7963489bd1684d9593be1e77 -0d7b688e37f7c9b66889b28c3036ed7a -69fc7b288867415dca33e4715a5adfe7 -2603b84d027eb3201c80708c55d98d13 -99b0c2fe3c7073747f8a3cae31dd75bd -bfcd460941562acd26e4b19c3a939412 -1aeee31eff564011fc6673c33e6a9f26 -1658cdddbddd82cccff688ee77ecaf26 -de115279927e56ef815339cb99f9292d -0a0b0631d374810a566f573a4c6ef37b -3f4a0b5d4e4d8822bfed5f719add6dea -f3cd22ad24a4b750c26b731c0967f8c3 -2eba45864ce36777660fc9c55e81f313 -6fcaaedaae5ca0bb2c33a0cb75195498 -ca894957777341db0a46ad65f0b17899 -874aa73f22f608126d7a7daa7daed272 -4bec359ec721b127e605b42ceff25de3 -14bc1051609c9908935ec63e13972ce0 -9f280a0ef12999a092b8fead18bbf2c8 -9f7a17952bfaa8b14217ac459e56b646 -11ac09b3175c0f8c4624f7df4b1b1610 -a1e884c44c8af17e0033bfbf52a3c265 -b1be257fc722e3e3596c0f317b63f15b -fc2ec595b049b11e847426aa304ddc6d -a688766970c6db6b1174b6323d38f9bb -916e03582ddfffe4ae5fe61ed431e980 -be3698bf6b260b81ad7240c97b4c9cd2 -2e6ce4c96a92a2ed648368466e9b5bad -de8fdcf97c9176b0e6e2c693715b3d36 -520fb861891fab9c9aeb827d4cd9ba91 -59e2ddf05ce1238f5728934ec71d9f39 -6ffc7e1ab00dd8f065533835571b9204 -8adb620acea122426191ffa879be2438 -26433836c9dbbd151abe4127257f295a -7b8cee0bd7e729f54636d0dc48461efc -453bd3f4f91a2f2f8dc61aeeb4b314ed -c68e25a630bab4d2c2fd75ddef45ed63 -00d4313b95251a7965c14eacfe769609 -657fef17266d26b9679388339e014046 -8c7a4bb7e9d17c712d10f4138da654a2 -ee5c87f15da9bac553f91dab15ebb04f -1e8e0e7ad08b71bbc48db286f3886736 -adb01d6c3aba25bdb17a9dc4d93d088b -4db19fbc3e739f179cf2a814140cb0ea -cdedcd32f0a754d4380d6357c10638ac -330876559f315db3896c19fdeb8db7f1 -1ff4b830345bc173512425d495499dfa -b3026695d2a8b011ce6d8361d3352ffe -e7f647e0f4c1ddfebc5d1b1b658e51ad -ca2bf6af4d525857ce2d6be3da3de793 -845216f4e3e20a728963213df76fbec6 -120a01765437f41df6541f8c4f9c825d -deb7252f24c6e276c8d13ce4c1fbc274 -e200ede1b9fff1f440393e77bf9e4e54 -5761622a2bc204edec20925d46c7e742 -51bab5f9665d36447329a8d7bf2f704e -4b89e81a200cc23ff2cd386504a907a9 - - -d6540fb9a5fd8f71cceb9d70d1c02725 -62aed7c6fc9afdcf4f48f6c28be286b1 - - -b61cb3c36c0363df2b0ebf91a8b814a0 - - -5ff2733687ed023674151563277f9606 - - -330586373bb6e563f84cb097a13608ba - - -a1d6a4f36840ae414110a5c38d8918da - - -7e342b5d0366633fcf187ceb12ae71bc - - -cf8960630fd8d5d8a0dbfe3cc1cee4e9 -45e670edcafe630482b368aae3c6c35a -5b4053803e467cbb0478b65635a4e5ea -54a2d2266bd12c7fc1e7734af9f1dc2f -b91fc1fcf228706e250e51d10220e10a -a58a10e05b789f241187b1006369699b -dd29581a73e753192f4dbf04f74bf738 - - -b604706f8290dc2c1ad866158096dbc2 -a47285e8056bd94994455c9568d9a06a -662f2bbce147ef131b715a7ed63c6e5e -4b8da5f77c31f0951abf9435c1a38dd2 -754f06e960fe37a104640aaf1abccf00 -c126b5531833a5c22877a89965351495 -f2c8ba56a466020fa2a741346e038a4f -00881f0b6ab571ca8597f5bc67cfc1f8 -6c84866f916ce8ae2a791fde01ffd762 -c126b5531833a5c22877a89965351495 -34a1d6c4f58e1a3317873decd61675fa -65602c9e887f68bbb45eafca24e55c03 - - -2a3b6994a34aa08e1498614ce0e10819 -e689320fd984d21795a04255fbb7dc72 -a58a10e05b789f241187b1006369699b -6a57578a3a7037d8534bf04867407f9a -bbbde17b0f3619486ef63a60f42632ca - - -727c747367056852713f2b48fe53c1ec -22a02121c600bc405c09922e67669dd1 -9e2903286b57a62c10ed5cba13a145da -f25537156afccc498651cca80653bc1e -c4474420362ccb81e28d4c5d396a974c -956143bb0094112c6bd7ada797769f38 -4af94d5bdb7445f5c1455525fa7a62a6 -2bf7122c99b995086352e4f5eac031b8 -9355ecb8ad755e35cf0d906c8a465c30 -8d29804923af78a0f08d313dbfdb0ca0 -69b71ce05c903e216985aa9fc96fdcf0 -1fd4473d532968de389a013d36f2a914 -84dacd07224a53e620f85d73fbf823e1 -3a6259971dddce3b5f86e1c1f601d2de -f07fd40e9f0077c6061735334e821a12 -e4107bf5f6c3285c0fc82216bb1ebab3 -1a44bb2817f115f6bf09b61e427874b2 -fed13cdc809292d38bada26c3910819a -447be9a5f4e25c354c3909903958455a -7b71d5f1df04ff8392feca405e30c6b7 -9da73a507611f6af7ebe245ee18ec2ab -86890967051f85f1036c09ee102383c7 -1a0e873aebac4c801ba0fed76aad5356 -ce1968612d19b12dcaa0f23d2c706b12 -0aed04b86a560ab648c192cb9394f5f5 -3725dfdb6e00fd0e4d228795cc0076d6 -556faee4f11b76b177670129f265f32e -c7c3c86b13013ddafa7d90ef7829ee29 -b0bdb73b954927ab13d03cec657b37db -549e960585234537e6edfb8efedee332 -5112d3d0e6b168205f1415c5560ddcee -ed6373c1cf9664f89677f1473bde78e0 -5b0f43fb465391007323fc5c51150bdd -9b2244878e75c71967bf01f2dd217966 -d3649532a1f1d2658612b9a2438d1f3c -99d015c5245fef946e83c7fd88babb6b -f46713c1c4436a3d990c5cd84ad30408 -3c0855eb04dbae353c6df0b3693fe665 -82c923a6d8eac43529db9454b6896da0 -b2ad24ba470caf1822a033068c2f5d04 -2955312fb19060fa52335738166dab24 -64922684ecbbd977ff4a62dc3defdc29 -70128a5a069c6b8bb3e28b0b78152367 -f2405f4b1ed3fa5cef58bc9b241e1c7e -d2fbebcb7ac9df6a712fad7542d93246 -43e63cc0ab2b1bc17b9a1fd8ca5b36b2 -91e57c2a6ca916abfb93ad816ddd282b -9888c7ab412bad56a50d6a546dd2e626 -c55a4c1fe097d828d7bd557bf7af3b25 -08385f3ce4a8944aa1add96eee4423ce -c51c27077b88205e6c2e9a48951134d1 -2c135f756f61df947e60011e91dadc17 -5cc925aa61a6685427d8ba500f60fe6b -c35abec32cac88c8f99563d57fe72e19 -de190041813ba9927ac49ae4fe5f453d -1778b1eb3ec6b1be10c911d90bfc94ea -95f8ae53a869fd085673a4784152f98b -874cd0d750097e4388bf080d4605a14d -4aff18a10cca1c7494bc0ae2d4543bed -43284e48689e1bfa47a7defc8ca917e8 -dca7b982f3b3a0b6b7114bc235183406 -dcc52b5fcec6dd9a750706a183d2077f -34be78b149a33a71840589c3161b5b32 -ded3536eb6bd8367ddd587208fdba17b -9c7f8976a8811574572cb539951c3e4d - - -6a4e6aba870e354e6d3ebfac7c01f0ff -351cb9766dc5162cd586485546608283 -2b3c7c04fd04dc7a09bb983fd580ff38 -68ae2d02f1e21c856b4cda0f13c8fd3a -632e4ba7dcd3de3168feb70553e922b7 -f76e2f239d6971bc47a058bc15305298 -d8e7d709b1d1fd9959705811453bcf90 -b3b0f9faec2fc85f3fbac8baa7d6a9a6 - - -c724101436b085bf318e695fd784d658 - - -e7da2db71fb15e252c37925c2445b363 - - -ae55a1eefe734127c79202bade1c9bf3 - - -b7150383ae7d33277b6edced137d386c - - -3fcb4612fa389fad0b849b042dbaea31 -7995bec1a02a24ab6e41d21460bcd169 -810c0081713130c8d25b1bc3509fbdeb -fcc020b590c8a0a4da3d3d757d630eea -719c7c6de3c772441eedf0663abdd7b4 -3dc1fe6ae24d64bd1036739dc56f39be -c2d23d0ec20e54c789b69f95b297de10 -4257c313773aaf9f703b7409ebefa893 -3cc9b54cb0b7df0b963e6e58ec1980d8 -df0f43fb589f6ce9e938c77297202dec -754d4d0d76b3805edc8d64c3a145d116 -b922a2e97ea572db7617252a5cb09016 -b52f589bf618a0ec290822065475236f -a798a3c77764bbc441792cb1dea86375 -d21c3990b2f101e0d9fba427358fed01 -5442cb7e20921a65b3f4024ea2fabfdb -b07a19b877060edad71d0c8133c9c563 -bac76324c1ff893480227d0ce85193d8 -4ecd2458c4065de9d5052f58d486237e -879e016db1327a5325c54a04a05047aa -a0541e0740c2520523ca6a8ec5f827c9 -8e4174f9bdbf487e91f73fa5cb07907c -36df037980205dfe059f1fd7308f6864 -2734646aaa561ad0ac8ac3dfd0868b3a -64ae30b6e476762eeb8995f0689190b7 -d1a2397cdb479777687296695e06c51f -2ba61c1133bcbdd5bf4d7de05064606e -9c2b43af488aa616084e49439c55da0f -dfd9488d1730bdef5e7e4651691030ec -d096e3503e71e0114b7ba5b821e1a2de -1659023218e51017e544ad4e537d9b18 -e0ae50e17fcd29b137569250bb3040b8 -994f4907bb14f448ac3a44568a751000 -bcf08a6544003c46643fbc2a6ebb3812 -4b892ef95ba0feca4d59f4469a4ce3b3 -a1d88eb55e84dad93be065cc40f8f43b -3a7ecb8e2c75c7fb6be8a15fc4fdb908 -ba90e42ef3b6b88f452c3a3d466fa2bd -9e9b473214c639b310e3e80ee37d1e8c -77798a72efca8c59d3d3103ffc1826aa -4c616984a8663592b3f72f8e917524a3 -1b773b463b76d2d74594e989b2209449 -d6b65c66164af0579ccdc3472fa91299 -26fb46a804553e04d411e0f603562d4c -280a87a8f05d376f5d4f56933214e292 -fcdf4de995727c4d106e5cfaf62c7384 -e5e56d3950a1f3f6d90e003bf0d7e068 -2819ae3efa4e379c614ef1d36278e295 -bd5e00c03c3549fb769e326633fe1960 -3eb009619122994be49a5f3716e95326 -e41a061acb148287e1f8c4fdc3a16571 -2eb10e54d58683e54999b0aa87dc3a85 -e97c0fbe9869a8f6a9d7f9866b0a60e2 -70340cd23778a77a387dd8798c2f9fed -ddb63fc46f59277036603cef21dc94c3 -58447b5980f81822e013c53a69d55d7a -9ca4d349ff39a9d000bdd45b4e754b98 -65c18a93c9c296130fc6ec1f039a2c1f -7381e1c8a64778c83b9f8feafa31524f -e27ac27a64c55cf2a628ee39c711c28c -fae881ec38165f31f2514ab8d0caa21b -cb24ca767a4f89f10142f9972bd9b6e7 -67bbb73728d892af28f3d8a26429395c -86b24af6f0386af9f1e1bb941d2003c7 -e1f548d95e7fb382a5b2ee9c9fa38b5c - - -640fe591e3695d8b47d0555cb7c44770 - - -4bf47715be8a8ebfcb74483d37bc8927 - - -88a813c2a45d0c8ce12eda52f36f26d3 - - -e39dba8d7b8dc4617bd3a92bbd643207 - - -70ab052ed51dfdad78f49615a6f69e60 - - -254df5a7ff156ec65a3997a119999809 - - -5da383d5cab8d9acaae132e642e39806 -ec381e415072fac0d6eebbfaf9d6e62e -c91e8e3ade1afcc630e27827d98879c4 -058274a5eeceb30f11a79ffabed1d96e -73f148f84d8e97c7db6657fc3f537f2d -3211b9b5fa8c83ba6cae6de02cbd503c -59e1c8f8a6212947de946d9fda42a390 -a46b031738dfd4a8c8b3a9eda141dd99 -2d6819315f6c713d88daebcb6e35d7ad -3c33182571d240666416d01fdc898b44 -6afd922cf25edfba298730f0e3009d10 -7ebe3f9dee233b617e2900493fca3da1 -3347f3116c68b1e588aa95385ef18b4c -053355dcf7473b91b68957d14591b448 -fabfb09387164d3bd931bcb1d873bcbc -1c14e4c0d88f9e322a9115f774cf5369 -1f2b53e20a6d5de24335cb6ef91554d0 -971704fe6ae22d9c55ba03719ac35221 -68a6512fa5235743cb2e1d17c7ce8b18 -0277ea9fbedf49ac49cf2d3bac63d541 -6f51a68280927c57c9b896922d178acd -e249d7912bf80bbbbf6c3606ddfa5205 -2f7a31c1060cd0e183470a37139a04b4 -db8aeeb94562d6f90b79fbc5d7ad706e -e72e2b1b569dada123db580105ba8263 -7058da97db5d6d700cbc61d2a21a4cce -244aac18163a60e054d68c36fe3a0214 -dc0f022b5c07243035832fde05abbbb8 -d5ee5e9062e1eb72d397896349364356 -1b7f9d8725c4259ee427c528a7a44c18 -848d3d393e18b413f825fe47d6831133 -f7b3a70d845cf15ff446140d86fbc523 -2937da2da3ebd1181e2028b65437380d -090c60145b221eeef1603724ba5a36cd -40047b3bf7923cf8b528c12d427e0d4e -89d3c886d0e496b835e5cb8e4b70bb27 -dd709bda9084bcc30fb2364c93ca3e0f -3abc2e5717f88868d39ea70b72863033 -47cfc1effb86cd33f04521d28821fd1a -8cd28f2d14a34235fa70221b362f7e5a -fa90ee2416693e502ef3468fcc7b8e83 -4fbf79d4a94cf95251db1c3676913466 -b91e59bc080e0b4a4cf7edfd8a693feb -8f54ac1037ac33b57f576db08f8d7ad3 -d999447518e66f1b4b41878e57cbaa86 -034455bb71928598956d437efacb49a0 -3d6240fdff8cb8a51d9c113e6fb43534 -ef9a0ff6de451900915f83b44ed9c733 -edce8a83541e168debca66b2199dca29 -c5847ebf22e80b5cc2d38fb14479be52 -13bbace6b20cd73781b01875fc533598 -c761da2c6cf06bcf61e144f235152ed8 -720433f1081eb4d6df77266a95302f60 -57ca3fc5af4f3f961d8e7f2c1eb790fa -552f72702015e9ca7cce60938a31be63 -e17b94977639c424f3ecb6f52bd15d67 -d2d3e83d08249aaa44af84c2988e7d5d -acad8fcfa817ad704c6c744d0b2122ba -cdc0746377a8b12d61be8812a6f7d044 -45ccff68595cddf51a4e7f39da5b107d -3a0ef81c1dd16d86a921a9ad552aa5a2 -338197f81e8de089151747cf4d088a3b - - -ce2c91ad6dfd86639dbd6fad1fbef509 -586d7b2d1045b9115a817507fe3b5b53 -272ead8eec497be617cc3d390c427477 -fd9e4859f8b774b936461669096cdf31 -de26be26ca4ef240bd153a8c1dd0cfdb -2cab0bd74fdd7b997aba318b7c90eed5 - - -e000d09cfb7fa17b91065bad4e642e1d - - -7e244ea49524cac297c2db935bc4c3f6 - - -005e92a64e62ee70165293969f7e8ad4 -10a79e01588ef824071560db0833603c - - -bc35a09be3c5f9a7107b2b011cda6e7a - - -7dccd26f16fd1ba6d82647d69fd7e829 -9fa62494bae4149b94cc915a54668d05 -04b5620bab2a6621242e6b85c28e70d6 -125659976e92f59646b96a2fdd0d3b1a -c44f1f2c607e519fd0a6cc63b54fc5d1 -eaec7ae1c8140a8bdd1eeba5da986e67 -81ba5aa271152c52adc4d764982ee4b8 -c8f0ec91653ae8fc3a38518e37913ebd -22f8a939a2db8688c01e1f7b89f02ec8 -d8f3fe396763c0a89ba5fae99200520b -ca0a707dcc754a2fa7bf605227ff0295 -707af5608d5b3e9a09c6574224914794 -1afbc4cfd5e597e995e7278fe3812d61 -429ae70fad42b952f7220f7186025eff -d1c600b4fa86d245f27f6818a17c6424 -50153673c580b797448b17ec9798a1ee -ccd381d3458fb877783dcb47c53ab08e -e45f716f7591e5575fea3180860563f8 -16849e53c607a199f35149e1478b5e03 -c5768fe0f893de17c8f00d3bf9f4db5c -d44b85bca880e33db65127aef31ddb39 -5257dc2bf2a5dd7a5458814123977586 -0f4799a4d2b537dab1a4d44629794997 -912024b336921503608fc4d50975f1d0 -4ca6b5dfed4c6ac285513a051edb338b -04abfacd63b51bd4c4a8ec2dd1de0b67 -c8711285309c46d1bc5be14e05c6ca65 -685224eba8e14dbb8c1398b050f461af -428d1e617fee4fe79b92966ffaa11f25 -8f6f74a2ba3a2401b58854bb90acae89 -62c2c4e3044de63b8aa11b2dfb44809a -f7ff8a37607cd52def859f873c3aeefa -15b63e1087678a477cb5b833fb150076 -eaae9bbcd84423d52427e1dd96156b58 -e35a5053002efed30027b668d3116a97 -775ce9f1464a0211651bf0f8a5bfa18c -b6dfc5cb64d2bab4af5f89b5812198a1 -56be4a409e9704646ea9f669dd494282 -11c4cc9af3ca2fcee8f4e4975c3e7833 -7b5b25a1ba0b52eff518e0349b5e35c2 -c2a02db9de9a83f9cb7cd3cec201cd47 -5075e143b281199f63bfdd5449e133e7 -862ae0b77e8e317ccd6d0ef3e0732c6c -d89c3500a22fa7e1c9240129f1d83ecb -768bc69f53d627b4e7b21d7f75f09a6e -983c46a1d76f8a56d22ce5618d24789a -a62af33f465e0aa663f820ca0188ebf6 -1dbe78ce97802d95f9193acf560c03be -dcc55d206882c2af68ad8235ac97e58e -2c4d13185c75c8202f65022c08963603 -b4637f410375f835ed3c90b1f72892de -206fb09e8f296ebd9f85be9cb9289f66 -a879ee599be9760dc40840a4a462ba8d -8557b50fe97da45ac8756f6a4d1bdf34 -d308aa05a2f05245f060c391dd6f93f6 -ac0a5489a29d733677ac7c89b2416864 -de5ccff459a14c59484a89205a1d959b -0969a2f1c9794642dc22682e361779dd -156cffe6d029da83a426aef7d3982fb5 -eeabb7881affe487a960606edd42116d -1b47bf9766d8cacf2c3c0b60ebe9b3fa -633f9363b12fd8f5574143515b642778 -082f5b7b4ba85be86d80f0b0f3a50400 -3ab6eedbe157562250a547ab1d140a0f -2f747bebb1bcef6255f8650a89376ace - - -88a94d80df79c5b40fddfc38c462b99a - - -692e20db6b797b084592808e936f779c - - -cd3335bc2d82cfe0d56caf236570106d -aa5ed27aaf82b840ba087ef3d2787e04 -ca19b42f1adb825d58d57e3b2a739d20 -c41a6f742d111e6b9e69c455515055ec -8428e9dd9d9677f41dcab782a7aea97b -7d0ab24e3794439ba29d4aa48f4a0c7f -bbd6bd0afcef117a4e47fcfc4a518b19 -8d6a079a12501c8fb4b1e5dd2473a6f6 -2d6e84919aa99d0451175fde78e3ebc6 -3ada9bf47f0078d360c99e18277641fe -01c41bfdc40bd10ba190526eba306fdd -becabad6a051cb361ecf4c01cf446f74 -2ac6d502533254a08759227452505efa -1551d9c1112af9eb9fdada91e9d51cef -0a633d7a75a70fd222bb0f00b97b43ab -0092c63651533044068aed3c5a72e66d -cccc9e28e824471fc6fa19b7d6b0e505 -cc85dd4f864541a37030e31d4f999bd2 -4bab956687ddef71e1bb8d10a5791eb6 -f06b456a67bf306fd870eab672b8598d -78b01d50c6acb898bd5c9467ef7eb697 -a34f278151995523a345ddc569c1ad9b -18dc3202e452555bb9e99d0973262752 -42b7be9cd7b2dcd67b0631441b6fa2a2 -618e08d1a1ee76a570c3794be96899e3 -0d134260d954269a57ad1c7cbef97e32 -cbc332cad54788eb88a5985a82fedf4a -72dce0732aaf164cc938bec5aab86836 -beb1aaab495a85df74d549a4fd16ab75 -e3207e4ccacbba12adf525e837133cc2 -f3816e17dfe77dfdea4dfea4db6281e5 -7e55b90d516a508d90386e4f1fa901f3 -341cafa16a4453f5ea90da70e640d574 -e1bf696f6e95ec90ceb0d4b5e306918c -5f9020e599b44474d5b8a59948282b72 -9f0dadce14495794753589351fb2f9fd -a9ca3f6a4820c4f075a6fa7810be0921 -63f7e3a84429869b296a272bebf80009 -fa5b39843bddb4610105cf399b460f24 -0944b6df9271cdf1450fcf3d1d364cdf -5cf61f2e90951fc0db70efb0c211786c -d4f1661b9ff3610b5d7f8b1a74472d4f -26042c05a9894e7e195e3fad7e254bc5 -f749d8a1cc8ff8024f9add4fffb98711 -490957bf6c84850b9a1e0a7ab2c3f896 -bc18664a64f5e95aa041a4c247c42ffa -80502d46ca2b54e3f82d6603b0115741 -c1c0d2935cbdb51bb9576399f1015c11 -1251916aa7235cc839f82e9d63c61531 -b276786905ecaabe7050400041331561 -d7da526de089ba90d116347fe52af9ae -1d2e2c6a2ff30107693920d227545b4f -1efadc4f92fd784e951d45177aeba8d5 -fba065c3f0f6050f9bffed86803450fb -de9cec2ee73d79fba3f170dd9a6fd633 -4d53d37ec785c8810afd47da28df62c0 -3d6b3f6d6a4b2ec03f17b6dc13bfbebe -42c7ad2381d10bb65963c236a41dae63 -eca0dba3c96aa8e96836860c7597833e -fd16cd57de3e72799f36a6fee796cc0a -9cc94696018e1e451a6165b5fadc4ee5 -c8590e1c0551c7efab6946a920559994 -1af5632c10940ed04e4f3feee4124e00 -a98a8f4704ac217a1e86dba30af14a35 -b2c01d47cb53b49dd8a398e93b9cd5d6 - - -04aaf1aaa0767de7c4312205606378d2 - - -72456b00bf57c2bdca437c5c48135647 - - -9a7af859f5b12c15b5b6285308e982b6 -e8b960692d1d119505b4761d397a41c8 -9816e29b3872a45e9d81a9c114170ecb -f6fee0b8e1c4ff3e19382aedb7ab9f52 -376de3ef0ac8ac61b2f32bc7acd8eeaa -71f5a10bc7f4f677fb999db2a9180471 -a84c2a499a214a13a21ca1e954b05a31 -99b23ce0612bc8bfbbdf6bc49740c968 -0512bb5b52801afae8c6c599112d5cd4 -9f892e93945e7b3e40c5afdb9984de8e -bf2fe4211777fa79cd85a091324178f1 -9805853ce7c759877250763042b684c1 -31ccfaa6f3df0053086adf5c72d5e427 -4ff9e703522f3ac084f35a9f84d77d7c -927759d3adf4c5d3238410f0fd4ffb5a -8c7f7eccf285b39347cbfb96eaa51bc2 -c0400c70dc30b5b5aff5ab169a898a5a -900f3a2f4411d10e7688a3679be3c965 -3d2ba455e78d218a5ab31e78a2ac4c36 -a028302ca9f81637b36d0cc948b54174 -3a203e28a9c285d02dc300ccc4029642 -0651d57b68b5230375b02be6d044d2dc -88080902673d4ecd4222070c110ebb54 -6d6ccec65e35b5f76684ee52526d74f2 -5ccf0ded2de23c2b69fd6948c1108d03 -33866d7a97b295879ca893dd3c09cd20 -357b614ab10f3bce1cd530eb5b1abc90 -eb768ad4efc097c7712ab2bae34e13b3 -dad6459bf4086efb7f7901cb6ee560af -772f8b59a36d04471136584a9f3d82c5 -929237c7af0850f0dd42950d45168163 -ab27509d1efc3064a91078f29aa72d4e -67707e8118d72b2f687596ff273bfcbb -7c22a31c9f2a318702128e6a2fc8a13d -61ac990e48b25f7cba5af4e9f037f62d -d3e1712e33762922e691efe371cbd285 -d584e0104f73cf19f42be51264124888 -f0895565cd76e7b4e51fc923944dbb37 -79565e95e823a6a94344f3f70dea2ae0 -4eb959d933a8f6a0f6030fbccbb54f69 -e913e87abbf59840d31a5f5303f1e205 -47f34331d7016dbc6c18f53093bbace6 -b4a1885a02afbdfd20cf3dbefa0c38c2 -33dbd41012f2d8d5503ad09923c5c8e2 -0428e41f9d091d86b76cdafe35e98b3d -6ca8b568fabba17efc290e6bd99b889c -721eac7a9ff861f192a1080b8fd2d222 -8afff99c215828f3778e96843f56c1d6 -7df81b0a58f0828898d2bf496a723bf5 -b7abb662fe04024ff7b7274e8ee2f01e -34da72116f6b107226ae5bf956d36deb -107293c4f95e043bbd27c59e02a2e036 -ba9fb3df6c19f55d827aa89c9d48e395 -848fe203e64b9d62d18debe2eda1f440 -86614f73c28fba5e34f0fed0c1342525 -a554adffa6aa31e9eac4f23fc5a3cd1c -5cc1c3f1ced768e66a7cc31cc7185d5c -90670a763e5207226393cba5dee0ab8c -a374dc97cfad5336182d563c842a206e -f0f5c1e617ec1bb569eabb01743d1ce0 -5eff55f41b488f6601002a5f65b7f6fe -cdf4af5545ebb5e23145f1e668ba6aa6 -ea073db87a9fdab0cfe160fa6014171e -ea803a95f0e9f1ecc71300443c50ebd4 -6c1fb8268ea1138e983be73428e83fba - - -5e9ebfc29b4989010e7cf0497e1ea3ff - - -245089c23067de21b6cd2036e94b0230 - - -74a27a4eb92496daff4c8b3e8102206e - - -aeaf00778709d1b32e3202a373db3d81 - - -d7c15118b921e6d79f7377bb74e8aa1a - - -5c4ba8c3c0f8c8d579a8144c6dc47049 - - -37ca40ad2de204bdc31b776570b78f46 - - -8c1e9253480167775b996483294ee36f - - -c36af72113ccee4cf0e556b877ff094c - - -17227e3510942eb943576846725ee696 -17227e3510942eb943576846725ee696 - - -c36af72113ccee4cf0e556b877ff094c - - -e9de9abb34883463846f9fef369a4a16 -acca9833590682114a331f23440fa109 -9ec5b89a76d8ba24ebf630d86105eb4b -1db70555e0a91b838ae01c873af08e62 -a27ac5eab7a5363a64e25fd9c7452428 -8deaa2d6e01a795ed85f97a7ee2a92f3 -7c7fddd05cf2c6f79377528e60e71e88 -119186c7bd4dc1d57d737a95cf0ab68f -1063e323499af708967c6e8599168eb9 -dda755be89653ed90c50a96f85032be2 -89d2c7af93c123a273884f9acd3ce56c -d999b9bc31ae3ed13a20bfaa7dded4c2 -7eea7c0ac1dc1293b5625966250f45ac -7e4ff09840594f15dbf6cc4a78e125cf -39dba480512d1eb5dbf81d3b2b469b4f -e5894f67831ec88753e18729cd50bba2 -f52f55f52546ac4edca9dec441664ab9 -e2b4dcf5b82c5078e531befebc007829 -1660db71f909709909c1369c275d4122 -76d0c647acb18b22e1c403fd5ce54763 -b869ab82ebe8edcb3a06ba62c47192a7 -a23374b65407a21aa6ab11dbf998995d -cba9920f5283ee00d9bcfe51935a7965 -0e7efa59ec71df19d77fbbcc8730d140 -376d75361ce846342d6cf627a001ca1e -76271e662b1e8e14b9d44ceec672fa94 -d06e9771dfc296e3ce61db3dc37a5349 -06ede1ceb3e8e098b85b4a2facd22e21 -7e382f51c426171c77ac65bdc203d389 -47058a994ac46273f00519eac6c8eaa1 -2f185cf5b017ac42a21054984a865be1 -6185de6d056be3cd3696e154da9c1be3 -1e3833519a57a93e419555ee9d90dbab -d2cda74f94de0f7be61c60b75eb41444 -7b441758b0369fd899ea318cc1bd988d -976f9ac65de0e961fe7d3cb8148dfa50 -dddab59c5a3c9c7008d3f007ebbcaad9 -5a962bdfb2c89b879a0a1767f4dd84b1 -e1810de740697162646e856fbd5027bd -b69e3f108096936bc60059f9b7ee8e49 -d47043a994d1c39399ee2f3789ecf25a -8ed5d68fc4e6f4c83956f73324a6d028 -b9754cc58d9a783d88f8495a4c98c6a4 -7b3898461e5063fcc5e3d719beaf706a -3081d95229b18a9beb92e6d0749f6952 -9b076e5dd55b43b6d1fdd40c99e9afa2 -10ff4bc7f1613f5d64d49db46dc8be42 -96b4587f1d0cb0415368702dd72d465e -0186a896aba9cba934300b139c5489f9 -9e41871e4bbfa3d46af20ea193f94dbf -0842b61a016ab9e5f16c45d17fc3c032 -97cdb58b5fd277b5bd4097b13016e804 -e5a6d20e62527b9d49563d28f9f62aa9 -4b3a8bbf6fe9b433d650832a6637acff -3a3ab16b3f5b7a1b73fad7a45c8c3cfb -b20a3f56b257d412ca4d78903ebb27f3 -6895797a3759985d0a0dc455bacfd61b -6f84f419dbb57eff8cbd55673b9fa05c -7f5a528531ceef6ce94f417206b8b90a -740f0a20ca582a63bb9b69fd67fbf445 -84d3cc32b75f5d45858272630d10cab0 -6432a684fa20021b8b26f94ab85b08c1 -9d047f4c4fa64ef60a8077076cbda6d3 -6fa466ae1b787448983b8c3cda946e4d -049d8ecb76f8945c16851577bb105647 - - -a013597cdab1f0d46a67fec6acf3cb81 -502ec066ce17658bc228175aa6d2bb51 - - -2970309425dbd62a04b427a38c74be95 - - -8a4d45166ebeef73e222270a8113d66f -fc667c4366fe133c30ab122fe2ee7f20 -b8650f06582ac88ece68948bac1bf734 - - -10478ac144e87538c4e4d794d2f440c8 - - -89b85d46dd17f5f9834192644138cc3e -9bc93c463af11160b7419bb9b9b8c04d -516927da047cdbeb264d2ceff1bc7302 -4ef63ab18e11e0a1776618dce42b0c68 -4d00f1ca9878eadcfd9464e911156b9d -b7dd4753a1f73eeccd3e0d0c62aa6c46 -a592c3240592cd0bf5459d0cb91f060d -172e05b5b4f37bc52fc55ec3ddf16c66 -72761ecefe18d122afe20aaaa16f29af -050a1b0a9290bcec41595cbe7626c6db -76726937ea2d3889c61d6ccc5a09799c -00e11fea38ef53d0e99868e5e5ca3346 -ae213dd5d98995ed7abee5aa12c9b37c -093451992f3c1ff768b1fbc0a3490a42 -0d321674b7d1e0aaced16cdbe69e4cf9 -411dba233b13bdb756c2b98314f5800c -e3404b9c51f7af0b604373712eb44561 -48c7402486c5a80774f5addb0f109ace -8d62607818f94d8a1637bbac1901602a -6806b9d5ce203fc4e6d38663a71ef27b -ae3609a24c28179373af4c58c6ffdf97 -154fc13ae002da4831a93d73a8dc7571 -6b7f082eb0413e1beb242ba6068530f1 -d1e5db489cca322903a695682ec464d7 -9885b4beb2e0e3e2ac4341a6d0cae010 -2bd5e9d1c8fb89c95faa6a97971420fd -682c930d5a0ef0d12aa0fda61875bc0f -99f536af5bdcf5d1c0ba759992e509d9 -2fa9f916bb83bba6b5ebd68be51d8df9 -7f5f888e6640de48b7b0efe59ee94976 -0442580293b0ae840b7bb56095d0eae7 -9826e5b2520054f478e031f1d8b06749 -812b7f68232db25ecadbe4283929a1c5 -c271dc0a582c32a4937c2e045380e931 -2bbc98751301bddc8b98e00dbb497ae3 -2bc69e3f4bc2a07381e17120087609a4 -94916b5d7126d3375c8eb0f7925072b1 -502f9ec9080b807dd076f238ac6066b0 -345c759bba2bada6514baae01c2267a3 -31c8d8ee369b1951c2ef80b67e6c0ec9 -9c40f2e3f06a503013a8f7b94ecf4c90 -2ca72172e0dee2aec9d5841bb3a2c6b2 -4686f3a2a0357dd5da87c3d4bc6df5ff -975fd7e0efc7724969154310df64e698 -8e80a351912e1d9c3e41335ae2b08768 -f379f3b87adc4f12cd701bb7acf0535e -856af24ec7a610a60d23888ab1d2f27c -5fe30721dfec5ace0d84b86415ea12c5 -7b29734a895fb4fffc1fd13f93980adb -e66626a3ce21b7cd66732baa13433b78 -f541e0145c3cc3779ad73392dedacf9b -23098ec985ada5f5128ccc3527e461a4 -9ce75f5d9bf3295f1f9823be227a8621 -e3eaad6ac1cd47ab7bca00b1aa996d2b -0bcefe1dc3173741c0608ba7ceda0ff0 -f6d252c6803dbb9b04b5b65b6f8d39fb -5451e69fa34c32bc892d66e8896aa782 -4c0d7c37cc0afd8585c62276f736ea6c -304125a8db08f6dbf8b04a8e48c6ec87 -96133c2f110639a2ca58ced7482141dc -23658b4c4f2ccd097c75082fd75487ae -9185b0f6fc929157e4e84a82c413d699 -10734b49e0f9d2803b256b883b9bf3fb -2122e1438e074327f6b573a239950fa0 -7969843889aa44cb8e63629c88e864e6 - - -0e5f05b82a9b77b0cb302e65ddd05635 - - -5b53952452eab634c20b3f6949f58807 - - -3cb8e7e34baaa92f9a177daf6bf66a5e - - -dab0bea2a45fcd730255f075a399cc0d -66eaffabe362d2cd1b092df702926a7b -63f5a644044dff35542aeb5824076942 -83b84e0d69d2a0bd430e4a2f3d0184cb -b220973d49b1188b4e95e1c658b06c3c -aa0c45c5a3e82980e67a3a26485c4068 -94615c2fcbad6519c2e0a3b8711e9aa8 -2e8350503151a18bc7e9c1b2204788d2 -672975b025e7cc96c5404ad861527d07 -5c5da4e28ed613e85a49edf4856a6822 -1a84925e4a30a0e0d343294cbbdbb529 -62733a2d6f590753ca7bc473984f7324 -e8fc75c03c47a4cb2afe36070b18f4a5 -c76493db176c6d5a8fd8c85ff636dccf -84ba6b7c343b1c651dae1586edb01e01 -2511c537c17dfc75369b8974967de984 -dd3828accc2e234856d11257b7dd7281 -cba6dd7f7647ea925b8a43b6c7378473 -601c51a57ac3fa90e6350829889756f1 -b1f200747f349b3ba3d4e74b3f5c6994 -b5c6bea87a3781a1cf651f6a364e2a2c -bd34497387c8504d2357fe09cb29a946 -6b031f2eafae110e2b40cbea47d6d959 -c400a03be480a9d031f65ac88f9288be -bf08ded8d78533545fc70f3905c65c2c -dc0233fdb0864c95e562db5baea836ae -779b563b2757b037e34488deaf4f291a -5b666ee35e4551ab235f34af949e10b2 -b288944edde6e32f83e09b1ac75b4233 -b1f1853c33c2f2ae36d3652ca4804a77 -2aba72d5a58f530493c35c917aa628f6 -e432acfb55c6ea09e30d42570424f007 -2260715525b098c08df436b117416e16 -27607be4c20fb2cf8f76f50f366a0ef6 -407ea0dbdbadc30a149f1fb68bbaa2d4 -e33fe89d85affffd2c6467c1a0c15676 -3e35e088bb450acf85163b28f1941eb2 -59eb0b09fe26d75439737eff0e339fda -0f98b55f7b8da09bf0f5974f9090a251 -2d9a64283afb545d8561ee5f4602be1a -89be065ce3f4c188dd10be066e0b91d3 -e996d10356971c7589054a5a3e23dad9 -6a474b90221ac3417d6606beac1c474b -f56f9e3a8fb4ec0df9a5373867950f32 -2116a5011c951b5910e64a2d3c6f929f -2691c88717b7a5520c96657130fa679e -87892c5ab3f53702a72389e4226ccc5a -0a88a57f28dcff30a5a90171b5fc9716 -7232c727b317be81b53ddc1faf00f320 -3f3d4121e2d5ee452aab3264439e5364 -c6df2b096e79cddece1eb44a5419f6f5 -b0e7787bf67f5d4ae4f61d658f652fc5 -4968fb0bc998718b58579bb0ff8ef8f9 -c409580eaccea712dc1135a51f192300 -30f78a15662e4907438a3f3da2032095 -d823eab3b1cbfcd5d6501497e7b4d9a7 -f67e47685d37b480ad0ae17b3c60e278 -71c4b90a4d0f31cc209fe31be16d31d5 -dd57091610a5cb9f3d433c0974f9ea21 -6bb702b49f457d4760febb5f68b660f4 -066d078712736fe0ca54cc6989158897 -564554bdd727dc2cc9ea1a1a27f9f45c -6beced9c2e60af599cc713454271843c -7a658dd4bc6d3c1bb78ce15b180b5243 -50671e176a12bfeefedc8b346482ae41 - - -7c24562a2e36b60a1b49e24cb395a902 - - -e9ac9384237d8d1cdaab68d31a22005d - - -86c02859bf76535e227b147df1d7f9f8 - - -8cc8278179fbb415e3f30b98c5e8b4fc -9b0c9e19562eb950621e2d8182595659 - - -5e99092b13d0e0a7672fdebb2e988b8c -2cb9e8108f97f63366b4146f9472e4ce - - -9e1c9fe94ff8f7b1726af502b6fd9101 -69c4ecd12d81dede6dfa123d268ad20f -9dba534e4cce2ebc3001361ca89c16a4 -0fadf9a8ea97fa78362c7b41c532a8d3 -4ce6e22e12c97b220b44c6b9fc5f2479 -7058815c72bcd527f38f2fd7897fa692 -9ce9358b2005623969aa614b56074c44 -6e316360fc9d8bbfbed43f8310e79182 -7ff09313a5f0f914b270251b49929453 -18f09b157524d2a313cbacf9eea0bab1 -2f56924e399e7a21c261f284916f7e60 -f0f2ca3d96fca432767eafc3dfa7305b -e54a2776b7537a0f67d35a8238ff72f0 -a296a27e6f06c12ec27352de5b0aa45f -798dc4862de11017fb774e09b19851f0 -ddec456d3cd40f7bd16c05d4808f2bf3 -4d3aa4d4c43ad2858566dad3ff94325b -0a18f254e78285e5a26a5e0027ccc036 -3a3d76dd23ab98ff9bfc97b9e37cd75c -d05e5903b19290570242a5e957ea3aa8 -77b6d75a4303d301cd4707b4380d6fcf -e41d5bc5675d8b2641cecd6011694668 -da236e3156d063227e8176559a7a5fbc -8aba98a5ff4570ce929b7f629264f33a -d41dc695ebbdc36169f5a57f0141f8c1 -0cb694690f5f16646014d0482e7683d1 -567c6d4d2a0345e3691e1317d45168fd -d00cf099ef638a1ae4b6cfc8f2020d7a -7b31864fef1065e47cb2799ebf49b744 -35b23f1000c82bc953dc9b5f15f1b061 -cfab365bc228ba94a18de47da3a45473 -8e1e8de34dbfcccaffabbc078d8bcd68 -2c1319dde3b7ad238ab6cb020a81f407 -a8b883b1d5ca4760a8002270f1c6fbfa -e1a908e793dd21b3bb30f092f3ffee23 -9072c79603ee2da1510f1b722e400a32 -d504430032da050b01b1e85c94a0874b -ea5a49b0f49319d2366ab37c5ff96bfc -30637ebf317fbb9afc94c93a7157794a -2f647ac1976e2866cce1312e74ab1ff2 -91ea847a2d6799362d42f6842ffd0b60 -acf11d5ee43e34d54947a24bcc02eaaa -e785da7095ecca60e6b9649984688e6e -7e46369bb88d6d8b2d55d16c583acd73 -51f6e34ec323eb9e003417adb0d74476 -24e509c0d01c8f652c65fab4ff572a18 -0b9139f6d4c46512978588b50b9f5b62 -559b3f2ab4a0e72153b845c9a35394a3 -7aca76670d18b3bf392f1ca09d5ef5cb -853a12de071c16b0e6d7463c1f8cb36d -0b9d3005af00fc7352521d190566cfa9 -160915df72fa239da18e104441bcd5a0 -afffce62c275ef3c7da563b1793cdb13 -d7f1ad9d25ad83db76ea27cc7e1623ee -3385b07f4c4412bc7077272a5f4d83cd -ffae72e363845f60271c6b074d0ed824 -9b71a868ae0c914f09fa0096b3c4515f -0046c0fee6bcacb1d339da94965d5481 -e62c15fd11e68b5efa68e42da4759197 -524273fc9581cdea1ae5903a9fe6d5eb -91b8d2f8495fda759c2546e1b29e8eaf -6c594ea60e41a589c3c3e9a249e7d867 -9b4a6d91b45aa851c6000c2761794b15 -7958c3c13c671f83619e8ec23d8432cd -c9d6808ec856e4e0ff15fb597340a067 - - -8c10865beddd7b64913db21f12059c64 -c468deb0acd01bc010634d988e684e09 - - -16e626c7996b2957e8b64c186de9ca0d - - -097b08708208ae1e5b0976fa576e21ba -b70e2b3d059d767893e8abd38648d785 -1537329ac08c21bc452e988e95f7b634 -5950b9e6e85d75c874ae0407cd1ac71d -a02f58f073844edb2e61f267257f5368 -0849eb9a2b28a2f6167c1dd33f480241 -50e62e2fbc605e2196d1a0d446900463 - - -ef0f206b527ff64cd44d20791dc7dada -7eda495a66d481a45fe354e591859bc2 -36ed2ed2060ed1dafe1c557ee86332a4 -a9a36f52f0294c0c81a33334e0d7e6a0 -69cdff16107d3aca2e48b6b1f9542e93 -e005ccaad2996a29de087e640a514449 -72b633cedb07eab057d7831a241546c6 -7a44b6dbb7459c2a40c93785aff44723 - - -468e7de9853cdb5570523d7e687e652a -284c50448c5b454c99587b74c1a3818c - - -a3cd90cd2b7bb909ee13a42041ce4893 -0502867e190b3236948d109e02a2732a - - -7b021f7b0093f5f5bc0222d17a391da5 -3536e5f1813e79e99d60ac152b758f29 -cef52f5c9ea95158c9288a038807d63a -5e2d7588d784973178c28860287eb756 -d193838abbf2439321c6b7cbc8a20e18 -25b1f2c3c7cf8c31f6e9045694cea8ce -a60f3f2c9b72e6a8b0a98733d9230785 -457a102391650783431db06dd69b3e26 -a56c3abfaf35aa9e194b0f90c66c819e -bc7c7d9647d26359534f1c6c5c553e8d -60879d6a0e051f089310fbc08c714bd8 -417757a90bd6b861b7e867abfee4d36e -662dca4734552a24c556c3dd65997f55 -bbc7dac898f2d9150881320d5cb831d0 -b82f5612164a6434f2dc79bfbd24cf5b - - -7208e52ce0a5f9c2d809dc08f5fc34cd -e22fb66f332dbd77ab3bbae0eceec1d5 -7f761836020b1a3da1846ebeaa8cadb9 -8988f4c78983609cb8715966f66f3982 -2fcf9c4e9315ef74d8ac8acbad712f8b -f5a54471eff0ba5a3ae4413dac555dd3 -117aaa05e6044dd393d9c3b781cce590 -3e4b7393748ac9d418b3e8d1fa1ed709 -3874242716897a2f720ddae33efeb3ff -f0880025694ed8d793355719c284b378 -ef1ea0ea7176bb66528d1f75ba419454 -84979903dccf511bf370510835e88b43 -e5871705c64601f450e48e17a3c97573 -44dce2769e4695722d904efbaa8af1e9 -60eb6c60d5307f0089e5924618a2fbdd -eda4e25a66473cfb39968d9774738e53 -86d165dbcee84f04d67ce982889c1e62 -ac56c8281862cc3a9d38f2e76651962b -ef1d7d9d4e23153d2bd0bff65f55f384 -f7b68824d78c6bf899539449869a8799 -67556d8f154b04b52cb4ba3f4d057fc7 -5ea568e43554ec1102b2c6117325bb23 -977d3ef3a316bfe396a1e3361b17b202 -9acb463e4bde04a0f17f1d483bf209eb - - -4254d3baa0f050715478546c8a984764 -29cf76d442e78896984717946977542b -b91921289a4962823752c793755cb0db -abec52f4168eff9fe26156c0c83b6426 -89310aeabff45d8d0e3db15e5a544f97 -8ea4846250a7a10fe781793b447bd277 -e6d14fc770a9196d2ac80b9e98fa797c -c282ff9b75524457d1162378a60a5a97 -a08ab2cb67aac27ed6dcd776c048163e -8d06e552954dfa9019f4025097e93a4f -989d31280c0befa91146e1d93f5d4a06 -4af44754cd8a9169ef110bc8819b26ba -b2e9cc6b83b3972dac3b12190bc4527d -c4a57e6c000e5ac94dd3d1f8157b3475 -d23bdaa2aff220798bdc37c80e0d0aaa -27fcaaf059a2640623e019aef81b5c66 -9bb50e250d516ceb772d613ec222a292 -f63a766693f795342782a2cb83495f36 -8bde67bf893edf48a7614839a4bbf74b -2a19b807e0edae3d92332e2c5907efd6 -d08fb2b1a185a1c31e7846758affb0ae -e250fb521b43a206d031acb2861b4dca -fd6d0fd255299d9ab256a2e571aa6bda -def61191ab83db3477794d077674cfc7 -2183e9eb46f48298a282345350b42a8a -4cf5221981c2637550b84b6a5ae8e0fa -0e170e254f338e246e49c03b9dd80c55 -135a64b167aed9c2ef3ccbc3026f4b73 -37bd5cd93e03be1990c87df15963cdf6 -d33e0a98be45f2e9472e49ee9dd6f0e1 -582ee00cda28fc0515827f70f9ba92b2 -36e12a977cc05cc827265e5ff03279e6 -a1414f9f8fcb238d28e70b44270a7a0a -85208c58f89620de2754fcc700c4a075 -8329dc000348b6694a0406078334afcf -7e9da0dd3f40ca8657eabff869c9c8d8 -960dee22771d0e93cc816a38ad009f2f -dca94f24bb85b0593f5a0933a0a3a7e0 -6d5e9c09b7b96beffa76410e7b045bfc -d7133d4ece13b3bfc56a1bbcbdc1d8a9 -ad575cc08912598f6f5e729bf877d838 -8ab6321edf9f8ea1238cc0560f052fc2 -64922d606f750c8600e7b9ecf07b7963 -ca2ccd3edfeaa2b32dfa7bb4077f0f36 -017b261abe8f6d2222d7f6c0fe12845c -587b5427eb5cb02d7112849ff94fef38 -7f7487e34636a5b2dd1659983fa44183 -1082f9fe5c2f6cbe5888d1d91badc664 -9b9244bd50d5b84971421633847fba54 -ceaedc7d087c746507535d1c003af166 -0644436d2ff4a3936688ab08df19fcea -c730dfefb17028709ecee2c815bdc154 -a1915b568a6b7519e0043b4770179620 -805b19dd0996ca2000f73a119d711cd4 -a48aec0b4d383a1f2a92086ceb47ec48 -073f005cb7f0ca1fa0b3477b2b353eba -3efaff7db482608044187093320b0757 -9858991322ee43e6a4ffd569553ebe80 -f6a1230bcf5d16ce03fa1b29a3df834d -ffe13a2313344e30f82877a3416a0716 -a04dfe23fe5e92ac0c8468b726b6e7c3 -32413e5ab84f9ad9c03ee1ae36a694df -a6b361049e2d2bfc442f019c0ebe0d3e -f60e1698f84fef6cceaf756526d35bc0 -31b036a3fe4b899112c6034ee419e9a7 - - -6bd070aff5e945045bde6a49cc92e512 -73791145fa71981a2f3a56fc5b22fbe4 - - -35c63682b9f0ab3638c5e7c987e1a892 -d5e952f44c649481aa8597d2fd0159b3 - - -64dfb75ef30cbf691e7858dc1992b4df -a001312cbf93827d531c91c2610610f2 -840cca94d5e33faf324bcd4988fa8401 - - -04646fb634cba8c8b6487d26200c5fcc -ac76811df9c1bf8af392f21e7cb9dff7 -d47047084ba4c0d911f6332bb664a292 -cc546fa0a4b98fad0917c5693587bc6b -14d55152e99f22245c9e1e8bb784a7f6 -e63c67228df4a03cd91321bdf98e7555 -7de5a7addad547244d33f4209e3d6306 -9a3f2305cb5cb2921ca7184bd955744e -b00a65a4b157ec627ee9ff4d0c8f1176 -4c27b34156b7a3776f31cc456ca01c10 -3c59f14abdbc105190b9db0ec30c232c -487b704edf1cf3ce0f8c153bb29652cf -ec5e59da4b23573927bda544cbb29401 - - -f635c10273900261c5f52f8fbd574bd2 -5588e19871bc8ef086ed20773e8a726f -26812a28850395f8f865be4893fb20c7 - - -ad50c108697ff83dd558748e1c9ea7f8 -772a64d6df4b93d230e9b38e1ab7522a -2f257489d9600ddf56d195a179ebc9df -03bee68eecdc1d143e569e8517af3749 -54064d41a49fe243986fecfc9ec046e7 -592779e1e4a8aa19fe709b34050d3142 -9a8f7e2a56ba13b2501705f95a24eb84 -70838ab03f80181fa093b46a5fbadffd -6686d21b904e18b100210169bb1c04ad -332ec194bd7357cb91329af979e396ae -4c27b34156b7a3776f31cc456ca01c10 -f480b208e508b20d5b652898d489dc43 -e8ffc200d8522cb3f314ef7313a18f5a -a19fe1b2d726e920c12e43a65df9039a - - -5de561c1c27bb1453107348b9e92d977 -8494a94ad7948c50a669e62c8c08733e -d6a56d252b964da228bb404668dee5ac - - -112568d2753ad95785e341d36cefcb70 -fbd7d8dabfa60c6d61bcb823abf5222a -080b00f6697b0f7833ba8120cad52c6a -b6a05b4421a9c33a4f192aa76572d41a -f69a174582a503bef24e2abf6612bd7f -14d55152e99f22245c9e1e8bb784a7f6 -32e2393f2396da0a6c6ee53d47082645 -f826d3df9d67db8817530da59f9771b5 -ebe8f4b28bfcbb4c60ce10a22eeb2c6d -ced970610f0690c509e5bf6ffb43c9e8 -c41fe8e9026b84ca2ab9b8878f7656be -b00a65a4b157ec627ee9ff4d0c8f1176 -a7214cd935445d287135563231dff356 -f6757d92918ca3958efce37d8ee7eb1d -1c022347540410dd9bcf1f37dbf11f6e - - -4effee5b896fb71cb6d9106340118b7c -90e40fe8ce59e8284a89bc54e2076deb - - -48cda2a2a54a31f7a666547c862c12e7 -c65fadae5a0fc27f401f1a00e66f518f -12ace1a918403049a6d2fc152f53baec -7363cb7630d1d4b441183345fd15ae62 -8c366c11adee3cf2988614df4c96782b -a3112ba7e266938321394347e2a6e107 -38af291953d5b90b0aee30dd0d2126a4 -9a8269421303631316be4ab5e34870e1 -ac467ef8defc620b6b5eb80d2047bcb7 -bf30d89d69dddfbd8e5f805a199c407f -661505d2efc05b2347492e4949f564d5 -5ad12582e3ca901894737c3dd44a5eb2 -132a505684e7b7b91f50ea29c072112b -03e2b564224bfb58ff20904bda244043 -783f5b06082bf73e9d1eaf79d838162f -d2040c34ba1ffd8fa5b72ab37be11eca -fc517da02d6a64a68e5fea9a5de472f1 -0da66bdb013f9a9d12ce7219e642bc25 -5ee15843554004d12736f0404f8d443a -787a96924e9b114e75f48b540ff480a2 -13ad2158a4889c26a851f99b261e4c5c -2eba6780fc7d3663bc44808480c6bd8a -73c25b185fb78cc690675cd4a181ee0b -fbd3929a893b147ae0940d48d533e023 -bd2244ac282a5ada48b0d79cacc59426 - - -be7c3c0f4cf51faf0a543446b97d2c55 -f7e2467d8c6614a748e8629cb60614b0 -f2be13d5e99973c73059b469fd10cb04 -d16668a2d16b057f04eb2f93372bf631 -fd5f09f2fb6e899777af95c277ff8c60 -49e3f006018662f60f1db2aec0b2cca9 -9ebf1d0182dd9eaafad691698d6b5a04 -e45762e446e2f0cb2bef724fa339b4d6 -820f48fdead90505fa70b4e47b2c652a -8cef2db6f12ac34456d346f4f0df3bcc -2341f2c853fbbb21188c6b2c2f7064b8 -fc4180203086f4db5723547477eb472f -43ea1dd926d28fb13254881c45cd313f -857cc080b63fbdb946570312693498f5 -a67be66f984c8e31cfad2c93fb5d0a1d -c8dda8025928ac2a82206adb6aea2fd6 -feb67f9cef255056d3c1efa088faf1f3 -817762ea9da214f1f4584401ccd51374 -2ca61b76e22053571dd8611e5aac4900 -3c01f20e2abba61bf212d959f0b70143 -953a8f4b78d06742b24778ad0fafd7fc -c87720a8b6da87848cf717971cf8e28d -bc8bf1b085afb48f0a833f55bc7a092b -0fe870dbba4c1e71c7bc3bd764ac6648 -9c63e7fcef29b28590f35af932505ab1 -0a363eb48ab32888d2ccded705697e3b -b8285c08b99e9db14a03e1fec65fd080 -88d9eb0ff69518f9acd61ada0912104e -30bf39efa0692914e6ddb6443425a173 -1f367bfbbc77e33c28beb1b3f1a5f88a -0a2438f2726be075c1c1519f918f3215 -65d6c6f25dc89018dc74262179cd56ad -08a9454e4631ec0d88335265d8dfa2ac -b52db318cfca6f9e1eb261af3e650ef4 -ce82206856d06c84b34b4750cf97fdf9 -244c2a76da3dd075f12892010b51429d -81534c478c919097a58b0154664c1ee2 -cbcec86b5b111de63a9408378ceabf1f -79b1f2c9d5d8d3ffdfa3a1b3ca3eaa85 -cc519c456cb22964a334a6b41ad86e0b -907f37e8b7df4713213a505f28d6467d -572748bcdafddcef34ad0be34ef144f9 -785563ea1eb9f66d8be27cc41ee95f6e -d01a7384c6e8436fb43e0bcb2df770bf -32663e0333fcfb98bbcd3c2073f8aa5d -82ba001c7bcea7af62c33d716b0c9bfa -1cc5116a76477d8f0f5de2efae29cc3c -6157b46b1a107982913ab0320c36b7a4 -d0788051f22804e9f4f323d2c6a2a0f4 -7b9776076d5fceef4993b55c9383dedd -b9d0598b4e1c295dc5466f6e55b59579 -1a39c6f2fbad7f8ec87a16b41f10e4f9 -4f26ce66c3f271d8055c7416b3f4ec82 -4c8498c7c7c582df2fe30520e64d8656 -ae9696e232037d480c25f242f0dad26e -8ab6c24f02ec882d1a900b9151ce32ad -4e0326a0563bd2fc38a1b14e47fc7ded - - -cd7073388fcbd89d17adc9e9b6489c40 -6eb77adc1ed55d94c3c598d424843dd1 -ff683986021d3aea2c2e0824d3912882 - - -b6842303b5db9a73d47bd59b81f3032d - - -9d53983237bffff6a75dbdb2e883082e -3c66dfba890ce9f8819b909bbaf6bec2 -6e3293266f645e19a91e415f8418aa49 -2d3c4d442a16d6402ba14307eca0cdb8 - - -0266cfef4017307566e781d815ca07f4 -bcc3797b5ee26595de904538fe84e289 -26567c0e378766f38baf34bbc73cf0dd -cbda6a0e1afde69875c104f6e809f1b1 -08a3028fda91d443f4d5e93307c96fcd - - -91355952bf808fedc051c1a96decc2ef -9bb2d1bce5ca6c1dab92e70aa744344f - - -f0b2d2ec92fbee68080605d968cf45fc -fa9079fe13a4db2dd6140d5d7112375f -6309fb06dc9f3d55d762718d30fa5f48 -969a6640722a1ab4b936c07c99a2e6c3 -4f332fdf2de4e25eb3f5611bf7b6c354 - - -739b03158aa5894431ecad1c8fa1c82f -da93d8095a72b3b2acbb64290dfdc716 - - -a3f6bf488479d822864c6346c895c623 -9c9723b05901c04d7bf4d62630c4dc85 - - -ab27137e3f7161c011a7b8bb89782c73 -e87e86990aa254a676d19240d7707204 -ca51657e035c8ec7101a2ba3e4fb027c -db163b6d98c20097ec791f4d7dd938fd -d88c26dca0ca8c159befb1a4f91a817c -33873ca90e5739a504ea50ed6c675eb9 -9f6dd30bc97b892fbd971271d1a82ce7 -47d63ecea460265f78ab03b88d2b0b10 -5c5791930e0644f718c68296a62251cd -fe1c7cbad0cbc0e2d90a0291658dbbcb - - -f505cb61cdfe745c5e4d7c74471e267e -955a446a7362ce4ee8d73acee3ef9790 - - -efbd0fc3617ddb7d7f31ce74f2e2162e -c01d40afca257245eb8374dece73e0c0 - - -4c4e6b894efc6381846a0764f1e70f77 -7ec9405a31291a374be5a10b11b4d146 - - -dd3692f9ad17ca6a2a49b6ad446a1eb7 - - -2165b99c89c8431e7165530ccb5f89fb -05992d3434d3589b38a3a5431842d38f - - -ebd0cfcbbb8e8ececa8f05617a98b324 -a3e000456648ad121c8aadf7d918a4e7 - - -bfd10864f928c910add9a134c48c003f - - -75e009a1fe815df846b1279590cb207f -f5e90c30ee80102ae8d460878f8aa080 -2d22c61e44fc9adb7315b121f8496708 -ed19ac112bb57caba9d0d43886216071 - - -11fe256b13a09546f7280198d8e98239 -0927262e8bbd59ec33eda07237e6f19a - - -f8bc7ca757d08b874579797ef5925bcd - - -599a8439ed6125670db4a61b4f93b406 -cdfa64990c808af7009d75478134f966 -b955200005bc73bec30a42c1d1df16d9 -eac70f4024955fbba9bd6a6e94cae7db -8bc18a7b64cde9d8fd204e30a8ad7172 - - -5c98c0cbfacee6dab0783112cb0e233d - - -3888e9f93e218814c97a146069d104f1 -7a4b4c6ebdb549fcbe47408f9457493e - - -69f1f3e08eaa1371f74e265511deeaa4 - - -ead9e5f733592ae8f9b227507de37ee6 -ed882314c841932770eab4413337b4b0 - - -d529d0aa82ed3aa96944387904ce88d3 -04a3ab30b80f9112937f2d586a622c55 -11b9e8e10d8acb2cd1addb502efc7f89 -e8c268d38f2cfa22121c876022676cb4 - - -8300eb5446df027b01ddd21e03c361b4 - - -0cdd968bdb2f2852ec71e0264b3292cc -e009322a00011359f76cf7ae59b4d33d -18b3e43abad26bdac6f4cea944777b62 -6c46b98e0c60e6dc2ef14f9d4a6607b8 -46878a9b3ede269c4e234550c9c89cd0 -02b42894653cfd82e52aac669ad078ed -262d69b7ca267be1994fca2aba46be32 -dc335e786863262f594737e26198009c -feda280e7bffb057ca4c87491aab6943 -c94a07253c14c98fe69dffafb59228a5 -9ab0e28d85d8ab5eb954fc28f6ac1e80 -9c2613b4de53f939bc770983976f66cd -9f41e1454905fd7416f89aa4380a65e1 -5e3c0e0c48f48c23c45aef7b72c739c0 -30d8e72bfdae694b1938658e1b087df0 -a3ffb8abd978b0464f7b5b508fcfdef0 - - -9dd0da9a4d871790529883dc56679b75 -db5cf23edb637b47a757468a06e6a717 - - -deba38d5ced26f81b023389233eafcef -ee9e3fee14270b7b27fcaa0e2cf2e042 -2117410817385079bb44523d472c4395 -e5b3968f64661f1893cf740191e959c5 -d1c7eeeaaa602164df3f1cb5aaca5a26 -0fd6d20c90a468fd43d5573542cfab4b -6a49d955cbc76f5c2fecce8a185f6291 -78077b855f710839538571453a245a33 -73fcfdc8eb3b79de42e4e9a009749127 -6c59b644fd0c0bfefdbf8ae1feb79285 -31e21fd1856200b80b1ed9f64f78dee0 -b404141c778bcfa27d02f943352fbc4e -f24ebe4ddc2b92c2f563ccad40dc56c7 -ca6ad22013ca6285353f1cf0ed07b90e -ca6ccf0c7988a62a59b95b5d54cceb3e -88e3b66abe16e03c573a0c969dde3f3c -6e4a2701adaf2ace52c100aba5c3eace -84e8ec6c5278063e64ee6e574190303a -a8710d08b758015617c9518fcad90a69 -89bc8ea971e99653717fa69a73d70bb4 -b990f2654a3c25307b53ee8e6cab972e -76945205e6094cc16871aef9b27606d7 -0881020d81c98c180dbc32bcfda83f0a -36efc25bd21112ead30b411a7ebe3054 -dd1716d6ebeb7fabd861df3567a39a71 -95a3d65bcf192081de779cf234e00d3f -3dd08a3b6a41baa85b81f6d775c396c1 -4c5dd184344ef5b4b80d3cb5208d0fdc -2947d3bde8e2384bd85e3faf6f44c433 -62dbbef98865feaa20a7f936c56ab931 -9927ea93540a2a08b3c5125ff2126102 -826b0d2739932ac103bf420dbadd048e -298b75e124b11f0a23b859dc0587f65e -acee3dea7eab3e1637f64ee5fa5adb98 - - -0b042fc81678cbd19c8abb92b5103f57 -6e08a6d7fb0a444452c0fa0b7a116fef - - -af6ecc0b9ff73f313dbed7ff84adf1d6 - - -23a9a8cd4ad04740ccd23f95847c6c9f -06f224c038a7c70a66959dd158aa1916 - - -d78cb46f77e10749abcc704063caaf1c -7c251e5cd4a8c34468c0fcb99a5c88fa - - -2d0e3d93c21b8ebbeb771962e7cacf26 - - -7bb8463da4969ec3a4c82bb789916ed5 -400c85d933b945516f04e3c186adc55e - - -dfc942b5fb2c1bdbcc54a7cb432d86a8 -8bcc4a0bed13b9d05c56db58e0680d57 -b7c712b5b68f3bfcb471598c7594ef21 - - -5152e016c133876dde1ed60cc7b2d4a7 -88c8974481d9add330405f514fb0eb48 - - -76823ed878d01530c378b9a58572e7c1 -57bb5087f4d140d79a02a9ca5ce1b7be - - -79119d731c1f1cc2ce58e440b0013d70 -a1d169f04a1b957207f54edf9e0c9669 - - -8fa6f4c97214a80551d5d64a3d0dc23a - - -5fc760b91eaffae0a22cf50e8c3c564a -11ce3e94e64e2857f52d140951bea9a8 - - -194c3762df658fd5e90b39903c937591 -f8b43930c3106bab712c7d995a4a3d32 - - -cc0b9f643aec57a61ae55699081531e3 -333835b4607aba4adb0706cb54a5c8ee - - -27d54e112994921feadb245eb5a84f18 -89fcfc0e0d5de89565e85821f69e2a4f - - -93f8261da7477c580a91c8215fe22c9e -06d0aeb141d18cf5d92d6cba2b581a0a - - -e8038cbcbc4aadc9d8aeb58bb794b87a -6adfe3348c402bf2f079662941ce9770 - - -8c086d220022ed8a1af377485f653ef7 - - -42721df869bef756071de3cc373315bd -4748f87c1325e22ca829833889e91771 - - -1e42303ba72c5d6b7abb43724e976e37 -f78b8d4456109fe316234ca0f5cc8082 - - -e7db69e4cae5a975d12a9922bd62855c -cc50cef418d070dc204157ea11f44ee8 -fee93c289a49bd1a98399b9bdadf4627 -0fc278d1ef776f8c1edbc7ab272fd850 -4dded8247005cc26a611a713fdd31335 -04a1cb8a2794a605461f8211fe46738c -b8b601fbe718b934ec74e2e910c28afa -49816c1abbb0646aa7fadaea57cc2d3e -b2c9c2e53dbe4590899b644e74e21cec -b12a9855f2b25f5a770753ddf9546b4d -04bf5d1e88e09bb87b8d51a7411e5dab -aa2e592ba6fa4024a2e5adb63e4d2f6f - - -ca77964cf998db4f318d17e9c499b57b -3786f5909b2e6b391b91e1fcb60364c3 - - -9be5f327f16bcad317c8ad0ae92635d8 -574c1fdbe98e07b336aeee94514cba7f -a8c664b8219ffde978db3d8308713975 -72ead25432b5a84031b8333aa5fbf259 -64f2d23d70cb2b2810031880f554b13c -2998e23d43af7c7857149b0e725ccad6 -9d29134dd5e1c2192916ef9104dd877e -d48475e6c742940f44e62622e16865b9 -94b34ff5224ba38210d67623bb1a1504 -8f88d990024975797f96ce7648dacd2f -6c56b94fd0540844a7118cdff565b0ae - - -99fd601e55bde8813c8249fdd5b41c89 -05951ed23a49dc8ac5fa2ef80e7d40a4 -c7c56d1536328705d44d6dea0ad48caf - - -d7dc10c78f23615d328581aebcd805eb -bda51e15154a18257b4f955a222fd66f -9a6486086d09bb38cf66a57cc559ade3 -1fc418e33fd5a687290258b23fac4e98 -9326ad44ae4bebdedd141e7a53c2a730 - - -b091a47f6b91e26c93a848092c6f3788 -81d54087b880530de6c1fe2a59c07b6f -280ff6aaaba888ccb486e669fd200b8e - - -04a4db2983450a2970c459ba87b4210a -895323ed2f7258af4fae2c738c8aea49 -d935d506ae9c8dd9e0f96706fbb91f65 -7f38dcbfb11aff050652ff3b754adb63 - - -3c06688411baa451d053f64eeccb1834 -bcb93bbeb8cf2831e49ff5541d277a1f -d306e9ad7b8b67464493c3281417afdc -6bb88a8a3d69511d1bf9e7af12ab5f47 - - -2652ce7b4dcf00a1b07d8b1debedf867 -a1775d6ba3d8b76629dcdc2c1006048b -a874a391c41c223a007297af0fc82d71 -0f6007361d5e4c8f34a2e83d402567b1 -a75033315ee90464410b47cc27ce9ff0 -bc1d75d2d4988d2ad9cac651bc44b8b3 -36cc4107f0d39d89b8031042c4159468 -8fd8e9a11cca513a4da0f25ff1a24149 -5af577705b43ce01285f2721a4850ac4 -2937220203e5a52762f5c9a4527e1988 -baadbf936466cfc106ae73e5f15dba89 -4fd59032d7c3a59fd45028bafa245721 -191b3c2e856e750c06c0ba7987f902fb -eb85dc872664c0769e9fab1b7540b4d5 -17dfe118f580bc2a08e21e8104ef68eb -ad485022027867116de0bf6c25b1854a -5aeb1084e3a6ae5ef7ecc2bfc7a15592 -8702f5d6fbad08bf74378506ef376f83 -7596c070ac1bc839022e0a7aba2156ef -bcc98729a04598aecb86c451b91433ea -368af9ad30db4935e51b2109b9d4e9ca -e0a7f23376f50de631db93814aff2e35 -7ad3c70ef87d3657f918d3ee3649f31f -52b7639c5c4e35f33bb3c69cbfa0588d -a2a228f499608ddddeb2ba54834a5b7f -c940b153fb6c5b3498efa181881b5b6c -f9f9da534cce6a9124cc6b919329944b -287cb7bb6e6966708534cb9ed48d48ac -4775a411c20fe8fb13e9fb3a46629dc3 -9b2ce8f93949146d63dfef4d4784ad4c -18638db567f8b6fd7b1c6641ebf2c958 -463334491415afc3e56661e87196b4f8 -016527b52b6af2d6784fffeb23a2349b -2a315fa2593161154c319788f0ef2127 -8b75ae7921f26b4f4b11d18ed921248e -7db990cc030127f1b64a4d3492f8f3e2 -afdcd64e0d7d78942401354d7f5f180d -51f6fe162641de3714866950d5eff4e8 -0a9d5e42c711a284436fa6f267e8ab85 -2c5e8a67d1a805aae9842bbad59a873f -c22fdc8941f2956e0930b20105870468 -1f2386bedbebd633223278c1fd25109a -e0d060c7f70126e74c443b72ae560791 -20e28c8b386ddbb38ead777f717d7c44 -96c6b586a6afb6d72dc8b93b30f844d5 -351ce642d2008500c8780cce574acdb2 -fc1cb0e9030ce6b891319ce46dd8c434 -95bf00532c504c237041c4e3f04936a1 -bdf5ae55ea4d553beb785266dd0f9ffa -2894170c52a47ac02bf094bf047f1984 -fa8aa7a5c2077676637614809bc0ea0c -b8f1f393d7a247fdfe7668acf776e9d2 -35b71c6a8e678cdaa9d484ebab42c2ca -8f55434707b160cf1a8331d27e37e7e4 -4711cc4662b9136a881497c27b596135 -950310a6c12362b084a68b0cfa7f3373 -6ac17b4d7485fe73dd2d754ce2a0e2d9 -96fe7b1e5cd48c7332cf17b789f7af66 -02aac38356af65808e08e21f1ddd225d -bccc18d3b8c2b941ef7ef6602aab6c69 -de96058dc4fedbe4ccca03f9966ff743 -3daad3713df02c15beebd09ceecacacd -b8b582e30d3f3bd8867221dcc3dbf365 -75c68bb955477a99fc98600f5e1f40a3 -bf1c8fcdd3706774086cd133a6e04d45 -eee692f442eaec2b8291419a2017e50b -f9389202889738a0935be0d96f3aa609 -9b187fb3a908fb75b7b2a8573a4d13c4 -c458a95a74915bb3e01102060bf3d27c -78fdf805f1cea6cd01912192821ec734 -34b9ef2cadf050ad58f391a7990c6975 -c0f60dd955a2bd3e6bace66eb362c9a5 -a5f3fbbef1831fe0bcd060edb6e5010b -c49883919b7912057b1ffad674a9c7c2 -99d8349acae8fcd95094364adf24dae2 -72b2fd6a41260897ef758436603d33a2 - - -cacdbe68a428ae36151a3d1152b2b77b -86c5b7ba9581a58bf6e465aea7d52e46 -3c4338d70de8c99a86b3ee15924172a1 -fb794db6e06fa3cf7479fc889894caf3 - - -3abe66ba8da6b6bf9cf1c6b0e907d51d -9a29da1e201fb23de4f499adbb9f6a71 -edd56d70cac390ef63feeef7e9d71b3f - - -5f4ae32bd59400b8f788ac644b693ed2 -8f83bbc144d70505672f82679546c72d - - -809d819fe86dc60509c0b39997fc0d4f -17bfd10e3232de9145f5b74a6ef6afac -67b77209f88a051d1a7dd39e6584212b - - -b162a10416c2cba0be1ba5d979e19145 - - -f8228e3250f191a1f69dfca422396b3b - - -372d1bc3cc32141d16e6828bfcb7f15c -a234de35961af948a38652010a26c9d5 -8a4d8793abe8403cc6f5ab4af734250d - - -26c15cb43424cb0a5f4374b2f23205ba - - -f1d09aba4db36c2f1016eb065fcda1d3 -1c6f773292c37fbd5665c68439399aa4 -daa89e4bf8a6d7258ac1bcaa889c518f -2fb90091fdcd91c7033e2b9d43cd89b0 -eb2c70a5c76c563e7e350275c8ea8b31 -a6af0861d20de8d67561f9c09aee738e -3f13f4441c56f049f641638ed8523035 -b7f7a8a0717691a5fadb72ed9b953930 -4d611ad3939347626d994450645914d6 -5e8879bea2ca8523121328fee835fb98 -2aab5b22f214a5fa75ff9d57f1dcf4fd -9687706ae4cad55d5caf9cf7a193968c - - -a3d8f09c515e695e7ea3d3ff6fecdc3e - - -9a095583d4968210c428aa671f7fd05c - - -af897df7208934f59a4f5746db0f3e7c -6e58f3763d79400efb63ce5c692dfdb4 -e90fcba79e73f0813da74b92517043d8 -bb214b2b022f8a410aa7bce1e92724fd -dde30bfe8bfcbe0ee166386b64256dc5 -ae2ab2799848a18dcceadd7514065059 - - -0f47c9d67789b573d2f22181f55c3636 -87b259cdf18e697f87a8d65092a7a049 -5abc90c303abc0281a323c53d1e44c2b -53a1ad86cb3f04d69b9dcb275a3db684 -e9042b477814247c6860233246c57163 -d94304e12bf6cbd4f8f000c4fc563766 -ff0d3b2b34e3e09b44827b46cef20d43 -e6bf12ee8555d9fdc3d0f2c42940436b - - -cdf35ff41736804343d6a5b1ac20c69f - - -cfe68492dea5ba16eaa85ff232bafdb6 - - -7ecb0c1313a804acf7cca3bfc2af5371 - - -58adbd597318114bf70164c0915d6836 -7f90ecb330695a1f3d6e3b7212bfd804 - - -5f8489eed8d4b6b7b13da0bbda876dac - - -4a1790fb8c8aacf08aa645cde5f07d0f - - -d138cba0fea34603f4196dc5153d8e26 -96b453f1c7b3bf0485319a462084db96 -7615dbe480f829b7a967a0562c8e7221 -63003d078e0b8c6321f303661321bc33 -755728ff7720434f400c85c4d7e9c0b5 -ab2a6b84195ac4739dd22f429a36c13b -1b2e22f2a95597db45c8af5af3852506 - - -53f42b65c3712a2ca5f7afc148c110b7 -ba3387a36f0bc8fd51e880c434d426b9 - - -47144408dbbf4a7eba63f1761a499508 - - -0cb495cc714a0583c0a45a65079cb2b7 - - -a8408f6208da9f44b381e808b83c1bb9 - - -c871f031ea048c72acf364943d927ca6 - - -2d31c00eb7f8d4a4fd960971e4809d31 - - -8c6212c872e88f2009fb441f68a1ae74 - - -edd95eb12e0cf72e391e897c595ee289 - - -c532a9793127f95ef92106e37194499c -08b7348a9439950035cc7511a0fcddf6 -bd8a3d70f7c061e94386466b0e52d9ef - - -4cd066bfbbf816d406d4343970f029b4 - - -eb649938f2a91662ca060d49414ce4cb -0497fc1a8fa4467c01aaaffc4eb7ae61 - - -b66080d9f6ee6863cdb2a90e90d0dff4 -932bdce69cd84691658ee4ebde954d1b -0b7c9cb30c4f266489e94e39de7bc8eb -7df53375d2ba071872f4f0d78eb08b50 -b0e3e59ac4a59d120775fd038d8bc693 - - -829aef425771dbe207a07c8c056f41fe - - -119ddf7becb7ec0533a2d1af9144f4f9 -dfb33b91b611417dd4aa229ebff9e7d9 -3f1fc62470db30f980446bc250cc2b19 -5ca78dbb9603e64cc7630f1e45aa7eeb -060e704e080033d19da3d279e0080913 -dce41ebd1e3eaddd92aa77cb18ae23c3 - - -7d4bf23a5c30fa32febd05464db47ca4 -fd45c67989eed6b7d3881ac7d660ef68 -99d181ffb366ca1d65449ab8d7f73233 -bcbd68efc7bbe8f64d1dcea62b0ef39e -87c0ddff94acf4073911f561e66e9c56 -7e1c640c2f39ba23ab72652ba6bb0825 - - -7ea3145a0dfe1d9da222884bdc89a606 -b95ea04521788a9c3c5f311ba98db929 - - -457ba7f711105eba233443a3f1c6fffe -da67e2754b466b467f9b97d7dce1b367 -3d57d24d680dec4818f4357f2cba6268 -27701a1de23da787b0d3491b886f6966 - - -bfcfd11916648c543cf40ff4f531f859 -c9c051d0e3d9d09c70e433bf63c56e68 -861a9e8b55723564a5fe508b357027d1 -1c41c7cb2d913823e65ea25b9b067a34 -44ef4a89c95664c98d629e062e13537d -9534f18545bb75eab35be1909d01716e -42779e7cbca0ce50a46c94d453f22101 -1f2af9d27a32d3bfadb9af4df5bedbdc -8b6d02597c98dbe4998550104ae90e51 -d661e302e5a904c9d5b2975feab00886 -5e2d553b5b5f009b217099ddff7f7143 -95c4077ef635ca070d9b7e147b4a97f1 -3022ef929652913067110629d8be51f0 - - -dfe86760bf0f9899b0fcfc86c7172bdc -33f4b1f8e4c449cbf4a01710b3de380e -1cbd40249a14b7ef003c8a6f44e3022a - - -f0bf96a5e49457f8031630df2134222f - - -4456ef4ddfcadde7b479cacfe46c1f39 -3fe76e0f0782364db62969a16a391373 -4129d479726c923853f533863980b485 -e1e9ddc20eafcd968f8c9f51a56736ea -62b7de49a5677852bdc59e5c849173a0 -dc02ad9bb7d7cbf9c8cee893284bc9d8 -ab2155979557b00ecef7c1b7c7e8958d -e85ad470880e4acf2c2c76e288216b26 -090f70ef38b639a7eb61c17dd6fc09a7 -2bd3bf69b9320a995e80c7ce85af673a -4d924d6b8d09a243f14a16202e3266bd -ecdfde02f33a63b14166a42680cf8cdb - - -44acaa258dd743bd7e274205a2f36288 -ebddf398f5da69049cfe4167b5e6b880 -70c0fc61adcb15addb3a06df5a810932 -450e1e6dbddd31e411110de6f18a5b4b -0d16f75fa10e866a576667e4e0dfe825 -0c1c0f5a4bf1ea99ac241c8604d70d3e -abe5aff33c491eff6b115bc16eb0badb - - -cd76059e9319a93321c839e039fa2456 - - -07c586be90bdcc5c8429c4285d1d357c -dcbcccd74064350045ebca7ff9c61c4f -6094b341562284a4596ec75bcbd37deb - - -18bcbf63cd346f9bf9ee4edd60e69a23 -e9c60631b682b4d70caba0c8abde2db7 -8adf723e1ca06d2217f132ad66b3d112 - - -7b177c892a85d8a3eee3a7b482d01e2e -7739e48ce21ce35cd78f1247b6eed711 - - -d68b958fab17ee3c8e933beeafdd9881 -beb2be314774a6dc4412ac7eb5211306 -1b7a1789b75594414fe2f0533422557b - - -7f3af95b8429cb1135f1d0b6f38e89e4 -c22e2d91ffd4f71ffe56f32989d1c3a1 -601214922e3c23f448755f48fa6d7f7e -be8192ecd06e39c897bd970b436d6293 -ae7d425c162f8fdcc31b6780c5f60aa4 -9f5036a9754b83c78ef667a5ba915f8a -f6aff5dbba38184dd8998c576b3093ad -e3ef3bf3556ae02dc94a2bdc360d2d49 -d5897a77179001eb8dbbb0aa1de54193 -b833ba10c2a43fb30378db9d53fcd3c0 - - -1dd7b0e81060df90697a59af9e892e0e - - -713cc92bd897d941b740aef1bfbb64ee -16ee4b07a337b4e9e04a6cd919bb48c7 -2f0031ab554d1ae49ff97db3764b33c5 -0f42b24f6a1b9eba72b885c94dfd2c4d -b3bfc3ff51c1b630a842fd2a8c430fb0 -485c9e075ba3a2a36de5bc546f7e07e9 -7abe01720f55b034034b834b89ec1306 -2b69d68dd6f5a829982f6d563ef62442 -d01f94a52840ed0da0fe14c3e70d3592 -7d4348022e6489408cec85c94210ff99 - - -e3ec127b7e8b2bd7e8e1766d1a36db7b - - -5a4b646decff7132463240f4f57b3592 -e78a29ba0df7c9bef147defe5ed5c296 -d4e5e96dcf25b31361aa0ef68ea9dad2 -7a8bab6fc66b5d2ce4f152bcabb0acbc -6148d30ad1a4bdd7d0937358d6b461e7 -9ca66b984093a947484d8b50abaa4329 -1db9cc9d11e448fe8b6668158c187728 -c2bfcd0f8843aa94180737e3c6824593 -a51ecda844cf3dd21ab391e71d8f9af0 -91784f44ac5d4a6ca2290e44242c4d3b -c38cfaedd5384ac4c0ba3765581d9475 -c20ba6ecad9f9c1d2a041c9aa59410f2 -d36e0b9cb8cda905d16adb7f4ac97832 -ed2e03a937832c0f36ef4ab568db8105 - - -653edba822938ce0b1589595b26ab274 -3c0b5fd7b2a333bce8026e36d3b551ac -d714db26f9bbae92fcfe6189feb04af3 -2868b5c28a90d590cbf4413c8aead039 - - -bbeb679422f9fd8474d9c635d6a81806 -3ddfb7689e5681029ebe9d8308fbe2c6 -8cd1881440ae64839a38ff9838ea6aff -ff8cffaec052817493a619c4b5de14bb -435a535b406ba64c00f9d6eca9455f30 -aca6d8c08e6c663bea2a2e89811a7c58 -c5b833c89e8077c9a61ff61d82cda36b - - -c1be273bd3bcaa02fde483945228edef -16915cb7d9769afd557cf5ec03de59a4 -c125f0136ce8d49614938238294fe6b0 -58faad0c53a97548125937e2ac0079e7 -38b17de188c75ee96abcedfbad061a58 -a52e6402293e6704ece85c2abbbc244b -8b202634562ae4c51e87598498acfb9d - - -cd0df1eb1ee58f4a1ac754bfdefe1cd2 -2bb0873c4f7f81c0c99b54d2942628b8 -e096c55a1206299868b4a383032c8534 -1b477bc500a440a840ffaaafb17f2c7f -b6adc5d873fbe888679d379f9a8bfc6b -b2154fd07961f3c80f34d9513c06a3a0 -535fdffb3136f26c9abfe69ea0f046e6 - - -e21e73dbcacbf40381e034073f1c0a2f -741f7a57eb9d8d525d0d8b8f701de3ab - - -aae48f5a99308c12641af94e8fdeb31d -b9ebe1856ffe897a519c981e673f5339 -7922785cf9644cdc09b48f85f4851781 -dfea3cd5ec8c64bedb9aa2594b3a2d19 -2ed12a38674b56a0928c25b881882435 - - -e90ac5d6893f33fb504a632e6881ab80 -0a9ff928fac90b7d31a211798c5d7b07 -24faffc6ec8a98224a7458268780df30 - - -be4ad6fa5c6f10b2267c2f5c37a96995 - - -898baf66f1dd853750e80807b751781d -aa549e38162bbebca92c3568439e6cca -9445a3c5996ff19deeb342cb676fe76e - - -cf0c603a372ec04408f4f0390e508ada - - -156ab53018330fbaadc8d2193122161a -8645d3a4e3ad87e7cf4d88a46717aab4 -34d839144753232357cd717d22a9aa90 -c85ebe8f83d320c0e9f9d4ee0025b2e3 -58e0494c51d30eb3494f7c9198986bb9 -dd3a00f0d13eb29781edd8c77d4c5100 - - -faa3d57f656bb89f0914273d9dba89cf - - -a8e788eb2a22ce4274364320651076cb -d88b57d0901f72d603015935b08bffbd -c39c0ec9bfdabd9160898bb2207cf54b -503b7ebe0800eb7a3afcd0dda6b9838d -10070b750beb7fdb3eec3b6d071326c8 -ee84444dcf34101555d20a813d528c44 -27ca66fec321e776b30781476830ac85 -c109626d2c1a29e2b6cd42313711fdaa - - -ab1dfe792ea9436359f651f3a1f65d02 -f10d74f8335a189a409782443b09805b -eab26c488eb7c1fa4100c09214424bd0 -4f95b99420773f3d8e4ced0c3bc9223a -dff24ec9037e89eddf76bb88bdab67a3 -e13584f9ff137d75e7b7c95246502736 -15a8c2a80d40107a85c287753f568cfb -65c9b4293efb115c78d5b6f988d9b383 -4349cfe7ef92aac387c6a708955d3772 -15356f5c34f9c8ee074f93d48af8a1ed -30c2b3d88b2e27d96044bb0aa6cc9568 -050995365487e38a4f257403af91492e -ffa56a318b5cd809e07a5caa0c4ad2ef -be3dfcaef18d9fc6dc90d7b9bf0ac3bf -c0c1addee9fca4220aa6f7af5b184070 - - -645f26ac093c9f9f1bc6b0861a329b18 - - -7790d0f4472a9ed77e34741935da7ce9 -c0b20e7b6ef415d88bed1e3f9cda474c -48b7f6d2571d20c5109354ce787cd510 -fa81a8726479f796f1269dcc9ed45e20 -b2ba1282e6fa0e3933765314b7b580be - - -e9fd5f9dd13021be3f8772085dd1450f -963d1cdf7bf054f4d11cc7beee9c4fab -789fdd564b2371cbfb26bdc75a58a4b1 - - -f178d8cd46d8a5c8c08168b6c3e77284 -e60ef16f16b72b7bd2c3c4fef7a10e50 -733effd0686756cb4269ca01bc036ac2 -413b33ab0efd7c3f58e4e3071a26afd0 - - -b6cf2813cc4a33d8ce2bdfdc485abdb2 -1eef4e317fa968abd5ea78583d81674d -29a69a37d953e9290c5c8107a60ba9f1 -fcce71ee4a305553c8236423aed6e467 -b6e195c1706b6c1ad3fc15b2ba99e189 -5bb875a3780ea0063e957c37adf5bbfb -48b63641854e63d0ad75f4612639d2dc -0c6fd0668e675c38ab3bf222a1e38ef2 -3697a1f0a25f2e279c1d17d180a032a1 -839fe2c3c3856d3a2d4e1f4e055e1aa4 - - -2fc19929f55ae8fafb9d90194909a7fd - - -5ceace7f9328f5d03a8114d0b01054ba -549bde73d914532fadf3518767082c37 - - -cb427d7bd272224639953750744e42cc -b2d971a2866db6a715940ef0e921ae72 -6a250628e0160f32eab48ff5d952bb15 -8f2e2fdff63d8c9fcfbc93f237056570 -d00cfae4373f5f9b38452a2f1ac84e7f -26b4e2d38073beed408323978b68c6f7 -dff479103b3608b977b61de447b7d5cd -c18eecb24170824d9de7dea4b539d62a -0e0e21aad42de8783072f98440ecdd9b -7e0ea571abb78ba5fadc435819e30bd5 -33080834ad6e4f9ed3ec21dff3666e74 - - -c3ccf7492299ddea74c15ff331ea0f9a -d7c38727c22bb427515f94092c323d51 -5b2c3dbd4abbc7eff715977d4442c50f -fa2bddaa89b6129d309a100838daaf79 -c7fcdbfdc4bde8825a57450051950df8 - - -c64f69772eade6cdfc2db95241ecf833 -e8592f94912d5ca0c519d036efa796e5 -e1b7320c28b4494fba3338801618f1f9 -93d0209adac1b1a2b4e3cf2173cf995a -20e95e9c16378e6ac4df49011220f904 - - -778ee87bf2f490b2737b2575d6a8367d -36e0aff3d3354e60d6470d44c07d1760 -c6f393b8430b95f521554b427d675a68 - - -cf77c217a823810ab91c5430a021a5f5 - - -7767bbed33494eb25fcaabba00e68b7a - - -d2a5b87e5832c708a67b8718e6cb89bd -6bff9cf68d35e1f83c670731e270c91c -f6b62af680035531c943bb9fe3f416a1 -725a7d1d35aaa7deb29d8d7b68d5a7f9 -06e8c0cd2ad1628f6e10a7430ee66bf5 - - -1f0d1c2f75d69114936f822e4cccf02d -ce549b85795e2bf7f57d622f3fe5e306 -8230b1f4124e9fd5a70a1aa71b9ba705 -de2f26a9b5b2409aa79d946fd383ad54 -0569611956dba3b652addc02da4b6666 - - -a1f9523bf430bdd2af7fb73de6b9e442 - - -497e603380ed4878a23cb93a6d41fc5a -c36eac40f8db61edea7958d8ac870f88 -d5eb6af8926a058a1509863d6fde211f -0cef2d554ceb31f339c496ed5f06e63f -a6af9e25307918427d5fc1a92c2d73a4 -c2c7554e684b3215f323bee3acaa467a -496f2de8d1731c247561cea5b9356f5d - - -29edd079877a1f97269ec792704ba1be - - -d41d8cd98f00b204e9800998ecf8427e - - -d41d8cd98f00b204e9800998ecf8427e -9d9ed081b02473d59ae3136c609a4cbb -32294c7b8e0d8d92ea4602dbc711aabb - - -45b8f2a739f31491b77359b58d5404a1 - - -ba73eb37155d87d598b58b80b3e80030 -3e053329347eacc11557b6830a363435 - - -d41d8cd98f00b204e9800998ecf8427e -af944efb9b60c1720dfe81f4f4f7238e -0f1f51d292ca3ef7c7e527b46da108ad - - -d95016aca11454630c3dc827148a0a7a -d41d8cd98f00b204e9800998ecf8427e -a56cf6032b216e3bfac42b3cc7f5ee55 -2f723ff5a2aac188d21443ea6beb93eb - - -ca5bcba1121f68e181f5bae2e83d7ddf -e374ca08550cfacf79a0b94ddc7c0a2c -9aa5be174f06d77b2dc55b1cd034adbe - - -d41d8cd98f00b204e9800998ecf8427e -39a29fe8ff9f5087781dce05914a01dd - - -e91116632c7e0a745447beb5dacc9a7d - - -d41d8cd98f00b204e9800998ecf8427e -5b098cb2854aff7179682728ebb9cd66 - - -1245667ac7ce0e2b7d37c061a34a9b56 -67264545b5329a8ba76bba329ae5bace - - -d41d8cd98f00b204e9800998ecf8427e -a90f7b32ab9202da3ea6974de66a8a5b -07598bf22d3860e20e172df4267d052f - - -fc8213a4a5a98ee458ddacc6bdd363c4 - - -c2187f1d78aecd78bf874e49a926eeb1 -1c8f0e528720a9c9ded24e76518c9341 -6d6695e08c63ce635ca3e2f6a1d6f402 -1272ec0d12432850c50005d9c1bb9d92 - - -69caa949b7e0f3137c6ce7482f38e0f8 - - -60e55d40812bbd154f08dce43e689ae4 -a0fa0788291ee95ccb306b8aded3fce3 - - -c857cbd23a138dfdef6dbcbb475ccca2 - - -e3620f73f3a1650f7fdb53e6c44a1c07 -b6255a08ce51ab32895aa41e6230a3f7 -7724aa95e287dd12bfcd6a4a9c0e0e72 -c2e932610f10f683fb0111a7b7722565 - - -cc6872bf5f498a24ad9b06fb66e5a642 - - -a1055abf728d65cc42676ffca66379f1 - - -490904cfef730ff7d1f4c6fdf2427c91 -93b60211370f85ea2df9ee8602e27ac4 - - -e697c15fe969eb5405e16bc49264fa01 -0860d2328e5a333731cf95de440f4356 -3a728460147fb9af7faf0e587b9fbf42 -e80584be003f3f3d859e629c1e84f65f -07c72646c76932834219ef6827451df3 -7438b3ef10b182042dfa722f99ef2574 -0899f764c85bbcc13206e3dd8318e678 -9f8b43fd1df78dca0827c73e29890865 -69583ccb35ec8ad521dd0d9f6814b865 - - -bfefe70e3951f1883a84e7bc4033fe97 -1dd69a040ebe4d74c45e4d3d141c34a9 - - -5eff8ad781c655fbc29cc4506ff68eaf - - -3c7be843008e4f8c210d80e653934963 -d5d8751d99da19c8cc0c364366e1d043 -624da46dbfc287fa7894fe66761c3f22 -0d215ccf216116ad98f20c48b914bf34 -54ece365991ca0dbf3892b5fe1d2046c - - -ac2861b424e2b7e30a532f37b33d6889 -4b9acab98ecbda7e226a1f6848ddfc41 -913604462a67f54fd2b2e439373687f1 -cc81befc15da5b8f83fcde8548f3b443 - - -d727abe4a721179026bbf1092cec946c -71a38f6508c64163437075c7d5b717d5 -e3fd8d6c7556714a8c4017612e82d417 -5c4a4febde945dbcaeb1d486362c3188 -1ca080a3db301d48d265f7284a06a886 - - -26cbc57df4a6f7f45e7530dfd1b556da - - -d41d8cd98f00b204e9800998ecf8427e -ed31672779c081565dc562a6fd1fb347 - - -8a505d7ed420ab3a93ed504fb1db0a7b -823e0c612e7de62db2d41adf37214bea - - -56f08275c87353995ebdd5373f678de8 - - -5060ce972cbfdc1505a4ef5ea650e2f0 - - -d41d8cd98f00b204e9800998ecf8427e -9dc0be5de3a337cca64ef3e9cc0a49aa - - -d41d8cd98f00b204e9800998ecf8427e -a8daea57ce57ec26d9e69bae09a4de68 -745adf0a86c9402ae8d08ad2f198d366 -ea919d13e77370c2542e7c20defe5a46 -1b331e41775794399092b13709a36a3b -16e32befe7245bb0f920aff7430fa64b -4ea138773b73a5ae105dd1fc61a493ef - - -d41d8cd98f00b204e9800998ecf8427e -4eff8315855e8176e9a279cc3cfdb49a - - -e9369438fb098c129be060ac6e705a9f -8fd4a88aed32234ba887c20fd976d507 - - -653834503958f258dacebb5f928149bb -d41d8cd98f00b204e9800998ecf8427e -ed2e19f478a4fd1376089ec4b653f027 - - -e14ed0babce46edd7d84dc9aa271d058 -3c90c8031f1c099642b27d392fe480e9 - - -d41d8cd98f00b204e9800998ecf8427e -92609e87c5826db05f43b6470047253d -51465ea4c96dcec00fe6f060b378ac02 - - -d41d8cd98f00b204e9800998ecf8427e -043214cfec88cbe08e22a93ca425eb13 -7b22629626fc5f780cced1f6d817d57b -7dc0092414e8a0160f715413907ef350 - - -a407ef881b83bf2bacc9edeea1511248 -d968592147e2da6690da8161b4c8478b -70cc57adde39239a54f1800b4d4ce40c -a6a80c02f188fa39b135ce4f07fe1a99 -2e8a39a9624e070465fd1ef2cfd0e34f -5e8c8b93e0e977b883243c3ff3d9a571 -7a30afe2b7f7e02b189e6fbc521c1cd9 -8b208d9d73aea61ac49a9b462aabc445 - - -22f4d2b640778fc1e28f2b846679b1bb -d41d8cd98f00b204e9800998ecf8427e -628381f4ef8ee6d35665e002ffa61bb0 -2a2f8d993d977c68987f52998c625257 -185e9b25e8090c806e1164d18c3ab7ff -609462d6bedb898fcd2efa9085432ccd -4fc187f0910aaaa9980dbed3071f6294 -625d53776232369101dad5f6318f40c7 -ccf52560d23a20c3c23a90d2e6449d8e -b508411bb915ecf32b1a995644f67fd1 -39fc42939724eeed99fc0f9554e2a6d7 -a320ce39b96e92f089f639ef14a6ac6d - - -d41d8cd98f00b204e9800998ecf8427e -51675e7f629f2fb30d597002fb83c9dc -ccbbf4d5e94f37abf3ba9e9b31b2ac8b - - -4632631df68e25c141acb349d916c3a3 - - -af876c926d49c59376d8b6d642ce9f66 - - -4d9613e1a21fa012ac864d96f1a62112 -858d2732221359ba9e0a9965353848c3 -877f5ab5413561ff0dc4afaee336b4a0 -d59f578b7eb5f374eda40295072f0fae - - -b928537bcc970549c357bb80ef5ad16f -d41d8cd98f00b204e9800998ecf8427e -5c09b3d75fcba736c3353468236e5338 -563dbdf25cbfd4e4b50649530f7e1151 - - -261d1bb522fccdea41b2573ee4fbf277 -0a81d81144952f49baecb31cfc610fee - - -a42420522213f98440180fd87573e01f -0add03f5b0e2eb1605d6d5212b07b3bc -d41d8cd98f00b204e9800998ecf8427e -67ceb3a25f32b473778a9205a0fe6499 -49bd0e15735812688cd294348054a60e - - -d7f205e587e6a41f82ef5e0961a27225 - - -d41d8cd98f00b204e9800998ecf8427e -a17ce976bfc75278c92275913622ca36 - - -d4bf21d9624e8fef1f9d20465d2e5503 -62fc08bff6c9c08fc68bd5ddab35e443 -24ec97e48bfe034f3ee795ae9ceb282f -f1039a951ab36cebafbbabd8a4117e73 - - -b0ddf2ae9be37ebe13ac48a6881616a1 -e4a04d30006545f88d06bd507e542506 -25b3ce6e2f12f227c4a1ac8db9fab357 - - -af321d136a1e674037ba2c163db3d2b2 -0d79377d6dbbc92ac4ca0db3ede4c00f -05087939aa7580314356261375ceff17 - - -637c350b86faf4b9066532d41dc87fdb -ffb22ad3767850ed93e7a462fc8616e6 -be649c02d533439a6d320c9bb229bdee -23a9fe711137f3cb4f06dd011d38c23b - - -d41d8cd98f00b204e9800998ecf8427e -2732b9f4859028d719c2d93a671f49fb - - -9b2c6de73503cceb102e875a364f6626 -71f0213600f7ced820366e2a29cd1830 -65e54e9e6458c353a92eeaafdb0d0022 - - -d41d8cd98f00b204e9800998ecf8427e -18cebf1db58bdd4c52b6b36a9fab1e14 - - -aaeb594d255628a742d183b0c4fff3c6 -bebba22e7a5fdb20a52dfcf1b64772a1 -76b0dbbea2bf64439e204970f68bc73b - - -d41d8cd98f00b204e9800998ecf8427e -7802aef2c68c39a5655aa095873eceb5 - - -140ca9e6844d65982fe76efbf153403e - - -60beb0705c4819ef3ff88e49f02e2628 -a407906c9e3dc5a2d20b3403a953def1 - - -d41d8cd98f00b204e9800998ecf8427e -bc43add6b32c31d1b01ea56190143f5c -09546c41a854e762844c9fa4f2000aa0 - - -abefa8f7d035ae87eb5b45b0c43843be -6cb2085059ec2f740f5ca8a2aa3ef310 -1228532a69cfc2e4ce917fbedb9321aa -4032fa0aca1db6fc5e020d25ed7fab41 -e3670650548097d9a7aaeb346f3bd5ef - - -d0bf76a584562ca01bcc46670b39af32 -ad62122318a931843599ec66c81cdf02 - - -4ca6185ba6db6546cfeb895c29bbdd34 - - -71d1ef869b5ab59897f399b0d15f6e5f -d41d8cd98f00b204e9800998ecf8427e -88fbba4cba739a16e7aa39f9c3ecbe0e - - -497c587c91e1b79625ba7ee4cb949a93 -6eb4f4ef85a909022bb3e9b90e7d8ee2 - - -d41d8cd98f00b204e9800998ecf8427e -ee74a794201de6cf45f08cc56c789ad7 -493e569e803559c55dd06ca35411e0b4 - - -dd8891037d36d4a87969e74f93d88e49 -655a1635fdf3202e7d7c074a029bf277 -b3fd9f9544438ef81401c880177d40fd -5c0c423540accb30a32265a7e909078f - - -d41d8cd98f00b204e9800998ecf8427e -86fe8e6f4ba1e0da06a5523b1747310e -ee9e658395eb5f6e4e4415ad4b952a1c -502547de717912a19aca06ddd223995c -08d09a43fb6c23ea07250e482e0116d2 -311259a2b28384c64ff2443c7feb9d21 - - -c1a2f4393f1fdbcffc80b181fd828d0a -d41d8cd98f00b204e9800998ecf8427e - - -d41d8cd98f00b204e9800998ecf8427e - - -d41d8cd98f00b204e9800998ecf8427e - - -d41d8cd98f00b204e9800998ecf8427e -b795793e8742698587af059a275581b4 -47e8ba9252c70ef0d0bce623d680ac3c -83d57cbbde26de78fe831891f6f8dd7e - - -66c525f1c24e58832662ea2ba2a21cbf - - -66ad801403f54ab0067a1c525ed542e6 - - -94819f93fcff199704b6195a50c12d94 -af3abc6cbf19c242b3fe25271737fbab -f2df5d4e95f1091339a4f76516c5d2d4 - - -d41d8cd98f00b204e9800998ecf8427e -0d6cb1619a053d70c78672a9aecc4d01 - - -d41d8cd98f00b204e9800998ecf8427e -f1aaa2ddccc69adf4fc2c6e9aad9fe61 -7f74cf4fc62967e4f18a2b2d5f49a3f5 -50bc7526a36a03c57dca47022c735425 -d5093b1fa8a05ed2885905be1351aa57 - - -16eb6bbf5daac70314b5480aa545de72 - - -d41d8cd98f00b204e9800998ecf8427e -2159447cc3546450f1822526524bc0fb -f37b46c4b0e08ea71383759d51cbca62 -645f5048914786b19f9ad6a5ebc01df2 -fbc3af2707bf059d3025f5d4c80e59e3 -97b1df5a4b9096c71a9838fa2e4128cf -e7a3046378387654cf54c821f4d39ff9 -3568128b967fe47eacc7341497f120d4 - - -bf6fab07bb6fc9efb9af009a1245e59c -e33dfe6255968ce78c4a1953fc529a61 -6d84eb5714dbc193b9c62415322f730d -d22ad962953e353432753deed2609d8c - - -20c72a55796b1e64cff84f004b04e76b - - -530655125f0ab31a2406b744e62ae2e0 -f15bf7e5916adfd39a30d1d984c28b75 -aaca3ca32321aced0a33feaad8be2867 - - -d41d8cd98f00b204e9800998ecf8427e -fbccc9c80db24316963f00108777de22 - - -e527016e816268701ba5d8a8c5133b83 - - -d41d8cd98f00b204e9800998ecf8427e -3e8b72640f3dd0117bde24b366b7a8f5 -56ab66872574c4005a138883a610053c -5c07caec4119e65b0f413c36382fc1fd -a651cfc57d02e13f28a7888e42936c6f -eb8aec3b6223e224d7e0a3d275119d2c -7d586422806dee9c2b3b1bc2040c103a -d8bb05e304774532c20b3bfd2640be79 - - -8a25fb29361c57f65f703406ce45b358 - - -d41d8cd98f00b204e9800998ecf8427e - - -d41d8cd98f00b204e9800998ecf8427e - - -f14704ffdc07adae667d97b068a43256 -d41d8cd98f00b204e9800998ecf8427e -d64e97da94df5bcc6b9e82a379085f61 -b59142bd8cdcd219692f63fb46cd3a49 -32b9f7e276353924351253cead6eef06 - - -a08e46945e48cb6fb3f0364a0efa1005 - - -d41d8cd98f00b204e9800998ecf8427e - - -19d06d84b1b9df386b1cadc877a8c169 -d41d8cd98f00b204e9800998ecf8427e -9828a8c09e33d2aabf40388aa3d71d56 -977792fd978561c2f641a42ff3af515b -0bf49a329273647d1ab966c8bf1852b4 - - -e0ea159b2cb390fedbffab55f4292315 - - -46534b8826dcef70872a3eda1edaaff7 -4e29bea0c5013afb255817dc9707a222 -87180c4c308522bf458c8743c171ca8b - - -29139a1bef436286870533a5ed8f29a9 -c300f5e0a2acf0e551181b99e73d86b5 - - -101a0b273f2b9a41680969e990d7f452 -b12dc16907aa1499ea6b6dfcc484baa2 -d0673c8be1cb6b2572c370da9c3de827 -8f99f0fd2ed217328dd4647819cba0bb - - -d41d8cd98f00b204e9800998ecf8427e -a7782dab95c860f764d112db2ef3be7a -e40dcf4585bcbeb83f9e1b9a1bfbd46d - - -bdf8a31adfd8883f96009ae9a31eb339 -22a2ab52185732bcafd64fbd4a68eea8 -7b425cd596259f2a3bd9a1ffb228d0de -ebb2e597917e22900853dfa300de88da - - -d41d8cd98f00b204e9800998ecf8427e -2c6f884e37b89f861f19faba99009ecb - - -32df7d91f327cfdcd67d831f6e7535eb -4948f533a6a1eaefa51a4c7b8661e293 -9c15e013ef6cee78eeba5c41747d96a1 - - -d41d8cd98f00b204e9800998ecf8427e -4776d6cefd9a868dc15fa24651c816b9 -9069ff50c20cb96cb418f7b75c3a905b - - -8ca68c30b032befd4a730e7b8f06275e - - -74f1aaa602c0b44f4ffdc664eded1203 - - -d41d8cd98f00b204e9800998ecf8427e - - -b3030bcc4e2bd43d736b75c03708a14a -325472601571f31e1bf00674c368d335 -d41d8cd98f00b204e9800998ecf8427e -f6ceacf21d75d76838d8d0eb07b59b91 -bc3efe4654dfa1f79154f2544af4b884 -fee68244e60227c904bac3a3b6eee43f -c6cf0750015a364ebd1a9513662f7cce -520e529510d541e2f6d55d4835d37676 -8dcf9c8e0d9fd9279e7608571669a59e - - -08c5276ccec1e43cc5f3c6d0be5d2b8b -d41d8cd98f00b204e9800998ecf8427e - - -b8d07a4c4a294348b97c9bcfe2f85590 -3e8e56cfacb8c2bbf56f9d5535e531b6 - - -edcd1c8ee9024895b5a4583722babe78 -ba4926ea53023adefd4e45924855b2a2 -582e2c081262467afb34b75cb2209cd4 -d41d8cd98f00b204e9800998ecf8427e -9c8237cfe69b78933a90446291cb4ae7 -5d2a464ef783e9ec70d12cbd0219b093 -401bf37973a5828e589dc42d51a9ce41 -98ecba6c3121fab9e9bd8a0d231291da -ca7af6adbe7fc6713eef7aedeaff6d68 -e6b53f1b56eb92e0f6c7956389846860 -a9b8b3dd2ca801db31096657f9feb223 -d2f15a52c9b7cde60094357aee158f9a -bcf30b9314c6e22f433cf63e070d5e2a -07acabf847fef0e89e2bce0503630da3 -9fd4dc6b29261e27a3510bb978a03e6f -6384cb5f1f2ee9d373aa7daa642aa37e -33a84dfb653999b51a2e7bf4ad9d61c4 -d557ad90a880a8c4239afe23dfa338bb -2a6d089c130c02e956bfd09b24e471d8 -23ba1414b6b41244e36280f806264949 -4f78f926e05049ba39465f6e6468161b -0b3ad9eaedd22ca346e7413749cf65d3 -23ba1414b6b41244e36280f806264949 -f0e74b60a4bd86a7e3c72703ae35bdbd -ebe5075d5d7f38954bdac5dc09ac7959 -bbda4f35647bcd95d0c8ee59784c171c -4c5e0f1f033e3c5bf6262396bf67fa18 -d4fc315c5e2ead83751e8840a12f0bd5 - - -c05109777e57c2553f01444a13c901c5 -d41d8cd98f00b204e9800998ecf8427e -5c405b8797567aa10a74ba78e0a45779 -5518e2e6b0fae1d10afcff0855ac54d4 -0a2d3ee44e20f13736fad04e7894b6df -bfa40282d9494b2a4d2999f1b0cc3fb9 -a313226470463b1cef10c0a9e9ef810c -a8e7f6279b672b819e3587e82be2ecaa -1f38190b8213c46f62edaf39ee4638af -c05109777e57c2553f01444a13c901c5 -bee1a71bee296f6d1c70585fe47c6ef1 -c2ed5baccc767f4fdb09ac901f1b92e5 -805d1cab1ef9a9a4fb9d5f6bc19599fc -08302bad21f1fa6c63e2676d8997c4c5 -1e66ff16162d27c4f62f5f50321c27c5 -1a5c6b584ccd998c0612fede27015d07 -99113f9e888936076f1bfab0f118d75e -1411e223b68d5b52ffe1af867f60c4a4 -95c88179a187f4e5b646bc9ca87fe969 -f810fc612aceaf61d59bdfb6070481c5 -1411e223b68d5b52ffe1af867f60c4a4 -f70aeb96f2b1e6b321b8a0b33a0ec388 -72517dbfdffeee4aa7d31fd4bc08989a -84ad28425e6a6a24d92ebd0e072bacff -1e66ff16162d27c4f62f5f50321c27c5 -e015c12d2f9b5ecbe7d3dc4d40a3d403 - - -191d2a2463a0166ac3be558bea018c72 - - -d41d8cd98f00b204e9800998ecf8427e -13c230e30f07c174594e9aa17fadabdb -be71fd70d4c569441bba4290a5f45ae9 - - -d41d8cd98f00b204e9800998ecf8427e - - -d41d8cd98f00b204e9800998ecf8427e - - -d41d8cd98f00b204e9800998ecf8427e -b4ac782d4faa1753d13b24ca99c87a6e -b3446aab31273de311c70a0331790702 -a820218b80b8490482654be08093cfca -7db229fdbab069ce531ee6db615115f7 -0a3152cd7649e57b9318603c240cab0a -db5b3613c8ede55626ab70594591229c -1fce4641b42b1c6680093428f2ccada5 - - -255c511cf57d5c863564fd3ec0bae654 -d41d8cd98f00b204e9800998ecf8427e -7a257121b2c9d54226e1e51d67232505 -6b6851714ab5e4f9491c2500a26c8ceb -8236206d490740be0c025f905d8fedc5 - - -594c6fadbe917f7e36c7b72cfd6a6af2 -d41d8cd98f00b204e9800998ecf8427e -080945adaf8304688ce778f8acc821fe -c23f62f7e5f09cf5573f130a41f187ac - - -d41d8cd98f00b204e9800998ecf8427e -295dcb4f6b296bc1b2021c535ff02aa8 -5ef3117292cb272cb72190d67bda189d - - -12493ac31aa1376058c5f1bb4eea48e1 -7f9a1be8e9e0bc6a5ac46129fe290b7d -f0b37bba830b2bf5fc563baf227c34eb -080945adaf8304688ce778f8acc821fe -c7a59c20d9909f290dab597e09ffa2be -8cc4b11d20b0e01eb7e7b7401c2f12c8 -10740fb22bfc2ac1b339e9d784cb9c23 -e72a1897ed9a078b81e72d66eb3895fc -ee2a09d80f4c4301c4c7a35dbac74255 -29e218c7e580c35cf99d19f5876b1709 -bd68e17f01cde910409d40075ec640bf -19841d0071556ffdf8fbe94d0cddd464 -b7c3b27785924f5b023754855bbe3177 -2775e6e61e2ab0bdfd17b7ed63dea86e -83554ef1749b5f877cda2173c4fd71f2 -3c5adedd71ef8c08b8dfd0213767a814 -fa1602ccc625f1e35a7be5e0a2083020 -c4c69d5940cb93e0c41bdb62ff59a2f5 - - -a4a1f69d36f0c22e9eb2767ea3f0adbd - - -d41d8cd98f00b204e9800998ecf8427e - - -d41d8cd98f00b204e9800998ecf8427e -048dc07dc5cab8e296892a0a435244e0 -783b88cbef3e0dd4c05b607eae4aab9d -85df266f4d854833292920582558e462 -30ba3a70b83586bd7f71fd3e9735841a -30834b09409d2e8bdf19a7c03ee3e0c0 - - -c89ef8b181cebf914f489a4849014df4 - - -7fbd04fb747c9df920e68d90c28f6853 - - -f0f3dd548f0117a3bb6905f9905ea76d -d41d8cd98f00b204e9800998ecf8427e -9ed54c7ee286304e07993b5812fc0cbf -d992798ae83fe2da2d0501997a8bc9ca -85a61fdff452eb8d12f7c76278a5b038 -6ffc1d90d72e3ed0f20b128231e61593 -1f21cfd913214a20cfa2f7ae3ada25ff -ef26c4f25fa2beb7d37143476b866754 -62b787e74da5d6c50c1bd97b356ab764 -78316df6af32ee9da5ced78338216bc8 -b4975423ce39701a8d04fc36264d796a -97283e3a351b02ab30f1d6b9174a6ca7 -a5b8ce85067c27e4ba0d40f305f84f8d -a211091c4c91768c4fd48b81a261be92 -1d41db13a55daee5b2fb5cc28528c32c -0d9c006af2fa9a68a117520b8fb0244d -0a3bd48209e8dc9cba8cbde6a8acbdb5 - - -97e07f15a54f43bd1f5d8040f1518514 -1038e90233a2a8a55f004e9862cf506c -301a7689d42e301ca8ba3e4105c658c4 -727a2a09be20f951758ebda495f21819 -f1937e8c9562055c849883a5e39a42a5 -c3b3d0abdbe29dfa600e25c414370231 -d29ea5774ef6055ff2a376efa8e1b629 -2c7d88183b1aeeaa3c4fcffeb081cb86 -d41d8cd98f00b204e9800998ecf8427e -424500cb5f9acf42cd8c95ab819fd320 -62bad207f0d4f8630ef0d2a23a365574 -d67feaff91ea41dbdb614dce38ba542f -9d12d7b1dffb846c4c732a6017da3027 -6a42f85c4852916c71548c179234aeef -0db78f95e23062feab46593d28704532 -d13a1b0fbbc6cafcecd93f460a494cbd -084f9694188a61f84e337a78ed05441d -40d4b7bcf8ab72c9640862b4450c1332 -02c3c91fb006d3ae2e15455d1d559a91 -0fdcd38ce537746580c763cc3bad3867 -a5fa4f2f169cad1915a191fc151ad265 -fc4eb48545c609f71eaaefb2e061d91b -481ba4d57ac39c2afe7e74987c509503 -c663d2cee4ea71d024f2defd840527bc -4d33c44d7e7704e5e67b2bc7b183d8ba -f0bf2d1c291cff3b62bf2a656b32ea62 -52a5f7f52fe45bc60d38ca4a96194125 -51947a30f8a81923a63f5a0b92d756a0 -05bf526e791c88cef09875a2199a1f00 -94cf1cf189b0f0a0d50411c4502ff252 -7ab52342b3b370b5b6f6298dc5d4c182 -4e6fa59e238b5d4855818e3197dc9931 -6cbfa567b0f4153bbc7f74adfe6bb4d2 -a50413b4e11d40568247b0f3aeb6edd1 -bf50bfa23a12e840e06fdf7f53e157b1 -ff02ed2bea96d88f500167a09413c7c0 -59877377a38dd5dcee93798ea7923bee -4b0797a4faaa9475bd19337f4825284e -daff44759e4f9c193a667ed427ba5444 -78035900d4df5bae90ad90077151b7f4 -8ba37911c24d75473a9a07fc3dd3c371 -f4d35924864fb87b787ab9a9925fb091 -c4eace6e4930731ba46b88be2bedad6a -24e05a59dbe2e27dcd6bd1554f8d1695 -e584803860f66fdd09669edc27f3c18b -e7df06c253dee16873fac26b32670722 -0bb1fb4ad3250cc312d571055323db79 -ef5e6dcc9065d652696cc5e9b4613f20 -ed773b5b64093d6017aecdf1ca79fef5 -6bf888b0c4db10de3ac1c4d8c48ca495 -5ab4686cbf0b0d798b37873a6c9bb3df -1889b6eeeef65ae427813873a606a06f -126d87de4a1d8e863a5ad85f840caf2c -f96b3c7931490587edba909bc2a3d73c -4b09fb6f2102d0dc31cccb6a021a275c -56ca46312806229c2d361e9c46ab4533 -0b631c9349d4997aca6fa2bcd6a60fc7 -34a8dbdc41d76d2c95b702cc0c770f8b -8f0274eded9c67119297f281fad2bf9b -445dc8957e4b73ac842bbfdc8cbbd243 -3db7079275b3e1ba0126ec337f998412 -3338b73e47bcad98695e11e3b32ebcfa - - -4ce6580013c820b13b2f59600a35c735 -d41d8cd98f00b204e9800998ecf8427e -c83d06b3dc2afbd5453b8e485ac38312 -bf7a691239cd0c0677bdaf061d0ad837 -289840af2b48d265fb46e11ddf2628da -242288b2514820582ba09b42ff57e2f4 -d40f2bc5d4e74945aff1b8663bf33d0f -e6aecd57572a5165653ffc7a9b283178 -9479b8ec2ca8b6bf847e69acf0905d9e - - -0105de39da47e5826bf8604b8b1e5a13 -a1bd66b209ee6f52c176d5d0f1c62da1 -14632aa89ec3fafa4b2d795dcbfa57c9 - - -dc056bd161ceeab388b54c28790ad27f -d41d8cd98f00b204e9800998ecf8427e -e403f819edbccb676580a4bab5dc9b85 -8ffa067fe180a67ba149c4ae7f319b09 -67ba0ce54c69bd89a57e925941319ae3 -07374752b32e65ac21f86c1801ada777 -b6333dfcde8674d1f76a8fb5b8386627 -84b8be2d20c1d6d6811f0298d2234ca8 -223bb15e53ca059b66188e2c5d196195 -62ecdcff5b99f8bd94f75e2ab7eacd71 -b45e62638dc04cdc8cac22d4c82a0c1e -311530ce8300ab9eb82dfadc21dc6646 -130ce96d80430c90a6998055db294685 -93d1ba6dd796c844428cf9149ee2e801 -44740af25aeae7888e239bc6f3ecd36c -4175f4b0b8b1bad303aa966c954ddc25 -6b58f5c0cad8d233b94b0874a41e4c7d -217a9db618180ecae18828a2efc375db -afee7ccb55d1420cc8e36da4657825d1 -1040bc90a4146aba3e12b547710fd290 -dd2a3e53ff70e9913a1f44a65992e83e -1258865536912e11c70ae0c343576d11 -07e043e1c42a0fe90d2226eaacb013e2 -f6d4c9c91e2608f8ae916ddf86816560 -1ac25140f51596243217b5ebcdad96fe -78f6029aabbd9f1e2568187f7d2f98c9 -a969dd13ed2ab6f921564ecd22121515 -ef0ba347561ad5fcd763fabb899bfad0 -487b0c9b855ee29b3f079d5d885130cd -fb6dfe418a92f6803616c17def007cd2 -48cf595e8d99291e756b6f0945c4a656 -60c540c4dfb653ef65e67a628645f590 -27e975f676e3cda57ed150f82a970644 -cc545e426ed2e735bd00cbab8db381bd -98ca2d412c720690b46b8bf566cf4fb5 -a9d45ffd6281800146fcfb2e3ab90ab6 -66b21a3ea2de0ae271e470c339c40d07 -33293e2db3dedadfccccd5d6ac23eaf9 -b416db3eacff1ad448692d14aadff327 -6e53a89f128e41918ccf5b20b96976b0 -1c73eacab2a1a619dc70e2f24fba4d1e -0bbc469b628cbc940ebdd59f2e218b6c -eff5fc174c1ec328e58b76a3d70a5f2f -116c4c10fccce8d73c9193e742834d3a -f99ce992ef00dd16272190000ca9518d -dc63bf62b746ea8d1b1e7833675475d5 -e5782fe8434c4a711e0d8b3d9c198d75 -35cc6ac5381635a8a49523616f0d5e18 -595325924223d40b0ea97c9df4ebfde4 -aa7ebaddf8d815b3dfd1b3281f26de84 -a4bc5e69c8ddf4379a84b9c36588d6ca -c96798f2266b05d2c7fe35ad2226ce8f -7494683dbd566b69f5913fec5a97b99d -6caf87260cfa1e46a3a9145ee88b89be -7097ba988bc2e9100b8857863e276932 -3cfbb9ef9c493bf739d501114cbe798c -4eaa5c0e7ce4116e821af9c6ce8c53ed -540b65a840a2f9876551a7963a2aa1bf -48f9b2c134655de1b0f5f7d50f01b765 -be3c22b06cfbbc6e8771a5ba0f7447c3 -70c6fc7d08f3c562322c9f53273f1393 - - -47b61de6de8e6ba33297c340f849928c - - -a24dddda1a66ac83bb61ca34559694fc -460429d5483ab7a26560b3bac3adb437 -d41d8cd98f00b204e9800998ecf8427e -505eddd29e439ed2971f69ab8d38e289 -f44ef38f3ae6b30def1d8f4d8b309ba5 -68f1afb0ba44e0f93c89b4768001ddde -67e301d4222ce8df3e27dd2b6bacac0d -2616ba6e3e277acabedbe7b36114d851 -637f30cfefd948ec5aea16cc25f00f91 -4cb7f6d97d38884b63a5adb65dc85870 -8ce29863483ab28b83dda0eb041678e3 -36e6644d1f29852a1fade887ee5dc297 -ea242d45e334f6ccf8667d6eefa897f9 -4ec1d00a283dde86f3d2d2dfe861322b -27899639279dd869734a9adfcca90928 -d493e1ef8c48b934abc27c265511201c -e2e0d0f0e5f01a63b01051548ae2d046 -571c3314f679515eeb7e783e772a91d8 -cf35607a99b98c2f1265fca99f012e39 -8b161e9605cb5167551218d6052ce08b -4635f7e2ec630f95a9c40f8a70e4a5ad -b569393287bd79b472ea2ffddae509d0 -bad676eea7524bc274e069c4bad959ee -6b972a0e3244ed24f7677b8f54823f42 -23d61ece0d5dc54bf7289f5089cafc6f -32042dcd19771c7e6284bd7647218438 -0035f9b29bda926156cd36c0a8d1203d -d09f346786a0d3f499c82632efdc513a -95d5483b7b0fe93613c6f92fecc3693e -8116cf0180c6b6f8f92811877388f2e5 -a15246ccf08fa8457bccaafba911571c -da4407057f3825372d0244bb03d4de0b -78de81afa98ce42409be1cd40f78977a - - -8c78f30a301fd7c5092ed59d95f2f688 - - -24a809523f01561d398e69640b4177a9 - - -9f4114f75bc477d32d3eee0964ce9538 - - -d41d8cd98f00b204e9800998ecf8427e -4c126f4df7a6cb7922328989adb0e4e9 - - -d41d8cd98f00b204e9800998ecf8427e - - -d41d8cd98f00b204e9800998ecf8427e -d5c21facbb1b56e3cad3749b7d0512be - - -998586e946d5bfd3c5cdec06f59197be -a8e40eab967d374369a9c2ebeff3f17c -03b977acb32cacc51e89dc4446c7a8a0 - - -d41d8cd98f00b204e9800998ecf8427e -93e6457929d7e0366360e7380aa8957a - - -69982f8171837cd8669bfe9c2f08dc8f -ddf6dfeb77c98411b4d5434f20c24483 -c23010fa68c5996cb5977f84a6bb7ceb -822961d86ae558588632b3b08c085b89 -d41d8cd98f00b204e9800998ecf8427e -b4e9f07aa5268af49d3bb9429719b201 -8293bd60fe13ac64c22f8500b346821c -dcf77950d1dae6b1e4eb4c8473318bac -413af6ca18377689660d2b2eeed2be98 -d2df1ec90f2bebb3ebfb74eba81bcec7 -c3b801c60645dff594d33cf0acc43fa5 - - -de943e7a2b8a603c3ebc34507309a46d -d41d8cd98f00b204e9800998ecf8427e -4c7ae76e7bfcc26d6e030319fe556ef7 -eac58079934a9b7df5b0239980a09102 - - -bd98e5ab25a629b3ad77dbd8d65f57f9 -7ffdea19b2579687fc084642e9ded32e -e24d593b65305e01b074d405391f26b6 -1decbba7d8c340e96fef7e7c8f76cec5 -6c964cc174572200dc704eef7928b33e - - -d41d8cd98f00b204e9800998ecf8427e -1dbcebdf0ca125ced506b39a0e4a29b7 - - -d41d8cd98f00b204e9800998ecf8427e -4553664f3a8bd058468c8fe3a6622db9 -7ffccecde85645232cd150f4ceb54f8d -f0e4f84ac2849eef8c8da252f2a875fd -32b93afec2aa49078d275f31e5bcfdb0 - - -f15135e330ceb4d36cbb3d115337a69a - - -d41d8cd98f00b204e9800998ecf8427e -088cf985b57584cfffabc472d81e0db0 -4a05f379a84fef6bd48c3afa7a95207d - - -d41d8cd98f00b204e9800998ecf8427e -7af26733aec623cb978ec9e8c3a6f324 -b5a01bef49b36577ec34e6e0956b8727 - - -b64c20cb648e8af5082db258e235937e -e8beeb31ba3517a1c3858365072fa333 -da423e7cd677fb61f72236ebd66088dd -a45190255cfbea389c3d9c7a617d130f -7f20953dd1bbbc6a6bc7fe4aecd11fb5 - - -5a78d16a02c5aeb129cd550ec0a5c28a -d41d8cd98f00b204e9800998ecf8427e -97a9f29c0dc31ca7bfe79f69f3425c76 -53843c95c90b7200505f1e44ee5270bb - - -d7ce5caf474c325b8a660583b48df39e -dd9a08f8c03874b1fd5249a35922466d - - -d41d8cd98f00b204e9800998ecf8427e -176884d4fccf888c6e7431804c74a14a -94e9f6ce17a4651ac325bfee0ac16c64 -8fd1f79367ca1fe345076df77337dce5 -f565e3ddf9bc9395ac47dcea255b1cd9 -8881a25817ad44b4a24d22b129c08204 -49d161798e5233c661462d1ba993970f - - -c47c2dc804e697e11c3f4ce54e0b0011 -d41d8cd98f00b204e9800998ecf8427e -fcc8eb9209d42bb5bef2f9c3f4984b87 -272f374309d523038d10b4ca8565352b -1971aac78dbeb00bd73cd58de2923d63 -4a3fbf99bbd978bb9d145282c6092ee2 - - -0bf2e38d4ce8df49eea23b091ea492f1 -26eac71fe10cf9b45357d18da527bd63 - - -d41d8cd98f00b204e9800998ecf8427e -f63628897fdb4a183081fe4fd0010d7a -64eb1354ac6c51821c0980ff8edc544a -0a846aab804b6db6c1e9fb50a5081fb6 -2412c043ecec8cd25ea9a03e460f052a - - -d41d8cd98f00b204e9800998ecf8427e - - -929e64d2c69c504b6294a337d78b91d0 - - -3bdfbda286294b2d05d3d0f0620bda42 - - -d41d8cd98f00b204e9800998ecf8427e -4b0639469c047f10c9c546331f6bba63 - - -d41d8cd98f00b204e9800998ecf8427e -b3d164a87826eef531dc9b46c62b1e2e -98696a105fcdecc8f00a2849ed36aed8 -25b5b4bb97f49c9a5ac015d1aaa0310f -4e99f17050caf177332e013fe7fe9e0c -7bc409d442508ec7f8638e4d710c6508 - - -37494105410d00a80f6c222894a8a94c -bb90a4e927cd7bdbadcb54ee217b8f07 - - -582dba6660f1d337715a4822f4dd9524 -d41d8cd98f00b204e9800998ecf8427e -9b301131818ad7072d10624d9fce65b8 -9a3ec96f1345ddc401718776d6c95756 - - -d41d8cd98f00b204e9800998ecf8427e -cdcb97001ea2cbedc6261727dff64e0d -db680645424dbfcec99503215405d2c1 -c65eeac4d7c36b3af73c2408ce38fa09 - - -ffb86fbf0c869b72795cab7c16fc6d99 -d41d8cd98f00b204e9800998ecf8427e -4d1fa853732216f28ce54fcf8e4e6207 -1277e5c01232300f48a75b9b02bf6e4c -9b4de98bf9f90966db0305e9d8aa0de5 -7f9e9451a7893997bbda81950b9bf3da -934db34fc5470e87467d07401027b6ac -640847d555597c2573213b5dc5515cf1 -e8b39a8d6ef02915ddf04bbc93b92d82 -184c417ca2d9d734f73867da2c1287f3 -ae0615307ed643d4c7b0e0bfe4b7e45b -011f89953f9ad322e178a8d183de886e -9836a974ec46db2376f688070eb5f577 -4bbee56e9f7b9e39373a5afc8983bd22 - - -348ed0a286dd5e2c43d90a6c0f28e3e6 - - -d41d8cd98f00b204e9800998ecf8427e -47cdd134f11d6167cba1dd440c90bfb4 -40b6de62b1c5150dbc1301ed91361879 -7d605e5564840c03d4ac31ddad615c31 - - -1cec18c78a994077bdd1f3220f0c89d2 -75dadfb0411c68a97cffc44bbd7bbb8e -4e72194cb13c3c6e40abbeabfc63b1b3 - - -d41d8cd98f00b204e9800998ecf8427e -6b8b8ce50599e40cb74603a883f5d49b -eb4430a638d6c94ba5e1d0114babe300 - - -d41d8cd98f00b204e9800998ecf8427e -c6e5ab0aa652dc51731fc48b41c995ff -1f2f0ef6ee0d0be328ce2a63b62b9e00 -2c06092e1620c0a27cf264e1fb56ea02 -2f711cd15f3d1808bc190e46f9770e29 - - -7b82d8b4f260bf77647648b2c691f5ef -3d95525f908de5a02cd5218893e04602 -4ec0b3b616a0298a698385da45464506 -5976e30c457bcfd8152c783869aa44f5 - - -d41d8cd98f00b204e9800998ecf8427e - - -d41d8cd98f00b204e9800998ecf8427e -6f0310c8fb3d1720af3544ec789ae76b -3f870cc77afc8277b700c1492dd0d75f - - -55c5f68e0b44d29127739462be1da2ff -cf35ef4c0d5285ba00fa8e651cfbde50 -760e788770fa00311687d3b98710a2d6 -981b343d89fd2c32200bcf32deb07128 -ef43c627d7df9158523df21755262f40 - - -d41d8cd98f00b204e9800998ecf8427e -ca77104ab1e9cd060e5fc12061f54b93 - - -d41d8cd98f00b204e9800998ecf8427e -a64def4ba4a8a55272108f79d0667e39 -5b110fb85ff4aafe377255ee3f01252c -b3f46a3f7cc553bcda255db88fd2309a - - -03ffdb8b37122df3823dccc947fc944c -fe46f69ee9c9a7cbf321c71e5c3e3fd3 -6b01669d177f1a614085b407538555d9 -e1efd5d8bc348da70c325a08fc8c37a8 - - -6819b7ceadc741bfb34cc11333fb3d30 -d41d8cd98f00b204e9800998ecf8427e -13e7a0e137341f5a38764ea645b425f8 - - -d41d8cd98f00b204e9800998ecf8427e -e4239be8b90a077f8afc116e683151c9 -751806f248816fea7429cc7c4132539b -13e922bcc8c5b80bccd436037b6d1983 - - -74bda525f0dda4ec97c808e29637ecb6 - - -d41d8cd98f00b204e9800998ecf8427e -551b419a1f4c4a63810438873229bcff -086b2b45b9a2fe748f229b9bc66c2b5f -083e92b90c1d1b8d2fc0bf53f82fe24d - - -d41d8cd98f00b204e9800998ecf8427e - - -d41d8cd98f00b204e9800998ecf8427e -372f6b7405c871be138137fc693ace0b - - -d41d8cd98f00b204e9800998ecf8427e -17c5319c940eb3104add1eb9e101fa12 -8d9da26640fc68bb5b410b1e2b045146 -dd6a5fb7d43469dbd615a20d87f3d3a7 - - -e1325f546f1962d12fec91a77bc51d8d -479a15c5d54330ed02283720b48ba8d0 -67aacfba9a773fd702d1cbdb527c2389 - - -72dafdaa273c97150cf8ef3605c049df - - -d41d8cd98f00b204e9800998ecf8427e -c89b1bc5e14f24865577a17f6e90a7e8 -43713fb171f594ff8816da84b61f5284 - - -d41d8cd98f00b204e9800998ecf8427e -5d81526d6d239037a39a5ff396552a71 - - -d41d8cd98f00b204e9800998ecf8427e -641809cdd14d1a4d72cfd92cb37c2c33 - - -d41d8cd98f00b204e9800998ecf8427e -9781398536d1483f5c9c342933099d6e - - -bcc3831429d49ff3a32c645c64be2e0e -25fe73dfb05c08526e94d7ba7f241d9e - - -e55b01cb8e535d7dc9430a15a8a67444 -aee7564b27ba5450152d80002f1fba64 - - -d41d8cd98f00b204e9800998ecf8427e -cfc998dcaf5626e19faf48057f6dcc7a - - -7837f5bb514cfff0e661cf8f6a2b7f1d -d41d8cd98f00b204e9800998ecf8427e -2f133b07231a558b4551cfe813b6dd92 -ccba00148532ae0e30f6f1d082817c10 - - -cfd65ed7d1e5c10932275567109144ed -d41d8cd98f00b204e9800998ecf8427e -5828492fffa3239827af9cbd350fe1a7 - - -e4aec9b1bb5900b06ef83afde3b4f808 -cb8d00fea4038cdb54e050ae6de48a52 -8b6661a6f4c699a8cd97427ab0ee08d1 -49d1f028330d8dad4880aa0c660c9ebc -8d614ddd6b6545db3c21bf5a0ee84819 -a40db54a993475953aa25bbef592d0e3 -673b31203f66bc4c61d0b84014515e00 -bca52b63f254776be7ab1804bf7a062b - - -b5b8aca26aec574d1ab401fe8411e144 -d41d8cd98f00b204e9800998ecf8427e -333ac1e7adfa40f4e0fdec7872c6dbd5 - - -d41d8cd98f00b204e9800998ecf8427e -2876daab1184996d57d657a8d46b1117 - - -898b153724a1748b8ea360e0b94aba77 - - -d41d8cd98f00b204e9800998ecf8427e -0f7bbaf52bc8737d3a20ff0822895e6a -2783cf290e6cbfdf4bc3fb56e2d40191 -5cba7b9316b591829c756097ae0485cb - - -d41d8cd98f00b204e9800998ecf8427e -1f669f066fd46b6c9ca05177e177ed23 -3c270b13f4a5b576799d30edf1b7061c -5a24a30915985f4921e9977ef5591d37 - - -38c48f781dec1c3d5af764d1a186e273 - - -581bf4f5d80169d20b9ac13270b44e0c - - -26da4a328f29f8936e291e83de0b4c5d - - -95cefbf95698a54bc23c935f43f2dcd6 - - -d41d8cd98f00b204e9800998ecf8427e -4dfcdf4d3cb3af826834c1fbb852f513 -848dda602b15a270752ab3d14d83e2b6 - - -469386ee98ede1646eb80de2443edb92 -d41d8cd98f00b204e9800998ecf8427e -fc2cd8f1b832bcd093d8f65cf48d6be1 -eea69eebcbf32860db846f30a803b9e5 - - -fde7ea38cf5e65adbf47bd6453eeb1b2 - - -ec2b8a20ae51bead882df818e695f524 -d41d8cd98f00b204e9800998ecf8427e -ee214e8c71603d61080656642677e373 -5142e675c05915758d5da85ebc75eda9 -556f5e74c653d76e2f33c3020231941f -1be28ef0c48511a574aaec4e85b82042 -ea1fc88b5959bf491d98ef06a82efdc8 - - -d41d8cd98f00b204e9800998ecf8427e -c237d4cfa770da16787a7ff6dfca94f7 -1c5229194acda10b85b7851bc12675a4 -a9332e0cf7eb8741e9857364a142b72e -04e25214030172ae5a0c4a390698ab55 -6d3e6d6ff9114516a80456e5a6834337 -aaa73e4fd80976e78fec2ae8ea9c3d07 -7e24728bb80f7be5ff656fb47737baad -f4938bd6e57a721cf8a7334599513831 - - -61ddd9841e1017b4654355ded8b4133c - - -1390ded165db331385a1a0b5873c2da5 -d41d8cd98f00b204e9800998ecf8427e -8a34202e7012f992d9dd2adb1ca533b4 -8182c78486ec04ef7effe8dc698515b9 -a24a4e8582b19a3d805e6cbf21a6a1a2 -bcff6120a04c2644c3139ab28b982506 -02c41413bcc17b24738048dd4454300b -be1a34c1c77c5431dfcee9caaabcfd88 -f71705be8958fd18f828eb64eb254202 -2073ab08b1875d5f37194576d7e2664e -8410bfc136a141a1218b9ad4f096163b -d0889baa672fc0c803bf11ba7f57f6b1 - - -a1476a351c5d531ffc9faf014373056b - - -d41d8cd98f00b204e9800998ecf8427e -a34311c1fed3abafb4f451355d06980b -a4a7e6b3bf2a17d2bcded5e59623012a -d8933061942eb3a0528e7709332afbb2 - - -d41d8cd98f00b204e9800998ecf8427e -c6b4cb32b33a17c1db4acac3d2e0367d -7ab4bd91de174534d2630a02eb2494a1 - - -d41d8cd98f00b204e9800998ecf8427e -ed3284b96a7046390d4908750cc91497 -055a54d8fe702d8f3eff87434121d0cd - - -04222a58ff4ba71159b6473d99bce41c -2b80628516b37350e8d5e4a374acddb6 -57365dc182ed21f3827269df880499b3 - - -f720c9967f7a94a18a3503b953491b63 -5194d17e44944e823af4e5afc4928fd5 -96a50298fb2ee665dd27034502f2c4ef - - -d41d8cd98f00b204e9800998ecf8427e -edbe4e266125cd1d5513b15dcabd6178 - - -d92251a50ab286a466dda724e2417454 -b633fcd1170ea27d5b398eff376091b4 -600e39cecc179fc8dffab41c2e519862 -1a47a847fe417086b3f0b8d467d35d1b -b69b43bab30c28687680635f91a53017 -311aab84570c363ed4ff7e5069f5d949 -b3af739e2c5343e75191918c6ce33bfc -6bcc750e4e3bcf3e3f130e84fa76c000 - - -a34e477e026937ded25b3db75628102f - - -d41d8cd98f00b204e9800998ecf8427e -67e7486726fb7e6b1ee021ce84bc9cfb - - -d93c6b0e8c40afea1cb04473e7125fad - - -d41d8cd98f00b204e9800998ecf8427e -cc73bdc8577f20aba162d28c828ad90f -3f14cc8cba3c19889f962fee0095f0c1 - - -d41d8cd98f00b204e9800998ecf8427e -9d44d20ef0991f1697d7060213c2493f -c6c90963b5d4c740e6fa50906f101d66 -37bb963c5dadc996a1a96c433fc281d8 - - -2dd8e88a6957fabf71b1f96f1a16be17 -5b5b52ff72d105f06dbf0d41b6468f32 - - -0f5edd10e423f8ad19ff6ccb3e0f0d5e -d41d8cd98f00b204e9800998ecf8427e -5c64a4b4685177a38b565bad7b9b687d - - -d41d8cd98f00b204e9800998ecf8427e -778c4982f6d3788dbbd71cd005ac4e71 - - -7c62bec97b5bc04de0c593aebb28c3bb - - -d41d8cd98f00b204e9800998ecf8427e -6a4676f26cc4774608c53cd47ae76efa - - -ff6d2d9d347d509cc2dd12cb883dae26 -6e8714f5bfec0e6e15bb43ce7416137a -9c144f63803c26a995df268830bc4a89 - - -366995b763c1aead04b0b2f0a125038f -c0f374d9ff494271ae5cbb27a09846d1 -c239aa6287f01ee787c1a437089e5b5b -53ff7f8c058d42c8be873e4ee5ae6dce - - -d41d8cd98f00b204e9800998ecf8427e -8705dd72341375d93961d8fe65ac8a95 - - -79b8c989d344fdd08b832d875fb1e161 -5315bd279f34c0ffbe43329c38eb036c -a2c3436e9e188ba9bb2653ce58bffc0e - - -d41d8cd98f00b204e9800998ecf8427e -1f21bb9a5810af59b93c076fd23f22f8 -abdede0b95ba0317afc2b84d41c6d466 -5d52e0ea49c4d289ebcda2e1da293202 -8132fb847569fa766adc0c4573f88d01 -890b8461abd8f0b87b126e9e770b9909 -1f02fab7a9f6f9c4f7e6f55b70d39ad7 - - -d41d8cd98f00b204e9800998ecf8427e - - -d41d8cd98f00b204e9800998ecf8427e - - -d655dedc0e57aef2764bc930bf99fb7d -d41d8cd98f00b204e9800998ecf8427e -48f7678b5664784c7eaf3f295b395d1e -ebe9c66c13750998aec15e19c74fd295 - - -1ac4641f6dff205071a01803b06887ef - - -865ee06d70436c2d7a9eae83cbeca9af - - -d41d8cd98f00b204e9800998ecf8427e - - -6c0827b57f73891866f6bff08599e987 -d41d8cd98f00b204e9800998ecf8427e -beab4c4161bdaa1a850e545aace54e1d -f22bc6ed6086102114234b52a31c2727 - - -f4485433cb66de63f4478a8780c7e4b8 - - -11b50c97effbc90d2bb3a8fdfdf10d82 -aec2cbb607f3e669bf11d95c6a2c2a57 -9fb34a6db51d3aee921928ca1d42a3db -b6afeec640440ad686b7ce7ae0cc2a04 - - -98a5d4c239d3736d1f4d477225fa75f3 -1921a40ef2e203a9c7e33e33d8481630 - - -20bd3b11f5fcbbcf18440a548e98db90 -74a3eff04b216cdb9d6ec3e20df82f9f - - -d41d8cd98f00b204e9800998ecf8427e -6778428601c59efd1763f1d702fb1c78 - - -c39db402b4563497e9c7270ef5db4cc9 -7d040a1858a6f1e8b3d8e7fc68b1b008 - - -d2beb46931bb641bf0126092d91149fc -a267dd6d9a787dbaa95ee81e9812a81a - - -d41d8cd98f00b204e9800998ecf8427e -890365ca9e5d7857e3532d4c0366f94e -b3586b44a75323dbf02f85aea44e25db -5ec9b9433c17cd7e39efe73b6ca47fdf - - -98b2b5f2c5fbc11b2d101f74e6f53550 -dfc38f61ccb28814db587e30de81dbc1 -e608bfdc1dcb6e0083ef2f07d6abcc80 -3c7eb3a309b7b07b8a64dd1c04b1e652 - - -d9cb53a9d7329a35ccba6560d05ca39c - - -d41d8cd98f00b204e9800998ecf8427e - - -d41d8cd98f00b204e9800998ecf8427e -6f61e08511b4cab9d57d208aa0603ccd - - -cfdf29629eeab4fda683f7ce2db6e68a -cd5fd550b699c17d943e9f7758936537 - - -098d6748b671ab8ff6b5fe8326181d44 - - -ef70e3dab477c099aa12fb1180a3c7a0 -884f200f728cff6292071327f3333432 - - -4c4a05e064908129d88383e08a9a6975 -b78b788d5b3e07d4453369e56c1d659a -f51c8778bc72faf4f5fd6f52f43b5238 -626d8b5925475bd539d310df50ba813d - - -1e3dfa1608ca11980bca3cde425ad19b - - -8f950f0c02a403cf239f8e47bafdbbcf -69dcd2d08e96bfa3e71b39599c8754ed -3dc697d1a8e9f73211e05cdbef38aa7a - - -2f12577c1d455111bb528f3866b65893 -5896d6563d302d330c365a3c64d8408b -280a1ab7fd33d892d6726f352e555c4d -68dc3ea2cd9c6508a925df50fa011221 -85919d63e768559c976903b253070b04 -deac83a4c0eda829eedb0f9136a1fae5 - - -8cd13a2c31d6b60f153cc120699a1e5f -d41d8cd98f00b204e9800998ecf8427e -c89f71e71b16be64c27c7859023fd58a -690c8e0cee2b6698e3b48fd0ac4de529 -c120700122ee082bcd1bbfa5dd0398bc - - -d41d8cd98f00b204e9800998ecf8427e - - -d41d8cd98f00b204e9800998ecf8427e -d53398a9064775d5bf1ad2da53a497b7 -0b343f1d661d5fa75128c811b7bd4459 -202aaf44cfdb9de3f06ecbb91eefa350 - - -289d9a2960e260c7d015dd62c7d4cba7 - - -502e4f24f3019034722099aba3960290 - - -cca240d50ec70f59404618dff59c354a -d41d8cd98f00b204e9800998ecf8427e - - -4d79f7743333ecca7616aad2fe558e05 -866c20b40a82e12f5dfc6167586cdf5c -836fcb1eded545bbd9a2baeec41a4f62 -9415a071a1be518bfc801462984551d4 -a48291fa7995f310d18f6455df21cd47 - - -d41d8cd98f00b204e9800998ecf8427e - - -c60d0f1d436438bb9b08706282836b80 -67e5082371dc15ec80d576bfb587ed24 -d41d8cd98f00b204e9800998ecf8427e -58a3b8ffe46325e8598e362c09ac0d98 -e59ae2f28213717bf033509c23cd2319 -a7759db1bfe7c33b024751dc31e4aee3 -d68b1ad6db5966abf24384e4d7cd75ec -009650d067516d02bc9c60b0a052d42a -8e94b10fb8186808a8eb062d779f8d28 -076903b190acfb6b170eb90d8fd49429 -356d580c6e44246f6f3d5b8e1836dae1 - - -d41d8cd98f00b204e9800998ecf8427e -9456dbab1e95eaeb225ecf3dcd7279eb -2a20d41a59ec0e65e6b4b3965c14f0f2 -eede74243020f191367de29c0d99152f -16b53a0f3754b77aa9518f33494c0d01 - - -d41d8cd98f00b204e9800998ecf8427e -4263b103f7eaaa4e463077ab2f074a08 -0afeef5ccf212bb105402750080c0877 -122fb026779a4a168cf075f42cf83bc0 -c6f3505c1e7aa4da227a54879b0d84ca - - -b019e434f1614515ba4f30fbbfc0d0cf -d41d8cd98f00b204e9800998ecf8427e -7f32fdb8cd9febd23caa52257dc28a1a -7d1ccb1358afabbddb46c45d0b30585d -2d78040a3abd75948901284b3f558311 - - -d41d8cd98f00b204e9800998ecf8427e -879588253d897872b19a2d2047467349 -b57874e80855d3eb364bd8d156767e9a -0c22da9b6c6333683781ee5ce862ca64 -20db3cb2d80f0305be2472c077394769 - - -d0583459e8fdb6b0029245ee38c70429 - - -d41d8cd98f00b204e9800998ecf8427e -d90ed26886d85da50db6557d9320fa1b - - -d41d8cd98f00b204e9800998ecf8427e -23752bba338ea1a8b3a230ca8179e4c3 - - -0d1749857d83ca714437ed891e35f046 - - -ace625529635a30786e1f83d82bf09d4 -d41d8cd98f00b204e9800998ecf8427e -8a8adca33245aca45fa1400db7689102 -07cd846e2933b5d191f672bd90921875 - - -44969a6487e6e551ee4ab6a3057e9c7f - - -27af3638e711cf213d2b7edc33f5bf80 -82a86b991cb3bf4f791ae4d0d590c8b8 -6bd38b6af505407d62c60a9eefdf208b - - -d69969e2a9166108538a95b086599544 -740bf2ea7c400568aae6e3ebbb7efac2 - - -e9e895d857f4fadb5d169d98cecc4cb4 - - -c9fa8f71196dbd4da6c319f00412a394 - - -0529ddc77e8c681c33c47b9b7687e810 -faa2eda13c5607ace72e34e9c0966a0c -72ddc5bafe07d7b1963a002ff2638ce9 -55292d144ee7e11471fbba2b249494ad -9e6bbdc99eed41d9480ff63f9c187e81 -fc788306c40f210227d440befeb605d2 - - -d41d8cd98f00b204e9800998ecf8427e -6b603e643ce203e1268c44f2560baece -495109ce3cd762f708dea35bff725ecf -a68a62a40bd64f627b6ee6a3f4aeef96 - - -b554b95843ce324153cf63af81c4f467 -49211ad04c8d6486b554f5dfa2549211 -b029262dc429f54b44eaac3bb3673fb2 -25cfef0428da4c37fdb47852f49bc1b2 -199b29d1446f63ab1880745ec589933d -e2ae08bd4f83213f865545056ac6dd35 -43cc87a6b84afe612af178e9c0945279 - - -e5cd7d817cbfe8c2b5e4f92a892c2de7 - - -9d267f46db9b35ccdf464db22f7a8726 -195a075744dcd8b1bd58f0cfc5cde946 - - -d41d8cd98f00b204e9800998ecf8427e -92b5beab6868b0cb7ba5529550d7b769 -ed84c415bafb8d11fbc3bd0dde0e5408 - - -81d7f7ae7f6178b08e71e8cf0033f0a8 -1d8a8c14f623c3db37a02c7eccda33ec -d12c0159673d8d8114db46e34f6623e3 - - -602da82cec31cf5a062cedd8ffdb0d9d - - -83fa2b36decac5ac73128df2630dc60d -71eafd033fa192897bfee1000d8340b6 -c8324df8cdd53f48c81f7b3806dea8bc - - -d41d8cd98f00b204e9800998ecf8427e -51b90418f6d0cd8efc0a5099c5f3f6de - - -4a171bb2d17569b4427873b3381ad814 - - -d41d8cd98f00b204e9800998ecf8427e -5f33d0fdd885d00af1ac8677b04af346 - - -105834a4e145cd3717f34d795ed01677 -c4e350405eac9404f23a9944a4c40553 - - -8c7c756f1961be336a5783d4c841145c -543fe99f0aeb0e9aa7241f30fddffb16 -e6f17c9ddc578856bf2fde5efc3fa2be - - -6f745fb918c6b5d413a7de84c6e54521 -cde44cfa63f262dac6e46ce47dde1f90 -905d2ef1ad71447712edfe2c690a2a8f - - -d41d8cd98f00b204e9800998ecf8427e -aa7d0bf9e395a97e107c9a76c89e307c -259760d5653ed342f1dfeb8d24750b47 -d895e0426e095eec95294e0d89917c85 - - -465833cc227ccaddfe18697220f1c733 -88460cb74a7b8cf8fb05a75432029df4 -aca1b7c4b499be6cf7bd8821408814fe -d7eeeaf3fe46a5f427eb605b25802c56 -2a43f612f1f28c229bd6e9768baf8c27 -158a0a9e9986d162cec4819ffef6b000 -a1033167badb7ecff1c5e71c21e0b7b1 -74c7d3f5175296a3a243b76a7e6c640a -d014f101c786925b6d34dbaed4953c83 - - -d41d8cd98f00b204e9800998ecf8427e -2fdff73e41250121b1ab8849901e0cef - - -76270e34f90b10900c95fdc7dc7c8a74 - - -d41d8cd98f00b204e9800998ecf8427e -a7ca31c010b324794b265778be355e9d -d749c37341f17446c14a0f236594bf1f - - -d04f79d8946d6b0168914e4f2d0cdf45 -e40683c017da1b90fbef6b4df53a501a -c387dade18e12f1195103e8756b75139 - - -737cea99171b10f164def53c9cac680c -dca3cda5fc2c11c6ea4fe8b733407371 -c04b240903598f5edf1df7f263c05116 -f6cd6e4db0740ba9dcbc564de7e2dbc8 - - -19ff8a52a9056fbaf0fcf50bd50ebe48 -3fbaf85b4c2e449d3d15b159bc166105 - - -39c29f1dc8e0f1d52719e3e723bc5c30 -77a8e7f395a22f09a1b776c2386ade99 -3cb438c619f489160774b01f0d33d9d5 -6fe5e34cc37004b4342377afa27fe78e -5dcc8f604b02e48a19d4938111200b60 - - -d41d8cd98f00b204e9800998ecf8427e -a4d82c22f078008d2aab3964af135f87 -1dc3d6a1dd909a8a58fe8eca47ead5ac - - -87f5ed0a1e6d7d72a9347cfd91e3c6ca -a9c4f3b8c9d9d714e021836b5d7b2f52 -60bdcaae8923681fb2920d8f926f2b98 -1f88ec9bea577d80683b7e33d5edd1c0 -59cc5ce648da64f713581c8952a82fe0 -abcdf41603da0d617bee025c713adb41 -5a226ae63892e8b2488ef6bba059d308 -4a825f9bc0b4b91965e9b28f9e9de5f2 -40762769c56a375a21683e8a96a8b814 -0b033f5995404a15bc6e106289183507 - - -0e379c10da4f2f10c8a1346eec194124 - - -995ec6d6e1a5a9482c4e2b89a0d2f881 - - -a203d87b7fe0a7fff96f2938a0c194cd -7f6ecb26a9a3594aba4ef34177a0028d - - -d41d8cd98f00b204e9800998ecf8427e -ba0f6e643c21f0759cb555cc9d81ab66 - - -fd70155d1aebd2f3e85de088440ef659 -7b01b1026f28ec7458c2a4d48b261d26 - - -e70a1c6f58e07f1ba5fa83f488aa9009 -d41d8cd98f00b204e9800998ecf8427e -0d897010fc85f2f0f42e9a606217cd38 - - -7e19a2437daebd45de069393fbb6e844 - - -24238dbdbf16729d45fe608f6494151a -d41d8cd98f00b204e9800998ecf8427e - - -d41d8cd98f00b204e9800998ecf8427e -3a8904966a2f450f621c5267098f7360 - - -5f6fcd5535f2233dc3dc9fe6312f1fc3 -d41d8cd98f00b204e9800998ecf8427e -9d7603b11033ad6fbcb3bbc46d5503d8 - - -9568715bc1f4d7aa42744b4096afb922 - - -a95d18dda6cd01128bc3a96edc463191 -cf7beba0674c611eca3eb40103a9d56d -f2ccb38e0d2f63eae9733c604a4862b0 - - -be4909eb830f52517bb34572822210b6 -d41d8cd98f00b204e9800998ecf8427e -2a2702bd2167fd28271eb4eabca6363c -fd2dd2fbd7f099628630db64aca7e94f -eac5c0f76e5ff1988532c66b922e800f -26e616b72a49ae4b326a093bd0713303 - - -32e6a6b4b2bc4a78d07dfdcee485c09b -289aeb68be3c5ff2a4cdd57a64257b8e -31431bfb5d4f361b35887e63a0099655 -d4e648a77c85398d52bf5915e981484e -3e8c8ff5959ed24ad35c169286978b20 - - -516f6715e3e5d0e96d09ffe85cf3204d -14182aeabccd7c3a761d93d1564a27f4 - - -0ba364012068975254ac02cf15ccd1b2 -4045e0030818c05ec539a2bd6f3a6d17 - - -3042db4b42f2e098badf2c40163287d5 - - -d6d047f9389cde6f11b9175ffda432ac - - -a60005bc1ec9d7d32bd3f20f41d3a5ad -1351e4de8c5ad72c9a1c29c2d0ac9e19 - - -cb26417ed98d172fa1fd331e1985d799 - - -9bdff8a4621202d256b03029cdb5bf29 -946760ff06abcff5d8863b1e782893f5 -d77afff33da4f512b0fb46d1be520cd0 - - -d41d8cd98f00b204e9800998ecf8427e -7efad8914a2820187193583cd1e72f85 - - -ea932a69d0162b3473db8257d8066569 -077e5ba7b08bcccf15dd7278d4f86910 -f66a1f1f8d46f3d0a72dd22dde61e05f -877b795a5f8b86fc318fb7a57176d69c - - -793e1a0fa37a44aee8041f15d41f6bea -2467bc6197f1066da440342477aacf42 -fc9bde4001ef44e613b445c76a5a806c - - -d41d8cd98f00b204e9800998ecf8427e -1a9d29ac8baf9b71986185e8d6bd15b0 - - -a8238f46912020ddd0082c86c6bbe0c2 -af528677086b2c26806ac47af95d9d9d - - -4d8b4f0adacfa91ce36acd7ae5b7557b - - -d41d8cd98f00b204e9800998ecf8427e - - -d41d8cd98f00b204e9800998ecf8427e -59e41d25b4e9f234997a985ced825afc - - -d41d8cd98f00b204e9800998ecf8427e -71e5d7118df1c74c731731d60a8da22a - - -d41d8cd98f00b204e9800998ecf8427e -006da78b11f7babb89e930b835695263 - - -d41d8cd98f00b204e9800998ecf8427e - - -d41d8cd98f00b204e9800998ecf8427e -65538ddc6ba20338f68de9c0aaff0fc3 - - -318ba51c0457714cf1b5861400a96e22 - - -d41d8cd98f00b204e9800998ecf8427e -8be23d776c1495d2c25270d31f043b15 -fde1dac27ff95323136138883a8cb086 - - -bbe63bc9761891dd1f47f5639ac8fd44 - - -d41d8cd98f00b204e9800998ecf8427e -6154832a9543ef1c71df2880916850af - - -722a25744063ea81a6d9be2df501a47e - - -d41d8cd98f00b204e9800998ecf8427e -33164d88351d201cc651f7142656c3ea -759762a86ea42322a44b7eadd4b76959 -6c456bf952ac5c6889d0360ae3d327a1 -188746369ab37b18b1f84b20aced9f0d -80a28b7d54cfb242e531baebbb30e4fb -6efb95c81d5c8e640155ad63842987e0 - - -fe62c00b682dd677dbca4764d5f0fe97 -646433b89ab65da2f538fb1333e3f21c - - -d41d8cd98f00b204e9800998ecf8427e - - -d41d8cd98f00b204e9800998ecf8427e -b618195d04bfb69c787fd538c72642c7 - - -b6fd5cc801d681b05256bf8b413c9786 -104960714a8b404303b3436ef291f2d1 -1d56c1cff5f6f94c0fac9cf48fe819ba -2b061d246bb5f2342b9867c346f3f1a7 -d592551b67e9dd797f7a36a1b257684b -204000f10fb031ceb45970d4b4996fca -67269b44cffb3cf2a270dbabe6fef510 -2accac2e7486bca7a2d57f646974d54e - - -e2605c19e2029efa999dc98306e5a834 -a56305ab485005ec0df66969dc531d53 - - -76698169fea8c817165cec07292a4d60 - - -d41d8cd98f00b204e9800998ecf8427e -593c455e4bd7684c7ef75dc97b8e48a7 - - -ea1a3bd45013d291cafdce135ebbd13c -f9a7c3d80ef15ebdb16b9f9a4289eaed -221d0b581479c434f039e58da4718a8d -a6f5b10b14e766e788351b506b6f6024 -cd10645e90733c7d081f7bedaa56b891 -9cbf5490111bcd1d06d0f311c624f40a -827c15aadfe78fdc44f51a5820d18693 -b31ded35f3b4a18458c7233b20a5f0ab - - -79fb102cf00e5bf2a76cf1330fb51577 - - -d41d8cd98f00b204e9800998ecf8427e -191ad6a413e35342ca7cd3460dd9f31a - - -d41d8cd98f00b204e9800998ecf8427e -920415a8d70425c1c0476200edc745b3 -616dcb2aa65aabb125304d44c6efe355 - - -3f5993acb1427876c4ca8913cddc9174 - - -d41d8cd98f00b204e9800998ecf8427e -07d2097f5a71a50b264d0b8454c2280d - - -344eb06fc61a81af1c48511d600085bc -fdcdabe7131abe3f84495b7b4ce2bb48 - - -5172e014803abc5035329de011afd2b3 - - -bef639ba5d15fbe93aa7df26bf6c3a70 -e44e91ef5244be2cdfb621378e0540f2 -d00dcd6a42cd0d91cbd5639c56a4b6a7 -5d4180ac81224afbea66b0b2d6d7d5d7 - - -7ab5486f4cec78b1c4d93a1df0d83b51 - - -8663323ebadcaf9b966b5232836729ac -d41d8cd98f00b204e9800998ecf8427e -4fed232f7de5c37b43e0d4cd56c42051 - - -f47f735ec8627b7b3e9ce6a5e1643d4c -79e09419acc819e70f82f56d7fa81d20 -605bb5fb9f548a1cfb766c12c98aa303 -d5b503dc10a91fc2867f11b806e43aee -0b0532af9e3f441fe8f2e530df0e8b60 -61bcd0fc159ba4ac9b4ca405006a458e - - -d41d8cd98f00b204e9800998ecf8427e -bcfa3b276dd79437d1d60139fe51de01 -b38990d47a4975ee30ed0e3af4a378e3 - - -f9cfd60be746eaea8b3e69fc3fe9fee5 -2068f6bb040e517d593f0e5607b8724a -e9075781de163cf107fb3202edb3e002 -5fbdf018aa95b4d6fba8a6520c1395cc -6a6c8a4f2f8305f324705e111f5ab746 -9cac9f75f05ba54c2255f7c789a5ab0e - - -357849a83e3bd4b80b773283f4376a88 -ff5a2f73aa7d542ce30baafe36da69b7 -2dd355941009bb108ad48bfdc68955de -207233d73666cd6d8fe829eef44420fd -648f0070a72520023118ef9d7d26500e -a6eeebb304bbe571ffbab0db1d030569 - - -f6145207c408075fd530e364b06a805d -e531ddc71cd65c765c78bcadbf10f8d7 -ca8137cb50689abf0c3bebe34978dcf7 -f924847ab85674ba3200ca27277e0030 -db7986081e563555bbb45d35b1dfc823 -458d70e686a207a21618c43bb1b9779a -12fe6ef54baa77f95b323f66280726d9 -59ddd81ed9bf99d543f6f3aecb613f99 -83d51da6ce128a36cd2e5d2dbab76ce0 -f2a97948d26385dbf048ef0cf2c525d7 -23b68fe48b368fc328f5dadcd75fdfe1 -6b1640bc51b7f7eb47b7502f0aaf0d2c -23f198c26ee64d43c1673947c8865329 -d425b192e4e4f644e3233a2d63ab5f61 -ef10d5d01e0c99da899694a920063a6b -2aaee86d73909262c225b9360c1671c5 -fb330418c81c08843a8ecc7b41911c3e -ec0f990c4626353903979ab05aefc6a3 -d9bd6150df07f9517e4ca5056dbe663f -d3328f22bef875e75fcc41b404ce8460 -269be72b4c109b1d9407168cc255a548 -1898ba53941f49ece5a58b90fdac3ebd -7353c73dcba6a3beb03620ccb68802b3 -95bb2af8fabef4d78ebdf2a5a9799ecb -8fa3145942e5d0df587b19b538a59e2b -c3fb35dd0fefe93bbf0dfd8976709bb7 -1ee548ff699369a2ef3328d8c3010048 -8349c7c6bc6c2d51c9d617d196588c41 -d51def48233e07c836e1c7a673186824 -5a7e53549b13ba69bb551e3d13785e3d -8a0ccbf9bbd36a4cc3aeb30517c48280 -b7f38fe9df82f9bfdeb39d490bcf2273 -c5d8a435b760308bd0c43e3494dea231 -b154606cfec9ae71a3084379c3f52643 -2103918d3f7bbc6b25c9ebe75e5ba5bb -8383b83413ec5080325c0104121cc34c -be603b1e11232e8e4df3956712576964 -afab86bd75994dd422cde6c39712e684 -3324c82b9c0e239b743efceb0b1ee4a1 -6d984b6497a4521ab43b53f8ffa97239 -af2c055b31358dcfbcaff19b8f32d741 -0b811b8a0f1113a872111a69e771d294 -f0a5af4ef3fcf089d999c72424dd1534 -e1514692701903c4fa8ab6f93685fe9a -7c5ca268a2ea7a6376036f2c81f5b10f -b1e3e3f8550be02bc85065afb34f2465 -aa3dd95196d0ec83718e74c22d0a0da3 -e2e3cd92d8221808b6348ea0dce50716 -2b89db2c940374d7c69527633eb17a27 -186fcdda038c22d40f7457eb1381e256 -37c8cf292316d659b712e3e792776e3f -1a323c8a650df021abc1b586298f18ef -cded91562e6513c973abed21d413cd1d -55f29464b755eabef4cf655705d4e4fc -d7de9e65df06622427243a6b3ed53cd4 -c093fba925641be12ad8f06bb542160a -5d05efac98c6fd3106f56295ce0b8673 -ed3b811dbf2f5f0da999aac45470a2eb - - -d7d541404e019a6d8f45d1347bef2be7 -36d8c10a2ce5713bc959bebc6b9bb3af -55323f24685f41d39d6a5d297e3654db -e5247dca22fac3bb18e72e0171a09447 -762641475619347539e2028a53f2ddf9 -aadfd180c094b155f2c8ecedf9b7d377 -a3e9bc5dfe51c558cc8277d44fd5c4d4 -c7e95ae701ec540f03a566203de781b3 -d67ca33509c6f0eabbd6c661a27ab0e2 -c19d107b0434906fbc0b459f61f85117 -b273aa429a16fe1379be33876a4d49f7 -8869a3a7b2a620a7621d4870c57aef75 -1222fe864b75c9d423009dbdad938cdf -9939c5fec9087bfdc82d8dccb2c2f64d -d4bed0644268bf6cd99128f64db17e9a -81ed7b9e30bf240d51d7e60c65e169d8 -1a1e47204edfd7a39a48bc94a6d87039 -94cd6326697d1468356fd7860c279f39 -abdc5b264864f9054c2bd3582aa7f290 -d9c27d2d19632b11e7b5df247d1cb5ce -d11b836dcf659c52b30c12fe751664c2 -3b21f916c1cc442741493663d4d870f8 -8d6ef3890b3855e9c9901f905906f84a -e8df1b36eeaf2d3020a71b0e273a4d99 -97af8c6ef82a0f244fc815e6e16ccf90 -90ec5a83c874481c4db7a861ea540e62 -123e1ced012cf5ca86c9b7a4d713bed6 -fbbf6dd97870502f3b527a7855cc22fd -673b7b9a03cff6437a53f372059947bd -b8636271987e671c88b7a23c312319dc -8ff03a197fb775293900b1652cbc2cae -bbcc88993e093b880a682371243cc500 -7b3c1047d31736f0b995520bf5c770ec -d74e66986a63465cfd73af9d5dd1a180 -c2855a7d06669f944c7aaca53532b7d8 -10d1641217a535f93ec6a25fb693b58f -72edeb3570c0c46201f53a9ecafea7cf -39b1a98ee31c34a9a67fd7f2eccf931d -f3b0f3b7f9597a5081dd6901be2eef39 -c1da4b8a0934373f032daa2da245a23b -9bc9627697f6507eaac340ce462ea48f -7d6fa21f3d0ab0a5b4b676a64fe44c6a -fb0d8c3726d85a9e032c4aba68fe5ca7 -312ed461e418e5e8b3e152dd2227bbae -3dfd632c14282d44c6d202e30378822c -a77857a410bf6a20d1bc65d57df426e3 -45bc4e783f1c8f3b4cc8887ff320ac8a -02140c8aab60d378c25d218f29d4fd51 -6a019476090e0d2e7e18ff0cb90d8244 -a9e2cc6d99ccff9c1f8944d41f09a4ec -344d119920534915d078b0bcf8139e6c -537f4288b80ea71ac01cd85436796b2b -5a39128e50a6a619cab4a84ed21fb5b0 -9bdc51515920cae4374eecfd6037275a -a2da3a94a599ef497665bb9273f94082 -a81beb34507c2da511e5cd5783f2d2b3 -1fb6c4f678f781062defcb85377e1223 - - -503179eef2a75e444e6ed540ab5816af -3a63b5ca883378d2e5b3ffc0bd8367ba -329a3456692fb25e9ddd96dba6698739 -cf2e582534edc6a59ece7d22c939c00c -28f44c26afebd0f551578f04045c6496 -6230437ad4adfb173f89c5c9b1cd3301 -378e17fcf077672377ccbeef64dad311 -da1eb7c39da28b862a798f37efa7ee43 -b2ee3e61485fdeb685fc7f73bf802b23 -7d6b8f45303f24ad769fb402b9416bb5 -dd8e45a37c5ef0fc6089df59605c284e -db59948d8443a30f976ef562646c108e - - -4e9739c5d4dd7d7150093400f77e392e -c3e50ad0d4c93692a2810e136ada70d7 -2cc2731ed536bf38737bfc2897163b4f -ff20e35d737a171fdebff3fffe219596 -5d9b7ccd6766e9e943b206c4e288cea8 -6134c80e606fc3eeedd5bf6a39c3e77a -545b1414d82cdd476e8d6676161e3103 -83d51da6ce128a36cd2e5d2dbab76ce0 -f2a97948d26385dbf048ef0cf2c525d7 -8cd10e297876e0c2d47a576dfcf61a2b -044e22c98deb3d6da5898931cee7224c -599619a98b0411989a763faf1c6ede75 -9074eff322d7513a6589a181dfc089ec -d255ea5b9df613deb7f8f85bc5c93241 -249a59e20ad0f29165045c375cf123ca -fb330418c81c08843a8ecc7b41911c3e -0a95085c8a3f3efcd5a63702b1bf537b -33f2afb3d4f651ff3a4856891f26faa3 -d976f528676688719bb4ed9da722c798 -f28c1d91837eecde379d863333ad3da7 -1898ba53941f49ece5a58b90fdac3ebd -7353c73dcba6a3beb03620ccb68802b3 -5568084ceebffcae386fc1ec48e7ffa8 -17da2830504929531702d918d538bece -681bb6760c742ae699ed900dca34241d -d91a412e4582686aee55e22120f10420 -7b331d712e358d5793e19167ab42d4b9 -05a11b19b5162789760c9838a936df75 -74e5138e0485400d0958b5c137a8634e -ab80eb398c1cfa95b56a5b1dc2b7ce7d -5f93e31d32cd99d38e3d59c80b4137ff -df979559da6c099664af3c61b83b9e14 -3b9488c55a6633217590c01acb9c0d8e -58ce4b88e87e271384435fc25c0f8144 -bb6a51f4eb6b3c8f00bfe1cdb89cd76a -5b4aa669a151dc30f4dba6f345177d91 -92ac14a3dd5307e6bc4429f625ac3f5b -07692372f9f22331da5ca1cc604206c4 -f5c74ffcbb82b66d295e84cb0c11b477 -6448daf1b06217c7dc989bed6f3709a2 -fb5913e34a812d5fdf9e25b8ca8c9fb2 -5c421382d1ed9e5e1f86f3bea1f29cc9 -c57c2471c7a6eddd29d27909cc422e41 -34c7fde492170f80fe8e0e6434f3eb0b -829a72b83190364f8f94374443eea9fa -8cc192424d2a8a3a8439cf6c9e9c866d -228b0316d26bdd36e56a9158eea64ef6 -59b195fcff4d3877045fee21c364d524 -f6118b412225605b9bfe2d33480f8f4b -37c8cf292316d659b712e3e792776e3f -bdb2338095a4ea340c6d023c861169c6 -b59c994938b335efe318af6e6cd7d977 -449de434949a3e2b8780a87e7b179d3c -3ecfa35141eae057f996daee3608c0c8 -d7385726059a0035f5c91a2c1602f235 -c04c20e9e0d8940e6a34a3de26975bfc -f1f34d8c0f864daa5e8ab56801027430 - - -d6c2e5a1d98c4af9f39c3e6f602f9f65 -737685ba123e361bbd63da12001d1853 -ead226130a7b08a13a2aeabf710b3b7b -2a441d2cb8444b1051bf199845319bfc -2e6a497a7e9cc16c543c8691b7505ce8 -a39f58718f334dc2bae68db45ff92b87 -19c4c6055000b1d4fe6f5735d4c344c2 -83d51da6ce128a36cd2e5d2dbab76ce0 -f2a97948d26385dbf048ef0cf2c525d7 -840f7c27d3d7920e11ef771581c42ea1 -255944687f37fefd684d3ec9d2fbb0d8 -9e6b10b82ff6650b119aebde1eb1e0da -9074eff322d7513a6589a181dfc089ec -045853f5d4a94bb75d809d8355dab2b6 -0fcff1379b65914e20e00b24b81a5e6b -fb330418c81c08843a8ecc7b41911c3e -e6737bc70917737b05e2b3cc3e87cee0 -a8853724a7797b14ab7a125c5a64aa3d -30c6a2ac8f5dc2c78135a1d2d958c7d3 -846d37ac463e033347b10ce9c69184e6 -1898ba53941f49ece5a58b90fdac3ebd -7353c73dcba6a3beb03620ccb68802b3 -483de5a7392121b04ca4b28d9629bce0 -9aa8f16badc4733edd5b5d1b099e7c21 -a1314605a33f143e8730909f6688403c -eb84b44b99e2dab255db18f924ed970b -f59114c9b51282592f8c26e304872d54 -f1d4b49dc349f942ecce7845d2bb5562 -34e7dd73d29e8efc0d0a013026575768 -4d1cb0d2dde73ab7da101afb1eba3f55 -d819c152ecb177c120f1e3c9eaabc2c6 -cc6c17551a0b45c91fc5fc79f276258e -832cb306580ca6ce4e267ac8892c8732 -9ed685e1553ee8262bb9cf750db98968 -8a4585aaed5ab770db248832f2e1a7b5 -802cd3b09bda10a75bbaf7f4597f9364 -31e4db724dddc41b42b165ed8c66f3a5 -e80b6464c4a540b59ab03e8b66369968 -11851279ded53a68d299e1dd00c0b7dd -c6aa5d300ad94789a9f2c4cabc6cd8de -f5e9da89cf45e535117232b359317405 -c07ed48d4b65bab104ce0c4dc1cde684 -4b57bd5427c18abceb5c20abd89f5ba9 -e70293904baa38c90c8be8ca5aa447b0 -06eebf61b89a60cd11340a036f47f3cd -1d7a55d13ebc889af056ef71120d26ec -119d9afb003f18c3adbfa0f2cad74211 -b99f23c57218db693329dea5e53bdaca -966183e32332c7b7dff8d49b850fadbb -d7f5ec81233132fc3a20c1017759ef79 -d783741a8e2aaf7c520dad108d7adb86 -b4c45bf3fa493d056d9bcbba3eb94e45 -bd3718cc7fbf6dc1b46753b2a07892bf -9d370bdd2d27879fbffdf88d5b937e80 -7d428fe710ba23ac644fbeae1e05174e -06ff7a812c4416c03336b3d0ff683da9 -cdfa3838283c176556fd986e1d077a37 - - -63dc3d49dac194089653e65425d6e5d5 -c9310d0a5a4f7e1f6b85201c0dc2fc5e -6e04edde5694fc8e6bbb47aa579d974f -0ff8f5b9e25ca077b7d7d698b2e76e3e -97157f5de97d427dad060de635f0cbb2 -b1dd4cd2ca514afb48faf71803fb072b -74a51ee9815a4e81828f00e102f2b977 -0c1d539dd0e536ab43cab029104330a2 -f4edcec9ef405af2798f27a4d7902e12 -f70756497c931aadd89edbe485e88fb7 -f5e8ae5dcbf8191e1830afe13c85f33d -dc628590b54606da6a6d3510ea4c94d1 -1f81e0757051db526d536d732ef22e3a -fb4f2e0c1a0a003c40b83cec58eb358d -eba7f7e57d85ab19a005e825dd7779c0 -236eb01d61d0a87dc150f17fdd070f65 -df71b03d06e518df446ee6e9792dcf89 -1402d10037a08d56070eee0ebf921e4d -f8e9d0e2f7ca86f855a1fe6a39eab4d1 -25d873287aec9a21451e9717306db54f -1461952a71c3b0dab73956e09db90725 -7a75cd5ac5590263657b0fe81c2e9686 -742a6fcd6d5322ea47f1f7c8ecf85bc3 -1a7bfdc52688934752339f4d77e7e84e -4bfee5904f91bea7f89e69b65d84edef -41880d289bea521ebd8f24215e6d5f07 -577c8ffc2f6319016ce9d416e7929d50 -aaaf43f06ec3b56fa2ce44165d8b2227 -e775cffe814bc94a4328cd886366ffe2 -87c46b335353a6fc640ae4c902b7f278 -7f1cf10b121b601826c8160b97d9201a -18c683d449cb983a0199f72f41bfa394 -511bf9b42503b99cc5df0cb7b229a287 -610f3c4ba9b4ef8d830a46b8a1f93853 -1d62bb5c969457e698342f5f8c22d153 -526eded1162a09941869ab46ef83ef71 -bf1409395306f2b2924a67beac05dd56 -7ec990a748195e943c1d78619a7be987 -ecb08089d6cffff8cce5bc9928dbfda5 -e0a2135bf8ba78d71c0162491021d9bb -ae2a39ed84e9a8b31e97d34efd50bf79 -46a53285a864300207f4759f5a35b928 -95562f393025b7c7156e666cb8b45bc6 -f722bd816e9904cf0c1a20c807b43493 -81e4b3dc3d76e5272b16447d10ae43a8 -2ba914ba1f287a51e96117c8734d0370 -98035fec612b1dea0f11fa299377d2bd -cc44d8f6611ef62af800332274ddf91d -f84dfcb30b9046145c153fe1e44201da -599dc37a15c362ea63096dfbf7f57bf1 -52b36012424c817a4e9fc5736417709c -ae4b679a3888906e9e0544dd5a54d83e -1bb02f5007b998c89755a783129afce8 -d7db058dfc7cd6d999d30e337b78fb5c -df5f2db52f342e27dde87f01bcbd8e7e -df44b34058c4cbb5c49a9493dd42014c -98e1082970a865bf1264472c0367b2ea - - -83d58d7245d7473a79ece8004d881b7c - - -617b7a71655bef18290227c4bf1bcf31 -c4000c3a5f961950001bdbf0eada3ea1 -7d36ebf391461a17289c2b5be7cf3e85 -1d2b135a0149df6a6cb2e76713216b4b -dc5d5cdb1ddb2cabc4a153dc8153de91 -6202f865512c891966572c07fed1bb3b -f42193f1b045aa8b255d4c544bbfbffb -577770bc1b047e531d1c8915b91c1b3a -f2a97948d26385dbf048ef0cf2c525d7 -b46d5511e9d6998ff9c889cb8c0da1e8 -0206639eae0df85877c2e2bcf3a6f449 -5e31f5e7cbecac3ea5023184356defd2 -d71799a2249c450279ae7a1ac3d0f805 -f8a9ee9349754eca7dd8fa4a3b30923c -208960ca78917b6337d736cd20344a7f -132a5130a93dc5d9c2427643a6a77f9f -e7c013349082da3d9d5648c430c5fa17 -378829f3a958e6a275729ee6bfe3884e -403bc95d966adfd004f72ad0b8d859ad -426904859bbfa17b03832bb45bb04199 -f366f1450962fc633c712a57bcffe300 -c5c8e08bddcd4b099e4421c7b876d3ca -2bad6855dcaaf4b18c3c92f32d94893f -81bfbfd57357a74c3f3af6987afe6f12 -6df89d2d8ac7b9a5f06251fa71023e8e -d2eecb1e8e4fb988dda81bbeb97746c2 -6986b606c49e4c713e68f9e22eea0545 -c92a97950deec22447c477d27006cb2f -0cd221c2bb64eec3f3b8ba5efd62ea57 -bc2b11200433ed6ba13c2b7b6adae99d -95b9193442f1d15db4c8183833ca0b14 -e9ad12e8ccc33746292e9e23f1b8f140 -cba7b7e8e5181e09cfcc945401729cb6 -d0c65ac03d5b84bf70da4651a599d923 -a89a9c412846d94b22ded4a4b1214e1a -84ce4e1c0ec963dde4e4763f0a1aac85 -5b5244f55e8874f9677d30a8decd9347 -2a5e5c20e225efad5f6b841ad0847617 -260a28780209a054543aeee4e3431afd -ca1db9bd5d22039d6b84051acb6a1d96 -02117a18e23e6d3fa6af33209fb0e6b4 -491fa67114d3c382ca11c8beda1d2481 -b8c1b21a0a71c89c4ad86f0caad6bf5c -fda71a80dc11279fb51ad436388c1256 -b2e188e8065680615a750004643b9886 -d4f2c2105d4c3202307ff7271e0126c7 -f0b4dcb4ff338aae365219b7c90568c9 -0495a2ce04fae425dc6a1d880ceb1dbe -f7261490003c49efcba34cb82f632fa8 -51fbfe71f84cccf26bd128b1e071841b -bd3097dcdf63e182214dda4005b47019 -3938c337aa3ce2a9cd50c8e9e9d9628c -4a0090b0404ea085edfbb456f8bc4c92 -b3b43d5b59898b53c3438acc767d5fb3 -8fe26f5460eea59779e88aca24436dbc -6f17157fa2d3d23e0552c7ef33efd818 -364c9b4bc0b3ffbbed25ffed1975bcad -381fda47b3c28be5e86909a54ecf6f72 - - -4e9739c5d4dd7d7150093400f77e392e -9e04b2cd1b93f421705034d5206749d8 -2cc2731ed536bf38737bfc2897163b4f -e9d9615574990c4896b9dfe4feab490a -5d9b7ccd6766e9e943b206c4e288cea8 -7402b6940e9c0b9451d1961728a1377d -545b1414d82cdd476e8d6676161e3103 -83d51da6ce128a36cd2e5d2dbab76ce0 -f2a97948d26385dbf048ef0cf2c525d7 -8cd10e297876e0c2d47a576dfcf61a2b -044e22c98deb3d6da5898931cee7224c -599619a98b0411989a763faf1c6ede75 -3aff154bc0917d13e720e626aef6d884 -d255ea5b9df613deb7f8f85bc5c93241 -249a59e20ad0f29165045c375cf123ca -fb330418c81c08843a8ecc7b41911c3e -0a95085c8a3f3efcd5a63702b1bf537b -a4689ed797b5bb6aa0712da0992c463e -87204bb4bc4b2de9530578fce343498a -f28c1d91837eecde379d863333ad3da7 -1898ba53941f49ece5a58b90fdac3ebd -7353c73dcba6a3beb03620ccb68802b3 -5568084ceebffcae386fc1ec48e7ffa8 -17da2830504929531702d918d538bece -a42be7db361dd5993f28868e4a3f358f -d91a412e4582686aee55e22120f10420 -4cb220fe081dc71e7a79155fb4baf1f9 -05a11b19b5162789760c9838a936df75 -53f30292c85bf4e6ec62ba51a1411794 -ab80eb398c1cfa95b56a5b1dc2b7ce7d -5f93e31d32cd99d38e3d59c80b4137ff -453b10bf9feae2447a1e1a28d2d6ed05 -3b9488c55a6633217590c01acb9c0d8e -58ce4b88e87e271384435fc25c0f8144 -bb6a51f4eb6b3c8f00bfe1cdb89cd76a -5b4aa669a151dc30f4dba6f345177d91 -1ca4e724a542dd90368a4612a878aa7a -07692372f9f22331da5ca1cc604206c4 -f5c74ffcbb82b66d295e84cb0c11b477 -68633b9a396403744b2f3e762bbf5a19 -f326d01ea1f9cb89d96aafdbf65dfcf7 -5c421382d1ed9e5e1f86f3bea1f29cc9 -c57c2471c7a6eddd29d27909cc422e41 -3e338d94a6d5b803d52b5c431597e35a -bc244d4f47eb26a3a24f2e61ed6fe324 -3e3baa2a47af2ba7525ad71522d6ed85 -3122c8015a2583d254fbdead8e4fde52 -464e3cd1b9ccd7bb22bfdffb69ecf33b -ad5d0b141c1b1009144f9f984bfc6e72 -dbe76f9c3c57b312b0d6e217b9f2a1b5 -bdb2338095a4ea340c6d023c861169c6 -bb01af22240766173cc185e6857a73a3 -678a224c72ab87f381b25228890f9eb6 -9cc0a9a23709b0640fdc94021a6b953b -d7385726059a0035f5c91a2c1602f235 -c04c20e9e0d8940e6a34a3de26975bfc -f1f34d8c0f864daa5e8ab56801027430 - - -3ef9403b403f368448802a108a9faa69 -c3e50ad0d4c93692a2810e136ada70d7 -62922eb1ad1501e02b86da4f0c8f1126 -f9002a564c0dd7ff3ed4f7974a32c568 -a395d5fa15b0fd8a40e70a9a71e1df04 -686db095e45737b7253cc56f3ae90a99 -e272b24123a940834eb7384c732c3c51 -e696620abb33dd46cbcc1d87e8f0abca -7db2f1cdec58e462f71191b33e61c71c -8cd10e297876e0c2d47a576dfcf61a2b -711b566364586ed91ad85af0fbe5f845 -806ea2c3f875c43ad984200eda43655a -c301b029c76cb799f86ff9c9861ed8e4 -9e8dc82511a1687d973e46fe447e61dc -8fd152ecbacdacc82216f02cb6b5a2ec -fb330418c81c08843a8ecc7b41911c3e -0a95085c8a3f3efcd5a63702b1bf537b -1f09d30173ce97de4233473c26991e67 -d9472c4c816f496c95e5f408e8465767 -db70e7c77f6d301c06248b0884962224 -1898ba53941f49ece5a58b90fdac3ebd -7353c73dcba6a3beb03620ccb68802b3 -5568084ceebffcae386fc1ec48e7ffa8 -01d7079eb9464d34ebc58d2987977733 -681bb6760c742ae699ed900dca34241d -e91158781f161b3767242ebd45da0518 -fb08e158e49baf04efa53b9e931b2710 -149cd6bc5dea21091638b42ec3340592 -eead927af63207df007d30bbefa0bb40 -d7ce2327d263736100f77cd6eb4cb24b -75fb4c310c4f0554d3ac9859d0c5b646 -3314a3c5291bc6ae803c15e9bbf5198b -20e258227a894b386eede1b35678519f -fda688eba93b22d6968c70f168bf6726 -27b1a2f505b85bddf00c3be9a1f82edc -e32ccf9a79a12abea200e2a94c2a95d3 -6f3b6f771da549d8e22263e795ddecaf -824683c2bba8c209bd757096e7b7e21a -f5c74ffcbb82b66d295e84cb0c11b477 -239bcb951d596b8d3481caaf19bf8fb7 -fb5913e34a812d5fdf9e25b8ca8c9fb2 -06dbab5aa01cfd24ae96ab470102513b -d4962dbf14773e0e4e20fef6291149ff -f30b21c6c169fe48e1f60d808599d703 -58c41f60235ea1a5fb3991bc4fa6a24b -8cc192424d2a8a3a8439cf6c9e9c866d -228b0316d26bdd36e56a9158eea64ef6 -59b195fcff4d3877045fee21c364d524 -6f2a62f976e213c77fc7b1e1cde5ec47 -cab808a7c9be3e83a0e4d9bd65692563 -bc3adb1572566d2f86e728581bf4e7e2 -d107b7336d609d8147c434d9f2e7ff92 -449de434949a3e2b8780a87e7b179d3c -d40d1b7a7b953ff9facc32e3abc8f331 -e3da2efff4a9d6b182e61859036a1213 -d441c14fad72488f2b186bb3bec864ca -924c656e4301df08646901c0ff6971ed - - -4e9739c5d4dd7d7150093400f77e392e -c3e50ad0d4c93692a2810e136ada70d7 -2cc2731ed536bf38737bfc2897163b4f -ff20e35d737a171fdebff3fffe219596 -5d9b7ccd6766e9e943b206c4e288cea8 -6134c80e606fc3eeedd5bf6a39c3e77a -545b1414d82cdd476e8d6676161e3103 -83d51da6ce128a36cd2e5d2dbab76ce0 -f2a97948d26385dbf048ef0cf2c525d7 -8cd10e297876e0c2d47a576dfcf61a2b -044e22c98deb3d6da5898931cee7224c -599619a98b0411989a763faf1c6ede75 -9074eff322d7513a6589a181dfc089ec -d255ea5b9df613deb7f8f85bc5c93241 -249a59e20ad0f29165045c375cf123ca -fb330418c81c08843a8ecc7b41911c3e -0a95085c8a3f3efcd5a63702b1bf537b -33f2afb3d4f651ff3a4856891f26faa3 -d976f528676688719bb4ed9da722c798 -f28c1d91837eecde379d863333ad3da7 -1898ba53941f49ece5a58b90fdac3ebd -7353c73dcba6a3beb03620ccb68802b3 -5568084ceebffcae386fc1ec48e7ffa8 -17da2830504929531702d918d538bece -681bb6760c742ae699ed900dca34241d -d91a412e4582686aee55e22120f10420 -7b331d712e358d5793e19167ab42d4b9 -05a11b19b5162789760c9838a936df75 -74e5138e0485400d0958b5c137a8634e -ab80eb398c1cfa95b56a5b1dc2b7ce7d -5f93e31d32cd99d38e3d59c80b4137ff -df979559da6c099664af3c61b83b9e14 -3b9488c55a6633217590c01acb9c0d8e -58ce4b88e87e271384435fc25c0f8144 -bb6a51f4eb6b3c8f00bfe1cdb89cd76a -5b4aa669a151dc30f4dba6f345177d91 -92ac14a3dd5307e6bc4429f625ac3f5b -07692372f9f22331da5ca1cc604206c4 -f5c74ffcbb82b66d295e84cb0c11b477 -4e186ea8084c33de3fec3182f57150ec -fb5913e34a812d5fdf9e25b8ca8c9fb2 -5c421382d1ed9e5e1f86f3bea1f29cc9 -c57c2471c7a6eddd29d27909cc422e41 -a918453d2232f6042139a51f4be59995 -bdb86969718f38f7c3ec9d78b8708f02 -8cc192424d2a8a3a8439cf6c9e9c866d -228b0316d26bdd36e56a9158eea64ef6 -c95d9dd5cdb6d9a6824a6bdbefb48531 -f6118b412225605b9bfe2d33480f8f4b -37c8cf292316d659b712e3e792776e3f -bdb2338095a4ea340c6d023c861169c6 -b59c994938b335efe318af6e6cd7d977 -449de434949a3e2b8780a87e7b179d3c -3ecfa35141eae057f996daee3608c0c8 -d7385726059a0035f5c91a2c1602f235 -c04c20e9e0d8940e6a34a3de26975bfc -f1f34d8c0f864daa5e8ab56801027430 - - -3fc8f6eea78a72252d5beaa95980b119 -a8c0d300734b6d141fea36463cafb665 -ac0b80589a46c746d461c26c203976ed -46574f10a368b3bc5dd28bd954e438f0 -301653ecefd6bf66f64c9d1295320592 -ea428c8c8795d443e495cc24c1d4564e -bfefaecf0b2d4c3cbca546a629f13a3d -07bbf1314ee53209e4d8cf452881caca -a844ce312e01fb23c7007783d7e8444e -06b09b671e4f3c2c4f6d6543f6d01e36 -6860a3f3b0469b68220888089b64141b -fd3a3c865fdf8572f4afcb889760a65d -4095b242985be141d15d3dee76e155b4 -817e3122945ecefbc4ce8abe613858b3 -e17c63b9d34d92e8079dd835dcfd50e4 -a8d8861b0947a0c3b0e4b783a8c91878 -ba4e18112a68a41da78cd63499f03a27 -98ee8520e083cd3278a60b8210d5856c -85c2fec90c3e685ac938f0abedcd5af0 -0d0f009398a7487d59b485e07c6fbc73 -45c213d6037f4cafb6f20e00e41dde29 -e5f10f65ec52fdd1433f2a477b70e5ad -a5affc357e84c82d0cb507e7d977faad -6b6af95ceda28abd4dc15b6ca31163d8 -856330df4d912ce65a7471b677c00e1b -86c9af02e6afad6b682cab386e7ea8c9 -3edb04f22096528f3007755fdb835f19 -7bbc958481dc3893f3cf8773d423a431 -64944593ac8346ad7b11d39a2271b7a4 -e9d05511b26b0ef2129febfed311fd82 -28f76487cf245a01c1aef56ed36952b9 -0fc0876df57f7f77cc4ea959f60cde11 -87d2058dc22f63411ce8ac827f7448c1 -0a23c46c92cd5ce1e5d14d1024f23c23 -b55b4d1269910ed9d04300d6bd1177d5 -18de668a964f71520a4c13247f012fd6 -694ca7bee57efa02867473a6d8a2facd -686ec6633c3b45fa9982eb392deabb4e -71355302efbca5596c245b4f75b1a24a -40d150eef5fa77907360c362ed0f51a1 -49bb3d81ae611eb1f8b7868143b2c6e0 -32e21134466b972be3ac1268599f9b5a -e95c5f8ecb76148b002032075db39a4d -dbc7149f4d61e7d862146daa4f28d9c6 -a2f38be9f4d829be2f19131667e6acef -c8b51b30dbf56b8f6db92072e172189c -9cd23f8d97fddad9f3408b5d5152cdcf -578c7ef90ce4f50122f14d6630079c47 -db18fa6d13acfd83d28575f83a3f395c -889dd20c43597110b85a88bf6485ba60 -3226fe6588555150ef8772f1b2c1459b -f4b0c998c31f5889f65deebd633f7fe4 -33f56a87ec96204fe40ffbc69fc9aafe -c6f42df909428c4ac4a2a5a0d1020d2a -fda8fcbfef4dc90fd00742cc546048e5 -14fefc7629e7e8b1aa195c290306cbea -b88bcae402852cf0a1ade81c22d70ddb -ccd8e25db8a9a768172fcd2e45b95162 - - -2a83de4de86c7c4cddd5490d96adbe0f -223494e86e72306be4f941b847db565a -dfa97a9faf2ba1a451e553c77076d2a3 -e7321cb16b9e21054e745a347a57efc0 -5d9b7ccd6766e9e943b206c4e288cea8 -a05de2beef80af2512e8f3c61f25dcc9 -d4b33c76f50f3d94ad1af21601d68e7e -83d51da6ce128a36cd2e5d2dbab76ce0 -f2a97948d26385dbf048ef0cf2c525d7 -b23a1732f01a5c23da70dc85205c1bea -044e22c98deb3d6da5898931cee7224c -c09f84e25a1c8970c5572077805ac0fc -9074eff322d7513a6589a181dfc089ec -e8510da20738abbfa73214de54c93984 -e572268f81dfafbf40cc085b745e52e6 -fb330418c81c08843a8ecc7b41911c3e -549b51a8af5c6eabe8b7fdb9f981da00 -36fe95f9d0f092d61a637e11e3c32a27 -c0c0cda5b564e56624844d49d7592502 -a1c9e5d5a5cc8920f578a1817aa181b0 -1898ba53941f49ece5a58b90fdac3ebd -7353c73dcba6a3beb03620ccb68802b3 -e652cc0024d38444e191c28a95943594 -17da2830504929531702d918d538bece -3d8ba71a2cf2af3c2a9e9bda1cba64e4 -b1d534a15eb4b0b99bda0de853ae40d6 -81ac81600fa899832975179408bd4ce2 -05a11b19b5162789760c9838a936df75 -bd3a753cb12c1a7c828fecc73e5b052b -ab80eb398c1cfa95b56a5b1dc2b7ce7d -5f93e31d32cd99d38e3d59c80b4137ff -5826378cfccf1f9dc0798b3357870fa9 -e50f64efdbb21cc02ec473069dd5d5c3 -58ce4b88e87e271384435fc25c0f8144 -3450069da49e2b34436578915d3812eb -254a30763f15f9f555e82ccc4accdbac -1ca4e724a542dd90368a4612a878aa7a -a5e8c5e7b6e275f6fc080d12bc66afb7 -cbd8a157fa609eec0ae1d041083cbd38 -262b3b0bc7533232290f81311955da86 -f326d01ea1f9cb89d96aafdbf65dfcf7 -5c421382d1ed9e5e1f86f3bea1f29cc9 -49f5a91ffbc90b04607fbca87a866532 -c149e810ccf8f48a95c04a544050cab8 -126ca4a6ad5a178e0a091196ba5b7a37 -71976afc3ec5e0f9c2e3711d8261e0b4 -5dc4c70ab6811882ea50d20e2c4ea6e5 -f9f034777e38a444b4bde55bc7e37b1f -9ab8faeac0f57da542c29bf3cfef097a -37c8cf292316d659b712e3e792776e3f -bdb2338095a4ea340c6d023c861169c6 -d3df7cf574504af3ed4feaf99bb5e468 -449de434949a3e2b8780a87e7b179d3c -3a1f51816608cc8b2c9ae16fb92b4ec1 -16504bda24ef73dfed5a0ca25a2649e0 -6f3a1ed7c63d57511c1dde760e76e320 -efb80873052a0acac270873400da3e43 - - -2bedaf545935cf1ec76cf1bbe2be8b11 -cf387e494e1e47b7da074828e0994d78 - - -79e35bad8654e5df8c4e9546da9fb559 -ab07c46fbd99585cf69935bef969c5d5 -0dd290bbca23f1341e63156248ae06a8 -25485ee150a22e1a49407c26c037da7e -198b3a29bd95db8f58b32d7db4bff003 -38b9cfeddef49251a216d410d7fa855a -58c19042214fce0286d38a8553680674 -5f9bc55c61786609f6d57cc987d8f688 -f2a97948d26385dbf048ef0cf2c525d7 -ab89fbf62d7046c7327249be47ccefeb -4eb5ad81317fab87396acc720d75138d -d01407b81e6e2b6828c77cc12e908df7 -11d893fe91006d73a3558095fea02ea2 -20b3e0e6e75fd590b98bb3cb3773ea01 -c10315e367f8b9a00c84683b55e7b18f -34ef2a5c01a6de0d058eb647a73cda4f -9a9b37f72b28548b6785b6b1b9baf57d -7df456c127e3cb8ae8ae1a74f56c9c16 -593a0056ee80a54a01c01c0c266034d4 -b0b74e46aa192d770330430bbcfe1879 -1898ba53941f49ece5a58b90fdac3ebd -7353c73dcba6a3beb03620ccb68802b3 -c055194f1ab2455af2250ede540f75b3 -df87ce706058e3da66cfb2d15979958b -8ed0c3b65f002cc1c9ee534820e5f961 -40e0c792b4859dc438412503a3cd5a5a -c954418bd592b9882830e1befcde1281 -2b8391c74ac95a9c89c539f0e332ad49 -5df5b3e78e06355290ce7d76b900f925 -f4d054deaa28f3e99a6d0914aab68185 -311ad06ab23f03ff3440597edf1da3fc -0edeb4fdfd326d018af56a8424a10428 -a2917a00203975ddeba877800e723ea1 -5a28672d7b6bd9aca2b7a79b616369bf -ef1f2c378f4f4b96dbd7a370d52d495c -f074e9bd2d03d456bfb5c45d912515f9 -15558c69fd903afd9e88439226123622 -768f3e2b92cc551d7136bbf830e93951 -1085ef3d0869bfe5d3d113ad6d651da1 -6312dc067c98595bb72d77dfcc9344b4 -95c15ca3dd5f1f6760ef60df52b6dac5 -81026f55013298b6e61a890c55ce2fa5 -d360b1161b553a45255a5806f55382eb -4b01e02157fd54947a64cffdba8d2d18 -44648ef9b872cfcba9ce4649b09a274f -2c7e63fd6233af8fabc598cea968cd6b -16e0a85f28a66c9fe5ef46a42e9775cb -536398fa35f4c75fa3c3d65c98c37939 -b0d636e02a31b72a5cec289b72265f29 -169b60e8323c73a4dfe741da1df9fc10 -92f42144ac3a3507ef0270f8342e36fc -335c7271570470d0a11512be609e3a45 -312c298b22e1902df441bf41c0598c88 -bf2fa0709a1afa93c391eef32d37f171 -a9761ba2043c4b97757891489f325dd4 -faf406bb0e3127ee1e9f424a9db81d48 -db1b7476ea8ce223faa772b7f66621b8 - - -e29675921ca8b0602917a823d5028e29 -afaf8c79e4a90aa57382f99ed2d40f1c -67ea5ed5ea373574dce57608e11f429d -63fb124d0f5976ec609fece7f3ad23ad -cb363e312cfa50f3d9536bdaf33441bf -018d30f9195ff56d94346d8d21780af2 -e5e7ed101e5fbf690c1f58d77b666720 -83d51da6ce128a36cd2e5d2dbab76ce0 -f2a97948d26385dbf048ef0cf2c525d7 -66dbdb37fcb836537092935a31655cdd -b1d0a182408ca65a6bba2eccf83f05f0 -16737b3e033c599ba1de2b1653ff5591 -9074eff322d7513a6589a181dfc089ec -0ff5cad40b13007a6e4dd81f9bd72dbd -006597a6e9af4637e424f47a28a7b247 -fb330418c81c08843a8ecc7b41911c3e -ccc22346e54d37117a732ab094d41986 -1116f9450413c4fe11aecad38e8ed25f -7e2ccffaf9bf9dffea7c800c687a3a6c -bf512a71c20efd497ab01bd83f07737f -1898ba53941f49ece5a58b90fdac3ebd -7353c73dcba6a3beb03620ccb68802b3 -2104a3716b6074c739b153108c99c597 -9dde1229f064c66f6497f31dde78906a -6373b95c48af4f71972938535912fc8a -367f6bfe53285d7880def87ab63b790a -31f32d0cb237acccded5584aaa05225a -a05af8369cf1eca3ea4b3b0cafa3ffed -020f5f3eae4387d4dc019eccd30a2d1b -85d5865b208ca3ce1c68e597d6834f92 -69a140a13b73949262053829615d06ef -02289e9b37a7aecba5c0fa022f167487 -fda33aa5946bbd06f06d3889c81f135b -e32a6738b9127c8a9c976478fcda233e -ed2cdba45964552b59ebf9bdb1b566e8 -121f5d278e77c82d476ddbcaab81a331 -d35a21763c1765d888ce5e9f7192d161 -b1ae2db4e6abd7b1b88a48e222cf37a5 -a04d9cb8e3a3b5e923c349a2dfed9290 -2af14f6c4b858b8816b24c596aaa0888 -f326d01ea1f9cb89d96aafdbf65dfcf7 -0003fa5cfecb0311b7f260d15b8c55a0 -f07e3aa557243cfef5ef06bdd8dba07d -b9499528fcf9dc3b194032dabb39dfce -6a44563847fd7fd414a91594576d6ff3 -d9f11c2cc6a7b5929a915d7a998e925a -ef8d5f107a66b6aacb79a8a4f5d01757 -9db68f434b6113836433bb3a671e71d0 -7403f69899649448cd99496d1332e3cf -37c8cf292316d659b712e3e792776e3f -152145bbdd3b66b8ba05238b8d6967d6 -a3bacfe77dbd44410c277a003246c307 -449de434949a3e2b8780a87e7b179d3c -5f0890bbb168309b359831a191a3e8cd -ea7921a38541879d8044e9729c9e87d8 -c04c20e9e0d8940e6a34a3de26975bfc -f249c5416780b6370b92514232af8da7 - - -27d3cdf8f704d01d0b46f8579d39b967 -96d264ca8820d06e79142a24331876a2 -236388ae2d5c562bd3b7123817527f73 -2a7d1b0f704d29951c30ea866c85c530 -0d26a4183a05beee36f73348e05ac1a9 -74f2da3d9db3fd92bcf151c99c38c332 -7372240ddcfd567371833e17c55cf3bb -5fd0cdbdc0238bc2f9c0fde2e1cec05c -45ffe99a918a7bbc4a6042bd1f7ded89 -edcd6f0e266ebd3f8889d44444b1f874 -6ffdee3464337d9022910038309669df -2213ae80db2f9c6a475e1209d31ed2f7 -0ae23305ea3cfd8406dc0c57deece00c -817ce0b47f0dba9656d1ad1583596161 -39cf133dcfab23f3646c1de536a6c44a -5ed5c5747e7602e1b128fc541e0a2ffb -6d3c96840e498d14d87f582c06075e37 -507560124bb9af9903a36e155fba3c96 -94bb9cad9889690d55670af89e832ee8 -5c83c1f4cfc547129cf52ea69fe2a19a -4c7673b351fab33e0a33fa2910faf0d6 -c36fa900ef2e082506bccd1fa51eed31 -e93c689a6bd1cf8e7670e4aec826d763 -d19ff90add77cc081a9daf23f5b604fe -3080ff9fdb247eaf98b234710abdc34b -87a5230bbfe882e0fbafacdd6fdcc67e -9adc818af1aae210b0d7d81c03a676ee -41f6a7ee8a9f798c0af92c1ca1dcf5bd -1baebe20cdfdc3217fe9a2ca774cadde -57976b7ef9e27bc6d12064dafff2eea1 -64d4f3497d67b4e8da246b865501955a -b66283810f815e888bc6f5ae1b52a6ac -d35b6c40bdb2346fff2069c5616acd9a -f4f6df6dba47bcf07161c5eab2fda0e4 -c3777bb05106623a66ab54852c8dc6d2 -77d571e5b03acdb7a2029a4f9218a323 -a40157ef24e9a8c6ddfd3885dc186a96 -056998dce70220b02ec8ed7855ac8b8f -50d7642780c847932b5928f5ddc419bd -3533fdfc61408e851bdb68653ea870f0 -cf24f0f04a6026a4d06cdaa7617586ac -78ac49e887ee1d6d5dd1840b6a81a3b0 -2f46b0cf8ce598febf0c2f66eff0b230 -b7e633ee1c659326e118ecc31f6dc763 -4168e4479deb6e95d53ffbced50238f3 -53794030a3a02da1d3ebd2b15b95af35 -8c97316eb2f2f1cecc299b68969243fb -6f3ad06950f1c62f4bd86e51a7ddae95 -96efcb427a067568896a54d9cba6a836 -2d1ed344ed1f795dc8ca3acc51cfeaa8 -0f487a02eb56c25838b3ca7a44e3d340 -23cd5ee0ff6441087199ef3f6f48f4cd -4c1471fc81697146f2072c4c55b16a9c -24ec07bccd0232ebebd94716dd6abaf9 -7f96e18c0ac56314a33e35de090c5045 -6eb12d57ce64ecf36d5a78932208d1bb -cbfc8102d5d4b206ce17095f41a08013 - - -a287d462bc71f579eea372c586ca1e65 -9f5ba8d00d619d312d40c07f38b35c6e - - -e0758c864058df5f23cc35ab0df1d31d -055d1c1ecd19be7fe0fc879d5b9e3920 -2cc2731ed536bf38737bfc2897163b4f -1dc894ddc8e2fa310a70a3bccf815df8 -10bfcf3c45c4b93043b846371d2de319 -2dbd45b0367937f1ef79d8cd02d8eb4d -4ed0fa2252887fdaad281c4fdd581138 -83d51da6ce128a36cd2e5d2dbab76ce0 -f2a97948d26385dbf048ef0cf2c525d7 -5f236327d99c1d860357c98d6123b40c -8105015382c2477cc7e91f83ef6c4e61 -5d687f7e28621e97af2a7b1290efc658 -9074eff322d7513a6589a181dfc089ec -dc396506b334ea8af343c8c8161be20a -0fd2a60ce0edd282a64cae89f30106cc -fb330418c81c08843a8ecc7b41911c3e -7f5889f7023d1c96adf6c6917fa4c7c3 -4362e150d6fd5db1d2ec3bf6033cf31a -f6a494807c8bd81146bf7308b9e74507 -e8b8a56f3c8046b724afa033496599c6 -1898ba53941f49ece5a58b90fdac3ebd -7353c73dcba6a3beb03620ccb68802b3 -5568084ceebffcae386fc1ec48e7ffa8 -17da2830504929531702d918d538bece -a42be7db361dd5993f28868e4a3f358f -4377ad93f7965f894e7d49f0972a144f -b26249640072d8246a812bc6d7a4903e -05a11b19b5162789760c9838a936df75 -74e5138e0485400d0958b5c137a8634e -c2b2f7000a5d742699adbc6be9b8011a -5f93e31d32cd99d38e3d59c80b4137ff -28e10eab33216fe841a693440d577e21 -3892d45ad15c38243a4c8c570f3db7e0 -58ce4b88e87e271384435fc25c0f8144 -d929cf33013487510df075f5cd5ed46c -8cfda215fb90242c0bee3c08f424d05e -1ca4e724a542dd90368a4612a878aa7a -e92ab1ec80639a8bcba78163e7f632aa -125545332e86e9da0c16e857d488f35f -68633b9a396403744b2f3e762bbf5a19 -f326d01ea1f9cb89d96aafdbf65dfcf7 -16e708648f259125b73168462459fdf3 -c57c2471c7a6eddd29d27909cc422e41 -1305dad2e2014d290bc66c328ff0a8e1 -2f35f2744e4e6626a2390abb5effedc2 -2b7b7694e9c574c9017760d04b71d385 -336e659b54ee694568f9e17c14ba4a44 -6f225dc643f02ed2509b857ca08a1695 -06c01cb177f657b18706dc4856a0315b -37c8cf292316d659b712e3e792776e3f -7b90980dcbf4d232834606fb8b661045 -7b628e61735e81d30265c89a34b17278 -449de434949a3e2b8780a87e7b179d3c -b4a7bf2dc4b9d17e3bf96711789653f1 -cd854c5b10b4fbfc95edef5d88b16bf2 -c04c20e9e0d8940e6a34a3de26975bfc -f1f34d8c0f864daa5e8ab56801027430 - - -4e9739c5d4dd7d7150093400f77e392e -c3e50ad0d4c93692a2810e136ada70d7 -2cc2731ed536bf38737bfc2897163b4f -ff20e35d737a171fdebff3fffe219596 -5d9b7ccd6766e9e943b206c4e288cea8 -6134c80e606fc3eeedd5bf6a39c3e77a -545b1414d82cdd476e8d6676161e3103 -83d51da6ce128a36cd2e5d2dbab76ce0 -f2a97948d26385dbf048ef0cf2c525d7 -8cd10e297876e0c2d47a576dfcf61a2b -044e22c98deb3d6da5898931cee7224c -599619a98b0411989a763faf1c6ede75 -9074eff322d7513a6589a181dfc089ec -d255ea5b9df613deb7f8f85bc5c93241 -249a59e20ad0f29165045c375cf123ca -fb330418c81c08843a8ecc7b41911c3e -6b36869fa70561852f0dd2237168b73b -33f2afb3d4f651ff3a4856891f26faa3 -d976f528676688719bb4ed9da722c798 -f28c1d91837eecde379d863333ad3da7 -1898ba53941f49ece5a58b90fdac3ebd -7353c73dcba6a3beb03620ccb68802b3 -5568084ceebffcae386fc1ec48e7ffa8 -17da2830504929531702d918d538bece -681bb6760c742ae699ed900dca34241d -addb82a5473d88074f998158dcf6d184 -7b331d712e358d5793e19167ab42d4b9 -05a11b19b5162789760c9838a936df75 -74e5138e0485400d0958b5c137a8634e -ab80eb398c1cfa95b56a5b1dc2b7ce7d -5f93e31d32cd99d38e3d59c80b4137ff -df979559da6c099664af3c61b83b9e14 -3b9488c55a6633217590c01acb9c0d8e -58ce4b88e87e271384435fc25c0f8144 -bb6a51f4eb6b3c8f00bfe1cdb89cd76a -5b4aa669a151dc30f4dba6f345177d91 -92ac14a3dd5307e6bc4429f625ac3f5b -07692372f9f22331da5ca1cc604206c4 -f5c74ffcbb82b66d295e84cb0c11b477 -6448daf1b06217c7dc989bed6f3709a2 -fb5913e34a812d5fdf9e25b8ca8c9fb2 -5c421382d1ed9e5e1f86f3bea1f29cc9 -c57c2471c7a6eddd29d27909cc422e41 -34c7fde492170f80fe8e0e6434f3eb0b -bdb86969718f38f7c3ec9d78b8708f02 -8cc192424d2a8a3a8439cf6c9e9c866d -228b0316d26bdd36e56a9158eea64ef6 -59b195fcff4d3877045fee21c364d524 -f6118b412225605b9bfe2d33480f8f4b -37c8cf292316d659b712e3e792776e3f -bdb2338095a4ea340c6d023c861169c6 -b59c994938b335efe318af6e6cd7d977 -449de434949a3e2b8780a87e7b179d3c -3ecfa35141eae057f996daee3608c0c8 -d7385726059a0035f5c91a2c1602f235 -f4977effe39cac6245f3789b7dc2eff8 -f1f34d8c0f864daa5e8ab56801027430 - - -978bf026c812ac95e435560c7be4bab7 -f3c46414a349aa8f14f7b2bc4224c2c9 -bb86a43e02b27e96f1a1a5a4757aa567 -b72997707e75dd3fb9bb3344408f0fd8 - - -a287d462bc71f579eea372c586ca1e65 -9f5ba8d00d619d312d40c07f38b35c6e - - -fb46bbe6fd59edc488ae4cf9c9e59be7 -129f1bba639c9fb1f3f5b196aff5f073 -64bfc7f928c8265b954a94f6ba47a472 - - -24e25ba55b35cdcc2dc5a14d7d10570a -cf956add0c79021627f8d296bd9c0bee -3639365574f377b3d9192eed3012b81b -e6bdc0042aaecd4af937d23e028fe6d3 -297d7b4aaed48a75f49c2a5d7856b4bb -7e6f23680749d50953f078c6718e402c -3f97ab7226e1b96805f110c23a0a4e8c -91db205f032419631535b76600d49ef3 -3ab8cb2ffce4a45ccc2bd36bf7188ba4 -3999a6c16fbac8f142b6ba5c83843135 -e66c5201b53aff421ab597e250adc59b -a7f8b687d5627915cc22a52b0332af77 -4e8f553ac2056a7b9e7e66f9f8cc3b8f -2c978233c9c2113210abb8d6b7815be6 -bb854c1ff453090ff74b5c40bffed07a -02b66c8cb37d08bd011ec596985e5b07 -17b01c65b668f83ee0e343f558f1f717 -b5cd71ce52f0ea483266db95c9dc08f0 -0c3ea1ed6f3bef86e72457af9d477b22 -c093d74471eff6a5f33e586d3fdf7843 -6bd7bd915222c47f064d3cfee5fc59c0 -f10cedbccc9475f55d46269a683f0cf4 -0a8e6c7063772f6766b3265f9b54bc8a -a951ffe3e490fa57e2d8b58326957f4d -8cd714c35a68b56c9190c03579baf70b -e2073338990d8009a30b20f79c1e2658 -6a1722dc73e6612827ab1dcdd24d0ae0 -50360defe4eda5645728358a612f8df7 -b959612b1474a1f2fb2aeb746072551f -e700debbe7f28659cd6ba34da1ec09cb -5a6bb3c42b5a0bec8c86824f1975083c -87ca04b6f32ec9c86ff4a9496a7e2e83 -0563e414f40984e0f2ad2a584b88bef4 -443c0149b9f505cadf88de780d7c5462 -69a9ea27bd1ff96e536096fbba4d3033 -1eebc6a132b4831df2374914d2398d06 -abeec7cab968b8b816c16b0dea5dd6df -988b1fd1092a601c62d214658970a600 -07bb126b5d3a17c508adf9c9201baedc -d9f0c52c0880cd2a167ea745276e7d34 -f89420ea2cea158b44d851d13331691b -71dcffbcc86f23f9cf452fba195be1d8 -6699eb3eef6a6a05645ff11dd7646491 -028f2dff098e653e92a92e51a4d56f99 -89bafed728ed1123e0a9884966bd38df -354a01f32d385c5166d852822ad9d471 -02e5e0d91e8cc1b008004845a60230d7 -b86122de22bca131f7b1e591d0ad05d9 -4b9ad2ca74ef4f33b05aafa6c8f5ee50 -1c203659d8fbe2117d8da349a757ad8e -13de416181b3cdbebce2aedcba4778c6 -c4eae93fb414a18821379c3f61ce6e8a -198738d85a77c59567f81577a6235b7a -476d5ab66502092cc71290f7b3a635a0 -d87251d2fa6e1c8d95ef7c0a2e21f6ff -07b06e9223c78d3d8156d51254b0fdd0 -fb318dd514da9a7e91e4835a22a8b317 - - -4e9739c5d4dd7d7150093400f77e392e -c3e50ad0d4c93692a2810e136ada70d7 -2cc2731ed536bf38737bfc2897163b4f -ff20e35d737a171fdebff3fffe219596 -5d9b7ccd6766e9e943b206c4e288cea8 -6134c80e606fc3eeedd5bf6a39c3e77a -545b1414d82cdd476e8d6676161e3103 -83d51da6ce128a36cd2e5d2dbab76ce0 -f2a97948d26385dbf048ef0cf2c525d7 -8cd10e297876e0c2d47a576dfcf61a2b -044e22c98deb3d6da5898931cee7224c -599619a98b0411989a763faf1c6ede75 -9074eff322d7513a6589a181dfc089ec -d255ea5b9df613deb7f8f85bc5c93241 -249a59e20ad0f29165045c375cf123ca -fb330418c81c08843a8ecc7b41911c3e -0a95085c8a3f3efcd5a63702b1bf537b -33f2afb3d4f651ff3a4856891f26faa3 -d976f528676688719bb4ed9da722c798 -f28c1d91837eecde379d863333ad3da7 -1898ba53941f49ece5a58b90fdac3ebd -7353c73dcba6a3beb03620ccb68802b3 -5568084ceebffcae386fc1ec48e7ffa8 -17da2830504929531702d918d538bece -681bb6760c742ae699ed900dca34241d -d91a412e4582686aee55e22120f10420 -7b331d712e358d5793e19167ab42d4b9 -05a11b19b5162789760c9838a936df75 -74e5138e0485400d0958b5c137a8634e -ab80eb398c1cfa95b56a5b1dc2b7ce7d -5f93e31d32cd99d38e3d59c80b4137ff -df979559da6c099664af3c61b83b9e14 -3b9488c55a6633217590c01acb9c0d8e -58ce4b88e87e271384435fc25c0f8144 -bb6a51f4eb6b3c8f00bfe1cdb89cd76a -5b4aa669a151dc30f4dba6f345177d91 -92ac14a3dd5307e6bc4429f625ac3f5b -07692372f9f22331da5ca1cc604206c4 -f5c74ffcbb82b66d295e84cb0c11b477 -4e186ea8084c33de3fec3182f57150ec -fb5913e34a812d5fdf9e25b8ca8c9fb2 -5c421382d1ed9e5e1f86f3bea1f29cc9 -c57c2471c7a6eddd29d27909cc422e41 -74617c4c134f60f3087c0b1f0451b538 -bdb86969718f38f7c3ec9d78b8708f02 -8cc192424d2a8a3a8439cf6c9e9c866d -228b0316d26bdd36e56a9158eea64ef6 -c95d9dd5cdb6d9a6824a6bdbefb48531 -f6118b412225605b9bfe2d33480f8f4b -37c8cf292316d659b712e3e792776e3f -bdb2338095a4ea340c6d023c861169c6 -b59c994938b335efe318af6e6cd7d977 -449de434949a3e2b8780a87e7b179d3c -3ecfa35141eae057f996daee3608c0c8 -d7385726059a0035f5c91a2c1602f235 -c04c20e9e0d8940e6a34a3de26975bfc -f1f34d8c0f864daa5e8ab56801027430 - - -503179eef2a75e444e6ed540ab5816af -3a63b5ca883378d2e5b3ffc0bd8367ba -cf2e582534edc6a59ece7d22c939c00c -28f44c26afebd0f551578f04045c6496 -6230437ad4adfb173f89c5c9b1cd3301 -378e17fcf077672377ccbeef64dad311 -b2a770a6440bfa70194e2bed28f4d39e -7d6b8f45303f24ad769fb402b9416bb5 -db59948d8443a30f976ef562646c108e - - -a287d462bc71f579eea372c586ca1e65 -86edd8b14802f697dde804a0b134a9f9 -47e41f42a075152d70958fe89cbf8d37 - - -8c5cd3077f35b4d9a54fa1e2eaf99029 -37d8e465a4c969aeb37a190555547cd0 -f42d1bee9041dfc962483f895dc51516 -e9df7e30e9fdbb6344a469b3ba149587 -3a4b04e37555e1b591460bef9515a31d -6ce380aa4925459fd2018f1b969afac4 -e75dd31e0976099cfc0d9e00f9381947 -83d51da6ce128a36cd2e5d2dbab76ce0 -f2a97948d26385dbf048ef0cf2c525d7 -03979b34915083ba410a0007c328ad2f -7ef7a01bb8bfaa1bcf2a56e60d5dd02a -35d341887139a758d99d30648927ee09 -9074eff322d7513a6589a181dfc089ec -f15b010a942b145c786fa8acad689cb7 -25c26fad23173a7dbdec5924b8b1b004 -fb330418c81c08843a8ecc7b41911c3e -751c73c02279b8c3741aa37bec82ba2c -c247f188b836bd51267c422c407ae500 -9f8037a9a12a3775f77152459d1d56eb -05728779c925f68cf37badeb98b828a8 -1898ba53941f49ece5a58b90fdac3ebd -0d9854420987f4e57f2b1f9d3c4aa726 -109473a1938eb45b52bd3826fb672d9d -f1a79c9a55705140a6d893b3690085d0 -8533867c20217e5aeae7d0dac180cd11 -580097c19dd53748b11f75fd6daa95d5 -0f68c23818e6bc4499f54ac914e4282f -7a64d641a544fce0c38f713f0664d193 -f511f6074269da3134eed7e12c84de03 -798688bb6771a235f9f222336ce5f4ba -2c27edeee3a6e7883ed719fe44d6d145 -a47439737e5532545747c6f73d6b90cd -b83baa83e617bf718a588fb2e026aa49 -40304c1f3cff2f503ecd99a6ac503613 -af7f6ae4b129a71eab154f67ec4f9d59 -9d81ac794e19939a076c93c618837b30 -791d08fbdcfe6f2029c0c400d4f3778f -af08cb31c426c69cee3d5be5dc8702c9 -5545078e333f5fa834e187b6d571738a -1364b5c7f6f46e8a9d5fe21a4aa0b8fe -f326d01ea1f9cb89d96aafdbf65dfcf7 -a6798cd4ef3ea5a0028b7e33867373d0 -095b99ae7775132e9700de77b2e6f898 -27f2d10ac233068065707bb949750e31 -f56bdc64d89a098500278cca09fa304d -a2ae9917403521ede786d9e643a53439 -abfff4dbeb6fb2a25396303105f5642a -ecc8a0bde690b00e0836ea7764a2fb4c -b8ba3ac8ef64a7f87b2ef55a8bbd2f88 -37c8cf292316d659b712e3e792776e3f -1643632ef5c00e55e35976ce7946fd81 -29a0ae9a5d2ca8e061d578be28de93b3 -7f54f89d0966306d4f60a669e23b402a -07edba7de542d83b61a622e33d5a25f6 -57c2154f2836596753680dff1c63f6e7 -977750e7a21659d6215e7f843e69c058 -7e2d917c34973b82cd21c55635057d46 - - -bc93932dfa364d57694b5107bd221965 -15df5a3b4ebb165f9986273c4ebe8798 -d91271f2eee42c07a5138547a0f6c091 -534aad3e7ff4b4e2fd40ad24338e359e -cc477bf80635d2022a70f38dcac5b6e1 -91a570ab57e4e0ac714cf48c40e8e323 -e2f570e2e66df747bf8f6b3db227bdeb -642b1d3edd6abf2fdfaf30d3995d3f4d -a313c383e151fb72d0eaad1757188000 -7d8c8e9bc16ad8accad451a2a6c5a046 -716fac49d69b624c15ac9c91f370187c -32ae8012fb080e21bffa6e556916d602 -c2211488a1337a74d003a9ddb3873a31 -270b61424746a236c6ada6678eb0a344 -ddb2d71f37194b210d54203f580211e6 -5460d3ff345466ce89636dbeae2a34fd -dcda5413c3dc3ef55f5b843256bdaaa2 -fdfc437c24ae7b6ca2b931569363aa35 -ebf4f23c07bb09dca7337a86991819fe -d005f2b3d8abdd71761243ac5bce19cb -1856c76dda9f60666256d04b1f964000 -fffe909199241a85bd97495f34b80378 -e8af2be464edfcb655c37b7915b678ef -b86448d50cb02dcfafee6f9723c1dcc3 -3ab7d54a87b3c68cb046ebb54eefd70c -a63ab8aee2fbc9a1107042a070b1716a -5d9c6213e92a9c18858795ff00848db6 -2a5b90cb833fa873670d7322eb4eabef -152fb2933996d8803475656021ee1adb -d1312f31922c4819a5582de37d0e05a9 -817b0ca846a290585a5395b65a65d68f -24216c82e991c6828e21333d95b808cf -7b522a98d7a900c03121f5c35d905d84 -f5e34703342979377ef0c6e0d12d5299 -236e91cfdc41d006da0b3f67e78ac64b -2b48e1bf7846022de872d815250a7b05 -79da3afa1b6e18f33269de3e58e20500 -3199b9e77ad97d719d306bfd9fe1f5bc -94ba7022b5a214208b24339a91e8b417 -75025c0ce9c0230f5b2a777164d34624 -78baf615e8d1c00a89cc8eda5229f342 -e1055159f7b283cb7468daf14a8684a1 -c6fa5046b17fc49c8763a64a2190559e -fc98a808ed9dd80c9d4c5091473b8a9d -d26a73cb7efe81080f769a3ef26e0f14 -70a872670c64c2f1bfba189669cf2899 -441e0f2ccdbec200a6056f9fdc0c3c97 -73eee42ab2bef0da14d9c3fa7e1f1e3e -c22d4eec9dcae667969c076fb09665bd -593e777ba5389aeaa04f7da136a016a8 -d4d0f4abc5ee1340255a9eb0076cd961 -6eede0f730806bdb6752fface240ad8d -e644544bcf0068e86a44d37c204ec963 -4ab7bcf0d217d86468075ece0c83929d -850f81668e8529bc785988b981aeb25a -dca08dfec11f90b90a5ffe1e4344e5ca -86d18225c3ec4d2ab47d5b96594e1d74 - - -a287d462bc71f579eea372c586ca1e65 -4a73b1420652c433015ba38d07a82126 -7e05aa55be140022b44bb77adef4c3d1 -9d0003b476b04cb18293d40e8e5f9e4b -efdb5a6169890e8d2250eac7fffe7942 - - -4e9739c5d4dd7d7150093400f77e392e -c3e50ad0d4c93692a2810e136ada70d7 -2cc2731ed536bf38737bfc2897163b4f -ff20e35d737a171fdebff3fffe219596 -5d9b7ccd6766e9e943b206c4e288cea8 -6134c80e606fc3eeedd5bf6a39c3e77a -545b1414d82cdd476e8d6676161e3103 -83d51da6ce128a36cd2e5d2dbab76ce0 -f2a97948d26385dbf048ef0cf2c525d7 -8cd10e297876e0c2d47a576dfcf61a2b -044e22c98deb3d6da5898931cee7224c -599619a98b0411989a763faf1c6ede75 -9074eff322d7513a6589a181dfc089ec -d255ea5b9df613deb7f8f85bc5c93241 -249a59e20ad0f29165045c375cf123ca -fb330418c81c08843a8ecc7b41911c3e -0a95085c8a3f3efcd5a63702b1bf537b -33f2afb3d4f651ff3a4856891f26faa3 -d976f528676688719bb4ed9da722c798 -f28c1d91837eecde379d863333ad3da7 -1898ba53941f49ece5a58b90fdac3ebd -7353c73dcba6a3beb03620ccb68802b3 -5568084ceebffcae386fc1ec48e7ffa8 -17da2830504929531702d918d538bece -681bb6760c742ae699ed900dca34241d -d91a412e4582686aee55e22120f10420 -9cd49e7f744d8de62eba542e0195fdeb -05a11b19b5162789760c9838a936df75 -74e5138e0485400d0958b5c137a8634e -ab80eb398c1cfa95b56a5b1dc2b7ce7d -5f93e31d32cd99d38e3d59c80b4137ff -df979559da6c099664af3c61b83b9e14 -3b9488c55a6633217590c01acb9c0d8e -58ce4b88e87e271384435fc25c0f8144 -bb6a51f4eb6b3c8f00bfe1cdb89cd76a -5b4aa669a151dc30f4dba6f345177d91 -92ac14a3dd5307e6bc4429f625ac3f5b -07692372f9f22331da5ca1cc604206c4 -f5c74ffcbb82b66d295e84cb0c11b477 -6448daf1b06217c7dc989bed6f3709a2 -fb5913e34a812d5fdf9e25b8ca8c9fb2 -5c421382d1ed9e5e1f86f3bea1f29cc9 -c57c2471c7a6eddd29d27909cc422e41 -34c7fde492170f80fe8e0e6434f3eb0b -bdb86969718f38f7c3ec9d78b8708f02 -8cc192424d2a8a3a8439cf6c9e9c866d -228b0316d26bdd36e56a9158eea64ef6 -59b195fcff4d3877045fee21c364d524 -f6118b412225605b9bfe2d33480f8f4b -37c8cf292316d659b712e3e792776e3f -bdb2338095a4ea340c6d023c861169c6 -b59c994938b335efe318af6e6cd7d977 -449de434949a3e2b8780a87e7b179d3c -3ecfa35141eae057f996daee3608c0c8 -d7385726059a0035f5c91a2c1602f235 -c04c20e9e0d8940e6a34a3de26975bfc -f1f34d8c0f864daa5e8ab56801027430 - - -3c1901d15b11b7c8d9411305c2c10e47 -43f67ab455d8d7d37792adf1b07c5d9a -0f4cabd5c702824c0432a5b16dedf3ef -79d85b51749f47c08f869e8d88792b96 -e5be41a111cad12948b3c30fcd5a41c3 -f8c35e3878a1834751fd9ceaf8e6bb7d -ed92d742de3415fde0de3efc2b84e990 -c1f61d4c7d7ddbfd6d0c3e00dfa7c91d -467604093e3127dfaa5690fc4497f4a3 -3e40d8cdd27d56fa814cd97eaa6ab63f -616c29b85368aae480120bb30455f2e8 -d87b686508e12bb408c58888689211a2 -5e5684f776f1a7354578715682f38651 -fedf292cca2809a18d78f474c1334447 -b1d9c0b57b93cd0b5584fab53a6c227d -dcd4b0caa14caf886102e9aca04e8b7b -8db88368767449b61ad48b02ca40d8b2 -3d3d3620c656fde1ed4778a8d0ed23e0 -48774123b922c982e9db9735f78cb033 -f47f15a53c307b7b6b14ce44989bc3e6 -7e99379d64b67784419dbe4472109e8a -f02aa204b8f08a2b24b5259e84d3ab65 -5707af36b38fd6a63cc64e6852320ac9 -d2a16e475bb3d3501ca097eccf16f3f5 -4a208b83b250a5fa06add548e5f4675f -82a6941cc4dc14b88f1053af0b499e4e -59addea31dca998c1b712c1ed87d3f9d -ba8ea3ba48fae1c8c7bf1e4a44d31dd1 -380507f4784c904ee80136f10dc4c93a -85086256e7de8ee29545bcd5c1063a55 -5695f95ab75430e71ca7e91b1d4a7993 -5df22313fdd1f6434b42a5a11f635460 -6be938f89027df9edcc327a209f82408 -bcee8ecb596b1ac5d285632373182ef2 -b5ecca54092aecafd5a65dc0d95b9739 -428baf81a8ef213be49b3f9096a78fbb -e5dabc12813a485062ab5b77b5426679 - - -8f2df396846f56c36b7f5981c55b09af -632d62425fd80b2ae185fb09da005b35 -41a82da1a38fdb0731f1af8f23e1b884 -42bdbc393938fe75a1d853bf20f51164 -e349f1a124686686a7e6e55d5e728e66 -7c87dfe04f9013e7205e49361b771a8c -36526b8dab4e59d4f4ad236d6c90907e -83d51da6ce128a36cd2e5d2dbab76ce0 -f2a97948d26385dbf048ef0cf2c525d7 -a46e84e226776d1c036b5c45cf3bebc9 -f760a8a4dbcb446b2b9d4a57519b97a3 -8586f1e6313f1760b3c4b35d5446662e -9074eff322d7513a6589a181dfc089ec -5b34db46dd8cb293738572404ed3b225 -bf649dc0dc28169978f52fadfd74c2ed -fb330418c81c08843a8ecc7b41911c3e -338c2613ad6cc390448329775b4d2468 -f0777bfe665957f9c9cebb90f151c62b -49070aa4eba7e3e1b439d12caaee9952 -d11f46d9d4869fd71bcb552f8d51522f -1898ba53941f49ece5a58b90fdac3ebd -7353c73dcba6a3beb03620ccb68802b3 -d1d57eea51657033e41f1634e96c2560 -53ef803ac43a6382f578eb37280e612c -83fef6c66e36ad20cb4fe764f9f68e06 -a4171eccf1d40752d26b29b5153b11b2 -0c962e7cdb40d7dad2a747913d2fa93c -a80d982a5473732ba1961c022070788f -87397eaf064ce70b2c5ee2f26a101eb9 -054e37b9444d3500de55fb2873fd01ef -a0057248da365d8652f6b193da290302 -c12cf1d469986ba2dc003196939d366d -a0b716a86724f2cde471e7dc5a99bc5b -55ec9a397c40c4bc20ab7a911bb56d65 -decda49a23434f20a901c6c9582898e5 -af5b7c3ff0f794fcf79548c1ec0cad94 -cd19eae6497fdab036c304d1de48166f -6a99d337f18961deee4388eb086941c2 -09294bbf65aa3b16330b0b16119474d5 -306523293000765d47944a1d49176227 -f326d01ea1f9cb89d96aafdbf65dfcf7 -aecc83c5c5055247d60a4ad36fe5d27b -0266e81927355c5ace41047baab6f273 -00a227b4e7ea9b1ea5ebae93307cadf2 -92fb47ee68846daa048091fde37e7fce -dd0c0d28fc4a2ed9db92b4ba84a9a561 -62412b0b947b92addce88be9b0d465c1 -e3a663c28cda435414f95b1683b36d3e -7813b286e9266e76c7024ec1f4050afa -37c8cf292316d659b712e3e792776e3f -3fd95b45a7575151e66f338bed7928b2 -bae49d79ca27a5fd2c36ff08d4f9007e -449de434949a3e2b8780a87e7b179d3c -a0c8b26b80f18f02804d0e01e64c031a -436361c24dbbb8a017932053886910ed -c04c20e9e0d8940e6a34a3de26975bfc -96c57fcb231c8ac82ea65c0892a50555 - - -41d78d8a65914f0ef18af000e6a63052 -150ef0a3188079477ca03d406201c48b -046d11412aa0f261834b9ae1e91bac48 -a4fc1d9078c00df5c8ca169878cb4dbd -868f7d6e16df1caad6ea1baff31016cb -28cced83490f2d718f9c1e2c61606266 -3cb79c768f575725f294e75ef620f846 -a4c048ac4494e32101da4774e4d56102 -f2a97948d26385dbf048ef0cf2c525d7 -4fabc8a6936621fc03a2dd32a9ba7531 -5f8b1d14fad5cda81df0c2d95fb0b9a6 -302723b8a8150728e2868ef843784434 -9074eff322d7513a6589a181dfc089ec -ae976b8b3ceff8461a54f6440a533b23 -f62445c9c54f7bc3a3790331bc282c32 -fb330418c81c08843a8ecc7b41911c3e -d2fdef24cece2f67b802f0ff0a9246d0 -a1e2fe9ace3039db5aedeb81476f34fd -54ee3269dc7dc1a5ad6b8e105b6d1c4a -2b456e7e028515f07a6887c35bf6ff11 -1898ba53941f49ece5a58b90fdac3ebd -7353c73dcba6a3beb03620ccb68802b3 -0377bbaabc9f554edfd5252b8280b6ef -fd4e96a1dfb6310eaf9ca8e3d5d1c03b -d4a4ee924ffb170772d19d8fb868d8b5 -6189a60e665e8910cf6e08c7b8cb34e4 -521554f32c542b54887e7b042fdce454 -9b01fee9c9212da2f9f5d7388424cc9d -6689a5cb779685d445bbedb7079f68f4 -e3b584458fa916fc13d478c9d06d66b0 -5f249fd236d741add5cd1989e73a179e -ba76df4a1a0806f87e68830f08b4c334 -74d91a7555f00214e4fc66025c26e7c6 -c99f08ea02baca67b2f7d3b53d831686 -025679c597154f7ba721c6a2bdc0a376 -3db9a24b9c05a584f57e76bf796775e8 -30af1f1daa6808bc69afab5eef6d8777 -05295a96fc118adfbe34fed9ab5695cb -0eb4171c9641b54f4b0e99d38ed774d1 -e2590b64c46acd99b18bf01068bda97f -f326d01ea1f9cb89d96aafdbf65dfcf7 -be1e2d4df3f16e6e724b6e8322e2e34e -b62965af8cd454ed73aa42db77882ce8 -6d806208ab89956ede6d771dd22caf33 -18f85545aab45cfaaf39f9beb9170e19 -f11caf85f97048d91c71324fa554e8cf -d7076d1ba0b16124aa157994fdb7ec3e -c16ead4fa40f9b157f7c4f0ec8afefd5 -4174a4faff345145b6fe6ff3f2aa337c -37c8cf292316d659b712e3e792776e3f -a12d05ba9afa3e112f945becb6fb8a04 -daaa4ac0bea287ae9b6df8b05f59cbc5 -449de434949a3e2b8780a87e7b179d3c -8bd26ffb64c2d28d90aefe0d30932b98 -c91758455ce161836aafe2a059dd9009 -32b016e33ecde84463dde239f1b9edb8 -ef990f1dec41193b1367ff9ff985ca67 - - -0b12f786acead1817589d807f26db930 -a287d462bc71f579eea372c586ca1e65 -93fc25faef2e4a631602c033427fd12b - - -02f561f8057e8cadb399c18635e6d799 -d635affc1ece9aea78418df8eeaa6315 -a74186274ce78332973e48f79e3c21a2 -22a4f8ef288cc8029481984e6ea2ac8b -090e9b99362f9653758ae819aff75512 -5410dd2cdb6ca3af79ee9d2dfbe90ead -418697d8893dc092be6f18415df3efbd -a1d25b7f08b331845b86c40c2ce5074f -9eb5f6e1266870f5c28554b6722a995e -7b57014d652d44232899ffaf1894e8ac -dad6705b5a32e68b107566565d958801 -772d360cc224f9125941df93cb5c39c5 -1a11cd258abcd332148d1c2c08dcac6d - - -4e9739c5d4dd7d7150093400f77e392e -9e04b2cd1b93f421705034d5206749d8 -2cc2731ed536bf38737bfc2897163b4f -05639cd1f431af20d67cbb44362109f5 -5d9b7ccd6766e9e943b206c4e288cea8 -6c2a478ad90eccc4dc58825b3955f8ea -545b1414d82cdd476e8d6676161e3103 -83d51da6ce128a36cd2e5d2dbab76ce0 -f2a97948d26385dbf048ef0cf2c525d7 -8cd10e297876e0c2d47a576dfcf61a2b -044e22c98deb3d6da5898931cee7224c -599619a98b0411989a763faf1c6ede75 -3205d55a96cffd3b1b029104458ccbfe -d255ea5b9df613deb7f8f85bc5c93241 -249a59e20ad0f29165045c375cf123ca -fb330418c81c08843a8ecc7b41911c3e -0a95085c8a3f3efcd5a63702b1bf537b -e108d4f278f102da00319763761567e8 -87204bb4bc4b2de9530578fce343498a -f28c1d91837eecde379d863333ad3da7 -1898ba53941f49ece5a58b90fdac3ebd -7353c73dcba6a3beb03620ccb68802b3 -5568084ceebffcae386fc1ec48e7ffa8 -17da2830504929531702d918d538bece -a42be7db361dd5993f28868e4a3f358f -d91a412e4582686aee55e22120f10420 -78851b6f8f660d86b00238d80980f375 -05a11b19b5162789760c9838a936df75 -74e5138e0485400d0958b5c137a8634e -17c25bcc2889cff3d487e3053feabbc9 -5f93e31d32cd99d38e3d59c80b4137ff -df979559da6c099664af3c61b83b9e14 -3b9488c55a6633217590c01acb9c0d8e -58ce4b88e87e271384435fc25c0f8144 -bb6a51f4eb6b3c8f00bfe1cdb89cd76a -485f95503bd19520f6ca020ae9f337db -1ca4e724a542dd90368a4612a878aa7a -07692372f9f22331da5ca1cc604206c4 -f5c74ffcbb82b66d295e84cb0c11b477 -68633b9a396403744b2f3e762bbf5a19 -f326d01ea1f9cb89d96aafdbf65dfcf7 -161157a60b6d31aa2eb6787c8e5b6001 -c57c2471c7a6eddd29d27909cc422e41 -4364c1e5068618c97951cfab09ca12cc -cfd54dec6e531d2713c649687eb771cf -8cc192424d2a8a3a8439cf6c9e9c866d -3122c8015a2583d254fbdead8e4fde52 -6f225dc643f02ed2509b857ca08a1695 -f6118b412225605b9bfe2d33480f8f4b -37c8cf292316d659b712e3e792776e3f -34a1486eb36f6584c549680f7c8c5b65 -b59c994938b335efe318af6e6cd7d977 -fb4a6f0b8120de5bf4484b514147bf27 -3ecfa35141eae057f996daee3608c0c8 -d7385726059a0035f5c91a2c1602f235 -06712412e2918006f5ffb08e351cf4bc -f1f34d8c0f864daa5e8ab56801027430 - - -11548ca929c3b33650644377a193fafa -d78f2f3c7cea8650f256384b115de5bd -3332e7e07f91da6313b26cb61dbca6ee -2cd37a211a31a13ce61875112cd9b50b -28f44c26afebd0f551578f04045c6496 -6230437ad4adfb173f89c5c9b1cd3301 -6f99a2ec953cb62fbd44e00f8d7f1573 -7d6b8f45303f24ad769fb402b9416bb5 -68459fc84ea935a6d7c3c01688685585 -78ac41701d68b2929c5083654857ae83 - - -b96ab3897fa257c512682880b7b78918 -8a54b70546ddfb4c37311eed7fe97f37 -5d4bc708b7463a1439b6e450ecfe14a4 -8dc2592780c57ff8e1844b9685952aad -10f30659042ecce2c07c210ac2194652 -1e3c22aa2adfc5c06708acf0e4b7d3f0 -14a61298c64c7c9be5640d0c4e4fb421 -110e015c9a8e5ca0f74c16973fcfd6e6 -fdec511a494d5027c2acfc28a9699401 -b724824ea94f4d3ab2ef94500dcfb952 -d2f5adfad0a886c9fd4f01bcd8e2b407 -4e5fa484c5e828a1850cdcc41c2e21ad -e780b269169220334ce8a881ed8df86e -8645e85dff01d97ec7a5592842fe8e9a -785ac550d923a2372210f8ec6fdde91a -be34fcb006606de6d45c9017d0e6c0d0 -6009271825117e12a5a0c602659cf797 -94d8e090abeb11d9024dcc7e3eb86871 -e131a7ffecf41104dee00ebbce281fab -b52b425ac660948cac6079e24ad6fdab -d5878227c86ff4802e669af1c7596a5f -a1b4f1a132ee1c2910d45a3ddf0b116d -46696aca52e1960099b43cd82dbbc95d -3004b16ebee23d327f659b2a7473435a -184f8b89087e7c5bf304a8fb05056c81 -907459d92ccbbbeb7cedf07b093bab8d -283d11015b1e9abf93cf98db0ac9973a -88b274f352239ce9434388ff31bcf56e -abee0268a8e107361ff47312a5e87a6d -ce77e314a51b996a81e15c9446978458 -953b6481373f49567196fa44c135b46e -c628021e320e7a63491f3bface328003 -5c2e760538e1597f18d4c7743b92dd27 -fe1811d2f86bbbc548324f42cc4ed4aa -7558a825e0490735e28cab2de8014817 -3678347d4536b92af9d398a603ec0aa9 -ac2e49c27102ae56b3deed5e8d7c4175 -44f79429dad38940b566f2f1537df733 -47ec124cb943c866b2782fc3b47ef4a6 -3a4777f67a135a1cfdf7a47069d350f0 -1b7f4ed47e2733ed7daf1f068dc5a43a -a15804da968df59a893dc273d4ab4c7e -dc01728427612699c305b8f285cd1262 -811b43fb9701e272813f4ce0f8dcdec2 -19fc6c7a0821552c6a710175261e8d91 -87286fa247ed09647335fabb2a9ea2c8 -0b44cc53b25de22d65ec652eb81f2709 -f941b0dd2760b7fbc53b3ad0e10e50d7 -8cc9786143f878d28bafc509c62ad272 -caff61b2f2d74c3b1224049158c71564 -529c0788b30ce0d497eef4017945ce2f -172256717722c6365f96fe9ec964b9b4 -b75222a8f89443a5fdd5270fd5cb15bf -8ccf673ff2d8d21f4d4b27fe023b422a -1560ee8237facda4df210cb12b9153e7 -e7f841597d7e6fc358643b5bab47094c -6ad1e01b6d442e0d1300992628e095fa - - -8204668d38a45472f4e6d12de692f2c0 -40da036c3ed6060360c70640de106608 -e79dbc779c33fba7f5c1a7a2f7b57bf8 -9d450f24216624c693008f7e5f16e7b8 -9c9c90168c862a478d6fea10cadbf68f -a471db266232d971a875494230cc7c48 -52427798b2a5dcb70d70d56d3e192716 -1d053fd20fee7157bb530d6ed8656535 -0b5a5f0f19db04cf9782504c32fde043 -bbd2e9eb5a38d949037f38c2b160f5e3 -ecfd8bb10368f489e38e4a6d70cf19f4 -14486d10d969cfb5063318a4d1fdf997 -bfdf26f7b6a89a2378f0c86830195f57 -be16e99465614871bf39a938b331739b -48f087a382b785b2b48900bf02fda7de -3833a731abeca153bdb91e6ae155a90a -98d75e356fd2b8346ddce25d95e0ae71 -e9fc552212d3dcde62ce079b3ae7da14 -690c87d366aca89d2768a17c445cb045 -791e669d26928837be4fe2ef749411f3 -0cd2d97cc04d767f61df46295f3689bf -b5685b4431db742c4d8e5eda463ac680 -36ca80ebf0280ebf1d58db67f6491dda -4cbbdb44f239d315bc124680b44e79a3 -f286f5bb77bf7a5d6a3133d47ca2def2 -4e48782ba5e3db06fe07b7a077ec5639 -62e3883c35027c39bf1e314e7c24a570 -09e9a424a7a3756529a6a9802317131b -130c00d386078dace2cf9ff36b9f5c02 -34b0430074749f12cff0ff3c6ffeb334 -819885d528aca06ddc71e73fc4f53c60 -d95092bbd49344e2a07606621b38780f -a24cf2d2bdde87993488aa5ac2311bde -058fd071b124431edbe806c875a55025 -b1383da3b366596a1c0417fc06168e06 -0a4b3147837c4b2697386b70940cd60d -6c350cab97cc78a5355817fefdde8d1f -0102a1534d2964a0ff588ae23e2effb2 -3954cfb000ac4f676ed6fc06af23dacd -984ac2a148088665cbda36e3c2d1e226 -84d22376b36901d38526d6ebe0e10281 -05be9a7471ce388b5e2e5fe2954b1424 -65e9e1b5f51015b08fd5e36ee6766fe6 -ef25f47ee67eac94eeeb0dd9b5d569fb -9f783348297844ee23cb6f1cd01a212f -89da70a234eae57c52a2c2c94993f02a -fc98abd696e8be5f5f266fc5a88e952c -ab4ecb5d3233c1e528042934ce93a740 -0c0077efd9abc2c364cf48b04bd80bba -37c8cf292316d659b712e3e792776e3f -f4cf25203748b46f4380bb892d8e2075 -088147e15c8d95216dab10bdced092d5 -76fd170989412fcfb3cc9f0019c0f184 -ea995e584eea2e034db3f28d8fd9bb6a -1b0c0949ff8e57770f7e88e433b4deb3 -75ef924e15af16ffa6eb2ccdf9d8ddf4 -7457fe1789a9f0f07205824fb97aee9d - - -a025ed1d0dcf70880fb1c0c9afc6ac1d -8c05bca341db9c1e806bf122cd6129b0 -f8f7a172a28516637112bfb05e9b0bbc -44ba92975e6660ad82e875ca2bf70c9b -443bd303b15816349244d32e532803f1 -772113b2cf9a9a23788e28aaa3616e44 -4a9dd02753c248d33d39dea3efa7acd2 -83d51da6ce128a36cd2e5d2dbab76ce0 -f2a97948d26385dbf048ef0cf2c525d7 -425da8d00f099c5e145c34080a297f90 -a4122ffd8f45e924d0008ac3b433753a -be6f11bef46d99c22eb5966366c90559 -9074eff322d7513a6589a181dfc089ec -c6596953a71008b40a07dbccc4246f00 -73a17ac88ca0270e05f2159971ea7d85 -fb330418c81c08843a8ecc7b41911c3e -42caf35eadf47ce63212b7293613c26a -901903fc1de65fc69091fd2329c420ce -f5b0214673d66b795a0b2384d50a0f6e -93f882d6f3b53b2356fcb729ac5a66b8 -1898ba53941f49ece5a58b90fdac3ebd -7353c73dcba6a3beb03620ccb68802b3 -71069986b806fc1ff7a81389411f3758 -812a612df294643f768e53dedf53d8a8 -912352c3ea040bb64208b06524d3e69f -59e6bc72bc79cb2058f3a3142ddbf65a -259c1b20b9f05320ec796e70839fc4f5 -bec38e846ba9a13225c6530b1a282c4b -c5df93c6c0e803924ce6e3768655ed6e -a8f1aa8e916a8bdc0840628322b2109d -29274ab30398ff24199850dd8f263b78 -91d7a4a1383f1b0fc2d3e378d46415fb -b1cc8152608356ba4ba7f1391d54fbaf -ca7c24aefa1e07793edac9f3ddbe80d9 -a5f494a9067158c4b81af693e44ca2f4 -12ab9dfa0dd2b8b003da7ae04c38bb2c -4c37f0937bc0bdf3829712cb5d05255c -096f70f880dc63e09b098ab89df0e483 -6178270f145f619a39ba9638617557b3 -fa985871fb4d0f74795b3c61bf129d8d -f326d01ea1f9cb89d96aafdbf65dfcf7 -b7b25caac3ac1481adcc45577b1fdb59 -0df5c94ca0fefe23e45d64cfb4e3a943 -b25fa99e7044413d193297bd3909410f -8354a1df4b6e9dcfa5e89a6c44d82e2f -c734b464a1378316c70ab63dd8a36e34 -46f4fd2960c180e57bf42a4003b95789 -d855926b2e6609fa7bce6078ee3fc9bf -d1926848c8d8c6315adce6f8ede4503a -37c8cf292316d659b712e3e792776e3f -f19eeee36029346ed958761cb617ed43 -0423f1a488a5a4b00d0d9624c1aeba96 -449de434949a3e2b8780a87e7b179d3c -e7c1d3a1b5e1cf7d3216cefaf1f2685d -0d4ee93669987ff793623dda488a0cc9 -c04c20e9e0d8940e6a34a3de26975bfc -e4fc2e43ec963c474b2f6f9ecccf3ea1 - - -4e9739c5d4dd7d7150093400f77e392e -c3e50ad0d4c93692a2810e136ada70d7 -2cc2731ed536bf38737bfc2897163b4f -ff20e35d737a171fdebff3fffe219596 -5d9b7ccd6766e9e943b206c4e288cea8 -6134c80e606fc3eeedd5bf6a39c3e77a -545b1414d82cdd476e8d6676161e3103 -83d51da6ce128a36cd2e5d2dbab76ce0 -f2a97948d26385dbf048ef0cf2c525d7 -8cd10e297876e0c2d47a576dfcf61a2b -044e22c98deb3d6da5898931cee7224c -599619a98b0411989a763faf1c6ede75 -9074eff322d7513a6589a181dfc089ec -d255ea5b9df613deb7f8f85bc5c93241 -249a59e20ad0f29165045c375cf123ca -fb330418c81c08843a8ecc7b41911c3e -0a95085c8a3f3efcd5a63702b1bf537b -33f2afb3d4f651ff3a4856891f26faa3 -d976f528676688719bb4ed9da722c798 -f28c1d91837eecde379d863333ad3da7 -1898ba53941f49ece5a58b90fdac3ebd -7353c73dcba6a3beb03620ccb68802b3 -5568084ceebffcae386fc1ec48e7ffa8 -17da2830504929531702d918d538bece -681bb6760c742ae699ed900dca34241d -d91a412e4582686aee55e22120f10420 -7b331d712e358d5793e19167ab42d4b9 -05a11b19b5162789760c9838a936df75 -74e5138e0485400d0958b5c137a8634e -ab80eb398c1cfa95b56a5b1dc2b7ce7d -5f93e31d32cd99d38e3d59c80b4137ff -df979559da6c099664af3c61b83b9e14 -3b9488c55a6633217590c01acb9c0d8e -58ce4b88e87e271384435fc25c0f8144 -bb6a51f4eb6b3c8f00bfe1cdb89cd76a -5b4aa669a151dc30f4dba6f345177d91 -92ac14a3dd5307e6bc4429f625ac3f5b -07692372f9f22331da5ca1cc604206c4 -f5c74ffcbb82b66d295e84cb0c11b477 -6448daf1b06217c7dc989bed6f3709a2 -fb5913e34a812d5fdf9e25b8ca8c9fb2 -5c421382d1ed9e5e1f86f3bea1f29cc9 -c57c2471c7a6eddd29d27909cc422e41 -34c7fde492170f80fe8e0e6434f3eb0b -bdb86969718f38f7c3ec9d78b8708f02 -8cc192424d2a8a3a8439cf6c9e9c866d -228b0316d26bdd36e56a9158eea64ef6 -59b195fcff4d3877045fee21c364d524 -f6118b412225605b9bfe2d33480f8f4b -37c8cf292316d659b712e3e792776e3f -bdb2338095a4ea340c6d023c861169c6 -b59c994938b335efe318af6e6cd7d977 -449de434949a3e2b8780a87e7b179d3c -3ecfa35141eae057f996daee3608c0c8 -d7385726059a0035f5c91a2c1602f235 -c04c20e9e0d8940e6a34a3de26975bfc -f1f34d8c0f864daa5e8ab56801027430 - - -f8a9693752fbd4548c1ac8da7c8107be -c3e50ad0d4c93692a2810e136ada70d7 -445a46a82a229836e2a48281bfaab919 -1d9a45779fc4c9ddca70d2112c570cd9 -005ba3bd0008292e2a85386ddd1fa04f -6134c80e606fc3eeedd5bf6a39c3e77a -e53cc4766956ee5ea80f16d007d510f6 -83d51da6ce128a36cd2e5d2dbab76ce0 -4ac3174e1e2b105f8a57d7cb28a3d399 -8cd10e297876e0c2d47a576dfcf61a2b -0f546518edb041564ac25ba94055b263 -8814f2d26ff511d967f395d57acd5685 -50168662e94e4db72ff2ed9dffcc4115 -3a925c7039a115c8e6ef0d90f31dff5f -a1da5aff187e7e5b5f81bb9c2d661d5b -7c00b3d8a22adb8465d426fe5761fa35 -0a95085c8a3f3efcd5a63702b1bf537b -33f2afb3d4f651ff3a4856891f26faa3 -d976f528676688719bb4ed9da722c798 -d78ac4ef6dde0ad5fe7658f9d1ce627d -1898ba53941f49ece5a58b90fdac3ebd -4a8c0a31962422325855a971a1c7710c -5568084ceebffcae386fc1ec48e7ffa8 -13f83052a3d8a7d4436fb7aaeb7913cf -8b01757f2b296289c0f7db30ec11d96f -59862f5cdca62471f71fcab151781df3 -1e741510c30fa2894a498d766b788feb -9c64532d564956b7d3d3a257d242b3db -b23badd5a8357651688c3f6df1316769 -8b1c537db8ab0fe4c3f8927b2fb0cb9e -54d6d201342c97b3711f80827d656538 -9fbe301bd2b07340be501d7484824647 -a6c44b297a558b313b308619d0156073 -119f3dc07f5def810e5ef2db590bc1b3 -02f8d83c5adfb6d65ebf8b68fca9b672 -218c313a6e7da245be69de66b962f49e -cd47d93ba321bc08b38a92a265f6b3b0 -2ed2a2b1bf98711b45ff827f312a4e7c -60612a3459c02626f55f8d6d0d3402a2 -2cd7d3f7497c93d075b5ccb792446c39 -7757d7cb0a69e68eb61016da1eb117e5 -5c421382d1ed9e5e1f86f3bea1f29cc9 -dcbe961b1ff65aa4f20d45fedf7f134e -f533529636168b23109deace45243288 -5a95f66a1bae23db97588196ad92077a -8cc192424d2a8a3a8439cf6c9e9c866d -e86011217ac83cd8b8952eba36da554f -291adbc7d79c325be982f0c0d155a12d -037be0b259ed6f2c8c88156f1287a353 -03cb1e67010459bfa029a017a1772908 -b59c994938b335efe318af6e6cd7d977 -b898ceb0904d8567be7de10c55a0729f -66e0502fccb30a28be66dd050968f0b2 -ac055953468913e48cf4428070d1db18 -1483402c0b4004bb0547e572f2c6837d -6d68e6d9d94c46be0cc3db9e41e2f99d - - -4e9739c5d4dd7d7150093400f77e392e -9e04b2cd1b93f421705034d5206749d8 -2cc2731ed536bf38737bfc2897163b4f -ff20e35d737a171fdebff3fffe219596 -5d9b7ccd6766e9e943b206c4e288cea8 -6134c80e606fc3eeedd5bf6a39c3e77a -545b1414d82cdd476e8d6676161e3103 -83d51da6ce128a36cd2e5d2dbab76ce0 -f2a97948d26385dbf048ef0cf2c525d7 -8cd10e297876e0c2d47a576dfcf61a2b -044e22c98deb3d6da5898931cee7224c -599619a98b0411989a763faf1c6ede75 -9074eff322d7513a6589a181dfc089ec -d255ea5b9df613deb7f8f85bc5c93241 -249a59e20ad0f29165045c375cf123ca -fb330418c81c08843a8ecc7b41911c3e -0a95085c8a3f3efcd5a63702b1bf537b -33f2afb3d4f651ff3a4856891f26faa3 -87204bb4bc4b2de9530578fce343498a -f28c1d91837eecde379d863333ad3da7 -1898ba53941f49ece5a58b90fdac3ebd -7353c73dcba6a3beb03620ccb68802b3 -5568084ceebffcae386fc1ec48e7ffa8 -17da2830504929531702d918d538bece -a42be7db361dd5993f28868e4a3f358f -d91a412e4582686aee55e22120f10420 -7b331d712e358d5793e19167ab42d4b9 -05a11b19b5162789760c9838a936df75 -74e5138e0485400d0958b5c137a8634e -ab80eb398c1cfa95b56a5b1dc2b7ce7d -5f93e31d32cd99d38e3d59c80b4137ff -df979559da6c099664af3c61b83b9e14 -3b9488c55a6633217590c01acb9c0d8e -58ce4b88e87e271384435fc25c0f8144 -bb6a51f4eb6b3c8f00bfe1cdb89cd76a -5b4aa669a151dc30f4dba6f345177d91 -1ca4e724a542dd90368a4612a878aa7a -07692372f9f22331da5ca1cc604206c4 -f5c74ffcbb82b66d295e84cb0c11b477 -68633b9a396403744b2f3e762bbf5a19 -f326d01ea1f9cb89d96aafdbf65dfcf7 -5c421382d1ed9e5e1f86f3bea1f29cc9 -c57c2471c7a6eddd29d27909cc422e41 -4364c1e5068618c97951cfab09ca12cc -3bb50d344204ac6115c3799e8e7d51ca -0ad67108567f99662f7dabc9585331da -3122c8015a2583d254fbdead8e4fde52 -6f225dc643f02ed2509b857ca08a1695 -f6118b412225605b9bfe2d33480f8f4b -37c8cf292316d659b712e3e792776e3f -bdb2338095a4ea340c6d023c861169c6 -b59c994938b335efe318af6e6cd7d977 -449de434949a3e2b8780a87e7b179d3c -3ecfa35141eae057f996daee3608c0c8 -d7385726059a0035f5c91a2c1602f235 -c04c20e9e0d8940e6a34a3de26975bfc -f1f34d8c0f864daa5e8ab56801027430 - - -f58703fa42071506f754084771533803 -4f3dd930710082c606d630d8399cb483 -fe0cac1dcd26398b7af88d0463c11bf0 -fca2cbd48c60d97608b0bd8dc7f72ffe -ef412501addaf9bc480e7de2bfb2d445 -85241cbe975bbd8c97ddcdd93d5649c2 -24a463840569e7c31797c226dbca70d8 -83d51da6ce128a36cd2e5d2dbab76ce0 -25e1ba7efdf7ca4514b81e86f1b0434e -6830bc73f64c593602b0621587983a53 -f45ee6f7e075dc07091427a65d80bc3d -de802721fcfbac64dba34c4e57db1d77 -9074eff322d7513a6589a181dfc089ec -f224691cb7bcc2759a3892662c9db80e -7993356c4b4d0e06e33e6aae2d86d338 -fb330418c81c08843a8ecc7b41911c3e -5d07d2a675f1aee608bafb069211de4d -004a58ead0e46cc37a0012f34830d7e9 -63a1a0c3dc2beff496d15938130fbc1e -974a5c0861d9dbc8812376eb626d1252 -2364fb2d06a0eb002e0053bbd30989b9 -1b07213c7405612a72c82628826d7d5b -be187e899e7a47ffd467e9ce35b8f4cc -17da2830504929531702d918d538bece -6b2bd775e06aa7cbd2f7a8848f5aba67 -992fdd617035a1127aba5caa02e9bf7b -42e733a579888b558a3e2469456ccbc2 -6421a8b039e088359548c024a50070b9 -e54187fd82fe00c9c2271ba19d36c01c -1900a6121679c88999a0b9d2fdfcfd8a -5f93e31d32cd99d38e3d59c80b4137ff -ecbbb1603ab59fbe960202b3470413c5 -767dd7ba08cd361151b6d8390298a342 -59d9c7c8cf2b1a6d3429e1ca7ff1a031 -65c7492b9042f2489146986293c84674 -e2bea3db3349c137767eab56bb706958 -aa04bdeb89f5b4ddbd80395ebe09c29a -7560df62010de03bd1597143b8909d9c -501787b615deed8af323325510e4479c -2bb94b0f66048dd210f0b149544f69a3 -999992f3bf87ecc74a951085c24ab54c -70dc7c7ae05155db57ef2978e8c065c2 -967f6c4724c7c5a3807ac81fd7d42d57 -c5e22bb5166a4b69d304414f519b359a -1eea27d8dc099de59fbd653e5bac258f -3bdff0ea3ff709e917be270c3e96a1e9 -c0ce2218241f69e739b177fd5c140033 -9768913e4af639ec2118c264a5ca3583 -0cb72b50f31e68c155adeb9c292092a9 -37c8cf292316d659b712e3e792776e3f -42ae9991ee0b7209a3795196ab36c475 -0309f2f09248f3db096f6714de6a5e77 -1130ef43c1a7437b844db1579e3c434f -9544b3406665c8454ca7ab39e2a6393a -ccd751e3f9c583aae56b1eefc3bafbbb -0545a8fe6b0d4712665045332c5a73fd -e77cfae1b2c9124ddd567cc6f0bcd7a9 - - -d04237165096c4ab4aae777ac08a63c1 -d644237a73e898a62393491905b4ed87 -857cfdee8d1a70d9357f829ff7465ec3 -b39c038e6e8b0628c90d5114271dc50e -8b1af0ee9bd757f406a9085e52cb3e1a -18381fbfd3da6eb62195dd3d7c2025b5 -fab0071a1a02bdff2c962825b43c2dfd -f254234f7743f533f091e707ae5c6e5a -93d2324320ddf2609d33828f0070e552 -07dba3c5fa878727518a110582690996 -169e53e9bb18aead3d080bed0fb9a311 -721f864f34ed9957a1da79a505146c16 -f03b0dcf6c6febaec231650b079d2f69 -0dcf4ac06cd149d2c5828b8563cbe01b -436545df3d1465a5a48adb9868ac07a4 -d0e4982b7bc6a1cd62b339dd4edef863 -a946d614786a829d9964c0e27d143e0c - - -08acb8a8ca3a1dd92759d583424913af -525957b57a0fc667d697fe991b9430d1 -20bc5f32b32f8e0916ce1a5457227126 -86a67dc27f4eab8f63ed174e5c3b5d6b -7c997211d0f9484e255a5c00ee139c30 -ccce0cde4bf1a228f603f64e14dfd505 -741a1338d8cd1eedcaa67bb2a3988c56 -f698b9faa688684b6932c41c48845c65 -28f44c26afebd0f551578f04045c6496 -6230437ad4adfb173f89c5c9b1cd3301 -73bfa19aad8a9d2f4456d5c6e05bc7aa -c586c55023f5ff1cd37e7bf4795ac916 -7d6b8f45303f24ad769fb402b9416bb5 -9ed2bf9282af9c376568885348569e87 - - -b9f82ae7cb411ea9546ce513e57af1f2 -61e6b281614e6fbf49a582c4c3814561 -e87c1b421a5ebd90d2c4489335243122 -52f55c471841f57fc90e8cec05cff235 -770e2ab7f25b3e472aa802e6c28ec618 -1abdc7bdc807167558b363ad209cde6b -52617af5059503ff1f2e342f6f64b729 -9a13db56e8d33a3225e5a034d45e1fa3 -da22bb2f6d31d3db27afa7f16d191297 -74774c6dd9b08148c7012fad3fc0c67f -27a8a786b2726e4cccebef3cbcc38376 -784e8b81afaab9108514472162532414 -826f390e791a08be2b7fb6bfe4df179b -dc464f0cc88ec03965837243ebaca8cc -c2d7742f87130bde6c3b91332f04c837 - - -a2319b6bafdc046d8782498e721068df -76391c0def140fedc6931ffbf18ab295 -4c6700b866e64fb8761e87c807f31801 -2f5b0a47cdfe19b77022593d65a9ccb8 -a75be484704fc95dcd1bd88579cdc6ac -85ba8085df5fa8598b2b64e97db1f12c -93f3338fc21f2da47f79c1446f3f5da0 -9a61b8f01d920877ac43574d7a89d139 -0a27701667ce4d505e2ddbd6a16b8cc5 -8361914c0ee551857cc25cc0fdf97fe9 -d0aab202d384152857a67a5910d74da1 -7dd6c7b2a261d29947a77e876c528bb7 -b99ad87df98f3a06424fbd9ebd338e80 -5e43b0e94632b0f67f274968d54e1066 -79176c1d8bb3143c78f0830dd414f606 -cc5a2dc3e5de619ff865e9d7c81e128a -fe7ed9ea8c32d40babb3bb89739b8880 -cf47d01f997d687b8a1bc38e0cb6485b -31f372c93f03315c680f0ccf7d1df897 -b9731741850079b9e831f8a6890ec89b -254cc450c35f98ddf34271255f4eb6d9 -22ec38a9e1c8d0a8ade2b378df4dfd5e -c679cf1cb4b8e13fa28a98eefa89e436 -caaf489a26511afefc97a0624f47f2e0 -e296aa7dae0e0d5d91a2a7cab148a042 -1c9f2e419e96a7abf36d46c2cde71e7a -e0e6e54c2cb89b008ee551ee9bd97804 -24359d62453ef0883ebce7a118371c6a -7512bb4a63889927a99524df2da76f7d -9cf7b617ca05a4066e7e0d5d02db6512 -bfdffc1cf6e42979f52384d3125b72ad -5136e39159be1875f8f6ba4489500d09 -05cf692312e366e5f262d956d0c11eca -70cd971784454b3e119e1d0e90d1de8a -24717a755baaf426eed7c691330616a4 -45dbd2119c3d6fc009c327ef5510af98 -c7e70b20d22458e1c7625cde28fd7c3a -8847fd5eb933c577a1a58d65274df4fc -26d9830c8d765010486530413e4827e6 -ce9447e5187596bbbc50d0906cac35fb -c35de5bd5cec0c5e363104a2e2e4bef7 -7c452999b4237bc2856f5c3119ffed49 -9af1f73d600a2a75987f983e3cfa6d1d -afecc22449ba878a459caa37bef63609 -21a333e51f000e1ff0aaeefc9312caf5 -17835e9b0f75e2f6dcc0345f888cdf4b -5d8da5928c310fe821026ff6eb52477f -50aa8753f776052cdf34c558afff98e3 -a33b1202d3e3a42aedb57715dc2adc42 -8d5faf8e36b5e4b4da158ff2d6bd97e9 -208be53574c8852b95a50db6c755b89e -578df63bdcf934610c0bbdb4f1c3f94c -20c427de0090c8e9e4f9ac9682e7f120 -737511d96be3c80851cdd4018b27fd21 -138735e3488e4289f0efaca31ebd99fb -9860471a626d8cb68c4f882a84bc7bf3 -275b46de50035e1d052d6f2798871d0f -3afb85eee792fc054a42df621767b520 - - -cad8ddff1d4ce01b74a4c89b39950974 -7cec430ac1104bd3b19e5890319c7fa9 -fdafaf7353ac65d8c09de8af2a8f3d02 -c1381bf5be0a69e660a8520b87db5f21 -f29476a4ccd176b6dcb06054bd905662 -70ce0f35d14c6abfeaa210d3d1be0036 -38e0e2f17c3b5559b77b0f2406a3be1d -83d51da6ce128a36cd2e5d2dbab76ce0 -f2a97948d26385dbf048ef0cf2c525d7 -6b0bd777843664a8aa07dc3ff7c4e056 -af10bf1c20c1f623bbc427dffcf8d85d -5d81b77669a8e33aedfb22e0a89257f3 -9074eff322d7513a6589a181dfc089ec -6c946d22da24cf980129bca6e8dd85ed -0c36ee899709c26ef7a38003fa609e23 -fb330418c81c08843a8ecc7b41911c3e -743e2013f8b645af5a9affaaba23e2e7 -c89a0952620429ffc07402cf29cb6343 -db6c98d5d67b4033e5b2c0669a0defcb -f7c72dc1b9159c90e8985a0b5023367f -1898ba53941f49ece5a58b90fdac3ebd -7353c73dcba6a3beb03620ccb68802b3 -98e462f88ab14c1a545de484f1b66166 -72ccc97c1267b7432a5a34838c729dbd -8568e4d03cdcc1874f6f39e21f994007 -70b002fd1a16e5e9f19e1ca9c51797ba -a23db72fe18e54fba427eb4e66257e76 -cc12ebdf72077be80525d64e6a7ed5ec -7b3826dc0f092040df5f5356d8ff8e09 -9193f8cbd4f4442768a02e8c54ca1fd2 -c101b90fd10577eafb85a1e9adb6c0a5 -8c3a12722573cf513d5435feb7f71adf -237f3ad73e2160a8b54aaf96262ab5c0 -d9933cfcb7f8c7ccbc4bd7f0042f1e46 -0fc0ed7a2924a23996079448796c537e -5940b1e0d9e4ef0693e6f862f1fca63c -976e6f39654ffd979a1633da2107011e -7e73be5f5ef1f54d09eae743625e6e72 -23688a6549a080e528796537be16b9fc -2b39e01ef2d55c7b3a24671fcd570e59 -0b5290b5856769452f96d8557ae4af4f -135327918b1b40a9d85e0e11c22191a6 -4de88dd01e059e9f95fa2110ae7f8009 -c5cefe593185d53e4916a9ebb1db00e4 -d108704ee03b60d892f36b81181c0ff9 -eed8a78914dc69097046ef05aaefbc39 -1f1976a8a42bad235f1ed009fbc606ff -4404ecf29a07974f4cf843216d86641c -493c788205c2f5743e9ba7d6e084f9c8 -37c8cf292316d659b712e3e792776e3f -1c6a361487dcc57e627543fb69cf58b1 -37a149141ae55f1f1ec1f84529379e6a -d0739d358ed00196d99144e88cdd7f7a -3e1b068f6c8c349c1deff0e88c8ca80a -0e72f1e88211f93ee64eebbfe1564d1d -9d02a0c2396beed8f487a5dba939317d -1e261eaa004ceeffa908ff6569fc2119 - - -ba5ce4b6a48b32acfc7b42b719836cc8 -8a6466c371e807254cad642d6f3d50b5 -cf97318c23bd26d18d237b60384ddc66 - - -e605ad7b957a19d8fe36c93fc33dccee -5d320d584645765ff1a2708f271845f8 -2660b72b66426a56722e0907c756ae68 -cdc6878c246cbc6b8f17ab2411979043 -e83f4473fff2b4082532ad331f1b1f7b -a8b512f6071708646d9a300e34959efb -bbd623fc654d0934ff37ed00c28de1a8 -e25797bc9974d0b299076b48287420c6 -771dd023b76d580a4e7da4a064ba3d0f -fc033883d6d13c24d580e557ef1717ec -ca07f1bf74a5f4a2b92039d15a99c224 -d08b34780ab4980ce0bb45d9130b6a7b -151bf9e4c6174b12870e484fd6118b4e -bf6cb3413093d75713ac70cf41034423 -60c087c4745633837a1cf463913f9a56 -413e0555429b0e7292bedd1e52f4600c -233aed69397182ef49de87742d88bedf -4d29fd256a903cb9fb12b7795385a7be -ef3b8f2d379827209d56fbacb1dd0292 -59467fe98c12db57d65e60d1621c95cc -ba1cf48d1f6d031d8adf51752f179275 -3646fd310e96bcd7ad15253c92d3d083 -30d2ebfac928b67212840b7560e43f0c -5a71ae000c909a6928a183bb4a2d941e -db53803710393c0486f2e99c7029bfca -390875fe099502f31e29c8772af30ef1 -4dc2ed86e4551a07e4ff21e17d1a29aa -65a69690e67238c7a65cdae57faaf825 -415260e3759dc4f23f9926b7ba5b64b2 -ba37223ce257f3662e2be96311962fce -0eff879e0e50e8ce01972f38551cf1ea -6a52787b07ef94e8737e8d822bb0ecf1 -f27618bda8ad19e01c07c6f3db26d92b -7e3428d77f981288b2a3174809ec7ea4 -d09bc0973279364ed47cdefa6a79c155 -8f8a364b8d31313a165b00cba801409b -4663e58b350137c5a7d311f08ab90d09 -794c2d9924dbe3f2fe7679c7069eb5c8 -11af8e473e963199d9566b7b376b3050 -622fe99e2e633f0d3e1b6184ff06b958 -3f924c148e0c0f512570e1a1c65d81bf -bfb6d02a7e828b4654cfc5cc18aa866d -2d2a97a666b366adedfcae6b76159247 -6802765991e1038ff058fe43a58ac024 -e829de6a10c74866f41c0fd415c1edae -4d96011de54501b073ca0dc8543778ff -0e1a650c3666abf86528bfd3562aa763 -14497fd6edd5c6ff712f50e79dfc66d5 -fbcc7e7e674e5af587e6dcbf42edfd1b -c810c446eca7956f538556ac7ff10caa -828d5c7956b6e0c17755342e38163ecb -fcd6047c841ab6eb2f72f9614b28d6df -062c2a7a4996394f673ca9d98ef3bf7f -05360e7849dce6f236187fadbeaae20f -42432835fda1f793609eaca22b834d19 -ad6aac2b4e1f77a3b57113392fe5c869 -69e863de65c7c11b4d4359dd33933737 - - -a287d462bc71f579eea372c586ca1e65 -9f5ba8d00d619d312d40c07f38b35c6e - - -503179eef2a75e444e6ed540ab5816af -3a63b5ca883378d2e5b3ffc0bd8367ba -ab59d61bbffe26c3fdf53d3c6b5b05d9 -cf2e582534edc6a59ece7d22c939c00c -28f44c26afebd0f551578f04045c6496 -6230437ad4adfb173f89c5c9b1cd3301 -378e17fcf077672377ccbeef64dad311 -b2ee3e61485fdeb685fc7f73bf802b23 -7d6b8f45303f24ad769fb402b9416bb5 -db59948d8443a30f976ef562646c108e - - -d9f9fec3917d6b53367053b70488dde9 -ac16b396be4bae4e72ddb087f590c2e2 -7634fa5841088e340e78dd026a207001 -57092700792f07b4546c0943ebe8a1c4 -53f1a80837a5b81364f828a9e284f4e2 -93da2c233743613b21beb6dd691197ce -f0bdb95e6126f2d5e550583f455f55d9 -83d51da6ce128a36cd2e5d2dbab76ce0 -31a8687a8d2cbf8992c607e1f21e0a7d -eef423b5c9410bec537cf0b8eaf84d33 -bf78ef45d31ebca84115e960baf244e7 -adf891c20d96e4184023d04552078088 -99d11807fc3d60ef8532b0dcb0e7566b -ede3fa28a1d3a5680ef13c9e227b42ba -18783aee3a3acd1e542de7cec9e576eb -c20563eb5ab144e4caac3d422a3f7a4c -9ed840b9544e41d2db4391c20dccd674 -eebc91d4fab1259c05415ed82cd19879 -007da2b3bc701f7be0efb50a99d72e98 -4086f5653c691655e505bc0fc5cc6481 -97cf9622d28bae2a510eda4aecbe0319 -d3988891f5f080e84de28bbfde083477 -508ba851c0f230bfaa3c32b813d1fcd8 -979ec7bc5aa8684ffd8ff718bdeca9b0 -9f887891e44e6ccd4160a5863c49cc26 -9ef6d1074b9e0752a3622a84e8905b34 -04c89392f04467d77eb2a2517bf57322 -620efc55eb30835ab25b36b1f23c7290 -fbeea858e27c8b3de5a1c75afcc9c9bc -771c64d563aefc79aa6989565a94920f -1099de7c892403a38bcb3f388002b114 -a9bd45c8e4c6e67f48f99a56ef46b676 -1bbced61a157b36189a79c706f547db8 -60dcaaf4d25545cc93de4a34c5958b25 -be156233bfbb3efe91d096016210b107 -bf0ffdd73c0e91aad6aa4e4b86f2f4a0 -0bd9d42b67a73a9b4df222e4245a5fcc -6ecb7391c7998ccbeca8f1209166c7e7 -090ad581e9e8c566eb52aaa42dc8fb72 -3caeaa1071c0c238662aa44dd4e6ba7b -df6baaf86ed9f3d0e4b94c391d77f33f -ca74ee128540b79d6796998342fc7312 -a33b50027d330ad44adcd5e9e827bd42 -309cca9ee7dd88c3fd4f5442e19dea63 -4bb861c191c93953e11e510fc40536c8 -677f664243cf071749383041adec0414 -a14311660639a521042796c468a23b1d -17645bfcf4473c061cffa6613cc4626f -c85233e4f43ab8c971ffb9282bc4c4d3 -ceba8c6ff078ab8eb79134c5fbdf1ecf -1cbabb1cf5ee731c28753634cc3dc7c6 -04551426a0aa4ed507140ac63f2e612a -182eb0be249cd128f6aa5be40849afc0 -defbcdd0247cab8d6f14fa0ae50220de -936cad9093a2d6bced1c9bdd5a8c8f9a -762207d326766599a5862e6f616ee67b -2a02d65f7ee53f1a006212dd415343c4 - - -5dd7d20f01960b03734721e766ba8100 -dc2cd95b6531d5b5cc7d52251523506a -57282ab3ba26185cd568d1838e0ab8f3 -d5f0a740213ba25091cf3f1cc4905229 -826aba4abd3429ff665409aebda73e5e -ba85b46a82d3f8c4955e4043245e961a -a094115816a8df0c006766c4000861c6 -3e5ce3b248f7dda5c1eb88b75a642f5f -25088723418dcc167b4665c455714951 -c709b8fa6c5b39830e4e04919b52e4e9 -73007a2ccf83a6a27aee949e342a7345 -b05c8370bfbe8bc89c37c083624b5dff -910620b9e594d851f1f8a1f286890aec -601f004f8adb4995ee968e7a3c01b5df -006f9f9a3aee411c145e072f21dea29d -6b93db41124ee6e53e738d483b6f87ad -7f8510d9f8d1ddce0364899ac4508960 -fe4355e5361957737c127212b9ab7777 -3509f62c9752bbac4f9bde2df2c7c8f0 -62e75f5e1fb98278a1126f706f0738be -20422b3e39bd1f7a977afcc1b14f3103 -0a0f23a2b23ab6686de48bbba96bc1ce -27883e43e8af16b177867e0b22809805 -d7054e46baeb846c67f554fbaded072a -3aeb0bb955d966af8406506605547e1c -e7ac3efa7156fac7b187b4e2d3aa6b32 -07fa6f601297cb41a1a6668d8a4137c1 -90c202b94dcd09173f067e8bf5164b77 -4b3416e5ad27f1623f5c9222cf93f491 -8b2e7f4dd5a2e5d494f167f6d0b38cc6 -6f11fdfa4b04669635edc07ca6efeca4 -48a83412d06860f170a73a68d6d1d607 -5c3ad5663f3d6527148247ff7312b385 -acca800c8cdc980d7fdccc5e9faf3e56 -4f54e2cff46f1c74c68cf63780efb881 -ea89357f6a833ce27bdaa3c633b73559 -838ea08d95f65f9a06957a7d066f0891 -925e7c28144a75b7e0fbc57715f523f8 -b9e738744ff3a33a47ae67f529eead70 -1db9e49d446f770d60dd8d133b654b4c -4941939fc3ea3906cfe30989e3c07431 -f804018f508887af815f81d054905620 -6e9ac5f9954ea167f40c686de9be6b7b -562889c108c03eb1b52e7c4819b3b125 -0573bdbe1c4fa3214e77435e3bc64f9e -285145b8adf6d1d7e53a1c102b25c177 -673f3e0c4062e13cdef27b581fb66461 -d74248250355b90443c5340490731dcf -cccf582b304132fe13245e9565ecdf91 -c554a1d2923d04978f3fe5cd245bba9a -e4f036b504ab352e3bf58a912cea24bc -5ca61a0d6b95a636b2949ae460e1d05c -e0f4c93906c140661ee859581b1a168f -feb14dfc2c998cee54ba6247bb784862 -48ec52231c3493ab0344cba74e220a61 -d8c806886f45ef4647f2dbd94e81a84a -e17ab7d7f81ddef4dc5e5ff071a5152c - - -8e7647cbe7536c0a885439de89bf2d16 -9f5ba8d00d619d312d40c07f38b35c6e - - -b2af4183c35c8368957a7e64377cc57f -2da9b931d17ade2a435827c23455e872 -54f046768f3455e3fb35867c5b0f1ed7 -579b992f766daae40b1605aeaadf619e -08e9fc5f52a0c53994887f92e1fcc44a -8bcd04bae3ad9c4f6d9643f29e9b498e -c7888707a258ca1950680b39e80cd6eb -83d51da6ce128a36cd2e5d2dbab76ce0 -f2a97948d26385dbf048ef0cf2c525d7 -cd8e0a63a6201e157c9382e9ed179a09 -0c2770f61da58d89d7a3e470abcbde21 -56f667c49490cffec8ff2af43be01505 -9074eff322d7513a6589a181dfc089ec -23b458105b635bbae85e8543b714f466 -ba86eb94b183aef4f2799ca2634ef9db -fb330418c81c08843a8ecc7b41911c3e -c27d3f95f804e12715a63ad998966bfe -00031f18fd4104d1b3e39b63c3d6dc2e -79089255158765aeec5fcef88335c136 -04b23547bf3a6201101e44f05cddb03b -1898ba53941f49ece5a58b90fdac3ebd -7353c73dcba6a3beb03620ccb68802b3 -2cd9e20c479aa18f908135af201a395d -c949765e7e8fc39653e1d97d91d47b01 -7b38146af31c9a2d81c95b41efd3855a -8eb7f101d38e1a354b316641fe4ad6e7 -a8be8c5ca25dd947988ca9303c489275 -5168ede7bbba74044a5a8745af74676e -eddd90e362600b18430210de2678e89f -d8c0da3df4be8cf922d5ef2432d44c44 -19e47714f4bbb927bde7107edc730d9f -09fcf901f0bc76651c15015c36971ba6 -54796b8197ef6dfca9f7d998219c18a3 -20be3b587e448c9e895c857eab0e43b0 -af01e7f97733e4cc9f43563044dfa05d -ee8a076945ed7cb442619baa9be2442f -15587334eaa9a54668859526ef2a173d -ae0b2989e0a8a56c8b4a3b9a77429586 -87fc4e5a3fa058627fed5ec8543bd51b -5c3fca1a0fe9b4eb6ffe3c9d9f8f7062 -f326d01ea1f9cb89d96aafdbf65dfcf7 -9fe1ac554c7c1de5066b3d7b81f22639 -06d2f80c85c95fe57a57f846f411bae6 -6ca627368273e87b0d8e15e7545a160b -593da56badfaf10ce8795be74ed1ff79 -2be4d4a4c067b0e7d6abb9364ac01a7f -64d8c175fbdf22de3a58f0fe7a5d568d -64cbf57e30411b123cad22aecdec8857 -d891e2b01301a0a48b054d06ec3fc777 -37c8cf292316d659b712e3e792776e3f -b98b610f0ade06b2961c31ff32f6a5a0 -42f04c0dcc5624cf030f70eb6ac1380e -449de434949a3e2b8780a87e7b179d3c -e0ba63b632488657acea03751b852a64 -c8ab1ce70a23df70ca4f14487cf22f69 -28e1b5322211ded0107896817fe3011f -aae9d37af7193f531dd6b5ad8adadd3f - - -389aace5ef7e4ff0b68a58638c29bd20 -b62f02efdf9ac0a86c18a81908c92501 -eab69fb2035665be0d1a792c15829bec -831d40cba1c92e8bd28c98c34ce247b9 -804ed0670b3482332fc7410c05f2f835 -942ccaf3d1c8683ed112385b9b7cc2f6 -4692462d58a2fd80d42a987c7ea8aee2 -d90e588833456a9940a42f86e8542454 -d52c7d2657535ea3b294a12cabdf39f5 -9a0d9dd121a0bccb33e4928ea6f5c04b -5adb21f679d4fcb748ca9c7ca58893ab -f2aff6a51a5f3b1e5070d8296c0461bf -9582f4b3d033986832619b97359d8201 -3da38f4ea86ed7257ddd3008e847ca93 -133dc348a86a495c2938ed78de122070 -123a86fb0a51a6eb103794ccb2067ccd -410f30b698885f34c74e908963581a3f -c632a366dcaa89159c561a5339552432 -2eda9af82d13ef3affd1c4942fd3472f -f5bdf1242284d362828647ebd96dfba2 -765bb7cd6ac5f4a20b68e8027c9b3885 -f8f96ff7d44cbfc3936eb112c11a2462 -df070d5cf97903c24e69d1b203cd6131 -c8d0d57fd5a8a90d3dfff59f1ff9c8ee -3e3f45be57bcb65cafc6165966deafcf -5fc61c1ea6a87f56d1e825e990ac0c3d -1c59494edcce7fa08fd90722764d58b8 -fca9396ebf7b2d75dba9615adf461163 -b079e3a29f77815a5b9173c2feabb557 -7ab6aba718d40a2d6a60c8afcff7b082 -02d605d8edf28de0d16ea863656a65db -371a05c7fd519e92e711b412705409ae -0ca244d08e809687c9f7e79e279a84fc -c417682e9f6d01290365f42b78edc704 -334a5d89c989883df00d10b86b384f9e -9b1fb82ce3b0aca36928900f127917af -e7a5b910b574a29bc09a1396d1567d38 -a6cb6f452563d756b01b256916a59348 -d91fc3113104d8ba67c51b2476661514 -de4fc74e022f46aaf85ea0ffbb360a25 -540b636ced7493d4b7ead20e7c43962e -8ae01631961eb7a276be73a9051fd502 -0d9a2bb9d65f21b755512afff479d8bc -9a06edef2a49690033289089d6cd9b07 -7960432eec8021e35327245eefc4fcb6 -13c5ddf75492c68962c91afab763ab5d -ab399d53ef38c91f15f5b8401f1919b2 -ced9fbcf9c28efff2dd84d3b0de4f469 -6cc343a1434a7c1ea38a90ca2f9a7c30 -414e0494ccd20f84c7fe6e6a1717a9d3 -5439979a35ceec0a2e4a491615e3b89f -12a988c1312f99a6f713317bc02cb1aa -9b0594e3a334ebd57337950e1374b48e -3260650c0ae93ef2b410b2c4d71511c2 -ea971260dafded2f5fe7aeb3f5ef5d26 -30efed0e9ff5b5555b46115180371c5c -61d7d9b8502d45fb6dae1a0889effd14 - - -40451a6173526794176acb864c2fc4a0 -3262db34410c13ae4d777e263d779217 -31d65a4ce3cf788da72de88f7a6b2d06 -05ae9f00f719f3aaef5bec5bd86853be -4dc3511b315c7d298a44c38ce7af2126 -28d327e71731c909c076b309ec901332 -256de69b0185b8ac1e1164f52be30df4 -7083dd601a0dd21afa5d5ffc09440d4a -5a302a8547e9d98cab90f51dc839a878 -151c5afe182c4e64644b1489449515a9 -78d057e8e8be68913e0cf967773afc71 -f5c8597db76285b1ade05d7d6bef6955 -94fecf363679c8ee6595eb087106921f -d4adc458cbbf4ae1ae05b81bc08dc2d4 -cd56da9abe9272e55a18e1ff59dd4b25 -7a6572951716b3e4ebee8fe54ffc4023 -fc70bbf4fa6b1fa0bbb0335f779570b9 -a7181cacaf1235aefbc2b3aebf8047dd -f5f165bb15c6391fc12ebac3e0a0f3e6 -8ee2efd2f7aa53ba65adea0a1946030a -40f20ba0e389d91edb8b29b71da6c2b2 -7508982db7d5e9e5c7fec3f096de32b0 -08209ad0a5c53c953fa64bcb29dacf90 -a083abb5e95590fe1cd60565bbadbfce -769fa149d74c5645c53a89575a1cea0b -dc02836368ba0678cfc7289e18edc4f3 -ee618e253aedfa719a95d72dc404842d -0c4ca601c83dcfc8d0f4f45dc773e2f7 -012b10e345bcdc9dc702a284684fb2b7 -e89ff63b9c6b27b12455800068bee19c -10c2dcc555137e38039193ccedfc0cd3 -bb194e9b127b46bb2271d19ed84603d3 -f54ac1724115231e8ade619a8782e374 -b1432edb772d35f2950db364b6154bc8 -95eb96950c687de257c61cc86bffd485 -548bc532286b35f7a6ffee2a2801502a -199dcc4ae427c0d0e5fbde6c0d2d2f99 -1be19aee93ff0725138722e0b534e207 -df05fb48ea5f4eaf82df101331b39e84 -8c8991fdd1f8a737640549006175fdce -db71e7656127c95fb902fc19efa94945 -28eabc15dba99547f5f302a46df90cc9 -b19954c856288b7fba6053c64471aebe -d1581462a134051a2b06e3a3e33f0f32 -c76b5db17f8f117cfa0a3b045375090c -a475fb087b707ca8fa0d87a0a7e38dbd -7c8a83bee9be22e875c81d9fd80097f5 -5146388b914ad2a67ff419d124e12748 -b8c18f933445fd71ce16eebb15efa13e -c52a3fd956687b01a7767977926a155d -148af0f1428d264b2c1b5bb22da8708b -8f2a67e23c71638099040fdc6062609a -739dcbdb1af7be20fde77fdb159f53a3 -9a001cf479a5f9de7ecc25311cc65302 -056b4d4acab5eaf8f5b5cf2c568b1bcf -cb67a68604047b11312538d9a75423a1 -87eae3bfbea127d8e90970cf3fe8a9a1 - - -4cc9580e715a23e03ebd5d0d02f98ba1 -2495aaa5b99df2676b6409c322d2d2ef -dc3e7510d95a4e41c33aaea7347f7cf2 -32ac2d68b9657dd18e2b73929e5b9821 -c4ee7398d07dbb57e9caddca4813a666 -600e610c0502f431e628d73363f10970 -0221d29ac695e320aa365ec04ae2985c -83d51da6ce128a36cd2e5d2dbab76ce0 -f2a97948d26385dbf048ef0cf2c525d7 -0184a33f9c3389b35fcde8600ff95417 -8ff0acf9aba961d05e0715ccbbf04736 -dcae4e329492e2d99f0578f6e6c9397f -9074eff322d7513a6589a181dfc089ec -ee2fbf76bab8bb7fa64c3fb5c1f8da89 -5f7d5eb287f87b84a3b12b680a5b92be -fb330418c81c08843a8ecc7b41911c3e -28f31bee732a0bf5e12c489c08f70d28 -f27d3b01a2b69930de1169490ac21d39 -606ec4e8caaa77b3b8428f6d048ebdd8 -2185e7d1d2e0257c466077e8c32a91f9 -1898ba53941f49ece5a58b90fdac3ebd -7353c73dcba6a3beb03620ccb68802b3 -84aa8a05ba6f4023339aa1fbb9a3eabc -dd079ae8cedc46e35d279c27543a81be -7709eb325cb2fc85c78639890ebd925c -c668be265797094334ea182a0824494b -d7618ef878fcc5fb51bd88137dd4373e -cad19d84a46e0e9153e4a0fe0e6059a2 -78d542183f7dc43cf0ad4febaba14e80 -76eb5e38af6ed0393868555475cf3a5f -9af8cb14d88c4c8e0c58571545917dc1 -a3be14202734967e6859f61f03850e47 -1270f8bc9bdb3cbd36ae2768d919fb3d -ee59ec630478e670eab50fbd61477bff -c4315f3f31f39fd6f395deddfc2e7f65 -b0061480473128d4e3faacce851d5b5b -ee23c6c8670ec36d43be842613bf1516 -986d6c4908854449bc9ac2b008e75a7f -83c16bd1d6727db3aaf2d25e72d37977 -62f9203650557bc104780fcc7d9af944 -f326d01ea1f9cb89d96aafdbf65dfcf7 -a5bae1dd788536412dabc9981d316438 -65cd279199c6ec5e320dedd7544c7a08 -fd7c096315d8e230f821458516443589 -074c1fb786f0a605640392863724462a -dee392760d4c24a3c7f6a9a218422148 -4f3b5893f55d2462354b05f22afeeecc -74ca1c6583f0481aeafc21696c6df0b2 -8acc527e4a123b7ff5e2cf88f55140c8 -37c8cf292316d659b712e3e792776e3f -f894671ece4cd6cf3692362891a132f3 -b9a4206a2da2631381f180f1d17c22a1 -449de434949a3e2b8780a87e7b179d3c -4e561adb5b30f6f32722022523612456 -066cbbeeb72e13ce72244a35760d8e4f -c04c20e9e0d8940e6a34a3de26975bfc -8670dccfd7a31fa4c44bc8fffd978739 - - -36d54cc80744708ba9ec226b550c8daf -b445026a015b310e55204739eab1d577 -921ab7227ed3abcda2db9bf141411751 -2172e11a30b062324fc2a90d1f6de9b2 -34ea25003f05ded5624df898f2c1ac4b -7210212c531b08cb22055f395769fec4 - - -3dcd7f6ebcb8c13721d94494608c85cb -dd301d88f6d45a5b41cc61fd0398013d -707db11ae318f0427fb4de517d7e73ec -37eecd1179765425b3c0ba7df71152db -bbc2657930596c2b154f00988ddcaedb -700cf29f7e2bf55c009cba529e1311d8 -e88891dab9672d1abf2a93d6083e18b6 -83d51da6ce128a36cd2e5d2dbab76ce0 -f2a97948d26385dbf048ef0cf2c525d7 -f979dd15c52b991d1b7f7bebaf1904a9 -136b84df355623b8cde74d6e8f46a98d -2b9513da76017124bddcbe355cde8b1b -9074eff322d7513a6589a181dfc089ec -f207e426d375d1a5fd4be856861f2a1a -6adea116192ac7731c26d0c24346db9d -fb330418c81c08843a8ecc7b41911c3e -42c308614d57e7929e8831e861aaeb46 -a2efa498bb6ec2e917bc885ebe972a2d -a53138e64ad08cc1eeccebf36b7ee960 -8678b550fc3e1b54584cb1fb8526c765 -1898ba53941f49ece5a58b90fdac3ebd -7353c73dcba6a3beb03620ccb68802b3 -17d68c416413db1e496ad110d8a68bd8 -f2200cc41cb26e664754ccdad356e8b9 -c3fb35dd0fefe93bbf0dfd8976709bb7 -0f24e3f9b662529afcd2611dc32f47f7 -28fcf85f29b6d66e69be37342b1ef2b9 -97cdffb50afd0bd901cc9b4260e41f6c -c320e189357c0a45b74d8a25de90857a -5352cf064fa3607504409fe7cc84472a -3d9f9e874cfd7dc5eb4cb48ce2767545 -ec324a67cb8145820e9ea896a36b29f9 -f721863a4725d02319ed4879dcf92263 -c614918642df8a8819e1dd7edd49ddce -f757a92ab1bb8a7d9212b9164923cd01 -8536e6609b02d26a3181678fa36d9761 -ba65eb70925e2e80ec40306484253483 -eb7629f4b3e417ac96b46ea2457ff477 -90d13efe717f8457b7851bba57dd5a44 -4b0317bacbf44db749d81e899c0d0540 -1bc2c11dc61564329b6e8db3603fe42d -ec37bf3f902eb3662495668553f89272 -0aa68b2277a2af4acfa5e470260c4e0d -527222ce739124433f5aca935f030d18 -986e206bcc02718c3cd04e0095e62206 -aa3dd95196d0ec83718e74c22d0a0da3 -7b3cd67f5f1c421536def5926d137a9d -ed7a4a7839b90c6a2abc4bda4006def1 -b21bc1d1fa771c7e3e886c352fd73fb3 -37c8cf292316d659b712e3e792776e3f -91325e5cb13290a437e5732dd7bd3bd1 -8a9f17adb34dc1f9e52e51bacdb9a5c4 -449de434949a3e2b8780a87e7b179d3c -14f0f8c0c9ce76174baabd31994fda59 -a9b8e7319dc463d1e2bc9d41dd80f1d5 -c04c20e9e0d8940e6a34a3de26975bfc -9e65675700f44cd62f5ce4c4f3aa8226 - - -90dd88c8b1fafe1a2b93f36e8219ae9e -09e6a05a8cfe5f1533fe8144beb1d05b -f423a14d136e03186e7f43e2df7c3744 -4e5f5fa0ca8ec3a93d2061399c61e4e7 -2a2912ece2fdf7a2e3c0c9ba78d3007d -272250f7b5f5f117598b5ad29775034a -30f79908815a64fd943b8085d018e472 -56abeea9ab436058834bac282558fd24 -8fa599046396625428fddf3cccdc1bba -fe22473d89990b28abe768719a9309d5 -16fb90752c058fa355caed219a1db6f4 -92f2d8f8299919cd0d2fe2ee8ddf6594 -52c74036b772b36f3da5b0f30cfd4feb -7416a64dd5ed04c73228284cff4b6e0a -185a78a293a14d6ffc849d6f91b63fe8 -df0c9e9884678ca5fd289648f5d4af47 -36027a7c1df765c78f8e9c2018881bb7 -d8880eb89d2c17dfd2040914d4b41bfe -d99b7ed121c50b6b1cb0d9ccbc65bbc8 -4ebdd338fd8d79e60c7dc7a455854647 -f5f46d2641ac2af573c70801a388a5b3 -c5ffae12b8dbf993f93b82f81e07b7dc -5cd42f6767cdb4b451fc4f8e297dda01 -a593b69458210cb28c54e1d4b39ee75c -0314cfeae04a5fe2c53b979688e15fe2 -dfb1bc2fafa4eef62911dae18a41f28c -9d9a893113bfa52b0e1e4434ea304f71 -ba79d520b3293c9582b0646a29cf18d1 -ee204960e7c9e9f251a6f9c14af0bcaa -54e94d0a2c6da3464fc52793dd31a74b -a3ec4dfec292f3fd441f5e5d3010c20f -c26a8142ff296d988cfe13332fb14bfc -8181b7cc8039893c7db69f6e35adda51 -e7baf0389ce6728637443d9962e57b83 -99a72eb49507e17b6e1ac9a0239e9690 -f7cc76455b53c9fb37c27554ed0967d0 -55d24007a85eb0d6649e589f8b7c2a69 -351d775a3d652783a5d015060c47a446 -a5aff1132e18ab1546a154bcc75b3691 -7ddff73aac78b8badf4bdba11cd541d2 -7cbeff2cf852ffd059a2371bf23ec176 -695a5ee4a8341fd08dd10e8ee0c01237 -b6600bbd673dc1a967e3d613935b691b -0569afd539a3d7f7b99511cd179cc185 -39bb4828de43b5f2a8155ce7395ffef7 -116c07ff8a67e2cdc94c62376e4290aa -da0fb653b20f60acb1b32e763c94ee84 -8079141a1827f5d200d3df625684982d -edeab20ff1445be1465996f1a7541559 -4c5eea2a8145b886a2e8af4c13fdd8ec -dba90846f4c60dad7507f8eb0a8c12b2 -78205956ea2e422bd0c3551470aaf917 -fab7ad4774c8821b32f59a87368821de -ce461eba9060cfd90008040553ae19d8 -c19f8ce8e5075509c5203a5344f42c37 -8e77915c4597f8f884195e93997644d3 -338d9c56e6653c910dac441e3a519d25 - - -4e9739c5d4dd7d7150093400f77e392e -c3e50ad0d4c93692a2810e136ada70d7 -2cc2731ed536bf38737bfc2897163b4f -ff20e35d737a171fdebff3fffe219596 -5d9b7ccd6766e9e943b206c4e288cea8 -6134c80e606fc3eeedd5bf6a39c3e77a -545b1414d82cdd476e8d6676161e3103 -83d51da6ce128a36cd2e5d2dbab76ce0 -f2a97948d26385dbf048ef0cf2c525d7 -8cd10e297876e0c2d47a576dfcf61a2b -044e22c98deb3d6da5898931cee7224c -599619a98b0411989a763faf1c6ede75 -9074eff322d7513a6589a181dfc089ec -d255ea5b9df613deb7f8f85bc5c93241 -249a59e20ad0f29165045c375cf123ca -fb330418c81c08843a8ecc7b41911c3e -0a95085c8a3f3efcd5a63702b1bf537b -33f2afb3d4f651ff3a4856891f26faa3 -d976f528676688719bb4ed9da722c798 -f28c1d91837eecde379d863333ad3da7 -1898ba53941f49ece5a58b90fdac3ebd -7353c73dcba6a3beb03620ccb68802b3 -5568084ceebffcae386fc1ec48e7ffa8 -17da2830504929531702d918d538bece -681bb6760c742ae699ed900dca34241d -d91a412e4582686aee55e22120f10420 -7b331d712e358d5793e19167ab42d4b9 -05a11b19b5162789760c9838a936df75 -74e5138e0485400d0958b5c137a8634e -ab80eb398c1cfa95b56a5b1dc2b7ce7d -5f93e31d32cd99d38e3d59c80b4137ff -df979559da6c099664af3c61b83b9e14 -3b9488c55a6633217590c01acb9c0d8e -58ce4b88e87e271384435fc25c0f8144 -bb6a51f4eb6b3c8f00bfe1cdb89cd76a -5b4aa669a151dc30f4dba6f345177d91 -92ac14a3dd5307e6bc4429f625ac3f5b -74f49c52ba746096316a8fabfdd197cb -f5c74ffcbb82b66d295e84cb0c11b477 -6448daf1b06217c7dc989bed6f3709a2 -fb5913e34a812d5fdf9e25b8ca8c9fb2 -5c421382d1ed9e5e1f86f3bea1f29cc9 -c57c2471c7a6eddd29d27909cc422e41 -34c7fde492170f80fe8e0e6434f3eb0b -bdb86969718f38f7c3ec9d78b8708f02 -8cc192424d2a8a3a8439cf6c9e9c866d -228b0316d26bdd36e56a9158eea64ef6 -59b195fcff4d3877045fee21c364d524 -f6118b412225605b9bfe2d33480f8f4b -bdb2338095a4ea340c6d023c861169c6 -b59c994938b335efe318af6e6cd7d977 -449de434949a3e2b8780a87e7b179d3c -3ecfa35141eae057f996daee3608c0c8 -d7385726059a0035f5c91a2c1602f235 -c04c20e9e0d8940e6a34a3de26975bfc -f1f34d8c0f864daa5e8ab56801027430 - - -5311f11bfb6f48d45b579989963be072 -cec5dc207fc9e4399548607def63b953 -481d05b63d8ecea12b14c26156a6f286 -2c21e0cc9f70124dd60382c5849d9801 -0117e9eb4ec62ae70cdc2cdb032ea4a3 -b81b467bd411968fa82c2154930af428 -41cb1b4912e7e63055cc42cd34501683 -83d51da6ce128a36cd2e5d2dbab76ce0 -f2a97948d26385dbf048ef0cf2c525d7 -7ad74748bcdbfa3f6d5fade21ad3abaf -c97628c3391c9fa7f0628260d579799b -32469a0fb52c4ff01ae369e67964bd6d -32d4ac2fc85cd81163d3e5a3877c2c8b -e0ec416c7a5ab7c6ec37f1451273a21a -d5a61aae8249911d500db5a7b88576fe -081fb0fd1b55ff714d4779e63e4bea77 -ff0350c1a83eb0d283c498b1b915b536 -d9b279a5b8b4444c22234eff94697dcb -9a09d0e39657eaa250296b8b7e11a986 -1fcfd5d89b406c6248a629712866e053 -1898ba53941f49ece5a58b90fdac3ebd -7353c73dcba6a3beb03620ccb68802b3 -1a2f787c54fbe6b561fbd776a25872fc -3c474980a7bb1fd8a758009a01992640 -b5ac41b2d7993ff82acb9a8358a17202 -6177e3c17c2beae1066e42d26b0a921b -c47b778b31bbc39ddc2c933ad2788575 -312e64c5493d745c91c4bf83e3eb0b01 -b4fa02045bdf797ca90cb154d0ec63fa -5f477631417f724965c004f9434cb18d -57160d6901b4fe33370e429c4cb06aac -04b5877b7648ce36557698aa48eab05e -ed7b0a314c45978c41f6c88b54c33268 -70d3b934c48d4fc82f2fe8487b88399e -430c59370c4a7ef39ccaa467e99629b8 -27eaeadcf2739876f33c94d429c8a19c -1f2dfe32a45c0cc407b1e41483875c6d -889750973024b5b9ee80157128fdade9 -48a054998227d1b323709fd33f76506b -0b2ff41b32ddac3abfdd5615b520392d -4a64102233f5cc6a326d74c738ed1333 -1ff74927c61de2226faf161f47feaade -4f4e8ced4b1c098a97ac133e3cf16aba -8d499dee22c1b0aa3bcf3aab7b562264 -92d4b14e5af7fc2cd850f1fc26819501 -a2176e70d49f029e4ef345e258cabcd2 -1ec82f780ad10ccf1017f53ad0a982fb -9a2353991fa9c9eb24f8a542ac8bd396 -ade1ed2ca0e9fbd669f2e93bf489ace2 -37c8cf292316d659b712e3e792776e3f -29b63a9f892720cd883ad2e1936fcc87 -fcf9a22383bc602b4753feb9f2e09129 -4468f3a8b5d7713027614c35c4edb4ba -ea657fdc5456475fabe2196f5599c26a -627f0cb9b40a5cad12eb3fc54055e34a -d4847efca6fc5676a965a94360258c7a -ad72b32fa88b149015f6e9e0f8fd9411 - - -fefdec042c8287c924f7d412433f0b12 -59c457c3403be06b525dd7b8c427701b -d68cfe7e1c70fc21a50eab0606fb7ea5 -97dc3ecc0046aed1ad5edd25b6b54373 -826484beb032b1d93a3741e5607c7070 -170a3447dec13b5255279d8f9cda7312 -2ac1903fa962c3d3b928b911581cf300 -83d51da6ce128a36cd2e5d2dbab76ce0 -f2a97948d26385dbf048ef0cf2c525d7 -644d4340e8a233b2490f8f399a60bb16 -cbe4722c302b0de603f0a6786b191b85 -36b265e2c6ae9a266426658b4646578d -8e5d65934184f09c60bab131b3eda509 -11321835cdb2fefd6e81e49b46e3a283 -8bb42b9d4a1756c1109ec7326c82c266 -fb330418c81c08843a8ecc7b41911c3e -4c1b10958aeb625192a7a6c28536e16d -75c36a756bdd4b4625cd7a68a6c9d496 -17eae49005c9eb8ec8aacd15dcf38b6b -8db87c99c9359f086f6bf5bd9eac9827 -8fd7ce4aeaf2b3be11f39bf9b2be332b -28de826c00f8408c18c1060cacc44808 -015eef4f2ab821df5c61bc738def628f -431b1b78a4a4fafd05d4e0bbc2c47263 -5bb64010fefff4ea7f80e1ab6a6e0122 -e6d541551ff358ea366fa5705aa03f33 -c1d953128756a7da01bd104b2d8cb906 -553f742a0252568f24b9cc15e948f336 -dca34b43d04a94d319bfa034c531af0f -4b48d7be1eea3640653b4b0dc5efe085 -fc591b6dcf00663001336aeb2459e123 -539a0357c179e6ed2094b7ca1ebbc344 -340bd8239ef9566f005c8085593e2279 -c0f772041db7e81650e2068587476450 -789184f4b4eac3dd80414fd933797b37 -ec4d6fe04de1980f496e9caf6fabe534 -0f18fd5af1f9ce788f5053e652842feb -bb7be4d52dba41ff906024591864300e -4f3542ab71b20d7d28ae60817b2eb1d5 -1d998745c1680fa335fed152b242cca5 -a72a089766a7cf669f6b68270ce8f5ab -7f8461bf7298a4f3b95a478054c892f3 -4146dd4f46253b59caf76dc6970cfb61 -cdab51cc365677bff479257c690307ef -97b2d586afd72ce6439462b10716bee2 -4900f43900b2677888e3f7ec9a376c99 -9c8629c3110dac7a00b21c554e869282 -607e87ee590ab6b6e3c1f2017f310bb9 -0c509a1ff62dd144392973d21f6f4c1f -37c8cf292316d659b712e3e792776e3f -0ed20acef7cc4de2c88ee482435f3ccd -9d5d06d5343520f1f2bd5560833b3693 -b6786821a9641b2e90eb60d1cf955593 -29567ae731d5a20740dadb635820c0d7 -83da48fa37c40e4f8c5ca323d585e7d9 -d310d10dc4d402c846a3dda26c1fda13 -1be24d68eebff59f8a3d55d1d248cdfb - - -4e9739c5d4dd7d7150093400f77e392e -9e04b2cd1b93f421705034d5206749d8 -2cc2731ed536bf38737bfc2897163b4f -ff20e35d737a171fdebff3fffe219596 -5d9b7ccd6766e9e943b206c4e288cea8 -824ee00230cd20dd50324f22ad2344e8 -545b1414d82cdd476e8d6676161e3103 -83d51da6ce128a36cd2e5d2dbab76ce0 -f2a97948d26385dbf048ef0cf2c525d7 -8cd10e297876e0c2d47a576dfcf61a2b -044e22c98deb3d6da5898931cee7224c -599619a98b0411989a763faf1c6ede75 -9074eff322d7513a6589a181dfc089ec -d4a0ea69d0b59441b8f0697456cc3140 -249a59e20ad0f29165045c375cf123ca -fb330418c81c08843a8ecc7b41911c3e -0a95085c8a3f3efcd5a63702b1bf537b -a9abc615abd8dcb10635fb127bfd511b -baf38b4ec10a43d12a333a1c2a28224f -f28c1d91837eecde379d863333ad3da7 -1898ba53941f49ece5a58b90fdac3ebd -7353c73dcba6a3beb03620ccb68802b3 -5568084ceebffcae386fc1ec48e7ffa8 -17da2830504929531702d918d538bece -a42be7db361dd5993f28868e4a3f358f -d91a412e4582686aee55e22120f10420 -7b331d712e358d5793e19167ab42d4b9 -05a11b19b5162789760c9838a936df75 -74e5138e0485400d0958b5c137a8634e -2b8eee0e36e32de0279eb6f59fd579c7 -5f93e31d32cd99d38e3d59c80b4137ff -df979559da6c099664af3c61b83b9e14 -3b9488c55a6633217590c01acb9c0d8e -8dbb1e2f5a1ef86eff3672cc4c3cb786 -bb6a51f4eb6b3c8f00bfe1cdb89cd76a -5b4aa669a151dc30f4dba6f345177d91 -1ca4e724a542dd90368a4612a878aa7a -07692372f9f22331da5ca1cc604206c4 -f5c74ffcbb82b66d295e84cb0c11b477 -68633b9a396403744b2f3e762bbf5a19 -f326d01ea1f9cb89d96aafdbf65dfcf7 -8df081e6094878f0535027338dfafa8d -c57c2471c7a6eddd29d27909cc422e41 -d4f924be5a1d7312869b4fc769fbe907 -c621ae31c1038848045b5a54cdef80d1 -8cc192424d2a8a3a8439cf6c9e9c866d -d32aa2e1c7b5bd07001c90bc13dc7b50 -6f225dc643f02ed2509b857ca08a1695 -5ef140466400c96d5e5cbbdc7cacee28 -37c8cf292316d659b712e3e792776e3f -a2b48c147b497f22bc9816616ca4cbd5 -b59c994938b335efe318af6e6cd7d977 -449de434949a3e2b8780a87e7b179d3c -3ecfa35141eae057f996daee3608c0c8 -d7385726059a0035f5c91a2c1602f235 -c04c20e9e0d8940e6a34a3de26975bfc -f1f34d8c0f864daa5e8ab56801027430 - - -a72601b36102fe74a5da294296ed25d6 -a7a17bad11811e39b0164573964f3c18 -3814711841ff79bfb1bffb653cfde0fb -a3b4d63e077d255c6cf6f57319b42cfa -40da93d7868af1bcee8c47d560dad545 -484822ce4f486e645146a1be6dfa1c5f -d7a12190e2704590b4523ba5b60dd6b6 -d85c3718dd925b2f2749a6293f5cb8a6 -6173cfe37fe100bca15d634b617e43ba -3da2d86b46b9f04a99b688e4341d9750 -3394594b3b0fd3566c00254fbb89dc74 -407ba5abeaf3f08069464027cb52bbba -7252bd36ac08f9518f548aa69d88fc86 -c314672849f4fb6754bc916bceaa7103 -af10d52e58cccf9ef9ec405040b3bc9e -baa8fc8768d82c06e62f9309cdcdd518 -c7097dc5f0c9eadc72216ef7ab8dfea9 -870fc47eaef3c3972adde5908d4b582a -b80c70a4104afbcdddb55fea9a09f703 -b2b79aa2d9b051ea649c131c5d7fc69c -1f454c455358e56662f3ddf5e1832a39 -c336f582881f9f5ee8c96bbc8eaced3d -af051e192fdf402fc272d8f347236fc5 -fc4ad53fd61f746fe581f447bf76d79e -70e166ce8c734b2c4b6215bef0875c3d -93350f7c0359f3cff6c242f2e5924e3c -d33bcb7fbfa69a65c95e76933385907f -01f607491907d35587191c4fb9169462 -7c91aa49753eb42b22afa9cc2f91d373 -48e94c383945bbd1041cf1374ab56358 -bcaf0ee7ee4ede4c0b11d33262e06913 -4508eefc4cbf06183f780a47550b51fd -421d8650975e65a657de36a0e89bd987 -c9976744983ca5b3a00062185293abaf -d30e629b77caad35ab1bad4a4930bc94 -307d48fb06eea97b2818146fbb8929cf -bee0636e455ad5d9a8dcc288ac2abb4c -9875bc160f395b95a197ffbb4ac22190 -af0368dd00b10198d8770cabebd9e6ed -77def64e09174fe0ebc597e0e0f643da -7b075b656401153b43a2fe09321bcdf1 -f8c7c74a5a1f14cb6bfe57e7703379f2 -fe7b10789faa1e33034ed5bea8a9520d -791a1575c6fe5bbc51995bd299771d5e -fec9ffcbf2d43061cc0f2cd71d41260a -2bac51be88c59c5ee21511836859e221 -0889424a15f7ae4d5147e680d379e3c0 -1da322fd765395f75d1bbd0857995779 -699d8c5cf75a68b342647cee67c44485 -a1fe9c904ea0bd6d6ea490b977432ffc -78c3ad1c535be023623d3560b843afcb -8f7220da3aec4a4e3960715b2153411b -89b6756ccb0d05b4191b704aafaf5803 -becd3ff12eb9f1b6de5082ea51c5bf9b -ba79a127979def278922a780ad5b1c5b -322469f3805d514f7b1d9c762d6cd232 -36627e0497fd8aaf39664403ae6daa96 -af1f4c3b96562f5bf2f6a74c89f86c30 - - -452a9821ef1ce8558bbd614701dae135 -9e04b2cd1b93f421705034d5206749d8 -6d53c83d0c2f41f894615f0efd6c8cc9 -da34918d0b1a456b0f5804c7604bc6bc -7abcf80b038ed1d22f9a8025a6576eb7 -d00f7b831a3a4ee6886a57307c445a55 -7519e01ebfaf184e31451303d0fc5faa -83d51da6ce128a36cd2e5d2dbab76ce0 -70ba2538054b4121e9e5869a5a611933 -5091bcab97706bf0b5ad791622590c58 -25ad1618cb45d3588c3e0f8e6944c4da -5048c5e51454ca4696b60c9602346380 -c20ab41f5aa4a840ba470dfd3c1721e6 -a87a5823097f9b179e9ca41f4df15ff5 -39bc7a0d47d973990f7cceaf54eebe9a -5220ad42964fc5e17e0737370f1b02cd -bd58aa4fd49df12490b2939804dc014d -be9aaca861b2c4ec30707d2afc503f25 -87204bb4bc4b2de9530578fce343498a -57a194e6fe07e08d93593ad2afd6222a -1898ba53941f49ece5a58b90fdac3ebd -74acfae0cf773d1140832af7e5667186 -b8d00cecdd692f0b6cdbe4957f4ffcf3 -95edb6168835f5a622cd7fb18fa665d3 -a42be7db361dd5993f28868e4a3f358f -2e649b660a18eb203a07078ca6f0ddb0 -f7a45f1637139cc5d99a4ae6e7d505e8 -c590c3f7bd0bc1c8991c0b7f173d46cd -bc42bdb14826011d606a142a4e116bc3 -fa802c1dfdd44a7ecb89c77d60838a9a -5b4959ed0c32ed6a409144c78c8b9fb4 -54ce90907c5b76dfccd2b3ce0eb7bcbc -8560f8e577caef690e5546fec123b76c -bf1988713292dc8e6133795d8fde1b0f -0c909a51481d661330ed83a8f0d6a5fa -be52ecc505ea2cd13064e83f28eead68 -1ca4e724a542dd90368a4612a878aa7a -a114ac6eecd4701929fe3fd8f172dee5 -e17132c2639ccf18dab581736d16ab19 -a7af99484311ff510f4378fe059ed4b5 -f326d01ea1f9cb89d96aafdbf65dfcf7 -55feaae249a847ccaa0432b7c84bb41b -45045a9eec7c672c032ec3f2697cf63c -10c76b7bdf44361e8c5a37855d450a9c -387ae164057bda4a65b16b3d4da03026 -0ad67108567f99662f7dabc9585331da -9e73e48da807bd19ea533c4e65a2e6c7 -31b983b50ce8d8e45c4d311797756dce -bd993bfecb71e53562fe2f11ff3ec37c -37c8cf292316d659b712e3e792776e3f -f663087045123171ae4ef4a5b282c7b9 -51ffcf7fea03b77d0078ac35e99944a9 -1c69f14e9f4dfa446476883fe9faf925 -369ab954165562248ee42ab33e6b12a0 -2772e4b190f0ac3a3de994f9edf10074 -7538088f7af45b9a359a090b9bd18121 -56d8a0b2df579f5cead684b83fdef191 - - -503179eef2a75e444e6ed540ab5816af -875e0a4fbf2f9e739dd18dd9787966a9 -28f44c26afebd0f551578f04045c6496 -6230437ad4adfb173f89c5c9b1cd3301 -b2ee3e61485fdeb685fc7f73bf802b23 -7d6b8f45303f24ad769fb402b9416bb5 -9ed2bf9282af9c376568885348569e87 - - -eb0d31b8fe30bfb4b4a2cac24e104c61 -9fd4d804edecddba37f21602c6cf2728 -954e3a894921531b3a0501372855a38f -9c12fd584bce3751c45e6ceaf38f94ed -28dad238042abf98d2a4b40648effc46 -e70e0c0be5993759f867484624b7270f - - -9f8505322412399b5acbf5ee73337eab -3fd084ee76aa52b4e20b601babbb11cb - - -4e9739c5d4dd7d7150093400f77e392e -c3e50ad0d4c93692a2810e136ada70d7 -2cc2731ed536bf38737bfc2897163b4f -d2920c2ffdac4cb2905142099ba74fe8 -5d9b7ccd6766e9e943b206c4e288cea8 -1f17d66cf1563e4c46196516bcc73b42 -545b1414d82cdd476e8d6676161e3103 -83d51da6ce128a36cd2e5d2dbab76ce0 -f2a97948d26385dbf048ef0cf2c525d7 -55b226d18eb7824edad5050c3090b348 -044e22c98deb3d6da5898931cee7224c -599619a98b0411989a763faf1c6ede75 -9074eff322d7513a6589a181dfc089ec -d255ea5b9df613deb7f8f85bc5c93241 -249a59e20ad0f29165045c375cf123ca -fb330418c81c08843a8ecc7b41911c3e -0a95085c8a3f3efcd5a63702b1bf537b -89d74d9cd7885c8ceaba6f9a15ec3589 -d976f528676688719bb4ed9da722c798 -f28c1d91837eecde379d863333ad3da7 -1898ba53941f49ece5a58b90fdac3ebd -7353c73dcba6a3beb03620ccb68802b3 -5568084ceebffcae386fc1ec48e7ffa8 -17da2830504929531702d918d538bece -681bb6760c742ae699ed900dca34241d -d91a412e4582686aee55e22120f10420 -7b331d712e358d5793e19167ab42d4b9 -05a11b19b5162789760c9838a936df75 -74e5138e0485400d0958b5c137a8634e -ab80eb398c1cfa95b56a5b1dc2b7ce7d -5f93e31d32cd99d38e3d59c80b4137ff -df979559da6c099664af3c61b83b9e14 -3b9488c55a6633217590c01acb9c0d8e -58ce4b88e87e271384435fc25c0f8144 -bb6a51f4eb6b3c8f00bfe1cdb89cd76a -5b4aa669a151dc30f4dba6f345177d91 -92ac14a3dd5307e6bc4429f625ac3f5b -07692372f9f22331da5ca1cc604206c4 -f5c74ffcbb82b66d295e84cb0c11b477 -4e186ea8084c33de3fec3182f57150ec -fb5913e34a812d5fdf9e25b8ca8c9fb2 -5c421382d1ed9e5e1f86f3bea1f29cc9 -c57c2471c7a6eddd29d27909cc422e41 -33ac9fc2bc7ea230d394ac0b811677c7 -19e964a00e47d79e98eac8e4e3cfe3dd -8cc192424d2a8a3a8439cf6c9e9c866d -3122c8015a2583d254fbdead8e4fde52 -c95d9dd5cdb6d9a6824a6bdbefb48531 -fe15c711278cda92b6fe60ad0bd4a4a1 -37c8cf292316d659b712e3e792776e3f -bdb2338095a4ea340c6d023c861169c6 -b59c994938b335efe318af6e6cd7d977 -449de434949a3e2b8780a87e7b179d3c -3ecfa35141eae057f996daee3608c0c8 -d7385726059a0035f5c91a2c1602f235 -c04c20e9e0d8940e6a34a3de26975bfc -f1f34d8c0f864daa5e8ab56801027430 - - -df295d90be1a982bfcf7cf01c641aa75 -9e04b2cd1b93f421705034d5206749d8 -2cc2731ed536bf38737bfc2897163b4f -4b408813ba07c4aaf7494a0dce45db2b -58d8a88c479e8ef6bfe376130f2d7fd7 -bf0bfe2c95f6532f0440971af8572697 -545b1414d82cdd476e8d6676161e3103 -83d51da6ce128a36cd2e5d2dbab76ce0 -f2a97948d26385dbf048ef0cf2c525d7 -d1a443d8f9c8f096368d1d3871ad69e2 -044e22c98deb3d6da5898931cee7224c -599619a98b0411989a763faf1c6ede75 -9074eff322d7513a6589a181dfc089ec -d255ea5b9df613deb7f8f85bc5c93241 -8b4845bccbb06c9c8d6870a50486ac45 -fb330418c81c08843a8ecc7b41911c3e -8f385289997f3f192b47d00582f52c24 -06b696eb0e3787682befe68fb70ea395 -87204bb4bc4b2de9530578fce343498a -f28c1d91837eecde379d863333ad3da7 -1898ba53941f49ece5a58b90fdac3ebd -7353c73dcba6a3beb03620ccb68802b3 -5568084ceebffcae386fc1ec48e7ffa8 -17da2830504929531702d918d538bece -a42be7db361dd5993f28868e4a3f358f -6debf0d0e4964cc8c9e574386a87e036 -3ccfaadb5ee1a1c4fe90a33682336ba6 -05a11b19b5162789760c9838a936df75 -74e5138e0485400d0958b5c137a8634e -ab80eb398c1cfa95b56a5b1dc2b7ce7d -5f93e31d32cd99d38e3d59c80b4137ff -df979559da6c099664af3c61b83b9e14 -3b9488c55a6633217590c01acb9c0d8e -58ce4b88e87e271384435fc25c0f8144 -bb6a51f4eb6b3c8f00bfe1cdb89cd76a -5b4aa669a151dc30f4dba6f345177d91 -1ca4e724a542dd90368a4612a878aa7a -07692372f9f22331da5ca1cc604206c4 -589333633b6d1adbabfd86f078697ed1 -309215b54637ec841c73ad9cb60c92c2 -f326d01ea1f9cb89d96aafdbf65dfcf7 -5c421382d1ed9e5e1f86f3bea1f29cc9 -e0ba51b98a7560425f1296e931803c92 -8f91213f34f0244a5160d7e826d145c2 -c88e3c2e66b2d80b141a1e0bbc1e002b -3c262e53abae368513df941815512cac -3122c8015a2583d254fbdead8e4fde52 -5b30fbe3329f2544372a731e50272392 -f6118b412225605b9bfe2d33480f8f4b -37c8cf292316d659b712e3e792776e3f -bdb2338095a4ea340c6d023c861169c6 -61d90889b920b416295702168623f0fc -449de434949a3e2b8780a87e7b179d3c -3ecfa35141eae057f996daee3608c0c8 -392d29d07b9eecdc15f88bbade3f4553 -c04c20e9e0d8940e6a34a3de26975bfc -5e857db1c2b2f3c5b49fd68ef1fbad23 - - -1cb778e0cac8df86be98cafa49b96ea0 - - -ad89dc6f40337aa8a8d33fd58a43c541 -531b1097bf8f14f6d2be30c1cb04e9ab - - -414ab6b84388449e8d1c62fd98bca2a4 - - -d41d8cd98f00b204e9800998ecf8427e -815cc5332012f7bddded6e6b2dbebdd9 -adf4d0f538de7decd6b3e4c5140c159a - - -c8c27baf9e354f8b070f18500c4b9896 - - -d41d8cd98f00b204e9800998ecf8427e - - -d41d8cd98f00b204e9800998ecf8427e -b958eee892cb176125ee7d1da87e84ee - - -d41d8cd98f00b204e9800998ecf8427e -efa6821ec03c7730fc13303646bd264a -fc61a3df1cb5d3d591c9bca0616b1e4d - - -32625500a075f907767f520e24cbb23b -91cea0a4ba9fce3afc289d5690fca4dd -8326aa93734dd8035a04c12062e68ce4 - - -d41d8cd98f00b204e9800998ecf8427e -6a9c570caec888fedf9faa0032a902a8 - - -f30fdf4ab338c390c86e1617a5426e0f -123d27cef1a58bd71d0be5d43709c150 -cb9c4c953a1350de8d779500f2d4f30c -7c588d92e0178284a33300bcd72fc3c5 - - -d41d8cd98f00b204e9800998ecf8427e -aef2c07fde9b49868ac5cfeb890e3c3d - - -d41d8cd98f00b204e9800998ecf8427e - - -d41d8cd98f00b204e9800998ecf8427e -a6a0362ae831362830d6e63f1d411527 - - -e7bf791432a8d6cd23307b92a1c8bb2e -afc1b063010bbdfd5bbb77f32b9bab8d - - -26a3978f1a1cf63348e4ef363c263131 -1434a3f561a240f1f6e4d9da60b175f4 -d9698294981e058cce77824d8566be23 -46c16b40aa8611932a4cf9d2a5cdecf2 -f1d99169e9f6f6e4880a4f2859b53858 -209c606e619e5d9bfde03b7964b2e58c -b4fdc3bfa6f873107eb0cc5123dcc103 -3e15daa8fbf0d26ea41f0f77a8210d04 -d5f4a934ec62542d5273a41e8fbcfe24 -b0ef50657bdf39b274b8001cf04f56d3 -be1afaebdbd273f8e7b3513e55062d3f -c6e27842c8603e8d0679cdcef7cb6504 -f4f33b11ea2cb226c62e1bef772cb8b8 -8e9817e29da34d82aa0ed0a22bf25c20 -70b64d3e4c4df1c3fc3ce1ccdec84c8b -f5afc9b3751ba3156414a2e246de4d1a -7801b4dc9a77a0f381b38e75ebb17555 -dc4a551bab5b102e1ae5dae1765e5ebd -a7b15b8c036eac534611baa3c3812fc8 -d41d8cd98f00b204e9800998ecf8427e -656d0d3d0affb188761b87b55c1d4d4f -184892aa2d028c58087c6b1a3dfb4176 -46c16b40aa8611932a4cf9d2a5cdecf2 -ebedcfd1affa6c99dc1ee3056da59481 -700b5e229fc3df9a79ac5e32184ae560 -24b6cf2901fc39dbb560d3a7285df809 -60152344388314374238c9e8cb697099 -8707c43fc89f7fefe22678f3a25fd20c -fbbdeff35bd42e8a5451af28bdfb7f85 -10feed256eef9b9ba87cf7fa3ac0ef36 -18e86d815977d05210bde25bdbe95f99 -19d37ea793e07343775fa6f8e3cb5671 -b826e95415e3bab01b7842bc774e04cd -d01041e2b86955d1e1021ea0c5e12133 -1c1dfcfd97b07cefb27d60e989f82427 -bbc9e0eea1564653fd34112a84a9d11d -211ae17d31849410f76fbb9a61958272 -f5a4c8ccc8fc2f1dc246ec2f70c7dc91 -c71eb22739f1c20f5e01d9e6b8a19125 -0ccb504a5d257aa989789f6df3c51fed -c2f816d0775e41583bab8dd232c4543e -63e15270fc3b12cdcdfdb21e5bf3c1d8 -1da8850516d4dc2b70f12a878d6fd4d6 -5c23baf9f9eaa8a5220d5e44e68a9e79 -79fd6aac5f40e3655d449e602def2745 -045a50f182b7174af42c3d67492abb35 -9f4702649068d30fc9ebf5d93d915b25 -96e5cc8034742e399eaf6d29a5bbff44 -24b6cf2901fc39dbb560d3a7285df809 -9f88899802a65e6b0eedc1e73fe4c9af -3de564ee11be8e8c77599abd1e3f3b40 -5c23baf9f9eaa8a5220d5e44e68a9e79 -3539d020cf07e76dbb34c2b2f806a318 -68fc31e3d3c0cb616be0cbe585a4fc95 -1f01f59979764124448840d8e3664e99 -1477f60fa99995d7c42c47777c01cec0 -5cbe621c76cbc515a28991705e268dbe -6f92cd4deb7f23310cf1937b8a707c88 -5632b97f8db47b036a61cfc515dd685a -f87050f67c6a99dbde1f724a756ee533 -5bdaea0c03a407c6cd9f0976674451c8 -bddf314e6c49d62975e7ce1a98016f27 -b5d06e9bd03f50a951e4c5ed8d67a9b0 -e708e33599499c67f77dae22e8059291 -7ead8fd89e3d36df39f57e85d8608aa9 -cb4bb3bec53b441960a91ffcae8cfc94 -a043ad2f203a743b407deec8d036eca5 -7178d620bb970d5b1c9b337ec3fd4ee7 -e605e982c1935f82b08f81c61fa61b3c -a25cf5c9d33530d9f64a87fd6158f808 -c0bd3c7c4e7d1c006b2301eab5ecd948 -bfcf1bc67c5a000230501dec6f83bf1a -bbaaaad3a969fdf2ff5a3c9c56bc7a97 -817f1c669dc80ec3b88418d9a1de1faa -e4801ed3c2784c90b72daf7ac3f7c199 -88028c932d3ec0eedf2bbf060859b832 -6ca183f901d31980b285e187778a82c1 -74801fd5fd2292223cfb6fe7a2cbe33c -eb13cd08105de7c114006ebdfee345cf -184892aa2d028c58087c6b1a3dfb4176 -39316cba629dcc3ab2c1358f99bdc441 -cf14e73ccf77ab5a87729348fe5f0817 -a67ffa2ce31670c0084995a33ffe69ea -26ce8e4aa288aa38bb10865675d08cd3 -323e98d0535d615c49de20b9e4f5b0ce -c088d67b3cd6fd4815180b3f98ca8f5c -f6230a6dad952d01c3ff0dde61abd51c -b3a249e8c5ca01d1fa6abf52799734fd -8376d641f582ea7fbf4334fe8ee54403 -5cbf1c11abbc61f829480909d7ca3304 -6e92e55632a8e9fbc63934919120ee79 -80fac46f6e4995ccc5d57172d19da940 -069211010dbdf6973a5a635636c77e04 -e046eef32f98374dabcc7bcf93e1c458 -2481e1d39c2007f602fab6488777eaa6 -af408a99d18343fe39335a64aebaa721 -21b6ec907d91d1b24f05fc12e4ba544a -b3a249e8c5ca01d1fa6abf52799734fd -dc30723e9a013e4fd691ff5e3455526e -74aa63906a70c296b099a83a54d050aa -6ca183f901d31980b285e187778a82c1 -efe33061592589b22ca62d7d972a9218 -64d94d9b591ba74fe34acdc43f4f0cd8 -eb13cd08105de7c114006ebdfee345cf -33c4116fccc3ff06e1c82060d90c1aac -dd5dba0413ea60a3ed433fcfde0e067f -31264269b629589160d5c159e9301c6f -3d64316fad587349e5d9dd0792249162 -44bc863e69f5199f55a3d5b8ab76d1b8 -3c87509df71fb8c41cf31fce258bdf11 -9728bf99f96b44c2f09c2e03a8169033 -d7fdd00204235a28376c74e5c147c416 -9b70d8debaa8065353104c699e328325 -5646544e739cf70d2a716b8eaaac088a -ec187dda16f6e893dba5752cb5859dc4 -80ea34522ffdde39df621f74f8536706 -656d0d3d0affb188761b87b55c1d4d4f -77199a3c1980e839a1e6fb305c691f67 -2fce4bf86219c914595c178c2d7e13f3 -231c3e883b6a69af4bacecfbed2880b8 -2fc34147737d9a0216f49ea04c64d883 -2fc34147737d9a0216f49ea04c64d883 -b5bb7147b7b10e98381c5d852fc9bc09 -7389cc51b77b11b297ccce79048a1c7f -6f140c1e8e4f1da9fc3dac7cc60d6d0e -0138cd67a5d8f6c45c91a89965af4517 -c15c695089d04360c277f3388c347964 -402676b50ec901254f7c559fa14952a6 -38e31a8fe2f855915ddf43831fd69956 -dfd7216140b53214e05b7afbcea2019e -249cca2afef9ab5b10500d3f183acddc -61c9cc60ef9341b6d9b7df4396cc3e87 -5089f53c8644f49a4aaacca03657aede -58f730f9515282ae9c2f193720b06c1a -a6212b5e4fec967f17c519c9c6ce0171 -7714b390ff497c388fbdcfe8c0563790 -f7a3152e8f470a2c450b0f90d02c2d52 -cb1832b4f5fad4d0d1b7d4a8f002b489 -8596a359d59ce8d05e9e1ff6cb9bf766 -f72b01ec596197be77bad01ac6af6a2d -68fc31e3d3c0cb616be0cbe585a4fc95 -c0bd3c7c4e7d1c006b2301eab5ecd948 -adcea0d1b3addc074d69f56f89874220 -06ad1905f6c0eb21fc7e5d9f2ea85897 -eee919753151d6e7bc3e602f1b33caab -a7321a0a32895a3b6a04b458da311c83 -e9a5a0da7f023261dac8a651c3180d27 -0ccb504a5d257aa989789f6df3c51fed -aefe79f17f49fc74ddc7af2f78c2eed6 -04720837e9a79ca6ca6af767d954231b -b54bca6771c1ca6677e21ac8f439c3e2 -eaf4e2f7a47bc0667929e7d0f1a3abdf -46c16b40aa8611932a4cf9d2a5cdecf2 -fdbd41ee38f65a067194317042dc60d6 -270459e5379969c8d30e6f3bd9c99ce8 -593b86c8523823ae956999f052556265 -402676b50ec901254f7c559fa14952a6 -b52f00b91b90fbb38d6fadda3aa156fa -395243ebd988a0f3c8397d4263322197 -7801b4dc9a77a0f381b38e75ebb17555 -5f45af7387a1f950e81bec69ccc6b122 -fa603d107cf8753b24f4d14c0f87fa26 -8343464f7cebeb9f11dc710e123929eb - - -09ce82fd4e818461e7f6b47501ef80ca -d41d8cd98f00b204e9800998ecf8427e -3ff399136d04561cc27c3d9b839a9099 -8b066f77cd96776d1046ebaec421c36c - - -eea3e104501f53967997a20a03fc42dd -d41d8cd98f00b204e9800998ecf8427e -bc25658adebf7ce5332497399121dfe0 - - -9810b1cef4c1821ed9909a6313cf1fd1 -35ada07724a911510aa0cb2f20b9678d -b88c100ff05cfa1af092543bf1f61bb8 -d41d8cd98f00b204e9800998ecf8427e -0e8f5f08ceb1d48ce3372f323e2356be -56ca1be6d8e073679cc5c98b1330443a -4f0d3ae4d3590264504070de22cef435 -f2504ee0583ce12c58aaff9c569217a7 -17b566296feac4f9e98afe91a74e34a5 -0e9cfb992296aee33204d1d3e9916321 -21c8119beb6f441ae3cee8ba5f56cb88 -f3d23379be8d4c8b6b802f705b8b5389 -f37f6c723a49a7d2e75e4684d79c242d -089f6d1e79197140a55a05a958142387 -96a88cc2799db0e2ec37d318b12d4bf9 -51f7b61c9921fc7e5aa3400ad960d53d -77abdfb77700f022c7ab0d27537e5a1d -5fa9a7c0e8eb9f88642e19b7361071e2 -f4483404356faa91731805a543968f49 -53de27921ab92e2392b47c4b62f2608e -d3c3bf844a6b83632433bc164580854f -2ff7a61d2bbd8a04df03c8e5a694cf15 -77cb3ae7fad9e2ee7cfc00f8cbc7a91f -a0818d60c6be30ba4b2674df5fea75ad -0c70931cbccf0d0f5711e9f5a235ba9b - - -774aa5e83df34cc3f91576854f011220 -af054e807cb59c2a8862618cf8e7a120 -b6167341a2c1b0ce52edcd03353dd464 -f90a482881b094f398cfea3473bcdcb0 -c49bf80333dbffd2ef9aeeb9ccfa700a -15e3b3359f5d0e64efc557727a57bdc2 -fe1a4f8260d6f21ea9f9d26ec154df59 -231be9007edc9432630b44369f2d819d -70780d43b2301396dcdc3ba883615534 -11e6ed8c7c12811fade97c7fc50d23ef -a10710d2b0e460db41c63198261133d9 -940ad1b3ad78d603c00c6fe0fd29158f -04fc9d2d2d778a1c51f7602b043968b0 -43da1a13de6b74b229e87f2254901eb8 -9cf91bb999511aca9c64f1960b7e5347 -a84b4ac562f48fa0db41bb9482328faa -f5c80364beda6369b49e6af373c21588 -d4dd559531b0440a1ea9244340e3def0 -e7d7ba0591d03fb54886081dba55842d -18ad47ae4370502b626a9c97da302c98 -a1fd4462ddf33d9959511b042bc85d0f -4794032e0a29bc4b968ea9cb25dead45 -31ea4b1b268235ac09b462eb15c1178b -d41d8cd98f00b204e9800998ecf8427e -19bc9d6e776897451da4a42998962117 -b65d09069ec446c0014036cb3fdc748e -4fdaafdcf368b7a90527e8e8c5dcf541 -ff9be4f9f663192885df9ecbeff2d3f6 -44f6219f5d9c34527a71c0cccb2306ce -0fbcd2cf77d097cd0767ddf31d97a062 -956a9467791544af1691056173191f19 -c8d0c70a5fecee469664a73b21baad7c -712730dc8eacbcdde49e3058e87f9453 -4a89044f17e6da2ebaa0b323cb3eb547 -fa36f20b7c0d398fc4385c6cbe00c20d -c3dde7f9f3d18dee3ffb87074c27cbde -792f95535c7f2d242110aa879717cf2d -4ea257c73e8f5c6c12fd12d154e5d482 -d3c4da9f47d4872f8c5c3743ab162314 -4eb34d5348d9f867cfade02a16029422 -efcfaeae59e264f27c0a046f83bbea3d -d296cd3a0c82798fa66d4442b0514c65 -e7d410ae84757632ff7fd39171bdb36d -3e287254af9d483cc20dee24c615e38b -73afde9ef9cae4a2c17bee5094028180 -65f1c8f81f6ea903dc7f721720d18f8b -289e3a21483c34cb3c7163a0b0339048 -9bbc219ad2d289762be4a42cd4156e5e -f9de0a1fcb3c19c973e382e65fc31c4c -05d984d940df2e0c8e95726d1adb0138 -1b21bcf3a31e16eb01575d546a8ddc73 -d48919324ecd66c95b4439d87903254d -7a9b60008090747570d184f6185eacba -2ba292598dca941a2acb16588a729569 -be8e24b74d91c7f072a83125fda2e9b1 -b5e3cb6ffa54daa488d049b692ace165 -b8e083dc6318358cff0019d29311814a -80a5fa615caaf397e32a2ca096814061 -29da23f210ded21179562ef771e281bf -0925474a60a7d087119ae966d5cc926d -dc332a44414046c93eefe7a804c155f0 -a1fd4462ddf33d9959511b042bc85d0f -e11278e9bfed8b1cac83f3c09ad6d175 -000a9812bdcde8014b7b80c58b98452d -d274b3bd9ab6cbe0847492e09bc17b26 -dc4ea9364d8efb3881905f68d1ba016c -99aae625b370db00c75bffa40d22515f -a8dcc9c1af18986c1de6eef93bd9615e -2bb6eb2d060824aae199568f54e00503 -33acf6ed14eeaa977790e7123fae9d1d -2b285856d7f32d4c4c9941135e983ce2 -2d5c1290d23edbcdba1c5425bf16a0de -6ce707c982c104bde6300faf6ee61b14 -9e866e4d54f4d332f44de7f26bee7758 -ede909c44382b72a00e182411787c9fb -f79ff4f531fe57fd76a48b29edd49ff9 -93add805d11b487204cdcbf396af297c -e2c40ec99dea692cc920781b8a25bb9a -01e4f38286a1328cb456ad497df0df84 -66d9642b28c9a9f7ea35df000e6637c4 -c7fd803906579e2870c37f7c6dc1f287 -fd785e8184d91ce160641378dc942792 -f91d4ccc0c3346a1d1541271fa945b2f -99884a8900f579cd62619119a011311f -723903d5fccc803cf724c2bc68eb78f5 -01882be75b36720c3dd35d483f0da9b7 -585642a0258d4de2b55bb520bfbb51ec -dbb6d599916edfcc0e69df3ccbaf11c4 -a4747d339b09c350f180530593b4e446 -df30cacec99cd536a46d4d710d4cd0d6 -40566fb3b79a6a5857623d1828e078aa -a6a731b2237aaacd679c87fbc30952ea -2123bf0843c54410a6360155c292dd07 -063fded4fc55af7113065bdb6a6d13bc -6b88763de381191ebd21b1d8f815eecb -5148c1862c4c06f8bcb22146d8ce0bc7 -5993a2e0b03a08005a23ec0bffec49aa -0f8e90793a5d0075ddd55893d5d49067 -eb1f7b820126acf733ad86f742297ceb -5b998f19eee37b6e4b48984a2778a6c8 -90358cba38f3616a16ff65d2ac76f94f -eef6f3da813d1d13c22e834a01269715 -6548fec65e29cc9437d7a69750d06a0e -4624db3734b1e0d2d2daf2e1a3075de6 -8c47d4eb5625b0fbba21f7badc7e9694 -dbea0c8432a121b189f443ed553ac590 -5aae4c3d4f831d29c58fdd1ea90b414c -c8edc74a6de1527d12f1552554b3965d -fe4eded2e82a49e7eeec04a57c0eaaca -e552713e4d8746959be3840562cedd4f -7cd3cb27cffdb26ec9bc893879022fa2 -79bcfa4d08d9b0480e45ce8943500b75 -00705230d6d3a8a360cf4ccebb6b4808 -3e388f0f6a16e442d7217f7f5ac0ac70 -be2a5064570cce93cb27f66e6c63a450 -7c966e0ac8b005230d2dc6f9c2bdfb4f -89feb1c83c324e468f77f547afd6dcfd -8341937457bd3fe384540c016f44ff79 -e97837e90f79a8c3b9be2aefb707c986 -b04e6c6785146e49bbf046137761016e -bb3cd2dcbd5d21f1ca284ffa1ad07831 -f94d172647e3462d128294621a43389b -d24f6b1b1a4167bf6d452edf43fc43f9 -9b8ef286299fa6cc52c9c1117dc116f9 -f05b20cb0d940946b92d336b3ee16230 -6f45f24d2c2847d3be377ec767ed6740 -560540e2be01c0ab7bf34283ad36e8e0 -e1e9cd63c97e490b1295848e3b6ef08d -0bc993144907f56385fe151e664a5940 -1dfb81be162137cee56899d3747d3918 -3009f0bd6501a7e643490484aeb4fb7a -8da0e7aadc18ba23942146b0b2788fe6 -cc2c1ba385841b4e57e7c3f8d2bcfc52 -0c3ae02d04c3fc7100c51aac8de78822 -20d08112c34bad25f91560d50ab42afc -93e655e7608796ac9d75390f82b58d19 -73e6adddf2467b4c68caa18c8d6d6c67 -4649a28d1a99856537807f623692f5fe -27b26796c01e90c01be2369a04026d60 -8feb74c99d8748eb7e8154762c615561 -1247fc5abf94f9875f6a322242024412 -c31a9db4f598a1edf31700198ec50d26 -357e70827abcd6e1b13e310b22a72cbe -cb4e550f50734e444aef59bf6439c1a8 -85aea855ac1f3e1011d2362d3cfe59e3 -0531dafd783b28ec7570e6e1a311acc8 -afe6a0affb85e6afd2cdc8608dfba913 -eda152bd86c12fa304b0d489d61f8f00 -e7c9ec2d12913127c49c73ee2a643515 -02ab79dfd7f51b02b60b860b7ce8afad -49fe0d286d5b87cf808bf352e5882b01 -7a5b075120da6d2eed41cb179255794d -d4b3d1f5fc991b0582f804eb4478881f -67f5efd3f354d95140a192b2b512e417 -8f4b85af8b4e91a099a99ae6add93734 -c69ae88d065c858479db70c93cbd59f4 -4b47b691cc2ce2801de96d512583468a -aeb2b299359fb35bdea35fa92ea24da6 -70c946e159dbb8bff23b0074ba847a2c -5103ae9bde7811dc675132d8ea32b57e -dfd395e63be421047109a6d2d50f8cb9 -a34d4ed87f508bb060c12b369543fecf -f93e4f18a8515ae7c23e5e6509fe7327 -2dfb77eddf39f9fc6de5677f5070d308 -1d88c537abadf776846ee7004edd7528 -aabdcfe7e06c7512c2b386fbd477b7ad -35df884aed8ffc1bd04843f914bdefe2 -89feb1c83c324e468f77f547afd6dcfd -e8066d5925cedcee8e287efda7be0b83 -6aaa3a31de31e3a5e9e426364a6d750a -06bbeb64c794faf5a9506ead75159d9e -74f4000b96dd405ec94f8fda2981f7ed -130022e7f6155c7feb3a8805eed1fa17 -ddaf35fb0f5f6de35551c674dce5af13 -ca82a0b827867d8e25b3222842fc9290 -b26600b0e4fb912d7a7d0409d98faa63 -e34146dc177448781e5f71137230f06f -15cff0d1924962e116bd0d6bcaf12bc0 -3a981c259bc9f2329c96ed7419d096c7 -b332396ea15d7546b048f5ccc42e7104 -7cd3cb27cffdb26ec9bc893879022fa2 -9bd382f432b178b65ec6e8f34438806d -3fb04ae5a52c47da617faddb535e463d -43bc0fcda05ae2bddd4daf5a07395889 -ac382f23e177acf31f79ce371101769a -50c5e7bb6d90547b30c88a38a2d10653 -29e38139f43d33ba7cc2ee457fe52628 -5becc14b56e314c5f35e99cc6eac3457 -cc986d5a5621587f7d86cc3d60338083 -8233503381ddf79b86cb6f312f4aa4c9 -04b609096db2728072f46ffc835a581c -692688f55f454ba43bfb627269347df7 -4f92ebd3e210ac270c9d4a9e8e8ada1a -03e1ff43ea8046535b3a1e28d2a3d5b2 -cc7f036fa37b5f518b78570821a91d1f -8413bd4ab3429ac93c55e76ce9ff3ef0 -72c68a77f9cac4ede5ea93a8ddcad43c -e7f08d9f0c21f9f57cf6a47333bd221a -98297a39a6394970272a8bdf37c2c467 -05361076eb73c940aee3a92fb488289a -cfa4068beb4bb0a04d95faa83d490b1b -a1fd4462ddf33d9959511b042bc85d0f -a65c16f8dbdf88a88822ebdee750ffae -a0c460e80ae4880e9c1c32ae397503a5 -ea9cd085245a4c6048bf654b5833a3e4 -3fbd3dacb5989dd794dab5ca6ae802ba -316264e658900c47c263e62642485e1a -ffdabf9c9d9a11a4e1070c3de6565306 -c25970d4e32e1ed12911ac276dce9f1d -64c80bc09a3568badbb471e4d7a8fbe8 -5f1f96b69c23bc6d72f8d7720c5de271 -377cb88037021a342c2db782d3718564 -a1cb56d5ff9ea5a9fcb5f879460f8356 -e7f08d9f0c21f9f57cf6a47333bd221a -448fe3d8d40dd9524e92308363fef9da -997c11c97bfa8a076bb99c3f0b0ea340 -aba9db6d3ab58060e1399c434c169ae1 -3cc54618412944027a27f4d573ed0b47 -c79db6af25efa8e7d808c5c3e824dc87 -55ecbbd7019bd1c65e0338e30e354c94 -5a8689e206254ceff9af7228494442f6 -b3277971df94b3cbd68f45e6d7078b91 -12ea19cda7f7f76dfb852ac21ee8121d -4c811494c0413f7ee4f513c2f6622914 -c226e7caff0213c3f4a60d70db7ac5ba -a44dba6545c02559a2ecb2cd96a46fe1 -941fdeaadb5826f363cfa6e480b588fc -60087a56245dd11337328404dcfd9b68 -57cdaaa04cf6aa2fe0e9cd2c3b039f99 -af9aab961fd64d502ef4c6c9037a9e33 -4e2233388b4cf5719ece9d5e4d8ee8d4 -30937ce4f4feb25d781acf8f0d952308 -1ac6898f550c88000b9ef9141500ab87 -e9769936000050d61aecb36ba7a1ffcb -331b9a1b7b9101c7be2f660910e6e001 -419a456a86c786662a2e1258ca40b7d5 -89feb1c83c324e468f77f547afd6dcfd -b5b6c4d5152b8fd193b79201b70dbf4a -192002cd9aba7a5237f2ec5a8c8ec267 -23d92cc0b164d881a2872cbf878f9aea -872db466b81af407670160cf7305b3c5 -7cd3cb27cffdb26ec9bc893879022fa2 -b4cda49ef47c67fda458c6b7a187d219 -57e8a47fbae98efe3ac2ecebc93bfac0 -54537764d66c82a60df8647121aae302 -e46207a40de4c55ebee22d22758c7f07 -48d1afcf90739c7ac285fbfb9a442f98 -9d53f377d19984caf020df658621f38b -708fe2c3b7aa7192e8cec80f5fcf8ca2 -206236098ed73e7c9fb4f76c4ec08ea7 -ffdb8c9ff721c1dc405c07c27b06c44f -48180e06410b3f3d59828a1d2f3908d0 -30720d9dc4dd6183d098a1ef7ca6a515 - - -caf1836f1e59187b389ccb270a20d3f3 -4ea78b1e4b0a34928ec2abc4ba8a1ea1 -adfaf6538827b606a08c514b218ce02f -cd4aafbf96f9ca00ec1ea45ce445273f -9afdc285279a1dd3e17a321e6d531ddb -9257a0e2e2099e4060656a32c57b55c2 -5e5649ad914663e345a5099988dbb88d -6151a7c4134040854886bc5006a0f7c9 -73890f2c43db03a3ed7c1f1480a7f2e2 -f3ba37478e4e4f5e6025d24a1f649502 - - -73c70503cf2dc4a268877aba2bfd95fb -9091d512039b8b0e0d8b1a70c4766078 -a21c063e3ce67f82113249d9a321033d -33e3055c8d99a0e108e3dcfafe2f02bf -d41d8cd98f00b204e9800998ecf8427e -01a0efb84eadcfc47482e3f36eaa6bdb -91d7393c46a5a613836330b0f075bbe2 -2056360fe1539188c7e00a09abbc2153 -f1cb6f0bffbc3ca0b63dbbc51f02f5b0 -fab2d153ebc8fec58518da89099a3ea7 -53f8536dae9fd7ddc59dd58e604755a4 -662b61d9e2cd1527c749db30c7a84c5e -e59bace8bc73863ae6abee0fb8e17801 -52d88dc054798f7076bd0a0c174818db -3114409c3a14acff26e9d052a2b345ea -ca177a7f8289f4ab89dfb86769b2eeb9 -4606fbca4fd91f7c6782dbb86e462c12 -daadeb6fd24e65df65a8c4f11439927c -a54e48ba4d68b9b2eb5152aa011f2093 -8a8c2bf8fd9bb11318840ebe0fab16cc -96196defc1997cade2eaaead0ed86ea3 -1c4e7445b1d02e274233de0d43ad6ba0 -8e011d62a02604e497d41a6b6d87f201 -b08ede2bec19c7a91a16b7320a571c58 -fa410dbce8955725b4c6f9ca7a295498 -f8e14f44ebadb45a20922f45720e04db -c0e8485b73819e041f753b23c7690305 -2dfe1886aaa2a005ca58b3af4375e404 -3251c14ead0497ba25cb9746cd1abf52 -2cfcc31ebd3600aec994a764e357639e -ed0cc9c5c5e4d088be7a1755f07c0bde -b08ede2bec19c7a91a16b7320a571c58 -46b9db57d6e0e660bb43663c34e8e183 -35e12c8186c66c2a2f67846325c4a8c9 -472f9ae9fd09507ef6299f2391bdbf4b -3ce4d9886ebda3d54fd415961d616cd7 -c9569b7d83a6358e34c6a24e6eb3745c -8c49590a520575d276b6a0326149e776 -67707f51c299f4543c60ef1bb6c7cd45 -7fbb218c536d691c6b2d56009f9dadbe -d4392a1e9591b20a9308663373478137 -a3d47f5cd664929981c1484d55115ce5 -b8b49d2126b4a75840c876c0175da3e2 -48703319438cf8bcf4a083ce75582d4e -e8b1b6347c5957cabedcb3318f0178f2 -3ad6532a0682d64f0d1d65d2ce9202d0 -e22fcce83c8d8cfd111e129a3acb8b88 -fc0b12a212a9193b26dd98d1755b96d0 -42d09f0097af4f8431f883bd161bff25 -704437bd4ad9b8e4f312cb61373555e6 -3d667d0964566c0952c7159984118bc3 -c2f13d2c423baed06d1d6f417b009087 -0e2b3241431a43eaf252f31907d318ae -961aeb631f9a41e8401ec7f18a868b3d -7681cab460ea47408a4b60590c3256f5 - - -0c77a1573722d25c3a6c1be4a294de22 -cb9441c877ca30d9c4cb5fd3dbb4bf1e -1c43815c33aca84f12c41fa1bf03ac9c -c9498d80aaff704d6dc9cc8703a7d4e9 - - -afcb155fbddaa030bf66e006370353b2 -d41d8cd98f00b204e9800998ecf8427e -e9708940060441ef594907daf7e51c4c -bd9b10b04302be0e53add9368bd0f05b -ec6685dc57f789909eee81e478235dbd -4650405d73ef5385afa60eea56539fae -a99385ed8f77646021d94ba3facd3a97 -08f95e2a0c68fd61dc33968c49d16a10 -1075cabb9ceb8dbdd282ea942a2aae11 -b5ce0389855bd84afd83bab3343ce427 -b7cfe9e33cab51b6db6b1719b3aef919 -f7a36035b7de1c50116eefeb9ce7ebd9 -102806ae9860384fd3574d4ba60ed957 - - -4b3af70f24c7bce743e39a08dc227f19 -6ade7ce02d0e1a57764ca09034e581d8 -7921881e4e473d7284ea741addbe8810 - - -71b64eb90d9c86236748d5cddcd936a5 -588128822d625e390a58f56f3612f907 -80c455a0847b726d4feef02c6e21c98b -d41d8cd98f00b204e9800998ecf8427e -beeeedc3193a46c108350c79c818dbef -fb07076002b84c04f14f19c7cf6fe332 -9445d29997b70a66fbf5e9430db2b49c -228ee6ed67369e1632959a3b26568fbb -d0ae25b71adb33404ed64bd1a131bfe7 -1d488d377762e65ab4e8b691ba01e5a4 -c25b136c1cb3bb145495c25b35d93754 -851fb8cacaf19c098bc7fd339797948f -7a4337ac238b6eae1362f898c65b4e1d -62becd9604eece6fa4ebb00625ba0e71 -6cbfd3ed29531044aed9b4edb3cca9ad -4edfa5cd18f12847054c5a603c345c50 -8043b6508f6a876a0ee5cdc266238c98 -076db93d2f21b03534bff93f0cb68d33 -be4d3b90a08e3e7370f81557281f346e -fbd3929a893b147ae0940d48d533e023 -e4f9546a7ec7b751aa49620aecddcb6d -3665b03f0b6b099595415224ccc68285 -22bea718176473ab099137f013a20550 -564cf8498bdfe84aa464c7c93c384f41 - - -f1ea44ec38125fab210be1674be67f0e -395a36af64488793bda90511461c1814 -03e2b564224bfb58ff20904bda244043 -b88670b988d1bfcf10d160c3a5f13401 -e997d11209c765632062e4dd60e01007 -d41d8cd98f00b204e9800998ecf8427e -cf1cbaab94fb9e593ea0423e8ba4d390 -12ace1a918403049a6d2fc152f53baec -e217f7a43c29d1ba1baf4fd857565a0b -b3dd447dfc83ed5da9eac072d9998262 -08e1f9036ad91fd03b3199040a865faf -bdcafc9e164189ba7dda7c7740661f0f -4f252769ae9a32ba0d4e1b27759edbdf -8ef569dec9d762a539028f412673116d -b508411bb915ecf32b1a995644f67fd1 -29e72d62c835fdac475bba0a45871657 -d0aec8831504183d456cc4e0de1c399b -7796308f80795e5f6dacef6ff7a2db2e -ab89c085311cd936ebf65d70c1dc73a6 -1f6ec0f59547ec12579adcda6581ecc2 -7c28ecf37a5112e346685801e6f7b7ce -236333d97d78268677b1575df7c334bb -136042c53e8cdcd5c877a55278b800a8 -c3812c74bc524179f4ccf5d2db7b3cbf -0ccf49903689d2f274b8c8a91049c8a9 -608997bad3fdb828797390380ec80385 -f1d191833ef5609e44f2322622805794 -33e8113b927871ec7a037f3b84b9ca20 -bfdc0eda7b92250bbc3af11dc4882d99 -182b591d18dbc56324b1d2099a03ea6b -f015e173f86b564e9f485af1c5643602 -7d7ce82b25e32e97c09f8e1a25dea530 -754c92df6977bb4c96bbdd144f967bf4 - - -d41d8cd98f00b204e9800998ecf8427e -4e96b9d5e319317867034cb5d44d7edf - - -d41d8cd98f00b204e9800998ecf8427e - - -d41d8cd98f00b204e9800998ecf8427e -a6a0362ae831362830d6e63f1d411527 - - -340665046924f127d014eaa81f3ab9ff -fed79fc64fc305b829316f782bcc63d9 - - -26a3978f1a1cf63348e4ef363c263131 -f82a70bbaf24434aff018e689e86221b -b15fcefe9e55b29cb20d1b1de229edec -4af4f260359b0ce9c42f77ab47caa6bb -c86760866ffe32b359549745a00f78e5 -8bb0f71417f315eb04c44bf1b07dd157 -00ff70d955ff73a44e75034c2d58204e -a671cca2c79d9135464aa9f41e78b026 -adbd23ce0f80d78b794b1bf265c21e5e -d5f4a934ec62542d5273a41e8fbcfe24 -cab0ab4445e82168d2cac70036925a88 -e9bd2b6f96af06b419608a137f3ffc16 -c6e27842c8603e8d0679cdcef7cb6504 -67f93528ad1ccf9b8b72651e16c2b83f -109a2b54b09935f5a79b887d621533d6 -9f011bbff1b13ec5fd8307610210a91e -5a582fdea5dff2f52a79aaa101278172 -b11a03507e5b25abc28f38627259e6c2 -2a2a087b71d3730e58954da48d65b1e0 -bafaa6d8e8c91f79ee22242ef6fd5dc6 -2862f528c2d606a7c780b75613b90761 -d41d8cd98f00b204e9800998ecf8427e -d84ba5e3a285ad25f96eaf0348e96010 -96964e9e7e85840bc46249a5203eaf38 -618d61f6e80aaea18e3257b4d6cc2728 -4b31ec814f6c455fb7d72f4d32589b3c -ea3351e19d493e039b9cf39dc96eedb2 -3f9fd57c66f10d599f154a0910fec47c -7f073b1e3162a90d38273edab7adac23 -60152344388314374238c9e8cb697099 -8707c43fc89f7fefe22678f3a25fd20c -351226b86bf32c35da86bc84d37710ac -f69743db39fe49a61499e443879ce394 -d737ad1c6acf2b8e9cf45c76fa750f4c -fb0e617a4e54b963f7c2139efa874d10 -cd26e28d19227f52dbb7af6285f49684 -19d37ea793e07343775fa6f8e3cb5671 -448c864dda6bfcbb4d6344f5c61a3331 -d01041e2b86955d1e1021ea0c5e12133 -1c1dfcfd97b07cefb27d60e989f82427 -f46842235b8299668e3c493ea36de3d8 -4f37eab95abbe47905271558dfe2582f - - -adbd23ce0f80d78b794b1bf265c21e5e -b6ca1dfb745e85d611fbe81cccd4da33 -b2fc85cace867cd419febae19227a5b7 -d41d8cd98f00b204e9800998ecf8427e -5e4cee9e9a747519c7ac8d53b72a1e15 -c71ac960b798f1acac68b17b7fa6c803 -e186597ccbb2c1eb388198d8d2a199cd -570463ed73e7c93d0989adca95a0d440 -b6342a142293dc8e125d11ea43972d05 -85a06666e72e0c9522deb1041e2bed91 -b9c630a949e08d2aad90b54cd97276b5 -ae9923bf8191d4cce6f6aff23d7a92c7 -e0074fa750edf8fadaabd21713776fe6 -97a2ce5955231c1b3891e8eee2445c62 -f734bdacbce7337ea1b52b95b295c49a -66657486b605040d066d0dbf6271e14c -b22186030a04c7a208dd219acfe203c7 -35df8b42457569b02c19be41abc87f45 -ee172f657651ace5f45374cc6a5c3639 -22a1d48babdead60060ea6eb841464c3 -6e4ad58de75dcbd3fe83e4680d5a94d3 -37e28b4e4e22b80c1d39d038599e2dff -dc22d6ec2bda0707404afaa8259ee219 -9e95e8dc5850c73b8ced6dd0bca3919d -ea0cd1165069b2c5d4bd5916fe10741d -6d28eea8d332c17dda186d63f9ae2206 -acc3f08c46b50f9b3b66ea831aadf3ab -0ff637bde43375a809e583841634f760 -83063c2136d912f6cf89a173cf71e7d8 - - -f5a4c8ccc8fc2f1dc246ec2f70c7dc91 -b5f3d69294c4e3ab14009488fbd8f438 -53752275e001831a1aa1af926cbdfcbd -85e75bec7eff5d20e41a993927acb5f7 -28d998536cc67795eb0812a1e4c5a6ed -767c14923c466cadc2b4d21941ea8f59 -0ce654c1f24e1190c6c3022435e09ea7 -1c1ba7274a1d26029bf89103ca8dd5f2 -ad8a6bd03901efe7f6d958396fbd5ad1 -8e9667450cc2157e1157e8785b367225 -6d457a2c2911dd34f7786ddebec78a4e -9fe6cd608e8c0099e0aa0c2524b7d8ee -25c9d80f42b34d9dcbfdefdf50cec661 -ae88fbbfc2db402d402b4a1644a06e5d -d3dffe4a4ad4030e443985fa8ae1a91b -c533e3d3e66811df956313981c8fdbac -e6757cb7e9e8dac57b24af8395a27fdf -7f073b1e3162a90d38273edab7adac23 -3f933eec8c50faea176b3e58b18a3510 -3de564ee11be8e8c77599abd1e3f3b40 -2da102ab12fb56c79783cd6b776ce9d2 -b48838edc93500f2bc9d4fe8afe1d6be -034863b5c8459093e35c529af988e293 -8799fab2b7f97df4126c466511f7f88b -cd4aafbf96f9ca00ec1ea45ce445273f -e2c4129a196854d4e004313b67cabbb1 -913a37ec8bb5444e2aebc3e37ac32f01 -6b4556404cf9104d5f44a0b9a072eb7d -5cbe621c76cbc515a28991705e268dbe -85d404bac8dce61b4c6aaa8023b3a56d -e2e7935ab2ca6ec4318baf7d9e4db6c1 -0bc1e68b3aef15b66b82bc1f4fec9a02 -6ce084d8135a4489f80310f900ffd620 -1b474f0760ef6d41e1ab690197d6c3b4 -de73834d2af73aa83a4f38ff19761f16 -f4e4c9fdfa66cac3028c2db1680b46cd -ac11d37f3fe11993406e0b1b97f70263 -d3064fa8b7429f42e62da1f2887161d4 -7e68bc36bc8c30dd2d6574ff81f00a64 -de2022b0af088c7f59b35e323fd6a662 -80a22ab091f09fbc6bc59839c61ea516 -43d6877df934dd2b5a134e63980008a8 -82e4a2225d7ef9eb5a0c875f08b76ca9 -b28a87c8e679b0340ca2bb5e6bf5f6df -7cce79ebd74e8f71ce17f811dee41f34 -a043ad2f203a743b407deec8d036eca5 -8c851baa2cdfee2a5db7142700b8653c -e605e982c1935f82b08f81c61fa61b3c -43926a83973951e9b41d8c0aab0e2cd3 -c0bd3c7c4e7d1c006b2301eab5ecd948 -19e9a1da7c2e79b9b4d18cb4224bf018 -b61cf71e2798c651c607f48940a4e09f -fde64db4462dcd2dd78d40ac1e490286 -e9cfe12959cf2221fca30764b9e335bc -6ca183f901d31980b285e187778a82c1 -47efc87b5dd14b2464b2403e038d03f9 -f2930d262bbe944d1a7850e4a18a2e50 -5a582fdea5dff2f52a79aaa101278172 -067a4741fa4798555fa9f528c95d6a18 -549e5f42a9f20bab9fc991b9c74bbb7e -b3f7fd8c8d2d111960bc1ce63edd8d70 -5f8d5884338de38e204a4064409de3c6 -db95c9c78a2b762361c7c2c9c1195145 -8a7351ef099da26bbaa63ade1ada8be9 -deb4efac7c2229e79dfac38516e78fb2 -c088d67b3cd6fd4815180b3f98ca8f5c -5ff452c2f13647b0f60f9dad9ca3ba21 -f17b1318317516348f82385cc233ff0b -8376d641f582ea7fbf4334fe8ee54403 -1c5563470e1e0a9a6d693d8b00133b81 -7d46d18692c2c3210ae658b71d6d95c2 -30f79c75465c3f1e855a3130c1abb350 -946e88d5612bd35d2f9297a1419ba62c -5e83bbea91f6deaa37b247ac013ef556 -c17a32a624ef386aacdbc3a683f32048 -2481e1d39c2007f602fab6488777eaa6 -dad81862c0f72751d6a69a7baf0c851f -26b7b52cf3e0d7132dd00290a55a3192 -f7a04f85dd2d738d83f066800862de7d -aba33e5e98071280db0d34c42349f1bf -acf42861a59faad7e9c5fd30cd9cfd70 - - -d41d8cd98f00b204e9800998ecf8427e -ba1534f65c09d9e2f771405acc34e47d -6964848f5af43d68c6b7218d3d3804f2 - - -90eb802715ce63e5e3ca4a55a42b8397 -810dab21a178dd4bd8acbf6c0741d2cd -efe33061592589b22ca62d7d972a9218 -275999a532356c158f19fd8a2b06d399 -441617b20516fd76a40c7ff1b11690cf -136042c53e8cdcd5c877a55278b800a8 -33c4116fccc3ff06e1c82060d90c1aac -765e3ee60bd9940d57172336fb3ef5aa -7c26f8ac117a0a43f236900481e8781e -f061264590a29149c75e58a2430e118d -3d64316fad587349e5d9dd0792249162 -0fc42aae027e045136cedefbffb61058 -d19b64d5c33563f03415fb80e3d390a3 -34a3ff119b0f6f13a3cefab63a8b7cc3 -8ace5113760f987144f54425afffd195 -d5f4a934ec62542d5273a41e8fbcfe24 -ba1629cc343a821009875fcc3d23afb0 -5e5a5a366e1296a73953a5a52885a6a5 -5d3b6699db4bdb0b80adcb87bca2cbda -9fe6aca4313338fe6dfb496ee6a37745 -a346bdb285fe8580f4b5b8dd5f5451ef -9b70d8debaa8065353104c699e328325 -c8a144d7c8add753a44e8e8d55595570 -24b51f9de5784485dad0951515dfeb6c -f6c51890eb3d84defb470c9101e0e1fa -7df3d6c0f7590453f08e362b6ce20940 -2fce4bf86219c914595c178c2d7e13f3 -5fdd9b86b6f8470c71db5a04bcb9e11b -9e36c55b53a1b080066d9947a92d2ce3 -9e36c55b53a1b080066d9947a92d2ce3 -8786aa827e5b8b29badd2db51d893349 -7048b07a1e0e0fde5c6a1b4d756d10b6 -7389cc51b77b11b297ccce79048a1c7f -9e95e8dc5850c73b8ced6dd0bca3919d -a9c1b094e5f90641184b3cedc1b2b372 -c5f9a0849fc60d9d903496e6752a8961 -a65c4d66168635b87ecbc720e2a50703 -16f15b5dcb1b133a53de211c024611e2 -3f4c833d31becf6c023f35d3a8140ca8 -f4e4c9fdfa66cac3028c2db1680b46cd -752f4b5e92e81b70cae0ddc1be19e468 -5dffe1f2fb151b5ae395df7c0a8e7b15 -3f995da98d36a1ccea1ed8fec6b9f4ca -798ed84c7b3f98e34a5aa55074cd2616 -deb4efac7c2229e79dfac38516e78fb2 -a6212b5e4fec967f17c519c9c6ce0171 -7714b390ff497c388fbdcfe8c0563790 -c7701209d9f6520754d641090de4ae63 -3a30e6c5fd016911b03b23ad8ddb7600 -ec291d015307e2d4798886aaf95677ae -c39899fd27e0b323e6b1c026e9a9359f -222b20d8427161e4a655b346014e0408 -1059848b00093780cd84ab5e45d47c17 -7791ec67383f276b58e5f8f3c32409bb -e2c4129a196854d4e004313b67cabbb1 -c0bd3c7c4e7d1c006b2301eab5ecd948 -e945c933045b11d928443a45decf52ad -5f7594cc680f9f8e39152b67ee04d492 -10feed256eef9b9ba87cf7fa3ac0ef36 -2d042b078ffb9cf4e0321fe8a09cfa88 -e1d238ddd4e573b085cc34b028b24883 -ecad6bd4ba98051aa8d375b71b0e116e -a03c8d2492d0ca2404593ec71b479eaf -1ba2c9d892264fe1db8eefb1ecd3bb8a -6959d7207e6206827d65ddd355ba7506 -77bde3efa7443489764569752b420eb1 -98cf56f3f039afe645291a4f8d232d5f -0c4097fb424dfb257639732a19e5c2ed -76b75be7fb2191b64616144f1bb6f324 -79a72d08df258b0ca33c240c1d7746c5 -f48adb959a22f1724228581645cd9e67 -86ff89b103a31b41474b61e5a506c2b5 -c6a9a7d9cc31a6f650c60a8012a0d0d3 -593b86c8523823ae956999f052556265 -670fcc17fec05077d89269efc0ca2a0e -2ebaedcb9d2d969084625077785cc38d -35376294d8fe982540141abbb4d1714b -bbe819e048ea168b6c16444dba907c40 -1ac87d92900f2a381db91de8cdf0dd46 -4a436addc8ecc176da90d6f8e7ca0a8a -115c4806f36aeb531699b370720312c4 -55418df59f5b95c989be04f945a0002a -78cc1dbd8731c1e9f37be87885a916ec -64d3e67ba4a87e02faa08fcb6d92d628 - - -ed715e949601b59d8aa1cae4915e53d5 - - -d41d8cd98f00b204e9800998ecf8427e -1fbe45ac17223930f63f72b33108f3be - - -d41d8cd98f00b204e9800998ecf8427e - - -d41d8cd98f00b204e9800998ecf8427e -a6a0362ae831362830d6e63f1d411527 - - -4e43b862976f2b1a0f0d0d7a5dba9d19 -ad54dd3c9b754980becf7ecc311038fc - - -26a3978f1a1cf63348e4ef363c263131 -f82a70bbaf24434aff018e689e86221b -b15fcefe9e55b29cb20d1b1de229edec -4af4f260359b0ce9c42f77ab47caa6bb -a79fba50514b6341e89f4cfab2538074 -c86760866ffe32b359549745a00f78e5 -8bb0f71417f315eb04c44bf1b07dd157 -00ff70d955ff73a44e75034c2d58204e -a671cca2c79d9135464aa9f41e78b026 -adbd23ce0f80d78b794b1bf265c21e5e -d5f4a934ec62542d5273a41e8fbcfe24 -cab0ab4445e82168d2cac70036925a88 -913a37ec8bb5444e2aebc3e37ac32f01 -e5f6f03a4edf8b78cb561640dd021ef9 -c6e27842c8603e8d0679cdcef7cb6504 -67f93528ad1ccf9b8b72651e16c2b83f -131e9c1492e737f2c9ec974ca6266f1a -9f011bbff1b13ec5fd8307610210a91e -c1c1d802683b4599c4cfce0ddfe6be0d -b11a03507e5b25abc28f38627259e6c2 -2a2a087b71d3730e58954da48d65b1e0 -bafaa6d8e8c91f79ee22242ef6fd5dc6 -2862f528c2d606a7c780b75613b90761 -d41d8cd98f00b204e9800998ecf8427e -c78c3ce42e3987678f28f5c2d5888a31 -879bcc7a49c8a8b2dd20672d7fece36f -618d61f6e80aaea18e3257b4d6cc2728 -4b31ec814f6c455fb7d72f4d32589b3c -4b35eb7636936f48c6d40353135af307 -7c7da4fdb0743389e825481f72db8fbf -7f073b1e3162a90d38273edab7adac23 -60152344388314374238c9e8cb697099 -8707c43fc89f7fefe22678f3a25fd20c -351226b86bf32c35da86bc84d37710ac -f69743db39fe49a61499e443879ce394 -10feed256eef9b9ba87cf7fa3ac0ef36 -cd26e28d19227f52dbb7af6285f49684 -19d37ea793e07343775fa6f8e3cb5671 -448c864dda6bfcbb4d6344f5c61a3331 -d01041e2b86955d1e1021ea0c5e12133 -1c1dfcfd97b07cefb27d60e989f82427 -f46842235b8299668e3c493ea36de3d8 -4f37eab95abbe47905271558dfe2582f - - -8d14d57b64e6d0941a4a3da42485c835 -adbd23ce0f80d78b794b1bf265c21e5e -b6ca1dfb745e85d611fbe81cccd4da33 -b2fc85cace867cd419febae19227a5b7 -73936e9491424f1091d860da60e70a7e -d41d8cd98f00b204e9800998ecf8427e -5e4cee9e9a747519c7ac8d53b72a1e15 -c71ac960b798f1acac68b17b7fa6c803 -e186597ccbb2c1eb388198d8d2a199cd -570463ed73e7c93d0989adca95a0d440 -b6342a142293dc8e125d11ea43972d05 -85a06666e72e0c9522deb1041e2bed91 -b9c630a949e08d2aad90b54cd97276b5 -ae9923bf8191d4cce6f6aff23d7a92c7 -e0074fa750edf8fadaabd21713776fe6 -97a2ce5955231c1b3891e8eee2445c62 -f734bdacbce7337ea1b52b95b295c49a -74107c8827b62bfb576c7525db0c50d4 -b22186030a04c7a208dd219acfe203c7 -35df8b42457569b02c19be41abc87f45 -ee172f657651ace5f45374cc6a5c3639 -22a1d48babdead60060ea6eb841464c3 -6e4ad58de75dcbd3fe83e4680d5a94d3 -37e28b4e4e22b80c1d39d038599e2dff -dc22d6ec2bda0707404afaa8259ee219 -f4a0423781100f09efb4546515878611 -9e95e8dc5850c73b8ced6dd0bca3919d -ea0cd1165069b2c5d4bd5916fe10741d -6d28eea8d332c17dda186d63f9ae2206 -acc3f08c46b50f9b3b66ea831aadf3ab -0ff637bde43375a809e583841634f760 -83063c2136d912f6cf89a173cf71e7d8 - - -f5a4c8ccc8fc2f1dc246ec2f70c7dc91 -53752275e001831a1aa1af926cbdfcbd -85e75bec7eff5d20e41a993927acb5f7 -767c14923c466cadc2b4d21941ea8f59 -9d0a732a0ddc0c0ad033e1cae7e8e1ce -0ce654c1f24e1190c6c3022435e09ea7 -9a58dc01b905407823d94c3099ea0c44 -ab59944ef4c329f4d5c3109775c61f5b -8e9667450cc2157e1157e8785b367225 -b3d6f3785d8cfecff48833b17b56ccdd -6d457a2c2911dd34f7786ddebec78a4e -25c9d80f42b34d9dcbfdefdf50cec661 -8e9667450cc2157e1157e8785b367225 -16bb485a90ed5d40b877f42ae2c1e6fd -732ded5dbab1e25ec84bb0d1d021b840 -d3dffe4a4ad4030e443985fa8ae1a91b -c533e3d3e66811df956313981c8fdbac -e6757cb7e9e8dac57b24af8395a27fdf -7f073b1e3162a90d38273edab7adac23 -3f933eec8c50faea176b3e58b18a3510 -3de564ee11be8e8c77599abd1e3f3b40 -809e6f0b71137a2d0d489ef24a383bf7 -8e9667450cc2157e1157e8785b367225 -cd4aafbf96f9ca00ec1ea45ce445273f -e2c4129a196854d4e004313b67cabbb1 -913a37ec8bb5444e2aebc3e37ac32f01 -40132ecffc9bec07aafcc30c6286078a -5cbe621c76cbc515a28991705e268dbe -85d404bac8dce61b4c6aaa8023b3a56d -9c85a247cd59245d62ad33a6f6d8021a -e2e7935ab2ca6ec4318baf7d9e4db6c1 -0bc1e68b3aef15b66b82bc1f4fec9a02 -ddf9cf9d441de3934800e1a2cec8af0e -1b474f0760ef6d41e1ab690197d6c3b4 -9bbcc89b736a13147aaa5aa74b4a0440 -1051c422df2cc6f77c4cb08eebf9a222 -d3064fa8b7429f42e62da1f2887161d4 -de2022b0af088c7f59b35e323fd6a662 -b5d06e9bd03f50a951e4c5ed8d67a9b0 -43d6877df934dd2b5a134e63980008a8 -b28a87c8e679b0340ca2bb5e6bf5f6df -7cce79ebd74e8f71ce17f811dee41f34 -a043ad2f203a743b407deec8d036eca5 -07001b443cc63071e2a368efeecc9ad3 -e605e982c1935f82b08f81c61fa61b3c -43926a83973951e9b41d8c0aab0e2cd3 -c0bd3c7c4e7d1c006b2301eab5ecd948 -8e9667450cc2157e1157e8785b367225 -b61cf71e2798c651c607f48940a4e09f -fde64db4462dcd2dd78d40ac1e490286 -e5f6f03a4edf8b78cb561640dd021ef9 -6ca183f901d31980b285e187778a82c1 -94a9153db495781ee4c317420202a2be -e496a23a58f66890e5c69e7a1699aa2d -47efc87b5dd14b2464b2403e038d03f9 -f2930d262bbe944d1a7850e4a18a2e50 -5a582fdea5dff2f52a79aaa101278172 -c2664fbfabe5322a1a136ef9e6ec28db -d8aedd7beecf9e743f5f49cc11429c0f -ed3a68794bbf31b3c2de610200b5a92e -b3f7fd8c8d2d111960bc1ce63edd8d70 -db95c9c78a2b762361c7c2c9c1195145 -cd5792374200bfcb7337e03e45454e50 -8a7351ef099da26bbaa63ade1ada8be9 -deb4efac7c2229e79dfac38516e78fb2 -c088d67b3cd6fd4815180b3f98ca8f5c -5ff452c2f13647b0f60f9dad9ca3ba21 -f17b1318317516348f82385cc233ff0b -8376d641f582ea7fbf4334fe8ee54403 -7c7da4fdb0743389e825481f72db8fbf -70becbe01e0a3028bc1f911d157502fb -f933a0d4e4f4a2f465d48977a62f71b0 -946e88d5612bd35d2f9297a1419ba62c -5e83bbea91f6deaa37b247ac013ef556 -c17a32a624ef386aacdbc3a683f32048 -2481e1d39c2007f602fab6488777eaa6 -b57af4b9947810d411c878d3e9caa276 -26b7b52cf3e0d7132dd00290a55a3192 -bb0fbf39951397d1d3737a3d7006d18e -aba33e5e98071280db0d34c42349f1bf -acf42861a59faad7e9c5fd30cd9cfd70 - - -d41d8cd98f00b204e9800998ecf8427e -ba1534f65c09d9e2f771405acc34e47d -6964848f5af43d68c6b7218d3d3804f2 - - -90eb802715ce63e5e3ca4a55a42b8397 -6ca183f901d31980b285e187778a82c1 -efe33061592589b22ca62d7d972a9218 -275999a532356c158f19fd8a2b06d399 -441617b20516fd76a40c7ff1b11690cf -136042c53e8cdcd5c877a55278b800a8 -33c4116fccc3ff06e1c82060d90c1aac -765e3ee60bd9940d57172336fb3ef5aa -7c26f8ac117a0a43f236900481e8781e -ed7f8a63c16ca6f732b8794ff0cc2d28 -3d64316fad587349e5d9dd0792249162 -8af57d97c02aadd073dc0c67d2546a9c -1d2a82296a2da8e75073715f5b30c93f -c533e3d3e66811df956313981c8fdbac -8ace5113760f987144f54425afffd195 -d5f4a934ec62542d5273a41e8fbcfe24 -ba1629cc343a821009875fcc3d23afb0 -02c9db9f7c03e235dacf85a337b8887b -5d3b6699db4bdb0b80adcb87bca2cbda -9fe6aca4313338fe6dfb496ee6a37745 -a346bdb285fe8580f4b5b8dd5f5451ef -9b70d8debaa8065353104c699e328325 -c8a144d7c8add753a44e8e8d55595570 -c48848adc73b20b6a2e52888c8a7f9f9 -4ab5cf779b6ba8737731bd949438e279 -f6c51890eb3d84defb470c9101e0e1fa -7df3d6c0f7590453f08e362b6ce20940 -2fce4bf86219c914595c178c2d7e13f3 -44854c50928080752b377841ec269639 -5fdd9b86b6f8470c71db5a04bcb9e11b -9e36c55b53a1b080066d9947a92d2ce3 -9e36c55b53a1b080066d9947a92d2ce3 -8782f385cdddac89c3704c05a8a7ac7a -7048b07a1e0e0fde5c6a1b4d756d10b6 -c533e3d3e66811df956313981c8fdbac -ab99e28fc193ffaeee2c33dde09bf167 -7389cc51b77b11b297ccce79048a1c7f -9e95e8dc5850c73b8ced6dd0bca3919d -a9c1b094e5f90641184b3cedc1b2b372 -c0354a0f9fc6655fc9323757e9e0b742 -c5f9a0849fc60d9d903496e6752a8961 -a65c4d66168635b87ecbc720e2a50703 -16f15b5dcb1b133a53de211c024611e2 -3f4c833d31becf6c023f35d3a8140ca8 -f4e4c9fdfa66cac3028c2db1680b46cd -25c9d80f42b34d9dcbfdefdf50cec661 -5dffe1f2fb151b5ae395df7c0a8e7b15 -3f995da98d36a1ccea1ed8fec6b9f4ca -798ed84c7b3f98e34a5aa55074cd2616 -deb4efac7c2229e79dfac38516e78fb2 -a6212b5e4fec967f17c519c9c6ce0171 -7714b390ff497c388fbdcfe8c0563790 -c7701209d9f6520754d641090de4ae63 -5162c215a01d7254e1eba6755450a163 -ec291d015307e2d4798886aaf95677ae -c39899fd27e0b323e6b1c026e9a9359f -222b20d8427161e4a655b346014e0408 -913a37ec8bb5444e2aebc3e37ac32f01 -7791ec67383f276b58e5f8f3c32409bb -e2c4129a196854d4e004313b67cabbb1 -c0bd3c7c4e7d1c006b2301eab5ecd948 -e945c933045b11d928443a45decf52ad -5f7594cc680f9f8e39152b67ee04d492 -10feed256eef9b9ba87cf7fa3ac0ef36 -2d042b078ffb9cf4e0321fe8a09cfa88 -e1d238ddd4e573b085cc34b028b24883 -ecad6bd4ba98051aa8d375b71b0e116e -a03c8d2492d0ca2404593ec71b479eaf -1ba2c9d892264fe1db8eefb1ecd3bb8a -6959d7207e6206827d65ddd355ba7506 -77bde3efa7443489764569752b420eb1 -98cf56f3f039afe645291a4f8d232d5f -0c4097fb424dfb257639732a19e5c2ed -76b75be7fb2191b64616144f1bb6f324 -ed08dbc09e01bfa10b36e7b6ed8bf9d3 -f48adb959a22f1724228581645cd9e67 -30840a6ccd63f38c28920cadb162e188 -c6a9a7d9cc31a6f650c60a8012a0d0d3 -593b86c8523823ae956999f052556265 -670fcc17fec05077d89269efc0ca2a0e -9d3d0f55c282fc3544043027b119cf37 -35376294d8fe982540141abbb4d1714b -96ac8ec152e9815e48efdf383dd7e209 -1ac87d92900f2a381db91de8cdf0dd46 -d8aedd7beecf9e743f5f49cc11429c0f -115c4806f36aeb531699b370720312c4 -55418df59f5b95c989be04f945a0002a -061e57284f369a77f4ab7a210edd6d16 -6959d7207e6206827d65ddd355ba7506 -64d3e67ba4a87e02faa08fcb6d92d628 - - -d41d8cd98f00b204e9800998ecf8427e -01232047a4537a7eca790bf2e64eac10 - - -d41d8cd98f00b204e9800998ecf8427e - - -d41d8cd98f00b204e9800998ecf8427e -a6a0362ae831362830d6e63f1d411527 - - -16e262f3f18cf7836e231b64a353af7f -715f17cd829260420265f6d293640e04 - - -26a3978f1a1cf63348e4ef363c263131 -2a82b000df718dd6e6770e2d50b03862 -445b34b4ac5dbd8cbdbb2d8d52656cab -4af4f260359b0ce9c42f77ab47caa6bb -f1d99169e9f6f6e4880a4f2859b53858 -8bb0f71417f315eb04c44bf1b07dd157 -e7e6b8d7a9b989619beabe01cdff3bb2 -a671cca2c79d9135464aa9f41e78b026 -adbd23ce0f80d78b794b1bf265c21e5e -d5f4a934ec62542d5273a41e8fbcfe24 -1e99a575dd2737b28288144382810210 -92dfb008bc785eaac8dd2878e17f4a31 -c6e27842c8603e8d0679cdcef7cb6504 -b3ef3d72a6836a5291a0487307b5d8f6 -131e9c1492e737f2c9ec974ca6266f1a -bf5474e7c85243d85f6ce742204bb692 -7d389b04b1d62e932d0e2696c7e68e9d -287ac7dbd72c235345b20a09e93f4df4 -2a2a087b71d3730e58954da48d65b1e0 -71042cbc4ea8acafe754fb436feff958 -d41d8cd98f00b204e9800998ecf8427e -a78a833c5c28843ef5c49dfa04c1c970 -618d61f6e80aaea18e3257b4d6cc2728 -4b31ec814f6c455fb7d72f4d32589b3c -b3b82d32ad1e02b6be3078a24ef8b28e -9c419b4fa2cd1c7ad6772cbb28934b51 -4b1644100e7aea8a79bf8404381b8654 -60152344388314374238c9e8cb697099 -8707c43fc89f7fefe22678f3a25fd20c -351226b86bf32c35da86bc84d37710ac -7695d1ec2dcfe45c3f713cf420f707c1 -fb0e617a4e54b963f7c2139efa874d10 -cd26e28d19227f52dbb7af6285f49684 -19d37ea793e07343775fa6f8e3cb5671 -c5e70aa4ca496434dce0517017aa787e -d01041e2b86955d1e1021ea0c5e12133 -1c1dfcfd97b07cefb27d60e989f82427 -a6879b7e59ccb7926635047f0c736b05 -4f37eab95abbe47905271558dfe2582f - - -adbd23ce0f80d78b794b1bf265c21e5e -b6ca1dfb745e85d611fbe81cccd4da33 -b2fc85cace867cd419febae19227a5b7 -d41d8cd98f00b204e9800998ecf8427e -5e4cee9e9a747519c7ac8d53b72a1e15 -c71ac960b798f1acac68b17b7fa6c803 -1ade3d7773887c7f5089096d1afec3eb -e186597ccbb2c1eb388198d8d2a199cd -570463ed73e7c93d0989adca95a0d440 -b6342a142293dc8e125d11ea43972d05 -85a06666e72e0c9522deb1041e2bed91 -b9c630a949e08d2aad90b54cd97276b5 -e0074fa750edf8fadaabd21713776fe6 -97a2ce5955231c1b3891e8eee2445c62 -74107c8827b62bfb576c7525db0c50d4 -b22186030a04c7a208dd219acfe203c7 -35df8b42457569b02c19be41abc87f45 -ee172f657651ace5f45374cc6a5c3639 -22a1d48babdead60060ea6eb841464c3 -6e4ad58de75dcbd3fe83e4680d5a94d3 -37e28b4e4e22b80c1d39d038599e2dff -dc22d6ec2bda0707404afaa8259ee219 -9e95e8dc5850c73b8ced6dd0bca3919d -ea0cd1165069b2c5d4bd5916fe10741d -6d28eea8d332c17dda186d63f9ae2206 -acc3f08c46b50f9b3b66ea831aadf3ab -0ff637bde43375a809e583841634f760 -e09179e576a7f1706c632d9c6a4be337 -83063c2136d912f6cf89a173cf71e7d8 - - -f5a4c8ccc8fc2f1dc246ec2f70c7dc91 -ae2b207691d431eccbcc781baa57ab4e -53752275e001831a1aa1af926cbdfcbd -28d998536cc67795eb0812a1e4c5a6ed -767c14923c466cadc2b4d21941ea8f59 -0ce654c1f24e1190c6c3022435e09ea7 -89697cec3795e0df248044ce53e74756 -370330c7627ec45797aafa9e99f84762 -92bcad6a72829412e19818ac23d99c7d -bfd0bf42e6473229d91e07d0b3f9baf7 -dc1b29caf1ea591b1b835b96d3869db3 -2fce4bf86219c914595c178c2d7e13f3 -d3dffe4a4ad4030e443985fa8ae1a91b -92e62681dc53e8a32accba6846001552 -4b1644100e7aea8a79bf8404381b8654 -8816de8b6e1f9e510d6b37002b1981aa -3de564ee11be8e8c77599abd1e3f3b40 -b48838edc93500f2bc9d4fe8afe1d6be -034863b5c8459093e35c529af988e293 -b2f4d01512267ce06fff267cf4136d6c -cd4aafbf96f9ca00ec1ea45ce445273f -c5e70aa4ca496434dce0517017aa787e -ad13b311bf3894d1537bf68d32120589 -cc9d3aa2b9dd98d94377e40b25935c24 -5cbe621c76cbc515a28991705e268dbe -85d404bac8dce61b4c6aaa8023b3a56d -0bc1e68b3aef15b66b82bc1f4fec9a02 -1b474f0760ef6d41e1ab690197d6c3b4 -81707b9c0d2bcc9c4494fe861b4fb962 -2f8d8c187982fc14d5563c7bdbc43e37 -d9e0bc0764b65a6d2a0515c80c52314c -b5d06e9bd03f50a951e4c5ed8d67a9b0 -619c0c5385acb19c1fc066b3ca4ea883 -c4df95964fa512230fe0133cb6d83d2e -bf7304dd5d19225b698af27eff949294 -7cce79ebd74e8f71ce17f811dee41f34 -a043ad2f203a743b407deec8d036eca5 -7178d620bb970d5b1c9b337ec3fd4ee7 -e605e982c1935f82b08f81c61fa61b3c -d345a084df9b7c46897877130a475f22 -c0bd3c7c4e7d1c006b2301eab5ecd948 -19e9a1da7c2e79b9b4d18cb4224bf018 -6151a7c4134040854886bc5006a0f7c9 -fde64db4462dcd2dd78d40ac1e490286 -268b73ea43444081e3d46c8754bcf74b -6ca183f901d31980b285e187778a82c1 -47efc87b5dd14b2464b2403e038d03f9 -f2930d262bbe944d1a7850e4a18a2e50 -665abcd595667e221eb5bf99589f8a05 -dff0c705648f53cc2f2a186ca22546e8 -c5a1b32584b43642dcd623f195e146ca -d2e1f32fdfd8eed8580f1b72973330d9 -8a7351ef099da26bbaa63ade1ada8be9 -679c3a5f9bbbdd055430363726db4664 -c088d67b3cd6fd4815180b3f98ca8f5c -05681d69a9d1601e222762698c9e95d7 -5a8af818e8fb9bedeb55d5cf3427e2ce -8376d641f582ea7fbf4334fe8ee54403 -9c419b4fa2cd1c7ad6772cbb28934b51 -47b54d44fec79b69f1cc151a1b2a9a43 -c6c06e5a431452048d30850fdb6f1baa -946e88d5612bd35d2f9297a1419ba62c -5e83bbea91f6deaa37b247ac013ef556 -2481e1d39c2007f602fab6488777eaa6 -207b36b38595eabc40f7fb975b9720b3 -6f1285c463f6d6fe42e39f34d733cf2c -aba33e5e98071280db0d34c42349f1bf -90eb802715ce63e5e3ca4a55a42b8397 -810dab21a178dd4bd8acbf6c0741d2cd -efe33061592589b22ca62d7d972a9218 -826b0a139421500b614b3302c87738d0 -136042c53e8cdcd5c877a55278b800a8 -33c4116fccc3ff06e1c82060d90c1aac -dae6f405639ecf3eea0e3d1bf52936f4 -2f1531eab3f5b51c4c6725608f4eb456 -3d64316fad587349e5d9dd0792249162 -f2681caacd54b4b43912e489c678a3ec -8ace5113760f987144f54425afffd195 -fa5f8193240995285a30de76a124744c -ba1629cc343a821009875fcc3d23afb0 -5d3b6699db4bdb0b80adcb87bca2cbda -2f7a8a40835764d2d62357e2ecbd1d28 -a346bdb285fe8580f4b5b8dd5f5451ef -9b70d8debaa8065353104c699e328325 -cbf00fbe06d62b8503f79d19005b84d5 -c48848adc73b20b6a2e52888c8a7f9f9 -4ab5cf779b6ba8737731bd949438e279 -f6c51890eb3d84defb470c9101e0e1fa -db77b35764831af0b616bcc87ccda46d -2fce4bf86219c914595c178c2d7e13f3 -2e0eb0e3d978cfc35b462a199aeded78 -9e36c55b53a1b080066d9947a92d2ce3 -9e36c55b53a1b080066d9947a92d2ce3 -a9e38adb81052e1178a2486de8a87c28 -7389cc51b77b11b297ccce79048a1c7f -9e95e8dc5850c73b8ced6dd0bca3919d -0474bee65715fc6918a92b668178be6c -c5f9a0849fc60d9d903496e6752a8961 -a65c4d66168635b87ecbc720e2a50703 -7921881e4e473d7284ea741addbe8810 -c64ea6bf2afef2560c8b642972b04663 -3b719c139541347e5d868dc81867d444 -752f4b5e92e81b70cae0ddc1be19e468 -9692f8944e4499d5f0dd89a7a7dbfc9c -8b7bc49f97c95c9d641d3b3c72ccf1cf -0ddff84d392b7fa485c6e47623f9885b -a6212b5e4fec967f17c519c9c6ce0171 -7714b390ff497c388fbdcfe8c0563790 -c7701209d9f6520754d641090de4ae63 -ec291d015307e2d4798886aaf95677ae -bf803d2d0ea860bbc5e35c4b6decc800 -d5f4a934ec62542d5273a41e8fbcfe24 -4454d66db639f71ab544b163923181fa -c5e70aa4ca496434dce0517017aa787e -c0bd3c7c4e7d1c006b2301eab5ecd948 -b72c3b6c763f26a3ffc3c2d6c0f6d49c -10feed256eef9b9ba87cf7fa3ac0ef36 -e1d238ddd4e573b085cc34b028b24883 -ecad6bd4ba98051aa8d375b71b0e116e -a03c8d2492d0ca2404593ec71b479eaf -12bd3c14cc3b96cf90d3362573d85559 -60805f7fdcc0a187defb87f4ecfd9bb3 -8f120e35f8b6608fb34e38edf9a2687c -cd4aafbf96f9ca00ec1ea45ce445273f -16f911dcd53ddf0a2c59fe6173f892f8 -79a72d08df258b0ca33c240c1d7746c5 -cc9d3aa2b9dd98d94377e40b25935c24 -739a60ba606586c88e8626e558f16807 -c6a9a7d9cc31a6f650c60a8012a0d0d3 -593b86c8523823ae956999f052556265 -4d444d41aee1b2c9d54942654da1d042 -9d3d0f55c282fc3544043027b119cf37 -9ad922c1fdc252eb8e61dbfdcf32ada5 -03ffa8f7c09dcea59dd5c89f136c7da6 -4a436addc8ecc176da90d6f8e7ca0a8a -115c4806f36aeb531699b370720312c4 -55418df59f5b95c989be04f945a0002a -8475cd05414226f2ff20ee97df8bcf31 - - -8ace5113760f987144f54425afffd195 - - -d41d8cd98f00b204e9800998ecf8427e -f2668d60b62d550468381be65ed1630d - - -d41d8cd98f00b204e9800998ecf8427e - - -d41d8cd98f00b204e9800998ecf8427e -8f39483d399ceae285fb7cc61109c809 - - -6337a2b8215e8045c73c165d1969afae - - -26a3978f1a1cf63348e4ef363c263131 -b97cd0ed145854fbc8b148ac0913565e -bb1be9c660e554a43686915f1d7f021f -445b34b4ac5dbd8cbdbb2d8d52656cab -4af4f260359b0ce9c42f77ab47caa6bb -f1d99169e9f6f6e4880a4f2859b53858 -8bb0f71417f315eb04c44bf1b07dd157 -e7e6b8d7a9b989619beabe01cdff3bb2 -a671cca2c79d9135464aa9f41e78b026 -adbd23ce0f80d78b794b1bf265c21e5e -d5f4a934ec62542d5273a41e8fbcfe24 -1e99a575dd2737b28288144382810210 -e5f6f03a4edf8b78cb561640dd021ef9 -c6e27842c8603e8d0679cdcef7cb6504 -b3ef3d72a6836a5291a0487307b5d8f6 -131e9c1492e737f2c9ec974ca6266f1a -bf5474e7c85243d85f6ce742204bb692 -7d389b04b1d62e932d0e2696c7e68e9d -287ac7dbd72c235345b20a09e93f4df4 -2a2a087b71d3730e58954da48d65b1e0 -71042cbc4ea8acafe754fb436feff958 -d41d8cd98f00b204e9800998ecf8427e -a665caf39101bdf12f66bdbaea3c1e74 -618d61f6e80aaea18e3257b4d6cc2728 -4b31ec814f6c455fb7d72f4d32589b3c -4b35eb7636936f48c6d40353135af307 -7c7da4fdb0743389e825481f72db8fbf -4b1644100e7aea8a79bf8404381b8654 -60152344388314374238c9e8cb697099 -8707c43fc89f7fefe22678f3a25fd20c -351226b86bf32c35da86bc84d37710ac -e80502a829c7141deddf60ac87e42e46 -fb0e617a4e54b963f7c2139efa874d10 -cd26e28d19227f52dbb7af6285f49684 -19d37ea793e07343775fa6f8e3cb5671 -c5e70aa4ca496434dce0517017aa787e -d01041e2b86955d1e1021ea0c5e12133 -1c1dfcfd97b07cefb27d60e989f82427 -a6879b7e59ccb7926635047f0c736b05 -4f37eab95abbe47905271558dfe2582f - - -d29432daede0438dd797ecdbdf915015 -03561d6f159b40a276ae7eca3319970c -d8386960c63e6b27895685c70c4c435e -f6858cdcdb32713ba80d87cd99257e51 -8bcbac102e83193d933a2c936857635f -c797a7830343e4700562dc7f4acf1f02 -d41d8cd98f00b204e9800998ecf8427e -10cb1a61683843039f3f99527f0447a0 -5eca57a0b130d1f5a4cd73d4053f44d3 -40a032464455dd72235e79afa94beb15 -87f5e4a61a397aeffc7d8fdd96673988 -3afe38c6b38b07c3bdfdcfa982e9218b -ebc05e1e66b1eb6dc5a6bdf27e2eac01 -b0844a2326bceb13156ab3950a60b7b3 -7946f4323bc05ed1418e7b056ccbfb4e -6271882092ed28f4227be476c54535cb -c4b077a4e3f7d8c58bb112c6dbe6674f -1ee75057ea44ea31b5d2167d8588e39d -c5b2fccc94d752d454472d6fe7a9aa3b -45e61dc0820ab58a6097c676507874c9 -be8a7ee2b863d701cf8d379676d3245e -5ddea6a4cd5005e849f6f307f1d40928 -d956abc3ac4cac362a78ba0f2cbcbdc7 -87f28d57fe2a6d30d4ee3975ef4a25fc -2c92545e15695b5d27839c7662657ab0 -a79636bc2b90ad32bd15c9015ff17ae2 -6c83356f69563552d5d971e9f956253b -d7e4cc99c44cc6add3563cb2ac5d16bc -3c22e69f2f2972bac1f8df3e48f0eb52 -f6412834592319407d829327cf8f23c2 -88cb6b600eb10287e93e27079ab792ad -249398348c5370aa367828a1261e823b -7cf564871684986dfe050a9acefab1f0 -75744ffb286ebd32ec6b56a8cb86a2e1 -038daf9b3dd4ba6f83911814a80b643d -c85f0bebb04ba27eb017570ee8e36251 -db6df0c5e4d7490f31a4e9ecb6e4e958 -5c528b3369644c9cfd8bab9a46de2eb9 -efaeb3402e4a2da275228cd5416e735c -4b0b0ba3958672efa8a88a275a5615ee -4f1c6183c66d473cfa9a2e027f53908d -dbba0203d75b6632646e0d8ce4d94fe7 -e296916aaeb42ec20dc1768f076ff326 -bfa34f4c07c482fe4e7ec8f2c13e8d08 -1a940cd57dff03f0f9f8ac3513e816d1 - - -f5a4c8ccc8fc2f1dc246ec2f70c7dc91 -105926bd2146d9d2f96c2f5650591a1a -53752275e001831a1aa1af926cbdfcbd -6d76981b87d6b8f482aa5b3950f172bb -28d998536cc67795eb0812a1e4c5a6ed -767c14923c466cadc2b4d21941ea8f59 -0ce654c1f24e1190c6c3022435e09ea7 -89697cec3795e0df248044ce53e74756 -370330c7627ec45797aafa9e99f84762 -92bcad6a72829412e19818ac23d99c7d -bfd0bf42e6473229d91e07d0b3f9baf7 -dc1b29caf1ea591b1b835b96d3869db3 -2fce4bf86219c914595c178c2d7e13f3 -d3dffe4a4ad4030e443985fa8ae1a91b -92e62681dc53e8a32accba6846001552 -4b1644100e7aea8a79bf8404381b8654 -8816de8b6e1f9e510d6b37002b1981aa -3de564ee11be8e8c77599abd1e3f3b40 -80bcf9c563ad0391642045dbff06d419 -034863b5c8459093e35c529af988e293 -b2f4d01512267ce06fff267cf4136d6c -cd4aafbf96f9ca00ec1ea45ce445273f -556e7abe13d8106bdda27be2fa1b6613 -ad13b311bf3894d1537bf68d32120589 -cc9d3aa2b9dd98d94377e40b25935c24 -5cbe621c76cbc515a28991705e268dbe -85d404bac8dce61b4c6aaa8023b3a56d -0bc1e68b3aef15b66b82bc1f4fec9a02 -1b474f0760ef6d41e1ab690197d6c3b4 -81707b9c0d2bcc9c4494fe861b4fb962 -2f8d8c187982fc14d5563c7bdbc43e37 -d9e0bc0764b65a6d2a0515c80c52314c -3f75ac05a676ab5c90483bcea3b7a6e1 -619c0c5385acb19c1fc066b3ca4ea883 -c4df95964fa512230fe0133cb6d83d2e -bf7304dd5d19225b698af27eff949294 -a043ad2f203a743b407deec8d036eca5 -3a186df0e76f4b69fa549fe809aa77c2 -e605e982c1935f82b08f81c61fa61b3c -d345a084df9b7c46897877130a475f22 -c376d9324174a12063c9177dba2a456b -45d9d3a78fbe7e58ac5728e9ccca9717 -19e9a1da7c2e79b9b4d18cb4224bf018 -6151a7c4134040854886bc5006a0f7c9 -f6d558ae332bd91dea66be7e702e7ed5 -fde64db4462dcd2dd78d40ac1e490286 -e5f6f03a4edf8b78cb561640dd021ef9 -6ca183f901d31980b285e187778a82c1 -8038e4775316d36b154b2d20f8eca0ae -f2930d262bbe944d1a7850e4a18a2e50 -665abcd595667e221eb5bf99589f8a05 -c2664fbfabe5322a1a136ef9e6ec28db -41d59efa00cc27e8df1b147decc0ee2a -c5a1b32584b43642dcd623f195e146ca -d2e1f32fdfd8eed8580f1b72973330d9 -8a7351ef099da26bbaa63ade1ada8be9 -679c3a5f9bbbdd055430363726db4664 -c088d67b3cd6fd4815180b3f98ca8f5c -05681d69a9d1601e222762698c9e95d7 -5a8af818e8fb9bedeb55d5cf3427e2ce -8376d641f582ea7fbf4334fe8ee54403 -7c7da4fdb0743389e825481f72db8fbf -47b54d44fec79b69f1cc151a1b2a9a43 -f933a0d4e4f4a2f465d48977a62f71b0 -946e88d5612bd35d2f9297a1419ba62c -5e83bbea91f6deaa37b247ac013ef556 -2481e1d39c2007f602fab6488777eaa6 -b57af4b9947810d411c878d3e9caa276 -6f1285c463f6d6fe42e39f34d733cf2c -aba33e5e98071280db0d34c42349f1bf -90eb802715ce63e5e3ca4a55a42b8397 -810dab21a178dd4bd8acbf6c0741d2cd -efe33061592589b22ca62d7d972a9218 -826b0a139421500b614b3302c87738d0 -136042c53e8cdcd5c877a55278b800a8 -dae6f405639ecf3eea0e3d1bf52936f4 -2f1531eab3f5b51c4c6725608f4eb456 -3d64316fad587349e5d9dd0792249162 -f2681caacd54b4b43912e489c678a3ec -8ace5113760f987144f54425afffd195 -fa5f8193240995285a30de76a124744c -2f7a8a40835764d2d62357e2ecbd1d28 -a346bdb285fe8580f4b5b8dd5f5451ef -9b70d8debaa8065353104c699e328325 -cbf00fbe06d62b8503f79d19005b84d5 -c48848adc73b20b6a2e52888c8a7f9f9 -4ab5cf779b6ba8737731bd949438e279 -f6c51890eb3d84defb470c9101e0e1fa -db77b35764831af0b616bcc87ccda46d -2fce4bf86219c914595c178c2d7e13f3 -2e0eb0e3d978cfc35b462a199aeded78 -9e36c55b53a1b080066d9947a92d2ce3 -9e36c55b53a1b080066d9947a92d2ce3 -8f120e35f8b6608fb34e38edf9a2687c -a9e38adb81052e1178a2486de8a87c28 -7389cc51b77b11b297ccce79048a1c7f -0474bee65715fc6918a92b668178be6c -c5f9a0849fc60d9d903496e6752a8961 -a65c4d66168635b87ecbc720e2a50703 -7921881e4e473d7284ea741addbe8810 -c64ea6bf2afef2560c8b642972b04663 -3b719c139541347e5d868dc81867d444 -752f4b5e92e81b70cae0ddc1be19e468 -4ee61217dbfae0266feb5345aab311cf -d5f4a934ec62542d5273a41e8fbcfe24 -8b7bc49f97c95c9d641d3b3c72ccf1cf -0ddff84d392b7fa485c6e47623f9885b -a6212b5e4fec967f17c519c9c6ce0171 -74ec0398a7ef045c66ac8a7a60f93fb0 -a174947c846b0105d6556d7497e5d2ab -bf803d2d0ea860bbc5e35c4b6decc800 -d5f4a934ec62542d5273a41e8fbcfe24 -4454d66db639f71ab544b163923181fa -7fd720194f42e7c1ae62927d6adfc046 -7fb6e9956e37e06daaf1510132bceb78 -b72c3b6c763f26a3ffc3c2d6c0f6d49c -10feed256eef9b9ba87cf7fa3ac0ef36 -e1d238ddd4e573b085cc34b028b24883 -a03c8d2492d0ca2404593ec71b479eaf -12bd3c14cc3b96cf90d3362573d85559 -e8673277dd7383120e5f9028d0caccb6 -60805f7fdcc0a187defb87f4ecfd9bb3 -8f120e35f8b6608fb34e38edf9a2687c -bdca821b84171d36d4ad692ad9c11742 -cd4aafbf96f9ca00ec1ea45ce445273f -16f911dcd53ddf0a2c59fe6173f892f8 -79a72d08df258b0ca33c240c1d7746c5 -cc9d3aa2b9dd98d94377e40b25935c24 -739a60ba606586c88e8626e558f16807 -c6a9a7d9cc31a6f650c60a8012a0d0d3 -593b86c8523823ae956999f052556265 -4d444d41aee1b2c9d54942654da1d042 -9d3d0f55c282fc3544043027b119cf37 -9ad922c1fdc252eb8e61dbfdcf32ada5 -03ffa8f7c09dcea59dd5c89f136c7da6 -4a436addc8ecc176da90d6f8e7ca0a8a -115c4806f36aeb531699b370720312c4 -55418df59f5b95c989be04f945a0002a -8475cd05414226f2ff20ee97df8bcf31 - - -d41d8cd98f00b204e9800998ecf8427e -454717ceabbc959f7902beb3903f011e - - -d41d8cd98f00b204e9800998ecf8427e - - -d41d8cd98f00b204e9800998ecf8427e -8f39483d399ceae285fb7cc61109c809 - - -d3e751a8e183a3dd285daaad51383ddf -64ddd81ea2b2522ab666edb41a4e5863 - - -26a3978f1a1cf63348e4ef363c263131 -b97cd0ed145854fbc8b148ac0913565e -bb1be9c660e554a43686915f1d7f021f -445b34b4ac5dbd8cbdbb2d8d52656cab -4af4f260359b0ce9c42f77ab47caa6bb -f1d99169e9f6f6e4880a4f2859b53858 -8bb0f71417f315eb04c44bf1b07dd157 -e7e6b8d7a9b989619beabe01cdff3bb2 -a671cca2c79d9135464aa9f41e78b026 -adbd23ce0f80d78b794b1bf265c21e5e -d5f4a934ec62542d5273a41e8fbcfe24 -1e99a575dd2737b28288144382810210 -e5f6f03a4edf8b78cb561640dd021ef9 -c6e27842c8603e8d0679cdcef7cb6504 -b3ef3d72a6836a5291a0487307b5d8f6 -131e9c1492e737f2c9ec974ca6266f1a -bf5474e7c85243d85f6ce742204bb692 -7d389b04b1d62e932d0e2696c7e68e9d -287ac7dbd72c235345b20a09e93f4df4 -2a2a087b71d3730e58954da48d65b1e0 -71042cbc4ea8acafe754fb436feff958 -d41d8cd98f00b204e9800998ecf8427e -a665caf39101bdf12f66bdbaea3c1e74 -618d61f6e80aaea18e3257b4d6cc2728 -4b31ec814f6c455fb7d72f4d32589b3c -4b35eb7636936f48c6d40353135af307 -7c7da4fdb0743389e825481f72db8fbf -4b1644100e7aea8a79bf8404381b8654 -60152344388314374238c9e8cb697099 -8707c43fc89f7fefe22678f3a25fd20c -351226b86bf32c35da86bc84d37710ac -e80502a829c7141deddf60ac87e42e46 -fb0e617a4e54b963f7c2139efa874d10 -cd26e28d19227f52dbb7af6285f49684 -19d37ea793e07343775fa6f8e3cb5671 -c5e70aa4ca496434dce0517017aa787e -d01041e2b86955d1e1021ea0c5e12133 -1c1dfcfd97b07cefb27d60e989f82427 -a6879b7e59ccb7926635047f0c736b05 -4f37eab95abbe47905271558dfe2582f - - -d29432daede0438dd797ecdbdf915015 -03561d6f159b40a276ae7eca3319970c -d8386960c63e6b27895685c70c4c435e -f6858cdcdb32713ba80d87cd99257e51 -8bcbac102e83193d933a2c936857635f -c797a7830343e4700562dc7f4acf1f02 -d41d8cd98f00b204e9800998ecf8427e -10cb1a61683843039f3f99527f0447a0 -5eca57a0b130d1f5a4cd73d4053f44d3 -40a032464455dd72235e79afa94beb15 -87f5e4a61a397aeffc7d8fdd96673988 -3afe38c6b38b07c3bdfdcfa982e9218b -ebc05e1e66b1eb6dc5a6bdf27e2eac01 -b0844a2326bceb13156ab3950a60b7b3 -7946f4323bc05ed1418e7b056ccbfb4e -6271882092ed28f4227be476c54535cb -c4b077a4e3f7d8c58bb112c6dbe6674f -1ee75057ea44ea31b5d2167d8588e39d -c5b2fccc94d752d454472d6fe7a9aa3b -45e61dc0820ab58a6097c676507874c9 -be8a7ee2b863d701cf8d379676d3245e -5ddea6a4cd5005e849f6f307f1d40928 -d956abc3ac4cac362a78ba0f2cbcbdc7 -87f28d57fe2a6d30d4ee3975ef4a25fc -2c92545e15695b5d27839c7662657ab0 -a79636bc2b90ad32bd15c9015ff17ae2 -6c83356f69563552d5d971e9f956253b -d7e4cc99c44cc6add3563cb2ac5d16bc -3c22e69f2f2972bac1f8df3e48f0eb52 -f6412834592319407d829327cf8f23c2 -88cb6b600eb10287e93e27079ab792ad -249398348c5370aa367828a1261e823b -7cf564871684986dfe050a9acefab1f0 -75744ffb286ebd32ec6b56a8cb86a2e1 -038daf9b3dd4ba6f83911814a80b643d -c85f0bebb04ba27eb017570ee8e36251 -db6df0c5e4d7490f31a4e9ecb6e4e958 -5c528b3369644c9cfd8bab9a46de2eb9 -efaeb3402e4a2da275228cd5416e735c -4b0b0ba3958672efa8a88a275a5615ee -4f1c6183c66d473cfa9a2e027f53908d -dbba0203d75b6632646e0d8ce4d94fe7 -e296916aaeb42ec20dc1768f076ff326 -bfa34f4c07c482fe4e7ec8f2c13e8d08 -1a940cd57dff03f0f9f8ac3513e816d1 - - -f5a4c8ccc8fc2f1dc246ec2f70c7dc91 -105926bd2146d9d2f96c2f5650591a1a -53752275e001831a1aa1af926cbdfcbd -6d76981b87d6b8f482aa5b3950f172bb -28d998536cc67795eb0812a1e4c5a6ed -767c14923c466cadc2b4d21941ea8f59 -0ce654c1f24e1190c6c3022435e09ea7 -89697cec3795e0df248044ce53e74756 -370330c7627ec45797aafa9e99f84762 -92bcad6a72829412e19818ac23d99c7d -bfd0bf42e6473229d91e07d0b3f9baf7 -dc1b29caf1ea591b1b835b96d3869db3 -2fce4bf86219c914595c178c2d7e13f3 -d3dffe4a4ad4030e443985fa8ae1a91b -92e62681dc53e8a32accba6846001552 -4b1644100e7aea8a79bf8404381b8654 -8816de8b6e1f9e510d6b37002b1981aa -3de564ee11be8e8c77599abd1e3f3b40 -80bcf9c563ad0391642045dbff06d419 -034863b5c8459093e35c529af988e293 -b2f4d01512267ce06fff267cf4136d6c -55260794af084e7fac206c20621e8fca -556e7abe13d8106bdda27be2fa1b6613 -ad13b311bf3894d1537bf68d32120589 -cc9d3aa2b9dd98d94377e40b25935c24 -5cbe621c76cbc515a28991705e268dbe -85d404bac8dce61b4c6aaa8023b3a56d -0bc1e68b3aef15b66b82bc1f4fec9a02 -1b474f0760ef6d41e1ab690197d6c3b4 -81707b9c0d2bcc9c4494fe861b4fb962 -2f8d8c187982fc14d5563c7bdbc43e37 -d9e0bc0764b65a6d2a0515c80c52314c -b5d06e9bd03f50a951e4c5ed8d67a9b0 -619c0c5385acb19c1fc066b3ca4ea883 -c4df95964fa512230fe0133cb6d83d2e -bf7304dd5d19225b698af27eff949294 -a043ad2f203a743b407deec8d036eca5 -3a186df0e76f4b69fa549fe809aa77c2 -e605e982c1935f82b08f81c61fa61b3c -d345a084df9b7c46897877130a475f22 -c376d9324174a12063c9177dba2a456b -45d9d3a78fbe7e58ac5728e9ccca9717 -19e9a1da7c2e79b9b4d18cb4224bf018 -6151a7c4134040854886bc5006a0f7c9 -f6d558ae332bd91dea66be7e702e7ed5 -fde64db4462dcd2dd78d40ac1e490286 -e5f6f03a4edf8b78cb561640dd021ef9 -6ca183f901d31980b285e187778a82c1 -e7e7279bf3b7845d60813383267bfa37 -a5e086a23801dcfce3db1c2771a93a95 -8038e4775316d36b154b2d20f8eca0ae -f2930d262bbe944d1a7850e4a18a2e50 -665abcd595667e221eb5bf99589f8a05 -c2664fbfabe5322a1a136ef9e6ec28db - - -a5e086a23801dcfce3db1c2771a93a95 -7d10d6dbc1f9f2c0c829547ae9dac5ce -ee824cf6776480f19eafb0e66bc37fab -64c990e913582ce96567f2a33b77e5cc -1b1dbebd7debbfa2fdcb976a6eb8d2a5 -70da629ba3d8a2f001293f990b853d84 -54636246f05a475b133a1b451c03e8bc -857fd4a720646781c073435f64e422f5 -eed99043ffbc1636f470c638184e74f8 -dfc73e8ef77f55c693779c678fc0dbb2 -3bf963896c4b2cd3e69ef4b7a2dd6466 -3f991827a9e917caf795807aec7aca77 -b6c301be8fdbbc7c54b90069d3832a05 -6e053d5694b92090c4dabe2dccebbc55 -f77b85727494a7777fb528d4e74a2908 -e65844b0da53461e20fc7a27cc998de8 -3d447751616d189feb8f4abe225e8806 -b72b3f4c13324104a40db6c02693f6d1 -104b3da52c824c4d21fb90aee5445089 -e7752e2bfe7b417bbf48bb3c9b1932ab -6cbf986df4190b98cfe6007cfbed6295 -f8aa78afcaba3497b9f42a82a75d46b6 -940c5e08ee603fe4de989a53b0a3b305 -049560e8c8792190975b0bb73e88d1a6 -9325113570b629298444a50f1e188d08 -36977f1b691da5a7c1ffa27000ccab64 -076b0683bd9709a424503f44e8114174 -1e41211e961cdb9546abcb144ab50c05 -9fa3121592d69fd677ad305d3f4da0ae -5e12871ea910a6acc073e9c5dfda3bd9 -d9567f70e2b5de39cea3f8ae90b73595 -d407f26b3740a52df5e8c619ad06311b -0cbe025fb20b6db195bb6ccb64930de3 -fe142b8fbc1f170c0f2423dc86cdcb0f -a5dec0e545fbe51ccd8ee88a04b765ad -f42f66c04cc8694fc96c6429f01e92ce -cb68b41ee9ba56e19b1fcd031dc392cb -946f91cec0c8f171bb8f5825a800bedc -af5bd4a063b464bc5f02f40eae30d3bc -0d2f6939e820e7e2a8110ebcf41215b0 -5883ede99edc85cf16b80a9c0cf0feb4 -dc0411d15f7bd6897ccffaa8c6de7283 -965eee4c7e1404c517b2447649743d0b - - -41d59efa00cc27e8df1b147decc0ee2a -c5a1b32584b43642dcd623f195e146ca -d2e1f32fdfd8eed8580f1b72973330d9 -8a7351ef099da26bbaa63ade1ada8be9 -679c3a5f9bbbdd055430363726db4664 -c088d67b3cd6fd4815180b3f98ca8f5c -05681d69a9d1601e222762698c9e95d7 -5a8af818e8fb9bedeb55d5cf3427e2ce -8376d641f582ea7fbf4334fe8ee54403 -7c7da4fdb0743389e825481f72db8fbf -74ff19c57e96a71849acb49844f60920 -47b54d44fec79b69f1cc151a1b2a9a43 -f933a0d4e4f4a2f465d48977a62f71b0 -946e88d5612bd35d2f9297a1419ba62c -5e83bbea91f6deaa37b247ac013ef556 -2481e1d39c2007f602fab6488777eaa6 -b57af4b9947810d411c878d3e9caa276 -6f1285c463f6d6fe42e39f34d733cf2c -aba33e5e98071280db0d34c42349f1bf -90eb802715ce63e5e3ca4a55a42b8397 -810dab21a178dd4bd8acbf6c0741d2cd -efe33061592589b22ca62d7d972a9218 -ee8242ba8e82c90a0703e1ef60e92b56 -136042c53e8cdcd5c877a55278b800a8 -dae6f405639ecf3eea0e3d1bf52936f4 -2f1531eab3f5b51c4c6725608f4eb456 -3d64316fad587349e5d9dd0792249162 -f2681caacd54b4b43912e489c678a3ec -8ace5113760f987144f54425afffd195 -fa5f8193240995285a30de76a124744c -2f7a8a40835764d2d62357e2ecbd1d28 -a346bdb285fe8580f4b5b8dd5f5451ef -9b70d8debaa8065353104c699e328325 -cbf00fbe06d62b8503f79d19005b84d5 -c48848adc73b20b6a2e52888c8a7f9f9 -4ab5cf779b6ba8737731bd949438e279 -f6c51890eb3d84defb470c9101e0e1fa -db77b35764831af0b616bcc87ccda46d -2fce4bf86219c914595c178c2d7e13f3 -e1d1617bee72d1951d3eaa02525726d1 -9e36c55b53a1b080066d9947a92d2ce3 -9e36c55b53a1b080066d9947a92d2ce3 -8f120e35f8b6608fb34e38edf9a2687c -a9e38adb81052e1178a2486de8a87c28 -7389cc51b77b11b297ccce79048a1c7f -0474bee65715fc6918a92b668178be6c -c5f9a0849fc60d9d903496e6752a8961 -a65c4d66168635b87ecbc720e2a50703 -7921881e4e473d7284ea741addbe8810 -c64ea6bf2afef2560c8b642972b04663 -3b719c139541347e5d868dc81867d444 -752f4b5e92e81b70cae0ddc1be19e468 -4ee61217dbfae0266feb5345aab311cf -d5f4a934ec62542d5273a41e8fbcfe24 -5305cd35321214f507640a0fa458a83b -0ddff84d392b7fa485c6e47623f9885b -a6212b5e4fec967f17c519c9c6ce0171 -74ec0398a7ef045c66ac8a7a60f93fb0 -a174947c846b0105d6556d7497e5d2ab -bf803d2d0ea860bbc5e35c4b6decc800 -d5f4a934ec62542d5273a41e8fbcfe24 -4454d66db639f71ab544b163923181fa -7fd720194f42e7c1ae62927d6adfc046 -7fb6e9956e37e06daaf1510132bceb78 -b72c3b6c763f26a3ffc3c2d6c0f6d49c -10feed256eef9b9ba87cf7fa3ac0ef36 -e1d238ddd4e573b085cc34b028b24883 -a03c8d2492d0ca2404593ec71b479eaf -12bd3c14cc3b96cf90d3362573d85559 -e8673277dd7383120e5f9028d0caccb6 -60805f7fdcc0a187defb87f4ecfd9bb3 -8f120e35f8b6608fb34e38edf9a2687c -bdca821b84171d36d4ad692ad9c11742 -d438bd3c5e0f59d1152dcaaf951c6ab6 -16f911dcd53ddf0a2c59fe6173f892f8 -79a72d08df258b0ca33c240c1d7746c5 -cc9d3aa2b9dd98d94377e40b25935c24 -739a60ba606586c88e8626e558f16807 -c6a9a7d9cc31a6f650c60a8012a0d0d3 -593b86c8523823ae956999f052556265 -77f0ae9331e8236008cc00b6c3c9e653 -9d3d0f55c282fc3544043027b119cf37 -9ad922c1fdc252eb8e61dbfdcf32ada5 -03ffa8f7c09dcea59dd5c89f136c7da6 -4a436addc8ecc176da90d6f8e7ca0a8a -115c4806f36aeb531699b370720312c4 -6de932fcb9805ce7f843721958c34a41 -8475cd05414226f2ff20ee97df8bcf31 - - -f6824fe35ddbed045eea82cb1612c2fb -263890251d7bbc4c692caa22c2c00dca - - -d41d8cd98f00b204e9800998ecf8427e - - -d41d8cd98f00b204e9800998ecf8427e -94db7d62efd46fd1069e2fdc796ec48b - - -169bd07ae16fbd983f38b6d19e7e3ff5 - - -d41d8cd98f00b204e9800998ecf8427e -3490105a0c0d7976ccb8ac93c595262b - - -016d324c588d6ce78db3c6625c5b86fc -d2c519cac686043d7686769a322fd1b5 - - -c1d33938283415cd00527289b0d7c3f6 - - -d41d8cd98f00b204e9800998ecf8427e -2543eee751616a5c74e1bb37c5d64ae4 - - -e611f5c3d04bc4bd9cdee4a9a5af6d0a - - -11689e5722e4204b9d01e5e4483b92ef -08938fc6d6d375cf72fb4a9e14b1f3c2 -a20a84fb09238e216ab80d91674426b1 - - -d41d8cd98f00b204e9800998ecf8427e -bc3aa842090496571e579929dbb67946 -20d05f87e3dcc4cc34783e807d53af33 -70c0bcc71422c17305e134929089ed0a - - -96a92bc03a6ca67f39d363c36031dee7 -353d0788a1b27e81a7c62446ca190de1 -24ec433a2020143f3a634ff9bf695024 -5e1aea18f899b4a763a0291dcf1f2b90 -3d9e24b7399dffbfbd97e4e63efb30b6 -9dd4c109f77db954d5afcb20d5af9e4c - - -d41d8cd98f00b204e9800998ecf8427e -94c20a3f71b938c9767819f9216393d3 - - -d41d8cd98f00b204e9800998ecf8427e -49b80ae086fa525ee4c7186729019611 -0c789db58d34dba3a6000264c0d895c7 - - -24b8f65ab4a24ff8241b8af469928f75 -faee7623b7d24024c8f024cf8d523736 -7770e9e8e3fb4b98bc149059c5bc9633 - - -d41d8cd98f00b204e9800998ecf8427e -88b846ea65a9fba4dc31bbf408820f24 - - -7b7cde9c324feeed6e94f50e1655ba40 -61e24a32c8c6bbf13272f96433a9584e -984c0b75c89d9ef9fef1fb68dd727448 -966129fc8b4d82883741779cf87ea57a -4291524b8a1b72ba1dddf8210dd394a7 - - -d41d8cd98f00b204e9800998ecf8427e - - -d41d8cd98f00b204e9800998ecf8427e -9382e7efb69651b29045f2421d618717 - - -0b959ec99ed9ee63f065c7d40454b9ec -f406b3b391eb6648f00807bbfd3ecaec - - -d41d8cd98f00b204e9800998ecf8427e -0be386b7e05e9b798c974dcd8471d300 - - -d41d8cd98f00b204e9800998ecf8427e -cb7d56d6c48746ab5a1230b020b21475 -03c8aefc955ba78bc334718fd8e48f8d - - -d41d8cd98f00b204e9800998ecf8427e -4b66ffd93217cb14fa44393d7ed28995 -7a3cae542041eaa003ce58a9ff3dc82b -419a141c971f0a5edd4c8d19ac6f9741 - - -1f014c58fdf956eabae16c7b8774b02a -dd36572d1e317345996c521a9ce5c221 -9abec172cb37c2446866c25c2ce36671 -ad18616245d53b066a8287e98845a8a8 -66b616b872ef80968c8525b6b14f62fa - - -d41d8cd98f00b204e9800998ecf8427e - - -d41d8cd98f00b204e9800998ecf8427e -dd9a6717531dc3053943e016f017124a - - -34bc13e73d4cd8217daf337a13593963 -46585b9b2118933add2b0efcac54d055 - - -d41d8cd98f00b204e9800998ecf8427e -172fde67b2620ef8febd816161712c8f - - -c8794336eba88e9ce0af56f8b5cded4d - - - - -7c7d00777d21ed95c127af574c6ec4dc -391071254a71e5fe29f6a22cbfc27543 - - -d87e04818900b16e33d6ff072bb96ac4 - - -db1873d6baf2f70e94105ee43cc72633 -a9a4cf07f35679b20f9024bc4de3b3d5 -257ff234c2372ad89a1f45f5d1b418ee - - -5fd136bf4934520ef298c6a3afd58a4e - - -6aab5f541a8f35b6e04cdaa94e51bcfa - - -b63ae515c552eb1b143cedb9f80b7e4f -8e8a66035dd90a4e18ba500469166691 - - -d9fbd3c65ab7d5dcf5152ea76a605ea5 - - -b65459b4d85b0f5c0aa1db76025ee46e - - -c8375c535010671604b34b320866da37 -a5078a8ad692716abbc697b629f2cedb -e76a888f442774b3908a2beb35bc9f87 -a79b4df688dc6f03a468c89cf9345295 - - -d4034e549bfe8fff645d8d8978261d55 -69d546f3721f5c2695535a92bad97221 - - -bfcb5fb6ed7ec4fe114b3088b89d3687 - - - diff --git a/htdocs/install/mysql/data/llx_c_hrm_function.sql b/htdocs/install/mysql/data/llx_c_hrm_function.sql index f8b56563689..dd5c6e832bd 100644 --- a/htdocs/install/mysql/data/llx_c_hrm_function.sql +++ b/htdocs/install/mysql/data/llx_c_hrm_function.sql @@ -26,9 +26,9 @@ INSERT INTO llx_c_hrm_function (rowid, pos, code, label, c_level, active) VALUES(1, 5,'EXECBOARD', 'Executive board', 0, 1); INSERT INTO llx_c_hrm_function (rowid, pos, code, label, c_level, active) VALUES(2, 10, 'MANAGDIR', 'Managing director', 1, 1); INSERT INTO llx_c_hrm_function (rowid, pos, code, label, c_level, active) VALUES(3, 15, 'ACCOUNTMANAG', 'Account manager', 0, 1); -INSERT INTO llx_c_hrm_function (rowid, pos, code, label, c_level, active) VALUES(3, 20, 'ENGAGDIR', 'Engagement director', 1, 1); -INSERT INTO llx_c_hrm_function (rowid, pos, code, label, c_level, active) VALUES(4, 25, 'DIRECTOR', 'Director', 1, 1); -INSERT INTO llx_c_hrm_function (rowid, pos, code, label, c_level, active) VALUES(5, 30, 'PROJMANAG', 'Project manager', 0, 1); -INSERT INTO llx_c_hrm_function (rowid, pos, code, label, c_level, active) VALUES(6, 35, 'DEPHEAD', 'Department head', 0, 1); -INSERT INTO llx_c_hrm_function (rowid, pos, code, label, c_level, active) VALUES(7, 40, 'SECRETAR', 'Secretary', 0, 1); -INSERT INTO llx_c_hrm_function (rowid, pos, code, label, c_level, active) VALUES(8, 45, 'EMPLOYEE', 'Department employee', 0, 1); +INSERT INTO llx_c_hrm_function (rowid, pos, code, label, c_level, active) VALUES(4, 20, 'ENGAGDIR', 'Engagement director', 1, 1); +INSERT INTO llx_c_hrm_function (rowid, pos, code, label, c_level, active) VALUES(5, 25, 'DIRECTOR', 'Director', 1, 1); +INSERT INTO llx_c_hrm_function (rowid, pos, code, label, c_level, active) VALUES(6, 30, 'PROJMANAG', 'Project manager', 0, 1); +INSERT INTO llx_c_hrm_function (rowid, pos, code, label, c_level, active) VALUES(7, 35, 'DEPHEAD', 'Department head', 0, 1); +INSERT INTO llx_c_hrm_function (rowid, pos, code, label, c_level, active) VALUES(8, 40, 'SECRETAR', 'Secretary', 0, 1); +INSERT INTO llx_c_hrm_function (rowid, pos, code, label, c_level, active) VALUES(9, 45, 'EMPLOYEE', 'Department employee', 0, 1); diff --git a/htdocs/install/mysql/data/llx_c_typent.sql b/htdocs/install/mysql/data/llx_c_typent.sql index 918230cc5a3..11b512f26c2 100644 --- a/htdocs/install/mysql/data/llx_c_typent.sql +++ b/htdocs/install/mysql/data/llx_c_typent.sql @@ -31,6 +31,7 @@ -- delete from llx_c_typent; +-- Entries for all countries insert into llx_c_typent (id,code,libelle,fk_country,active) values ( 0, 'TE_UNKNOWN', '-', NULL, 1); insert into llx_c_typent (id,code,libelle,fk_country,active) values ( 1, 'TE_STARTUP', 'Start-up', NULL, 0); insert into llx_c_typent (id,code,libelle,fk_country,active) values ( 2, 'TE_GROUP', 'Grand groupe', NULL, 1); @@ -41,6 +42,7 @@ insert into llx_c_typent (id,code,libelle,fk_country,active) values ( 6, 'TE_WH insert into llx_c_typent (id,code,libelle,fk_country,active) values ( 7, 'TE_RETAIL', 'Revendeur', NULL, 0); insert into llx_c_typent (id,code,libelle,fk_country,active) values ( 8, 'TE_PRIVATE', 'Particulier', NULL, 1); insert into llx_c_typent (id,code,libelle,fk_country,active) values (100, 'TE_OTHER', 'Autres', NULL, 1); +-- Argentina (country 23) insert into llx_c_typent (id,code,libelle,fk_country,active) values (231, 'TE_A_RI', 'Responsable Inscripto', 23, 0); insert into llx_c_typent (id,code,libelle,fk_country,active) values (232, 'TE_B_RNI', 'Responsable No Inscripto', 23, 0); insert into llx_c_typent (id,code,libelle,fk_country,active) values (233, 'TE_C_FE', 'Consumidor Final/Exento', 23, 0); diff --git a/htdocs/install/mysql/migration/3.7.0-3.8.0.sql b/htdocs/install/mysql/migration/3.7.0-3.8.0.sql index d1cf11ac4c3..2241c35f00d 100755 --- a/htdocs/install/mysql/migration/3.7.0-3.8.0.sql +++ b/htdocs/install/mysql/migration/3.7.0-3.8.0.sql @@ -793,4 +793,9 @@ DELETE FROM llx_c_regions WHERE code_region=420 and fk_pays=4; ALTER TABLE llx_c_paiement MODIFY COLUMN libelle varchar(62); -ALTER TABLE llx_societe_remise_except MODIFY COLUMN description text NOT NULL; \ No newline at end of file +ALTER TABLE llx_societe_remise_except MODIFY COLUMN description text NOT NULL; + +-- Fix bad data +update llx_opensurvey_sondage set format = 'D' where format = 'D+'; +update llx_opensurvey_sondage set format = 'A' where format = 'A+'; + 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 a425ca2e3f2..e474e1dbfda 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 @@ -19,6 +19,14 @@ -- -- VMYSQL4.1 DELETE FROM llx_usergroup_user WHERE fk_usergroup NOT IN (SELECT rowid from llx_usergroup); +-- Was done into a 3.8 fix, so we must do it also in 3.9 +ALTER TABLE llx_don ADD COLUMN fk_country integer NOT NULL DEFAULT 0 after country; + + +-- Fix bad data +update llx_opensurvey_sondage set format = 'D' where format = 'D+'; +update llx_opensurvey_sondage set format = 'A' where format = 'A+'; + INSERT INTO llx_const (name, value, type, note, visible) values (__ENCRYPT('MAIN_DELAY_EXPENSEREPORTS_TO_PAY')__,__ENCRYPT('31')__,'chaine','Tolérance de retard avant alerte (en jours) sur les notes de frais impayées',0); INSERT INTO llx_const (name, value, type, note, visible) values ('MAIN_SIZE_SHORTLISTE_LIMIT','4','chaine','Longueur maximum des listes courtes (fiche client)',0); @@ -48,16 +56,17 @@ create table llx_overwrite_trans transvalue text )ENGINE=innodb; -ALTER TABLE llx_payment_salary ADD COLUMN datec datetime after tms; +ALTER TABLE llx_payment_salary ADD COLUMN datec datetime AFTER tms; ALTER TABLE llx_payment_salary CHANGE COLUMN fk_user_creat fk_user_author integer; -ALTER TABLE llx_adherent ADD COLUMN pass_crypted varchar(128) after pass; +ALTER TABLE llx_adherent ADD COLUMN pass_crypted varchar(128) AFTER pass; -ALTER TABLE llx_paiement ADD COLUMN ref varchar(30) NOT NULL AFTER rowid; +ALTER TABLE llx_paiement ADD COLUMN ref varchar(30) NOT NULL DEFAULT '' AFTER rowid; ALTER TABLE llx_socpeople ADD COLUMN photo varchar(255) AFTER skype; -ALTER TABLE llx_user_param MODIFY COLUMN value text NOT NULL; +ALTER TABLE llx_user_param MODIFY COLUMN param varchar(255) NOT NULL DEFAULT ''; +ALTER TABLE llx_user_param MODIFY COLUMN value text NOT NULL DEFAULT ''; ALTER TABLE llx_expedition ADD COLUMN import_key varchar(14); ALTER TABLE llx_expedition ADD COLUMN extraparams varchar(255); @@ -68,10 +77,9 @@ ALTER TABLE llx_prelevement_lignes MODIFY COLUMN code_banque varchar(128); ALTER TABLE llx_societe_rib MODIFY COLUMN code_banque varchar(128); ALTER TABLE llx_contrat ADD COLUMN ref_customer varchar(30); -ALTER TABLE llx_commande ADD COLUMN fk_warehouse integer DEFAULT NULL after fk_shipping_method; +ALTER TABLE llx_commande ADD COLUMN fk_warehouse integer DEFAULT NULL AFTER fk_shipping_method; 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); --ALTER TABLE llx_ecm_directories ADD UNIQUE INDEX uk_ecm_directories_fullpath(fullpath); @@ -100,54 +108,39 @@ ALTER TABLE llx_ecm_files ADD UNIQUE INDEX uk_ecm_files (label, entity); --ALTER TABLE llx_ecm_files ADD UNIQUE INDEX uk_ecm_files_fullpath(fullpath); -ALTER TABLE llx_product ADD COLUMN onportal tinyint DEFAULT 0 after tobuy; +ALTER TABLE llx_product ADD COLUMN onportal smallint DEFAULT 0 AFTER tobuy; -ALTER TABLE llx_user ADD COLUMN employee tinyint DEFAULT 1; - - -create table llx_stock_lotserial -( - rowid integer AUTO_INCREMENT PRIMARY KEY, - datec datetime, - tms timestamp, - fk_user_creat integer, - fk_user_modif integer, - fk_product integer NOT NULL, -- Id of product - batch varchar(30) DEFAULT NULL, -- Lot or serial number - eatby date DEFAULT NULL, -- Eatby date - sellby date DEFAULT NULL -- Sellby date -) ENGINE=innodb; - +ALTER TABLE llx_user ADD COLUMN employee smallint DEFAULT 1; CREATE TABLE IF NOT EXISTS llx_c_hrm_function ( rowid integer PRIMARY KEY, - pos tinyint DEFAULT 0 NOT NULL, + pos smallint DEFAULT 0 NOT NULL, code varchar(16) NOT NULL, label varchar(50), - c_level tinyint DEFAULT 0 NOT NULL, - active tinyint DEFAULT 1 NOT NULL + c_level smallint DEFAULT 0 NOT NULL, + active smallint DEFAULT 1 NOT NULL )ENGINE=innodb; INSERT INTO llx_c_hrm_function (rowid, pos, code, label, c_level, active) VALUES(1, 5, 'EXECBOARD', 'Executive board', 0, 1); INSERT INTO llx_c_hrm_function (rowid, pos, code, label, c_level, active) VALUES(2, 10, 'MANAGDIR', 'Managing director', 1, 1); INSERT INTO llx_c_hrm_function (rowid, pos, code, label, c_level, active) VALUES(3, 15, 'ACCOUNTMANAG', 'Account manager', 0, 1); -INSERT INTO llx_c_hrm_function (rowid, pos, code, label, c_level, active) VALUES(3, 20, 'ENGAGDIR', 'Engagement director', 1, 1); -INSERT INTO llx_c_hrm_function (rowid, pos, code, label, c_level, active) VALUES(4, 25, 'DIRECTOR', 'Director', 1, 1); -INSERT INTO llx_c_hrm_function (rowid, pos, code, label, c_level, active) VALUES(5, 30, 'PROJMANAG', 'Project manager', 0, 1); -INSERT INTO llx_c_hrm_function (rowid, pos, code, label, c_level, active) VALUES(6, 35, 'DEPHEAD', 'Department head', 0, 1); -INSERT INTO llx_c_hrm_function (rowid, pos, code, label, c_level, active) VALUES(7, 40, 'SECRETAR', 'Secretary', 0, 1); -INSERT INTO llx_c_hrm_function (rowid, pos, code, label, c_level, active) VALUES(8, 45, 'EMPLOYEE', 'Department employee', 0, 1); +INSERT INTO llx_c_hrm_function (rowid, pos, code, label, c_level, active) VALUES(4, 20, 'ENGAGDIR', 'Engagement director', 1, 1); +INSERT INTO llx_c_hrm_function (rowid, pos, code, label, c_level, active) VALUES(5, 25, 'DIRECTOR', 'Director', 1, 1); +INSERT INTO llx_c_hrm_function (rowid, pos, code, label, c_level, active) VALUES(6, 30, 'PROJMANAG', 'Project manager', 0, 1); +INSERT INTO llx_c_hrm_function (rowid, pos, code, label, c_level, active) VALUES(7, 35, 'DEPHEAD', 'Department head', 0, 1); +INSERT INTO llx_c_hrm_function (rowid, pos, code, label, c_level, active) VALUES(8, 40, 'SECRETAR', 'Secretary', 0, 1); +INSERT INTO llx_c_hrm_function (rowid, pos, code, label, c_level, active) VALUES(9, 45, 'EMPLOYEE', 'Department employee', 0, 1); CREATE TABLE IF NOT EXISTS llx_c_hrm_department ( rowid integer PRIMARY KEY, - pos tinyint DEFAULT 0 NOT NULL, + pos smallint DEFAULT 0 NOT NULL, code varchar(16) NOT NULL, label varchar(50), - active tinyint DEFAULT 1 NOT NULL + active smallint DEFAULT 1 NOT NULL )ENGINE=innodb; INSERT INTO llx_c_hrm_department (rowid, pos, code, label, active) VALUES(1, 5,'MANAGEMENT', 'Management', 1); @@ -186,11 +179,131 @@ CREATE TABLE IF NOT EXISTS llx_establishment ( fk_user_mod integer NOT NULL, datec datetime NOT NULL, tms timestamp NOT NULL, - status tinyint DEFAULT 1 + status smallint DEFAULT 1 ) 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; +create table llx_stock_lotserial +( + rowid integer AUTO_INCREMENT PRIMARY KEY, + entity integer, + fk_product integer NOT NULL, -- Id of product + batch varchar(30) DEFAULT NULL, -- Lot or serial number + eatby date DEFAULT NULL, -- Eatby date + sellby date DEFAULT NULL, -- Sellby date + datec datetime, + tms timestamp, + fk_user_creat integer, + fk_user_modif integer, + import_key integer +) ENGINE=innodb; + + +-- Add budget tables + +create table llx_budget +( + rowid integer AUTO_INCREMENT PRIMARY KEY, + entity integer NOT NULL DEFAULT 1, + label varchar(255) NOT NULL, + status integer, + note text, + date_start date, + date_end date, + datec datetime, + tms timestamp, + fk_user_creat integer, + fk_user_modif integer, + import_key integer +)ENGINE=innodb; + + +create table llx_budget_lines +( + rowid integer AUTO_INCREMENT PRIMARY KEY, + fk_budget integer NOT NULL, + fk_project_ids varchar(255) NOT NULL, -- List of project ids related to this budget. If budget is dedicated to projects not yet started, we recommand to create a project "Projects to come". + amount double(24,8) NOT NULL, + datec datetime, + tms timestamp, + fk_user_creat integer, + fk_user_modif integer, + import_key integer +)ENGINE=innodb; + +ALTER TABLE llx_budget_lines ADD UNIQUE INDEX uk_budget_lines (fk_budget, fk_project_ids); + +-- Supprime orphelins pour permettre montee de la cle +-- MYSQL V4 DELETE llx_budget_lines FROM llx_budget_lines LEFT JOIN llx_budget ON llx_budget.rowid = llx_budget_lines.fk_budget WHERE llx_budget_lines.rowid IS NULL; +-- POSTGRESQL V8 DELETE FROM llx_budget_lines USING llx_budget WHERE llx_budget_lines.fk_budget NOT IN (SELECT llx_budget.rowid FROM llx_budget); + +ALTER TABLE llx_budget_lines ADD CONSTRAINT fk_budget_lines_budget FOREIGN KEY (fk_budget) REFERENCES llx_budget (rowid); + + +-- Add position field +ALTER TABLE llx_c_typent ADD COLUMN position integer NOT NULL DEFAULT 0; +ALTER TABLE llx_c_forme_juridique ADD COLUMN position integer NOT NULL DEFAULT 0; +ALTER TABLE llx_c_type_fees ADD COLUMN position integer NOT NULL DEFAULT 0; + + +-- NEW Level multiprice generator based on per cent variations over base price +CREATE TABLE llx_product_pricerules +( + rowid INT PRIMARY KEY NOT NULL AUTO_INCREMENT, + level INT NOT NULL, -- Which price level is this rule for? + fk_level INT NOT NULL, -- Price variations are made over price of X + var_percent FLOAT NOT NULL, -- Price variation over based price + var_min_percent FLOAT NOT NULL -- Min price discount over general price +); +ALTER TABLE llx_product ADD COLUMN price_autogen smallint DEFAULT 0; +ALTER TABLE llx_product_pricerules ADD CONSTRAINT unique_level UNIQUE (level); + + +-- Delete deprecated fields +ALTER TABLE llx_opensurvey_sondage DROP COLUMN survey_link_visible; +ALTER TABLE llx_opensurvey_sondage DROP INDEX idx_id_sondage_admin; +ALTER TABLE llx_opensurvey_sondage DROP COLUMN id_sondage_admin; +ALTER TABLE llx_opensurvey_sondage DROP COLUMN canedit; +ALTER TABLE llx_opensurvey_sondage DROP COLUMN origin; + +DROP TABLE llx_opensurvey_sujet_studs; + +CREATE TABLE llx_opensurvey_formquestions ( + rowid INTEGER AUTO_INCREMENT NOT NULL PRIMARY KEY, + id_sondage VARCHAR(16), + question TEXT, + available_answers TEXT -- List of available answers +) ENGINE=InnoDB; + +CREATE TABLE llx_opensurvey_user_formanswers ( + fk_user_survey INTEGER NOT NULL, + fk_question INTEGER NOT NULL, + reponses TEXT +) ENGINE=InnoDB; + + + + +create table llx_categorie_project +( + fk_categorie integer NOT NULL, + fk_project integer NOT NULL, + import_key varchar(14) +)ENGINE=innodb; + +ALTER TABLE llx_categorie_project ADD PRIMARY KEY pk_categorie_project (fk_categorie, fk_project); +ALTER TABLE llx_categorie_project ADD INDEX idx_categorie_project_fk_categorie (fk_categorie); +ALTER TABLE llx_categorie_project ADD INDEX idx_categorie_project_fk_project (fk_project); + +ALTER TABLE llx_categorie_project ADD CONSTRAINT fk_categorie_project_categorie_rowid FOREIGN KEY (fk_categorie) REFERENCES llx_categorie (rowid); +ALTER TABLE llx_categorie_project ADD CONSTRAINT fk_categorie_project_fk_project FOREIGN KEY (fk_project) REFERENCES llx_projet (rowid); + + + + + diff --git a/htdocs/install/mysql/tables/llx_budget.sql b/htdocs/install/mysql/tables/llx_budget.sql new file mode 100644 index 00000000000..908bfc1337c --- /dev/null +++ b/htdocs/install/mysql/tables/llx_budget.sql @@ -0,0 +1,33 @@ +-- ============================================================================ +-- Copyright (C) 2015 Laurent Destailleur +-- +-- 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 . +-- +-- =========================================================================== + +create table llx_budget +( + rowid integer AUTO_INCREMENT PRIMARY KEY, + entity integer NOT NULL DEFAULT 1, + label varchar(255) NOT NULL, -- For example 'Global budget for year' or 'Budget for each project' + status integer, + note text, + date_start date, + date_end date, + datec datetime, + tms timestamp, + fk_user_creat integer, + fk_user_modif integer, + import_key integer +)ENGINE=innodb; diff --git a/htdocs/install/mysql/tables/llx_budget_lines.key.sql b/htdocs/install/mysql/tables/llx_budget_lines.key.sql new file mode 100644 index 00000000000..b31e74b324d --- /dev/null +++ b/htdocs/install/mysql/tables/llx_budget_lines.key.sql @@ -0,0 +1,26 @@ +-- =================================================================== +-- Copyright (C) 2015 Laurent Destailleur +-- +-- 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 . +-- +-- =================================================================== + + +ALTER TABLE llx_budget_lines ADD UNIQUE INDEX uk_budget_lines (fk_budget, fk_project_ids); + +-- Supprime orphelins pour permettre montee de la cle +-- MYSQL V4 DELETE llx_budget_lines FROM llx_budget_lines LEFT JOIN llx_budget ON llx_budget.rowid = llx_budget_lines.fk_budget WHERE llx_budget_lines.rowid IS NULL; +-- POSTGRESQL V8 DELETE FROM llx_budget_lines USING llx_budget WHERE llx_budget_lines.fk_budget NOT IN (SELECT llx_budget.rowid FROM llx_budget); + +ALTER TABLE llx_budget_lines ADD CONSTRAINT fk_budget_lines_budget FOREIGN KEY (fk_budget) REFERENCES llx_budget (rowid); diff --git a/htdocs/install/mysql/tables/llx_budget_lines.sql b/htdocs/install/mysql/tables/llx_budget_lines.sql new file mode 100644 index 00000000000..aba5c7f53ee --- /dev/null +++ b/htdocs/install/mysql/tables/llx_budget_lines.sql @@ -0,0 +1,30 @@ +-- ============================================================================ +-- Copyright (C) 2015 Laurent Destailleur +-- +-- 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 . +-- +-- =========================================================================== + +create table llx_budget_lines +( + rowid integer AUTO_INCREMENT PRIMARY KEY, + fk_budget integer NOT NULL, + fk_project_ids varchar(255) NOT NULL, -- 'IDS:x,y' = List of project ids related to this budget. If budget is dedicated to projects not yet started, we recommand to create a project "Projects to come". 'FILTER:ref=*ABC' = Can also be a dynamic rule to select projects. + amount double(24,8) NOT NULL, + datec datetime, + tms timestamp, + fk_user_creat integer, + fk_user_modif integer, + import_key integer +)ENGINE=innodb; diff --git a/htdocs/install/mysql/tables/llx_c_field_list.sql b/htdocs/install/mysql/tables/llx_c_field_list.sql index 2884ae6c486..b22f98b52ec 100644 --- a/htdocs/install/mysql/tables/llx_c_field_list.sql +++ b/htdocs/install/mysql/tables/llx_c_field_list.sql @@ -14,6 +14,11 @@ -- You should have received a copy of the GNU General Public License -- along with this program. If not, see . -- +-- Change are done into list pages to use the new code to manage +-- selection by users of fields. Once all changes are done with new +-- code, we will be able to use this table to store the content of +-- the $arrayfields table. +-- Table not used / not required for the moment. -- ======================================================================== create table llx_c_field_list diff --git a/htdocs/install/mysql/tables/llx_c_forme_juridique.sql b/htdocs/install/mysql/tables/llx_c_forme_juridique.sql index 0087f371092..ea8b45bf2d7 100644 --- a/htdocs/install/mysql/tables/llx_c_forme_juridique.sql +++ b/htdocs/install/mysql/tables/llx_c_forme_juridique.sql @@ -25,6 +25,7 @@ create table llx_c_forme_juridique libelle varchar(255), isvatexempted tinyint DEFAULT 0 NOT NULL, active tinyint DEFAULT 1 NOT NULL, - module varchar(32) NULL + module varchar(32) NULL, + position integer NOT NULL DEFAULT 0 )ENGINE=innodb; diff --git a/htdocs/install/mysql/tables/llx_c_type_fees.sql b/htdocs/install/mysql/tables/llx_c_type_fees.sql index e980562aff2..80bb3d9109d 100644 --- a/htdocs/install/mysql/tables/llx_c_type_fees.sql +++ b/htdocs/install/mysql/tables/llx_c_type_fees.sql @@ -25,5 +25,6 @@ create table llx_c_type_fees label varchar(30), accountancy_code varchar(32) NULL, active tinyint DEFAULT 1 NOT NULL, - module varchar(32) NULL + module varchar(32) NULL, + position integer NOT NULL DEFAULT 0 )ENGINE=innodb; diff --git a/htdocs/install/mysql/tables/llx_c_typent.sql b/htdocs/install/mysql/tables/llx_c_typent.sql index 06a41727b69..d492c41ff13 100644 --- a/htdocs/install/mysql/tables/llx_c_typent.sql +++ b/htdocs/install/mysql/tables/llx_c_typent.sql @@ -24,5 +24,6 @@ create table llx_c_typent libelle varchar(30), fk_country integer NULL, -- Defined only to have specific list for countries that can't use generic list (like argentina that need type A or B) active tinyint DEFAULT 1 NOT NULL, - module varchar(32) NULL + module varchar(32) NULL, + position integer NOT NULL DEFAULT 0 )ENGINE=innodb; diff --git a/htdocs/install/mysql/tables/llx_categorie_project.key.sql b/htdocs/install/mysql/tables/llx_categorie_project.key.sql new file mode 100644 index 00000000000..f92e86ff6e9 --- /dev/null +++ b/htdocs/install/mysql/tables/llx_categorie_project.key.sql @@ -0,0 +1,24 @@ +-- ============================================================================ +-- Copyright (C) 2007 Patrick Raguin +-- +-- 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 . +-- +-- ============================================================================ + +ALTER TABLE llx_categorie_project ADD PRIMARY KEY pk_categorie_project (fk_categorie, fk_project); +ALTER TABLE llx_categorie_project ADD INDEX idx_categorie_project_fk_categorie (fk_categorie); +ALTER TABLE llx_categorie_project ADD INDEX idx_categorie_project_fk_project (fk_project); + +ALTER TABLE llx_categorie_project ADD CONSTRAINT fk_categorie_project_categorie_rowid FOREIGN KEY (fk_categorie) REFERENCES llx_categorie (rowid); +ALTER TABLE llx_categorie_project ADD CONSTRAINT fk_categorie_project_fk_project_rowid FOREIGN KEY (fk_project) REFERENCES llx_projet (rowid); diff --git a/htdocs/install/mysql/tables/llx_categorie_project.sql b/htdocs/install/mysql/tables/llx_categorie_project.sql new file mode 100644 index 00000000000..ca536822ac2 --- /dev/null +++ b/htdocs/install/mysql/tables/llx_categorie_project.sql @@ -0,0 +1,25 @@ +-- ============================================================================ +-- Copyright (C) 2007 Patrick Raguin +-- Copyright (C) 2012 Juanjo Menent +-- +-- 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 . +-- +-- ============================================================================ + +create table llx_categorie_project +( + fk_categorie integer NOT NULL, + fk_project integer NOT NULL, + import_key varchar(14) +)ENGINE=innodb; diff --git a/htdocs/install/mysql/tables/llx_opensurvey_formquestions.sql b/htdocs/install/mysql/tables/llx_opensurvey_formquestions.sql new file mode 100644 index 00000000000..cf6b89f1339 --- /dev/null +++ b/htdocs/install/mysql/tables/llx_opensurvey_formquestions.sql @@ -0,0 +1,24 @@ +-- ============================================================================ +-- Copyright (C) 2013 Laurent Destailleur +-- +-- 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 . +-- ============================================================================ + +CREATE TABLE llx_opensurvey_formquestions ( + rowid INTEGER AUTO_INCREMENT NOT NULL PRIMARY KEY, + id_sondage VARCHAR(16), + question TEXT, + available_answers TEXT -- List of available answers +) ENGINE=InnoDB; + diff --git a/htdocs/install/mysql/tables/llx_opensurvey_sondage.sql b/htdocs/install/mysql/tables/llx_opensurvey_sondage.sql index dca50aba6f7..b728702db79 100644 --- a/htdocs/install/mysql/tables/llx_opensurvey_sondage.sql +++ b/htdocs/install/mysql/tables/llx_opensurvey_sondage.sql @@ -24,10 +24,10 @@ CREATE TABLE llx_opensurvey_sondage ( fk_user_creat integer NOT NULL, titre TEXT NOT NULL, date_fin DATETIME NOT NULL, - format VARCHAR(2) NOT NULL, + format VARCHAR(2) NOT NULL, -- 'A' = Text choice (choices are saved into sujet field), 'D' = Date choice (choices are saved into sujet field), 'F' = Form survey mailsonde tinyint NOT NULL DEFAULT 0, allow_comments tinyint NOT NULL DEFAULT 1, allow_spy tinyint NOT NULL DEFAULT 1, tms TIMESTAMP, - sujet TEXT -) ENGINE=InnoDB; \ No newline at end of file + sujet TEXT -- Not filled if format = 'F'. Question are into table llx_opensurvey_formquestions +) ENGINE=InnoDB; diff --git a/htdocs/install/mysql/tables/llx_opensurvey_user_formanswers.sql b/htdocs/install/mysql/tables/llx_opensurvey_user_formanswers.sql new file mode 100644 index 00000000000..8a771604181 --- /dev/null +++ b/htdocs/install/mysql/tables/llx_opensurvey_user_formanswers.sql @@ -0,0 +1,22 @@ +-- ============================================================================ +-- Copyright (C) 2015 Laurent Destailleur +-- +-- 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 . +-- ============================================================================ + +CREATE TABLE llx_opensurvey_user_formanswers ( + fk_user_survey INTEGER NOT NULL, + fk_question INTEGER NOT NULL, + reponses TEXT +) ENGINE=InnoDB; diff --git a/htdocs/install/mysql/tables/llx_opensurvey_user_studs.sql b/htdocs/install/mysql/tables/llx_opensurvey_user_studs.sql index 78d7fa69c4d..0e918d68a86 100644 --- a/htdocs/install/mysql/tables/llx_opensurvey_user_studs.sql +++ b/htdocs/install/mysql/tables/llx_opensurvey_user_studs.sql @@ -19,6 +19,6 @@ CREATE TABLE llx_opensurvey_user_studs ( id_users INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY, nom VARCHAR(64) NOT NULL, id_sondage VARCHAR(16) NOT NULL, - reponses VARCHAR(100) NOT NULL, + reponses VARCHAR(100) NOT NULL, -- Not used for 'F' surveys tms timestamp ) ENGINE=InnoDB; diff --git a/htdocs/install/mysql/tables/llx_product.sql b/htdocs/install/mysql/tables/llx_product.sql index 42832a6b227..b5df0ade60c 100755 --- a/htdocs/install/mysql/tables/llx_product.sql +++ b/htdocs/install/mysql/tables/llx_product.sql @@ -46,7 +46,7 @@ create table llx_product 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 - localtax1_tx double(6,3) DEFAULT 0, -- Spanish local VAT 1 + 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 fk_user_modif integer, -- user making last change @@ -81,5 +81,6 @@ create table llx_product import_key varchar(14), -- Import key fk_price_expression integer, -- Link to the rule for dynamic price calculation desiredstock integer DEFAULT 0, - fk_unit integer DEFAULT NULL + fk_unit integer DEFAULT NULL, + price_autogen TINYINT DEFAULT 0 )ENGINE=innodb; diff --git a/htdocs/install/mysql/tables/llx_product_pricerules.key.sql b/htdocs/install/mysql/tables/llx_product_pricerules.key.sql new file mode 100644 index 00000000000..42b9289d26a --- /dev/null +++ b/htdocs/install/mysql/tables/llx_product_pricerules.key.sql @@ -0,0 +1,19 @@ +-- ============================================================================ +-- Copyright (C) 2015 Marcos García +-- +-- 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 . +-- +-- =========================================================================== + +ALTER TABLE llx_product_pricerules ADD CONSTRAINT unique_level UNIQUE (level); \ No newline at end of file diff --git a/htdocs/install/mysql/tables/llx_product_pricerules.sql b/htdocs/install/mysql/tables/llx_product_pricerules.sql new file mode 100644 index 00000000000..3e3dfc02ed1 --- /dev/null +++ b/htdocs/install/mysql/tables/llx_product_pricerules.sql @@ -0,0 +1,26 @@ +-- ============================================================================ +-- Copyright (C) 2015 Marcos García +-- +-- 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 . +-- +-- =========================================================================== + +CREATE TABLE llx_product_pricerules +( + rowid INT PRIMARY KEY NOT NULL AUTO_INCREMENT, + level INT NOT NULL, -- Which price level is this rule for? + fk_level INT NOT NULL, -- Price variations are made over price of X + var_percent FLOAT NOT NULL, -- Price variation over based price + var_min_percent FLOAT NOT NULL -- Min price discount over general price +); \ No newline at end of file diff --git a/htdocs/install/mysql/tables/llx_stock_lotserial.sql b/htdocs/install/mysql/tables/llx_stock_lotserial.sql index a9099480e42..ed8a14e49d0 100644 --- a/htdocs/install/mysql/tables/llx_stock_lotserial.sql +++ b/htdocs/install/mysql/tables/llx_stock_lotserial.sql @@ -21,12 +21,14 @@ create table llx_stock_lotserial ( rowid integer AUTO_INCREMENT PRIMARY KEY, - datec datetime, - tms timestamp, - fk_user_creat integer, - fk_user_modif integer, + entity integer, fk_product integer NOT NULL, -- Id of product batch varchar(30) DEFAULT NULL, -- Lot or serial number eatby date DEFAULT NULL, -- Eatby date - sellby date DEFAULT NULL -- Sellby date + sellby date DEFAULT NULL, -- Sellby date + datec datetime, + tms timestamp, + fk_user_creat integer, + fk_user_modif integer, + import_key integer ) ENGINE=innodb; diff --git a/htdocs/install/mysql/tables/llx_user_param.sql b/htdocs/install/mysql/tables/llx_user_param.sql index 7194d73b4c4..67bce42645a 100644 --- a/htdocs/install/mysql/tables/llx_user_param.sql +++ b/htdocs/install/mysql/tables/llx_user_param.sql @@ -22,7 +22,7 @@ create table llx_user_param ( fk_user integer NOT NULL, entity integer DEFAULT 1 NOT NULL, -- multi company id - param varchar(64) NOT NULL, + param varchar(255) NOT NULL, value text NOT NULL )ENGINE=innodb; @@ -32,4 +32,4 @@ create table llx_user_param -- 1 : first company param -- 2 : second company param -- 3 : etc... --- \ No newline at end of file +-- diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang index a4b7423ebe8..8f8428b3c75 100755 --- a/htdocs/langs/en_US/admin.lang +++ b/htdocs/langs/en_US/admin.lang @@ -366,6 +366,7 @@ HideAnyVATInformationOnPDF=Hide all information related to VAT on generated PDF HideDescOnPDF=Hide products description on generated PDF HideRefOnPDF=Hide products ref. on generated PDF HideDetailsOnPDF=Hide products lines details on generated PDF +PlaceCustomerAddressToIsoLocation=Use ISO location for customer address Library=Library UrlGenerationParameters=Parameters to secure URLs SecurityTokenIsUnique=Use a unique securekey parameter for each URL @@ -980,6 +981,7 @@ Delays_MAIN_DELAY_CUSTOMER_BILLS_UNPAYED=Tolerence delay (in days) before alert Delays_MAIN_DELAY_TRANSACTIONS_TO_CONCILIATE=Tolerance delay (in days) before alert on pending bank reconciliation Delays_MAIN_DELAY_MEMBERS=Tolerance delay (in days) before alert on delayed membership fee Delays_MAIN_DELAY_CHEQUES_TO_DEPOSIT=Tolerance delay (in days) before alert for cheques deposit to do +Delays_MAIN_DELAY_EXPENSEREPORTS=Tolerance delay (in days) before alert for expense reports to approve SetupDescription1=All parameters available in the setup area allow you to setup Dolibarr before starting using it. SetupDescription2=The 2 most important setup steps are the 2 first ones in the left setup menu, this means Company/foundation setup page and Modules setup page: SetupDescription3=Parameters in menu Setup -> Company/foundation are required because input information is used on Dolibarr displays and to modify Dolibarr behaviour (for example for features related to your country). @@ -1117,6 +1119,9 @@ EmptyNumRefModelDesc=The code is free. This code can be modified at any time. ##### Module password generation PasswordGenerationStandard=Return a password generated according to internal Dolibarr algorithm: 8 characters containing shared numbers and characters in lowercase. PasswordGenerationNone=Do not suggest any generated password. Password must be type in manually. +PasswordGenerationPerso=Return a password according to your personally defined configuration. +SetupPerso=According to your configuration +PasswordPatternDesc=Password pattern description ##### Users setup ##### UserGroupSetup=Users and groups module setup GeneratePassword=Suggest a generated password @@ -1180,6 +1185,7 @@ CreditNotePDFModules=Credit note document models CreditNote=Credit note CreditNotes=Credit notes ForceInvoiceDate=Force invoice date to validation date +AllowCreditNoteWithoutRelatedInvoice=Allow to create credit note without a related invoice DisableRepeatable=Disable repeatable invoices SuggestedPaymentModesIfNotDefinedInInvoice=Suggested payments mode on invoice by default if not defined for invoice EnableEditDeleteValidInvoice=Enable the possibility to edit/delete valid invoice with no payment @@ -1419,6 +1425,7 @@ SetDefaultBarcodeTypeThirdParties=Default barcode type to use for third parties UseUnits=Define a unit of measure for Quantity during order, proposal or invoice lines edition ProductCodeChecker= Module for product code generation and checking (product or service) ProductOtherConf= Product / Service configuration +IsNotADir=is not a directory! ##### Syslog ##### SyslogSetup=Logs module setup SyslogOutput=Logs outputs @@ -1708,3 +1715,4 @@ TitleExampleForMajorRelease=Example of message you can use to announce this majo TitleExampleForMaintenanceRelease=Example of message you can use to announce this maintenance release (feel free to use it on your web sites) ExampleOfNewsMessageForMajorRelease=Dolibarr ERP & CRM %s is available. Version %s is a major release with a lot of new features for both users and developers. You can download it from the download area of http://www.dolibarr.org portal (subdirectory Stable versions). You can read ChangeLog for complete list of changes. ExampleOfNewsMessageForMaintenanceRelease=Dolibarr ERP & CRM %s is available. Version %s is a maintenance version, so it contains only fixes of bugs. We recommend everybody using an older version to upgrade to this one. As any maintenance release, no new features, nor data structure change is present into this version. You can download it from the download area of http://www.dolibarr.org portal (subdirectory Stable versions). You can read ChangeLog for complete list of changes. +MultiPriceRuleDesc=When option "Several level of prices per product/service" is on, you can define different prices (one per price level) for each product. To save you time, you can enter here rule to have price for each level autocalculated according to price of first level, so you will have to enter only price for first level on each product. This page is here to save you time and can be usefull only if your prices for each leve are relative to first level. You can ignore this page in most cases. diff --git a/htdocs/langs/en_US/bills.lang b/htdocs/langs/en_US/bills.lang index 8ff109b2b09..c347c7a0336 100644 --- a/htdocs/langs/en_US/bills.lang +++ b/htdocs/langs/en_US/bills.lang @@ -88,6 +88,7 @@ ClassifyCanceled=Classify 'Abandoned' ClassifyClosed=Classify 'Closed' ClassifyUnBilled=Classify 'Unbilled' CreateBill=Create Invoice +CreateCreditNote=Create credit note AddBill=Create invoice or credit note AddToDraftInvoices=Add to draft invoice DeleteBill=Delete invoice diff --git a/htdocs/langs/en_US/cashdesk.lang b/htdocs/langs/en_US/cashdesk.lang index d3dcfb68e64..f3b5f77f296 100644 --- a/htdocs/langs/en_US/cashdesk.lang +++ b/htdocs/langs/en_US/cashdesk.lang @@ -38,3 +38,4 @@ ShowStock=Show warehouse DeleteArticle=Click to remove this article FilterRefOrLabelOrBC=Search (Ref/Label) UserNeedPermissionToEditStockToUsePos=You ask to decrease stock on invoice creation, so user that use POS need to have permission to edit stock. +DolibarrReceiptPrinter=Dolibarr Receipt Printer diff --git a/htdocs/langs/en_US/errors.lang b/htdocs/langs/en_US/errors.lang index 6bf95ebe75b..858e76af447 100755 --- a/htdocs/langs/en_US/errors.lang +++ b/htdocs/langs/en_US/errors.lang @@ -173,6 +173,7 @@ ErrorFieldMustBeAnInteger=Field %s must be an integer ErrorMandatoryParametersNotProvided=Mandatory parameter(s) not provided ErrorOppStatusRequiredIfAmount=You set an estimated amount for this opportunity/lead. So you must also enter its status ErrorBadDefinitionOfMenuArrayInModuleDescriptor=Bad Definition Of Menu Array In Module Descriptor (bad value for key fk_menu) +ErrorSavingChanges=An error has ocurred when saving the changes # Warnings WarningPasswordSetWithNoAccount=A password was set for this member. However, no user account was created. So this password is stored but can't be used to login to Dolibarr. It may be used by an external module/interface but if you don't need to define any login nor password for a member, you can disable option "Manage a login for each member" from Member module setup. If you need to manage a login but don't need any password, you can keep this field empty to avoid this warning. Note: Email can also be used as a login if the member is linked to a user. diff --git a/htdocs/langs/en_US/main.lang b/htdocs/langs/en_US/main.lang index 648ce25b9ce..a05b2b7c06e 100644 --- a/htdocs/langs/en_US/main.lang +++ b/htdocs/langs/en_US/main.lang @@ -59,6 +59,7 @@ ErrorCantLoadUserFromDolibarrDatabase=Failed to find user %s in Dolibarr ErrorNoVATRateDefinedForSellerCountry=Error, no vat rates defined for country '%s'. ErrorNoSocialContributionForSellerCountry=Error, no social/fiscal taxes type defined for country '%s'. ErrorFailedToSaveFile=Error, failed to save file. +NotAuthorized=You are not authorized to do that. SetDate=Set date SelectDate=Select a date SeeAlso=See also %s @@ -752,9 +753,24 @@ ShortSaturday=S ShortSunday=S SelectMailModel=Select email template SetRef=Set ref -SearchIntoThirdparties=Search %s into thirdparties -SearchIntoContacts=Search %s into contacts -SearchIntoMembers=Search %s into members -SearchIntoUsers=Search %s into users -SearchIntoProductsOrServices=Search %s into products or services -SearchIntoProjects=Search %s into projects \ No newline at end of file +Select2ResultFoundUseArrows= +Select2NotFound=No result found +Select2Enter=Enter +Select2MoreCharacters=or more characters +Select2LoadingMoreResults=Loading more results... +Select2SearchInProgress=Search in progress... +SearchIntoThirdparties=Thirdparties +SearchIntoContacts=Contacts +SearchIntoMembers=Members +SearchIntoUsers=Users +SearchIntoProductsOrServices=Products or services +SearchIntoProjects=Projects +SearchIntoCustomerInvoices=Customer invoices +SearchIntoSupplierInvoices=Supplier invoices +SearchIntoCustomerOrders=Customer orders +SearchIntoSupplierOrders=Supplier orders +SearchIntoCustomerProposals=Customer proposals +SearchIntoSupplierProposals=Supplier proposals +SearchIntoInterventions=Interventions +SearchIntoContracts=Contracts +SearchIntoExpenseReports=Expense reports diff --git a/htdocs/langs/en_US/margins.lang b/htdocs/langs/en_US/margins.lang index eb77ca9fe4c..4cfaa989cd1 100644 --- a/htdocs/langs/en_US/margins.lang +++ b/htdocs/langs/en_US/margins.lang @@ -23,8 +23,8 @@ ChooseProduct/Service=Choose product or service StartDate=Start date EndDate=End date Launch=Start -ForceBuyingPriceIfNull=Force buying price if null -ForceBuyingPriceIfNullDetails=if "ON", margin will be zero on line (buying price = selling price), otherwise ("OFF"), marge will be equal to selling price (buying price = 0) +ForceBuyingPriceIfNull=Force buying/cost price to selling price if not defined +ForceBuyingPriceIfNullDetails=If buying/cost price not defined, and this option "ON", margin will be zero on line (buying/cost price = selling price), otherwise ("OFF"), marge will be equal to suggested default. MARGIN_METHODE_FOR_DISCOUNT=Margin method for global discounts UseDiscountAsProduct=As a product UseDiscountAsService=As a service diff --git a/htdocs/langs/en_US/oauth.lang b/htdocs/langs/en_US/oauth.lang new file mode 100644 index 00000000000..4567af2a0b6 --- /dev/null +++ b/htdocs/langs/en_US/oauth.lang @@ -0,0 +1,134 @@ +# Dolibarr language file - Source file is en_US - oauth +ConfigOAuth=Oauth Configuration +NoAccessToken=No token access saved. +HasAccessToken=A token was generated and saved into database +NewTokenStored=Token received ans saved +TokenDeleted=Token deleted +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 diff --git a/htdocs/langs/en_US/paypal.lang b/htdocs/langs/en_US/paypal.lang index b6b6d59d4a0..b2eadfce654 100644 --- a/htdocs/langs/en_US/paypal.lang +++ b/htdocs/langs/en_US/paypal.lang @@ -23,3 +23,9 @@ PAYPAL_PAYONLINE_SENDEMAIL=EMail to warn after a payment (success or not) ReturnURLAfterPayment=Return URL after payment ValidationOfPaypalPaymentFailed=Validation of Paypal payment failed PaypalConfirmPaymentPageWasCalledButFailed=Payment confirmation page for Paypal was called by Paypal but confirmation failed +SetExpressCheckoutAPICallFailed=SetExpressCheckout API call failed. +DoExpressCheckoutPaymentAPICallFailed=DoExpressCheckoutPayment API call failed. +DetailedErrorMessage=Detailed Error Message +ShortErrorMessage=Short Error Message +ErrorCode=Error Code +ErrorSeverityCode=Error Severity Code diff --git a/htdocs/langs/en_US/printing.lang b/htdocs/langs/en_US/printing.lang index a81355efe38..ab70ca671d7 100644 --- a/htdocs/langs/en_US/printing.lang +++ b/htdocs/langs/en_US/printing.lang @@ -3,7 +3,7 @@ Module64000Name=Direct Printing Module64000Desc=Enable Direct Printing System PrintingSetup=Setup of Direct Printing System PrintingDesc=This module adds a Print button to send documents directly to a printer (without opening document into an application) with various module. -MenuDirectPrinting=Direct Printing +MenuDirectPrinting=Direct Printing jobs DirectPrint=Direct print ModuleDriverSetup=Setup Module Driver PrintingDriverDesc=Configuration variables for printing driver. @@ -18,6 +18,15 @@ TestDriver=Test TargetedPrinter=Targeted printer UserConf=Setup per user PRINTGCP=Google Cloud Print +PRINTGCP_INFO=Google Api State +PRINTGCP_AUTHLINK=Authentication +PRINTGCP_TOKEN_ACCESS=Google Cloud Print OAuth Token +PRINTGCP_TOKEN_REFRESH=Token Refresh Present +PRINTGCP_TOKEN_EXPIRED=Token Expired +PRINTGCP_TOKEN_EXPIRE_AT=Token expire at +PRINTGCP_DELETE_TOKEN=Delete saved token +RequestAccess=Click here to request access and receive a token to save +DeleteAccess=Click here to delete token PrintGCPDesc=This driver allow to send documents directly to a printer with Google Cloud Print. PrintingDriverDescprintgcp=Configuration variables for printing driver Google Cloud Print. PrintTestDescprintgcp=List of Printers for Google Cloud Print. @@ -74,3 +83,6 @@ STATE_IPP_none=None MEDIA_IPP_stationery=Stationery MEDIA_IPP_thermal=Thermal IPP_COLOR_print-black=BW Printer +DirectPrintingJobsDesc=This page lists printing jobs found for available printers. +GoogleAuthNotConfigured=Google OAuth setup not done. Enable module OAuth and set a Google ID/Secret. +GoogleAuthConfigured=Google OAuth credentials found into setup of module OAuth. \ No newline at end of file diff --git a/htdocs/langs/en_US/products.lang b/htdocs/langs/en_US/products.lang index 1759eb12e9f..ddda0152245 100644 --- a/htdocs/langs/en_US/products.lang +++ b/htdocs/langs/en_US/products.lang @@ -69,6 +69,7 @@ ProductStatusNotOnBuyShort=Not for purchase UpdatePrice=Update price UpdateVAT=Update vat UpdateDefaultPrice=Update default price +UpdateLevelPrices=Update prices for each level AppliedPricesFrom=Applied prices from SellingPrice=Selling price SellingPriceHT=Selling price (net of tax) @@ -235,6 +236,10 @@ PriceByQuantityRange=Quantity range ProductsDashboard=Products/Services summary UpdateOriginalProductLabel=Modify original label HelpUpdateOriginalProductLabel=Allows to edit the name of the product +MultipriceRules=Price level rules +UseMultipriceRules=Use price level rules (defined into product module setup) to autocalculate prices of all other level according to first level +PercentVariationOver=%% variation over %s +PercentDiscountOver=%% discount over %s ### composition fabrication Building=Production and items dispatchment Build=Produce diff --git a/htdocs/langs/en_US/projects.lang b/htdocs/langs/en_US/projects.lang index d9fecb40ad4..505f6bce8e5 100644 --- a/htdocs/langs/en_US/projects.lang +++ b/htdocs/langs/en_US/projects.lang @@ -175,6 +175,8 @@ ProjectWeightedOppAmountOfProjectsByMonth=Weighted amount of opportunities by mo ProjectOpenedProjectByOppStatus=Opened project/lead by opportunity status ProjectsStatistics=Statistics on projects/leads TaskAssignedToEnterTime=Task assigned. Entering time on this task should be possible. +IdTaskTime=Id task time +YouCanCompleteRef=If you want to complete the ref with some information (to use it as search filters), it is recommanded to add a - character to separate it, so the automatic numbering will still work correctly for next projects. For example %s-ABC. You may also prefer to add search keys into label. OpenedProjectsByThirdparties=Opened projects by thirdparties OpportunityTotalAmount=Opportunities total amount OpportunityPonderatedAmount=Opportunities weighted amount diff --git a/htdocs/langs/en_US/receiptprinter.lang b/htdocs/langs/en_US/receiptprinter.lang new file mode 100644 index 00000000000..dc2cd392c20 --- /dev/null +++ b/htdocs/langs/en_US/receiptprinter.lang @@ -0,0 +1,80 @@ +# Dolibarr language file - Source file is en_US - receiptprinter +PrinterAdded=Printer %s added +PrinterUpdated=Printer %s updated +PrinterDeleted=Printer %s deleted +TestSentToPrinter=Test Sent To Printer %s +CONNECTOR_DUMMY=Dummy Printer +CONNECTOR_NETWORK_PRINT=Network Printer +CONNECTOR_FILE_PRINT=Local Printer +CONNECTOR_WINDOWS_PRINT=Local Windows Printer +CONNECTOR_DUMMY_HELP=Fake Printer for test, does nothing +CONNECTOR_NETWORK_PRINT_HELP=10.x.x.x:9100 +CONNECTOR_FILE_PRINT_HELP=/dev/usb/lp0, /dev/usb/lp1 +CONNECTOR_WINDOWS_PRINT_HELP=LPT1, COM1, smb://FooUser:secret@computername/workgroup/Receipt Printer +DOL_ALIGN_LEFT=Left align text +DOL_ALIGN_CENTER=Center text +DOL_ALIGN_RIGHT=Right align text +DOL_USE_FONT_A=Use font A of printer +DOL_USE_FONT_B=Use font B of printer +DOL_USE_FONT_C=Use font C of printer +DOL_BOLD=Text Bold +/DOL_BOLD=End of Text Bold +DOL_DOUBLE_HEIGHT=Text double height +/DOL_DOUBLE_HEIGHT=End of Text double height +DOL_DOUBLE_WIDTH=Text double width +/DOL_DOUBLE_WIDTH=End of Text double width +DOL_UNDERLINE=Underline text +/DOL_UNDERLINE=End of Underline text +DOL_UNDERLINE_2DOTS=Underline with double line +/DOL_UNDERLINE_2DOTS=End of Underline with double line +DOL_EMPHASIZED=Emphasized text +/DOL_EMPHASIZED=End of Emphasized text +DOL_SWITCH_COLORS=Print in white on black +/DOL_SWITCH_COLORS=End of Print in white on black +DOL_PRINT_BARCODE=Print barcode +DOL_PRINT_BARCODE_CUSTOMER_ID=Print barcode customer id +DOL_SET_PRINT_WIDTH_57=Ticket print width of 57mm +DOL_CUT_PAPER_FULL=Cut ticket completely +DOL_CUT_PAPER_PARTIAL=Cut ticket partially +DOL_OPEN_DRAWER=Open cash drawer +DOL_ACTIVATE_BUZZER=Activate buzzer +DOL_PRINT_QRCODE=Print QR Code +DOL_PRINT_DATE=Print date AAAA-MM-DD +DOL_PRINT_DATE_TIME=Print date and time AAAA-MM-DD HH:MM:SS +DOL_PRINT_YEAR=Print Year +DOL_PRINT_MONTH_LETTERS=Print month in letters (example : november) +DOL_PRINT_MONTH=Print month number +DOL_PRINT_DAY=Print day number +DOL_PRINT_DAY_LETTERS=Print day number +DOL_PRINT_TABLE=Print table number (for restaurant, bar...) +DOL_PRINT_CUTLERY=Print number of cutlery (for restaurant) +DOL_PRINT_PAYMENT=Print payment method +DOL_PRINT_LOGO=Print logo stored on printer. Example : 32|32 +DOL_PRINT_LOGO_OLD=Print logo stored on printer. Must be followed by logo code. For old printers. +DOL_PRINT_ORDER_LINES=Print order lines +DOL_PRINT_ORDER_TAX=Print order total tax +DOL_PRINT_ORDER_LOCAL_TAX=Print order local tax +DOL_PRINT_ORDER_TOTAL=Print order total +DOL_PRINT_ORDER_NUMBER=Print order number +DOL_PRINT_ORDER_NUMBER_UNIQUE=Print order number after validation +DOL_PRINT_CUSTOMER_FIRSTNAME=Print customer firstname +DOL_PRINT_CUSTOMER_LASTNAME=Print customer name +DOL_PRINT_CUSTOMER_MAIL=Print customer mail +DOL_PRINT_CUSTOMER_PHONE=Print customer phone +DOL_PRINT_CUSTOMER_MOBILE=Print customer mobile +DOL_PRINT_CUSTOMER_SKYPE=Print customer skype +DOL_PRINT_CUSTOMER_TAX_NUMBER=Print customer VAT number +DOL_PRINT_CUSTOMER_ACCOUNT_BALANCE=Print customer account balance +DOL_PRINT_VENDOR_LASTNAME=Print vendor name +DOL_PRINT_VENDOR_FIRSTNAME=Print vendor firstname +DOL_PRINT_VENDOR_MAIL=Print vendor mail +DOL_PRINT_CUSTOMER_POINTS=Print customer points +DOL_PRINT_ORDER_POINTS=Print number of points for this order +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 +DOL_PRINT_IF_NUM_ORDER_UNIQUE=Print the line IF order is validated +DOL_PRINT_IF_CUSTOMER_POINTS=Print the line IF customer points > 0 +DOL_PRINT_IF_ORDER_POINTS=Print the line IF points of the order > 0 +DOL_PRINT_IF_CUSTOMER_TAX_NUMBER=Print the line IF customer has vat number +DOL_PRINT_IF_CUSTOMER_ACCOUNT_BALANCE_POSITIVE=Print the line IF customer balance > 0 diff --git a/htdocs/langs/en_US/resource.lang b/htdocs/langs/en_US/resource.lang index 32bdd92f884..c89edddec4b 100644 --- a/htdocs/langs/en_US/resource.lang +++ b/htdocs/langs/en_US/resource.lang @@ -1,4 +1,4 @@ - +# Dolibarr language file - Source file is en_US - resource MenuResourceIndex=Resources MenuResourceAdd=New resource MenuResourcePlanning=Resource planning diff --git a/htdocs/langs/en_US/salaries.lang b/htdocs/langs/en_US/salaries.lang index 953a9c7540c..79dbeadf775 100644 --- a/htdocs/langs/en_US/salaries.lang +++ b/htdocs/langs/en_US/salaries.lang @@ -1,4 +1,4 @@ -# Dolibarr language file - Source file is en_US - users +# Dolibarr language file - Source file is en_US - salaries SALARIES_ACCOUNTING_ACCOUNT_PAYMENT=Accountancy code for salaries payments SALARIES_ACCOUNTING_ACCOUNT_CHARGE=Accountancy code for financial charge Salary=Salary diff --git a/htdocs/langs/fr_FR/admin.lang b/htdocs/langs/fr_FR/admin.lang index 7dd792059d9..0de11174d41 100644 --- a/htdocs/langs/fr_FR/admin.lang +++ b/htdocs/langs/fr_FR/admin.lang @@ -364,6 +364,7 @@ HideAnyVATInformationOnPDF=Cacher toutes les informations en rapport avec la TVA HideDescOnPDF=Cacher la description des produits sur les PDF générés HideRefOnPDF=Cacher la référence des produits sur les PDF générés HideDetailsOnPDF=Cacher les détails des lignes de produits sur les PDF générés +PlaceCustomerAddressToIsoLocation=Utiliser l'emplacement ISO pour l'addresse du destinatire Library=Bibliothèque UrlGenerationParameters=Sécurisation des URLs SecurityTokenIsUnique=Utiliser un paramètre securekey unique pour chaque URL ? diff --git a/htdocs/main.inc.php b/htdocs/main.inc.php index dd4cd684970..354ecb7b611 100644 --- a/htdocs/main.inc.php +++ b/htdocs/main.inc.php @@ -692,15 +692,6 @@ if (! defined('NOLOGIN')) $db->commit(); } - if (! empty($user->conf->MAIN_LANDING_PAGE)) // Example: /index.php - { - $newpath=dol_buildpath($user->conf->MAIN_LANDING_PAGE, 1); - if ($_SERVER["PHP_SELF"] != $newpath) // not already on landing page (avoid infinite loop) - { - header('Location: '.$newpath); - exit; - } - } if (! empty($conf->global->MAIN_LANDING_PAGE)) // Example: /index.php { $newpath=dol_buildpath($conf->global->MAIN_LANDING_PAGE, 1); @@ -940,7 +931,7 @@ if (! function_exists("llxHeader")) } if (empty($conf->dol_hide_leftmenu)) { - left_menu('', $help_url, '', '', 1, $title); + left_menu('', $help_url, '', '', 1, $title, 1); } // main area @@ -1012,7 +1003,7 @@ function top_htmlhead($head, $title='', $disablejs=0, $disablehead=0, $arrayofjs if (empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER)) print ''."\n"; // Displays title - $appli='Dolibarr'; + $appli=constant('DOL_APPLICATION_TITLE'); if (!empty($conf->global->MAIN_APPLICATION_TITLE)) $appli=$conf->global->MAIN_APPLICATION_TITLE; if ($title && ! empty($conf->global->MAIN_HTML_TITLE) && preg_match('/noapp/',$conf->global->MAIN_HTML_TITLE)) print ''.dol_htmlentities($title).''; @@ -1217,6 +1208,7 @@ function top_htmlhead($head, $title='', $disablejs=0, $disablehead=0, $arrayofjs { $tmpplugin=empty($conf->global->MAIN_USE_JQUERY_MULTISELECT)?constant('REQUIRE_JQUERY_MULTISELECT'):$conf->global->MAIN_USE_JQUERY_MULTISELECT; print ''."\n"; + print ''."\n"; } // jQuery jMobile if (! empty($conf->global->MAIN_USE_JQUERY_JMOBILE) || defined('REQUIRE_JQUERY_JMOBILE') || (! empty($conf->dol_use_jmobile) && $conf->dol_use_jmobile > 0)) @@ -1409,13 +1401,6 @@ function top_menu($head, $title='', $target='', $disablejs=0, $disablehead=0, $a ' . "\n"; } - // Wrapper to show tooltips - print '' . "\n"; - // Raven.js for client-side Sentry logging support if (array_key_exists('mod_syslog_sentry', $conf->loghandlers) && ! empty($conf->global->SYSLOG_SENTRY_DSN)) { @@ -1451,7 +1436,7 @@ function top_menu($head, $title='', $target='', $disablejs=0, $disablehead=0, $a //$form=new Form($db); // Define link to login card - $appli='Dolibarr'; + $appli=constant('DOL_APPLICATION_TITLE'); if (! empty($conf->global->MAIN_APPLICATION_TITLE)) { $appli=$conf->global->MAIN_APPLICATION_TITLE; @@ -1543,13 +1528,14 @@ function top_menu($head, $title='', $target='', $disablejs=0, $disablehead=0, $a * @param string $helppagename Name of wiki page for help ('' by default). * Syntax is: For a wiki page: EN:EnglishPage|FR:FrenchPage|ES:SpanishPage * For other external page: http://server/url - * @param string $moresearchform Search Form Permanent Supplemental + * @param string $notused Deprecated. Used in past to add content into left menu. Hooks can be used now. * @param array $menu_array_after Table of menu entries to show after entries of menu handler * @param int $leftmenuwithoutmainarea Must be set to 1. 0 by default for backward compatibility with old modules. * @param string $title Title of web page + * @param string $acceptdelayedhtml 1 if caller request to have html delayed content not returned but saved into global $delayedhtmlcontent (so caller can show it at end of page to avoid flash FOUC effect) * @return void */ -function left_menu($menu_array_before, $helppagename='', $moresearchform='', $menu_array_after='', $leftmenuwithoutmainarea=0, $title='') +function left_menu($menu_array_before, $helppagename='', $notused='', $menu_array_after='', $leftmenuwithoutmainarea=0, $title='', $acceptdelayedhtml=0) { global $user, $conf, $langs, $db, $form; global $hookmanager, $menumanager; @@ -1571,7 +1557,7 @@ function left_menu($menu_array_before, $helppagename='', $moresearchform='', $me { if (! is_object($form)) $form=new Form($db); $selected=-1; - $searchform.=$form->selectArrayAjax('searchselectcombo', DOL_URL_ROOT.'/core/ajax/selectsearchbox.php', $selected, '', '', 0, 1, 'vmenusearchselectcombo', 1, $langs->trans("Search")); + $searchform.=$form->selectArrayAjax('searchselectcombo', DOL_URL_ROOT.'/core/ajax/selectsearchbox.php', $selected, '', '', 0, 1, 'vmenusearchselectcombo', 1, $langs->trans("Search"), 1); } else { @@ -1644,13 +1630,8 @@ function left_menu($menu_array_before, $helppagename='', $moresearchform='', $me print '
'."\n\n"; - $menumanager->menu_array = $menu_array_before; - $menumanager->menu_array_after = $menu_array_after; - $menumanager->showmenu('left'); // output menu_array and menu found in database - - - // Show other forms - if ($searchform) + // Show other forms + /*if ($searchform) { print "\n"; print "\n"; @@ -1658,15 +1639,14 @@ function left_menu($menu_array_before, $helppagename='', $moresearchform='', $me print $searchform; print '
'."\n"; print "\n"; - } + }*/ - // More search form - if ($moresearchform) - { - print $moresearchform; - } + $menumanager->menu_array = $menu_array_before; + $menumanager->menu_array_after = $menu_array_after; + $menumanager->showmenu('left', array('searchform'=>$searchform, 'bookmarks'=>$bookmarks)); // output menu_array and menu found in database // Bookmarks + /* if ($bookmarks) { print "\n"; @@ -1675,13 +1655,14 @@ function left_menu($menu_array_before, $helppagename='', $moresearchform='', $me print $bookmarks; print ''."\n"; print "\n"; - } + }*/ - print "\n"; - print "\n"; + // Dolibarr version + help + bug report link + print "\n"; + print "\n"; print '
'."\n"; - //Dolibarr version + // Version $doliurl='http://www.dolibarr.org'; //local communities if (preg_match('/fr/i',$langs->defaultlang)) $doliurl='http://www.dolibarr.fr'; @@ -1690,7 +1671,7 @@ function left_menu($menu_array_before, $helppagename='', $moresearchform='', $me if (preg_match('/it/i',$langs->defaultlang)) $doliurl='http://www.dolibarr.it'; if (preg_match('/gr/i',$langs->defaultlang)) $doliurl='http://www.dolibarr.gr'; - $appli='Dolibarr'; + $appli=constant('DOL_APPLICATION_TITLE'); if (! empty($conf->global->MAIN_APPLICATION_TITLE)) { $appli=$conf->global->MAIN_APPLICATION_TITLE; $doliurl=''; @@ -1783,7 +1764,6 @@ function left_menu($menu_array_before, $helppagename='', $moresearchform='', $me print "\n"; print ''."\n"; - if (empty($leftmenuwithoutmainarea)) main_area($title); } @@ -1905,6 +1885,7 @@ if (! function_exists("llxFooter")) /** * Show HTML footer * Close div /DIV data-role=page + /DIV class=fiche + /DIV /DIV main layout + /BODY + /HTML. + * If global var $delayedhtmlcontent was filled, we output it just before closing the body. * * @param string $comment A text to add as HTML comment into HTML generated page * @param string $zone 'private' (for private pages) or 'public' (for public pages) @@ -1913,7 +1894,8 @@ if (! function_exists("llxFooter")) function llxFooter($comment='',$zone='private') { global $conf, $langs; - + global $delayedhtmlcontent; + // Global html output events ($mesgs, $errors, $warnings) dol_htmloutput_events(); @@ -1950,6 +1932,18 @@ if (! function_exists("llxFooter")) //var_dump($langs); // Uncommment to see the property _tab_loaded to see which language file were loaded if (empty($conf->dol_hide_leftmenu) && empty($conf->dol_use_jmobile) && empty($conf->global->MAIN_MENU_USE_JQUERY_LAYOUT)) print '
'."\n"; // End div container + + if (! empty($delayedhtmlcontent)) print $delayedhtmlcontent; + + // Wrapper to show tooltips + print "\n\n"; + print '' . "\n"; + + print "\n"; print "\n"; } diff --git a/htdocs/margin/productMargins.php b/htdocs/margin/productMargins.php index 0993f59f631..e8483c90a34 100644 --- a/htdocs/margin/productMargins.php +++ b/htdocs/margin/productMargins.php @@ -162,7 +162,7 @@ if (! empty($conf->global->DISPLAY_MARK_RATES)) { print "
'. fieldLabel('Name','name',1).'
'.fieldLabel('Address','address',0).''; print ''; print '
'.fieldLabel('Zip','zipcode',0).''; print $formcompany->select_ziptown(GETPOST('zipcode', 'alpha'), 'zipcode', array ( 'town', @@ -216,7 +202,7 @@ if ($action == 'create') // Town print '
'.fieldLabel('Town','town',0).''; print $formcompany->select_ziptown(GETPOST('town', 'alpha'), 'town', array ( 'zipcode', @@ -227,7 +213,7 @@ if ($action == 'create') // Country print '
'.fieldLabel('Country','selectcountry_id',0).''; print $form->select_country($mysoc->country_id,'country_id'); if ($user->admin) print info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"),1); @@ -236,7 +222,7 @@ if ($action == 'create') // Status print '
'.fieldLabel('Status','status',1).''; print $form->selectarray('status',$status2label,GETPOST('status')); print '
'.$langs->trans("Ref").''; - print $object->rowid; + print ''.$langs->trans("Ref").''; + print $object->id; print '
'; + print '
'.fieldLabel('Name','name',1).''; print ''; print '
'.fieldLabel('Address','address',0).''; print ''; - print '
'; + print '
'.fieldLabel('Zip','zipcode',0).''; print $formcompany->select_ziptown($object->zip, 'zipcode', array ( 'town', 'selectcountry_id' ), 6) . '
'; + print '
'.fieldLabel('Town','town',0).''; print $formcompany->select_ziptown($object->town, 'town', array ( 'zipcode', 'selectcountry_id' )) . '
'.fieldLabel('Country','selectcountry_id',0).''; - print $form->select_country($object->fk_pays,'country_id'); + print $form->select_country($object->fk_country,'country_id'); if ($user->admin) print info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"),1); print '
'; + print '
'.fieldLabel('Status','status',1).''; print $form->selectarray('status',$status2label,$object->status); print '
'.$langs->trans("Ref").''; - print $object->rowid; + print $object->id; print ''; print $linkback; print '
'.$langs->trans("Country").''.getCountry($object->fk_pays,1).''; + if ($object->country_id > 0) + { + $img=picto_from_langcode($object->country_code); + print $img?$img.' ':''; + print getCountry($object->getCountryCode(),0,$db); + } + print '
"; print ''; -$sql = "SELECT p.label, p.rowid, p.fk_product_type, p.ref,"; +$sql = "SELECT p.label, p.rowid, p.fk_product_type, p.ref, p.entity as pentity,"; if ($id > 0) $sql.= " d.fk_product,"; if ($id > 0) $sql.= " f.rowid as facid, f.facnumber, f.total as total_ht, f.datef, f.paye, f.fk_statut as statut,"; $sql.= " sum(d.total_ht) as selling_price,"; @@ -264,6 +264,7 @@ if ($result) $product_static->id=$objp->rowid; $product_static->ref=$objp->ref; $product_static->label=$objp->label; + $product_static->entity=$objp->pentity; $text=$product_static->getNomUrl(1); print $text.= ' - '.$objp->label; print "\n"; diff --git a/htdocs/margin/tabs/productMargins.php b/htdocs/margin/tabs/productMargins.php index 934be1f5a41..b409d0c752f 100644 --- a/htdocs/margin/tabs/productMargins.php +++ b/htdocs/margin/tabs/productMargins.php @@ -82,31 +82,16 @@ if ($id > 0 || ! empty($ref)) $picto=($object->type== Product::TYPE_SERVICE?'service':'product'); dol_fiche_head($head, 'margin', $titre, 0, $picto); - print ''; - - // Reference - print ''; - print ''; - print ''; - - // Libelle - print ''; - print ''; - - // Status (to sell) - print ''; - - // Status (to buy) - print ''; + dol_banner_tab($object, 'ref', '', ($user->societe_id?0:1), 'ref'); + + + print '
'; + + print '
'; + print '
'.$langs->trans("Ref").''; - print $form->showrefnav($object,'ref','',1,'ref'); - print '
'.$langs->trans("Label").''.$object->label.'
'.$langs->trans("Status").' ('.$langs->trans("Sell").')'; - print $object->getLibStatut(2,0); - print '
'.$langs->trans("Status").' ('.$langs->trans("Buy").')'; - print $object->getLibStatut(2,1); - print '
'; // Total Margin - print ''; @@ -125,7 +110,11 @@ if ($id > 0 || ! empty($ref)) } print "
'.$langs->trans("TotalMargin").''; + print '
'.$langs->trans("TotalMargin").''; print ''; // set by jquery (see below) print '
"; - print '
'; + + print '
'; + print '
'; + + dol_fiche_end(); if ($user->rights->facture->lire) { diff --git a/htdocs/margin/tabs/thirdpartyMargins.php b/htdocs/margin/tabs/thirdpartyMargins.php index bd2730edda0..9f2f745ad0c 100644 --- a/htdocs/margin/tabs/thirdpartyMargins.php +++ b/htdocs/margin/tabs/thirdpartyMargins.php @@ -73,21 +73,21 @@ if ($socid > 0) dol_fiche_head($head, 'margin', $langs->trans("ThirdParty"),0,'company'); - print ''; - - print ''; - print ''; - - if (! empty($conf->global->SOCIETE_USEPREFIX)) // Old not used prefix field - { - print ''; - } + dol_banner_tab($object, 'socid', '', ($user->societe_id?0:1), 'rowid', 'nom'); + + print '
'; + + print '
'; + print '
'.$langs->trans('ThirdPartyName').''; - print $form->showrefnav($object,'socid','',($user->societe_id?0:1),'rowid','nom'); - print '
'.$langs->trans('Prefix').''.$object->prefix_comm.'
'; + + // Alias names (commercial, trademark or alias names) + print '"; if ($object->client) { - print ''; @@ -123,7 +123,11 @@ if ($socid > 0) } print "
'.$langs->trans('AliasNames').''; + print $object->name_alias; + print "
'; + print '
'; print $langs->trans('CustomerCode').''; print $object->code_client; if ($object->check_codeclient() <> 0) print ' ('.$langs->trans("WrongCustomerCode").')'; @@ -96,7 +96,7 @@ if ($socid > 0) if ($object->fournisseur) { - print '
'; + print '
'; print $langs->trans('SupplierCode').''; print $object->code_fournisseur; if ($object->check_codefournisseur() <> 0) print ' ('.$langs->trans("WrongSupplierCode").')'; @@ -104,7 +104,7 @@ if ($socid > 0) } // Total Margin - print '
'.$langs->trans("TotalMargin").''; + print '
'.$langs->trans("TotalMargin").''; print ''; // set by jquery (see below) print '
"; + + dol_fiche_end(); + print '
'; + print '
'; $sql = "SELECT distinct s.nom, s.rowid as socid, s.code_client,"; diff --git a/htdocs/paypal/lib/paypal.lib.php b/htdocs/paypal/lib/paypal.lib.php index f9ec79244a5..824f312a9af 100644 --- a/htdocs/paypal/lib/paypal.lib.php +++ b/htdocs/paypal/lib/paypal.lib.php @@ -406,11 +406,11 @@ function print_paypal_redirect($paymentAmount,$currencyCodeType,$paymentType,$re $ErrorLongMsg = urldecode($resArray["L_LONGMESSAGE0"]); $ErrorSeverityCode = urldecode($resArray["L_SEVERITYCODE0"]); - echo "SetExpressCheckout API call failed.
\n"; - echo "Detailed Error Message: " . $ErrorLongMsg."
\n"; - echo "Short Error Message: " . $ErrorShortMsg."
\n"; - echo "Error Code: " . $ErrorCode."
\n"; - echo "Error Severity Code: " . $ErrorSeverityCode."
\n"; + echo $langs->trans('SetExpressCheckoutAPICallFailed') . "
\n"; + echo $langs->trans('DetailedErrorMessage') . ": " . $ErrorLongMsg."
\n"; + echo $langs->trans('ShortErrorMessage') . ": " . $ErrorShortMsg."
\n"; + echo $langs->trans('ErrorCode') . ": " . $ErrorCode."
\n"; + echo $langs->trans('ErrorSeverityCode') . ": " . $ErrorSeverityCode."
\n"; } } diff --git a/htdocs/printing/admin/printing.php b/htdocs/printing/admin/printing.php index 872ddd9f5dd..ce87a5c7178 100644 --- a/htdocs/printing/admin/printing.php +++ b/htdocs/printing/admin/printing.php @@ -1,6 +1,6 @@ - * Copyright (C) 2014 Frederic France +/* Copyright (C) 2013 Laurent Destailleur + * Copyright (C) 2014-2015 Frederic France * * 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 @@ -31,6 +31,7 @@ require_once DOL_DOCUMENT_ROOT.'/printing/lib/printing.lib.php'; $langs->load("admin"); $langs->load("printing"); +$langs->load("oauth"); if (! $user->admin) accessforbidden(); @@ -50,7 +51,7 @@ if (!$mode) $mode='config'; if (($mode == 'test' || $mode == 'setup') && empty($driver)) { - setEventMessage($langs->trans('PleaseSelectaDriverfromList')); + setEventMessages($langs->trans('PleaseSelectaDriverfromList'), null); header("Location: ".$_SERVER['PHP_SELF'].'?mode=config'); exit; } @@ -68,7 +69,7 @@ if ($action == 'setconst' && $user->admin) if (! $error) { $db->commit(); - setEventMessage($langs->trans("SetupSaved")); + setEventMessages($langs->trans("SetupSaved"), null); } else { @@ -88,7 +89,7 @@ if ($action == 'setvalue' && $user->admin) if (! $error) { $db->commit(); - setEventMessage($langs->trans("SetupSaved")); + setEventMessages($langs->trans("SetupSaved"), null); } else { @@ -126,7 +127,9 @@ if ($mode == 'setup' && $user->admin) print ''; print ''.$langs->trans("Parameters").''; print ''.$langs->trans("Value").''; + print ' '; print "\n"; + $submit_enabled=0; if (! empty($driver)) { @@ -134,19 +137,49 @@ if ($mode == 'setup' && $user->admin) $classname = 'printing_'.$driver; $langs->load($driver); $printer = new $classname($db); - //print '
'.print_r($printer, true).'
'; + //var_dump($printer); + $i=0; + $submit_enabled=0; foreach ($printer->conf as $key) { $var=!$var; - print ''; - print ''.$langs->trans($key['varname']).''; - print ''; - print ''; - print ' '.($key['example']!=''?$langs->trans("Example").' : '.$key['example']:''); - print ''; + switch ($key['type']) { + case "text": + case "password": + print ''; + print ''.$langs->trans($key['varname']).''; + print ''; + print ' '.($key['example']!=''?$langs->trans("Example").' : '.$key['example']:'').''; + print ''."\n"; + break; + case "authlink": + print ''; + print ''.$langs->trans($key['varname']).''; + print ''.$langs->trans('RequestAccess').''; + print ' '; + print ''."\n"; + break; + case "delete": + print ''; + print ''.$langs->trans($key['varname']).''; + print ''.$langs->trans('DeleteAccess').''; + print ' '; + print ''."\n"; + break; + case "info": + print ''; + print ''.$langs->trans($key['varname']).''; + print ''.$langs->trans($key['info']).''; + print ' '; + print ''."\n"; + break; + case "submit": + if ($key['enabled']) $submit_enabled=1; + break; + } $i++; } } else { @@ -154,13 +187,17 @@ if ($mode == 'setup' && $user->admin) } print ''; + + dol_fiche_end(); + if (! empty($driver)) { - print '
'; + if ($submit_enabled) { + print '
'; + } } - print ''; - dol_fiche_end(); + print ''; } if ($mode == 'config' && $user->admin) { @@ -230,7 +267,11 @@ if ($mode == 'test' && $user->admin) $printer = new $classname($db); //print '
'.print_r($printer, true).'
'; if (count($printer->getlist_available_printers())) { - print $printer->listAvailablePrinters(); + if ($printer->listAvailablePrinters()==0) { + print $printer->resprint; + } else { + setEventMessages($printer->error, $printer->errors, 'errors'); + } } else { print $langs->trans('PleaseConfigureDriverfromList'); diff --git a/htdocs/printing/index.php b/htdocs/printing/index.php index 1ff3859565c..13e3883702d 100644 --- a/htdocs/printing/index.php +++ b/htdocs/printing/index.php @@ -1,6 +1,6 @@ + * Copyright (C) 2014-2015 Frederic France * * 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 @@ -23,15 +23,35 @@ */ require '../main.inc.php'; -require_once DOL_DOCUMENT_ROOT.'/core/class/dolprintipp.class.php'; +include_once DOL_DOCUMENT_ROOT.'/core/modules/printing/modules_printing.php'; llxHeader("",$langs->trans("Printing")); -print load_fiche_titre($langs->trans("Printing")); +print_barre_liste($langs->trans("Printing"), 0, $_SERVER["PHP_SELF"], '', '', '', ''.$langs->trans("Refresh").'', 0); + +print $langs->trans("DirectPrintingJobsDesc").'

'; // List Jobs from printing modules -$printer = new dolPrintIPP($db,$conf->global->PRINTIPP_HOST,$conf->global->PRINTIPP_PORT,$user->login,$conf->global->PRINTIPP_USER,$conf->global->PRINTIPP_PASSWORD); -$printer->list_jobs('commande'); +$object = new PrintingDriver($db); +$result = $object->listDrivers($db, 10); +foreach ($result as $driver) +{ + require_once DOL_DOCUMENT_ROOT.'/core/modules/printing/'.$driver.'.modules.php'; + $classname = 'printing_'.$driver; + $langs->load($driver); + $printer = new $classname($db); + if ($conf->global->{$printer->active}) + { + //$printer->list_jobs('commande'); + $result = $printer->list_jobs(); + print $printer->resprint; + + if ($result > 0) + { + setEventMessages($printer->error, $printer->errors, 'errors'); + } + } +} llxFooter(); diff --git a/htdocs/product/admin/price_rules.php b/htdocs/product/admin/price_rules.php new file mode 100644 index 00000000000..83d90485b3d --- /dev/null +++ b/htdocs/product/admin/price_rules.php @@ -0,0 +1,205 @@ +. + * + * Page to set how to autocalculate price for each level when option + * PRODUCT_MULTIPRICE is on. + */ + +require '../../main.inc.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/product.lib.php'; + +$langs->load("admin"); +$langs->load("products"); + +// Security check +if (! $user->admin || (empty($conf->product->enabled) && empty($conf->service->enabled))) + accessforbidden(); + +/** + * Actions + */ + +if ($_POST) { + + $var_percent = GETPOST('var_percent', 'array'); + $var_min_percent = GETPOST('var_min_percent', 'array'); + $fk_level = GETPOST('fk_level', 'array'); + + for ($i = 1; $i <= $conf->global->PRODUIT_MULTIPRICES_LIMIT; $i++) { + + $check = isset($var_min_percent[$i]); + + if ($i != 1) { + $check = $check && isset($var_percent[$i]) && isset($fk_level[$i]); + } + + if (!$check) { + continue; + } + + if ($i != 1) { + $i_var_percent = (float) price2num($var_percent[$i]); + } else { + $i_var_percent = 0; + } + + $i_var_min_percent = (float) price2num($var_min_percent[$i]); + $i_fk_level = (int) $fk_level[$i]; + + if ($i == 1) { + $check1 = true; + $check2 = $i_var_min_percent; + } else { + $check1 = $i_fk_level >= 1 && $i_fk_level <= $conf->global->PRODUIT_MULTIPRICES_LIMIT; + $check2 = $i_var_percent && $i_var_min_percent; + } + + if (!$check1 || !$check2) { + + //If the level is between range but percent fields are empty, then we ensure it does not exist in DB + if ($check1 && !$check2) { + $db->query("DELETE FROM ".MAIN_DB_PREFIX."product_pricerules WHERE level = ".(int) $i); + } + + continue; + } + + $sql = "INSERT INTO ".MAIN_DB_PREFIX."product_pricerules + SET level = ".(int) $i.", fk_level = ".$db->escape($i_fk_level).", var_percent = ".$i_var_percent.", var_min_percent = ".$i_var_min_percent; + + if (!$db->query($sql)) { + + //If we could not create, then we try updating + $sql = "UPDATE ".MAIN_DB_PREFIX."product_pricerules + 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'); + } + } + + } + + setEventMessage($langs->trans("RecordSaved")); +} + +/* + * View + */ + +$sql = "SELECT * FROM ".MAIN_DB_PREFIX."product_pricerules"; +$query = $db->query($sql); + +$rules = array(); + +while ($result = $db->fetch_object($query)) { + $rules[$result->level] = $result; +} + +$title = $langs->trans('ProductServiceSetup'); +$tab = $langs->trans("ProductsAndServices"); + +if (empty($conf->produit->enabled)) { + $title = $langs->trans('ServiceSetup'); + $tab = $langs->trans('Services'); +} elseif (empty($conf->service->enabled)) { + $title = $langs->trans('ProductSetup'); + $tab = $langs->trans('Products'); +} + +llxHeader('', $langs->trans('MultipriceRules')); + +$linkback=''.$langs->trans("BackToModuleList").''; +print load_fiche_titre($title,$linkback,'title_setup'); + + + +print '
'; + +$head = product_admin_prepare_head(); +dol_fiche_head($head, 'generator', $tab, 0, 'product'); + +print $langs->trans("MultiPriceRuleDesc").'

'; + +print load_fiche_titre($langs->trans('MultipriceRules'), '', ''); + +//Array that contains the number of prices available +$price_options = array(); + +for ($i = 1; $i <= $conf->global->PRODUIT_MULTIPRICES_LIMIT; $i++) { + $price_options[$i] = $langs->trans('SellingPrice').' '.$i; +} + +$genPriceOptions = function($level) use ($price_options) { + + $return = array(); + + for ($i = 1; $i < $level; $i++) { + $return[$i] = $price_options[$i]; + } + + return $return; +}; + +?> + + + + + + + + + + + + global->PRODUIT_MULTIPRICES_LIMIT; $i++): ?> + + + + + + +
trans('PriceLevel') ?>trans('Price') ?>trans('MinPrice') ?>
trans('SellingPrice') ?> 1 trans('PercentDiscountOver', $langs->trans('SellingPrice').' 1') ?>
trans('SellingPrice').' '.$i; + // Label of price + if (! empty($conf->global->{"PRODUIT_MULTIPRICES_LABEL$i"})) { + print ' - '.$langs->trans($conf->global->$keyforlabel); + } + ?> + + + trans('PercentVariationOver', Form::selectarray("fk_level[$i]", $genPriceOptions($i), (isset($rules[$i]) ? $rules[$i]->fk_level : null))) ?> + + + trans('PercentDiscountOver', $langs->trans('SellingPrice').' '.$i) ?> +
+ + + +
'; + +print ''; + +llxFooter(); + +$db->close(); diff --git a/htdocs/product/admin/product.php b/htdocs/product/admin/product.php index ec2c17d77ac..9c979862933 100644 --- a/htdocs/product/admin/product.php +++ b/htdocs/product/admin/product.php @@ -518,8 +518,7 @@ if (! empty($conf->global->PRODUCT_CANVAS_ABILITY)) } else { - //TODO: Translate - print "ERROR: $dir is not a directory !\n"; + setEventMessages($dir.' '.$langs->trans("IsNotADir"), null, 'errors'); } } diff --git a/htdocs/product/canvas/product/actions_card_product.class.php b/htdocs/product/canvas/product/actions_card_product.class.php index aba6325d234..e32d31122dc 100644 --- a/htdocs/product/canvas/product/actions_card_product.class.php +++ b/htdocs/product/canvas/product/actions_card_product.class.php @@ -341,7 +341,7 @@ class ActionsCardProduct $sql = 'SELECT DISTINCT '; // Fields requiered - $sql.= 'p.rowid, p.price_base_type, p.fk_product_type, p.seuil_stock_alerte'; + $sql.= 'p.rowid, p.price_base_type, p.fk_product_type, p.seuil_stock_alerte, p.entity'; // Fields not requiered foreach($this->field_list as $field) @@ -417,6 +417,7 @@ class ActionsCardProduct $this->id = $obj->rowid; $this->ref = $obj->$alias; $this->type = $obj->fk_product_type; + $this->entity = $obj->entity; $datas[$alias] = $this->getNomUrl(1,'',24); } else if ($alias == 'stock') diff --git a/htdocs/product/canvas/product/tpl/card_create.tpl.php b/htdocs/product/canvas/product/tpl/card_create.tpl.php index 81ddb147fe3..c5f968dee4f 100644 --- a/htdocs/product/canvas/product/tpl/card_create.tpl.php +++ b/htdocs/product/canvas/product/tpl/card_create.tpl.php @@ -90,9 +90,6 @@ $statutarray=array('1' => $langs->trans("OnSell"), '0' => $langs->trans("NotOnSe volume_units; ?> -trans("Hidden"); ?> -hidden; ?> - trans("NoteNotVisibleOnBill"); ?> textarea_note; ?> diff --git a/htdocs/product/canvas/service/tpl/card_create.tpl.php b/htdocs/product/canvas/service/tpl/card_create.tpl.php index 9d526383a67..39c91695f8f 100644 --- a/htdocs/product/canvas/service/tpl/card_create.tpl.php +++ b/htdocs/product/canvas/service/tpl/card_create.tpl.php @@ -63,9 +63,6 @@ $statutarray=array('1' => $langs->trans("OnSell"), '0' => $langs->trans("NotOnSe duration_unit; ?> -trans("Hidden"); ?> -hidden; ?> - trans("NoteNotVisibleOnBill"); ?> textarea_note; ?> diff --git a/htdocs/product/card.php b/htdocs/product/card.php index 9fadd0f3e5a..4c30691318f 100644 --- a/htdocs/product/card.php +++ b/htdocs/product/card.php @@ -249,7 +249,6 @@ if (empty($reshook)) $object->volume = GETPOST('volume'); $object->volume_units = GETPOST('volume_units'); $object->finished = GETPOST('finished'); - $object->hidden = GETPOST('hidden')=='yes'?1:0; $object->fk_unit = GETPOST('units'); $object->accountancy_code_sell = GETPOST('accountancy_code_sell'); $object->accountancy_code_buy = GETPOST('accountancy_code_buy'); @@ -335,7 +334,6 @@ if (empty($reshook)) $object->volume = GETPOST('volume'); $object->volume_units = GETPOST('volume_units'); $object->finished = GETPOST('finished'); - $object->hidden = GETPOST('hidden')=='yes'?1:0; $units = GETPOST('units', 'int'); @@ -1040,7 +1038,7 @@ else require_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php'; $type = $langs->trans('Product'); - if ($object->isservice()) $type = $langs->trans('Service'); + if ($object->isService()) $type = $langs->trans('Service'); //print load_fiche_titre($langs->trans('Modify').' '.$type.' : '.(is_object($object->oldcopy)?$object->oldcopy->ref:$object->ref), ""); // Main official, simple, and not duplicated code @@ -1146,7 +1144,7 @@ else // Stock /* - if ($object->isproduct() && ! empty($conf->stock->enabled)) + if ($object->isProduct() && ! empty($conf->stock->enabled)) { print "".''.$langs->trans("StockLimit").''; print ''; @@ -1171,7 +1169,7 @@ else print ''; } - if ($object->isservice()) + if ($object->isService()) { // Duration print ''.$langs->trans("Duration").''; @@ -1239,16 +1237,9 @@ else print $object->showOptionals($extrafields,'edit'); } - // Note - print ''.$langs->trans("NoteNotVisibleOnBill").''; - - $doleditor = new DolEditor('note', $object->note, '', 140, 'dolibarr_notes', '', false, true, $conf->global->FCKEDITOR_ENABLE_PRODUCTDESC, 4, 80); - $doleditor->Create(); - - print ""; - - if($conf->categorie->enabled) { - // Categories + // Tags-Categories + if ($conf->categorie->enabled) + { print ''.$langs->trans("Categories").''; $cate_arbo = $form->select_all_categories(Categorie::TYPE_PRODUCT, '', 'parent', 64, 0, 1); $c = new Categorie($db); @@ -1260,6 +1251,14 @@ else print ""; } + // Note + print ''.$langs->trans("NoteNotVisibleOnBill").''; + + $doleditor = new DolEditor('note', $object->note, '', 140, 'dolibarr_notes', '', false, true, $conf->global->FCKEDITOR_ENABLE_PRODUCTDESC, 4, 80); + $doleditor->Create(); + + print ""; + print ''; print '
'; @@ -1298,58 +1297,29 @@ else // Fiche en mode visu else { - $head=product_prepare_head($object); + $showbarcode=empty($conf->barcode->enabled)?0:1; + if (! empty($conf->global->MAIN_USE_ADVANCED_PERMS) && empty($user->rights->barcode->lire_advance)) $showbarcode=0; + + $head=product_prepare_head($object); $titre=$langs->trans("CardProduct".$object->type); $picto=($object->type== Product::TYPE_SERVICE?'service':'product'); dol_fiche_head($head, 'card', $titre, 0, $picto); - $showphoto=$object->is_photo_available($conf->product->multidir_output[$object->entity]); - $showbarcode=empty($conf->barcode->enabled)?0:1; - if (! empty($conf->global->MAIN_USE_ADVANCED_PERMS) && empty($user->rights->barcode->lire_advance)) $showbarcode=0; - - // En mode visu - print ''; - - // Ref - print ''; - - print ''; - - // Label - print ''; - - $nblignes=7; - if (! empty($conf->produit->enabled) && ! empty($conf->service->enabled)) $nblignes++; - if ($showbarcode) $nblignes+=2; - if ($object->type!= Product::TYPE_SERVICE) $nblignes++; - if (empty($conf->global->PRODUCT_DISABLE_CUSTOM_INFO)) $nblignes+=2; - if ($object->isservice()) $nblignes++; - else $nblignes+=4; - - // Photo - if ($showphoto || $showbarcode) - { - print ''; - } - - print ''; - + dol_banner_tab($object, 'ref', '', ($user->societe_id?0:1), 'ref'); + + + print '
'; + print '
'; + + print '
'; + print '
'.$langs->trans("Ref").''; - print $form->showrefnav($object,'ref','',1,'ref'); - print '
'.$langs->trans("Label").''.$object->label.''; - print '
'; - $maxvisiblephotos=(isset($conf->global->PRODUCT_MAX_VISIBLE_PHOTO)?$conf->global->PRODUCT_MAX_VISIBLE_PHOTO:5); - if ($conf->browser->phone) $maxvisiblephotos=1; - if ($showphoto) print $object->show_photos($conf->product->multidir_output[$object->entity],1,$maxvisiblephotos,0,0,0,80); - if ($showphoto && $showbarcode) print '

'; - if ($showbarcode) print $form->showbarcode($object); - print '
'; - print '
'; + // Type if (! empty($conf->produit->enabled) && ! empty($conf->service->enabled)) { // TODO change for compatibility with edit in place $typeformat='select;0:'.$langs->trans("Product").',1:'.$langs->trans("Service"); - print ''; } @@ -1412,6 +1382,7 @@ else print ''; // Status (to sell) + /* print ''; - + */ + // Batch number management (to batch) if (! empty($conf->productbatch->enabled)) { print ''; + print '
'.$form->editfieldkey("Type",'fk_product_type',$object->type,$object,$user->rights->produit->creer||$user->rights->service->creer,$typeformat).''; + print '
'.$form->editfieldkey("Type",'fk_product_type',$object->type,$object,$user->rights->produit->creer||$user->rights->service->creer,$typeformat).''; print $form->editfieldval("Type",'fk_product_type',$object->type,$object,$user->rights->produit->creer||$user->rights->service->creer,$typeformat); print '
'.$langs->trans("Status").' ('.$langs->trans("Sell").')'; if (! empty($conf->use_javascript_ajax) && $user->rights->produit->creer && ! empty($conf->global->MAIN_DIRECT_STATUS_UPDATE)) { print ajax_object_onoff($object, 'status', 'tosell', 'ProductStatusOnSell', 'ProductStatusNotOnSell'); @@ -1428,7 +1399,8 @@ else print $object->getLibStatut(2,1); } print '
'.$langs->trans("ManageLotSerial").''; @@ -1448,18 +1420,25 @@ else print dol_print_url($object->url); print '
'; + print '
'; + print '
'; + + print '
'; + print ''; + // Nature if($object->type!= Product::TYPE_SERVICE) { - print ''; } - if ($object->isservice()) + if ($object->isService()) { // Duration - print ''."\n"; - print ' '."\n"; - // Categories if($conf->categorie->enabled) { print '"; } - print "
'.$langs->trans("Nature").''; + print '
'.$langs->trans("Nature").''; print $object->getLibFinished(); print '
'.$langs->trans("Duration").''.$object->duration_value.' '; + print '
'.$langs->trans("Duration").''.$object->duration_value.' '; if ($object->duration_value > 1) { $dur=array("h"=>$langs->trans("Hours"),"d"=>$langs->trans("Days"),"w"=>$langs->trans("Weeks"),"m"=>$langs->trans("Months"),"y"=>$langs->trans("Years")); @@ -1475,7 +1454,7 @@ else else { // Weight - print '
'.$langs->trans("Weight").''; + print '
'.$langs->trans("Weight").''; if ($object->weight != '') { print $object->weight." ".measuring_units_string($object->weight_units,"weight"); @@ -1549,11 +1528,6 @@ else print $object->showOptionals($extrafields); } - // Note - print ' '."\n"; - print '
'.$langs->trans("Note").''.(dol_textishtml($object->note)?$object->note:dol_nl2br($object->note,1,true)).'
'.$langs->trans("Categories").''; @@ -1561,8 +1535,17 @@ else print "
\n"; + // Note + print ' '."\n"; + print ''.$langs->trans("Note").''.(dol_textishtml($object->note)?$object->note:dol_nl2br($object->note,1,true)).''."\n"; + print ' '."\n"; + print "\n"; + print '
'; + + print '
'; + print '
'; + dol_fiche_end(); } diff --git a/htdocs/product/class/product.class.php b/htdocs/product/class/product.class.php index fb5eba2abc5..64068652ca9 100644 --- a/htdocs/product/class/product.class.php +++ b/htdocs/product/class/product.class.php @@ -84,11 +84,13 @@ class Product extends CommonObject //! Base price ('TTC' for price including tax or 'HT' for net price) var $price_base_type; //! Arrays for multiprices - var $multiprices=array(); - var $multiprices_ttc=array(); - var $multiprices_base_type=array(); - var $multiprices_tva_tx=array(); - var $multiprices_recuperableonly=array(); + public $multiprices=array(); + public $multiprices_ttc=array(); + public $multiprices_base_type=array(); + public $multiprices_min=array(); + public $multiprices_min_ttc=array(); + public $multiprices_tva_tx=array(); + public $multiprices_recuperableonly=array(); //! Price by quantity arrays var $price_by_qty; var $prices_by_qty=array(); @@ -125,6 +127,12 @@ class Product extends CommonObject var $customcode; // Customs code + /** + * Product URL + * @var string + */ + public $url; + //! Unites de mesure var $weight; var $weight_units; @@ -191,6 +199,12 @@ class Product extends CommonObject */ public $fk_unit; + /** + * Price is generated using multiprice rules + * @var int + */ + public $price_autogen = 0; + /** * Regular product */ @@ -710,6 +724,8 @@ class Product extends CommonObject $sql.= ", accountancy_code_sell= '" . $this->db->escape($this->accountancy_code_sell)."'"; $sql.= ", desiredstock = " . ((isset($this->desiredstock) && $this->desiredstock != '') ? $this->desiredstock : "null"); $sql.= ", fk_unit= " . (!$this->fk_unit ? 'NULL' : $this->fk_unit); + $sql.= ", price_autogen = " . (!$this->price_autogen ? 0 : 1); + $sql.= ", fk_price_expression = ".($this->fk_price_expression != 0 ? $this->fk_price_expression : 'NULL'); $sql.= " WHERE rowid = " . $id; dol_syslog(get_class($this)."::update", LOG_DEBUG); @@ -1337,9 +1353,10 @@ class Product extends CommonObject * @param int $level 0=standard, >0 = level if multilevel prices * @param int $newnpr 0=Standard vat rate, 1=Special vat rate for French NPR VAT * @param int $newpsq 1 if it has price by quantity + * @param int $ignore_autogen Used to avoid infinite loops * @return int <0 if KO, >0 if OK */ - function updatePrice($newprice, $newpricebase, $user, $newvat='',$newminprice='', $level=0, $newnpr=0, $newpsq=0) + function updatePrice($newprice, $newpricebase, $user, $newvat='',$newminprice='', $level=0, $newnpr=0, $newpsq=0, $ignore_autogen=0) { global $conf,$langs; @@ -1353,6 +1370,14 @@ class Product extends CommonObject // Check parameters if ($newvat == '') $newvat=$this->tva_tx; + + // If multiprices are enabled, then we check if the current product is subject to price autogeneration + // Price will be modified ONLY when the first one is the one that is being modified + if (!empty($conf->global->PRODUIT_MULTIPRICES) && !$ignore_autogen && $this->price_autogen && ($level == 1)) + { + return $this->generateMultiprices($user, $newprice, $newpricebase, $newvat, $newnpr, $newpsq); + } + if (! empty($newminprice) && ($newminprice > $newprice)) { $this->error='ErrorPriceCantBeLowerThanMinPrice'; @@ -1427,6 +1452,14 @@ class Product extends CommonObject $resql=$this->db->query($sql); if ($resql) { + $this->multiprices[$level] = $price; + $this->multiprices_ttc[$level] = $price_ttc; + $this->multiprices_min[$level]= $price_min; + $this->multiprices_min_ttc[$level]= $price_min_ttc; + $this->multiprices_base_type[$level]= $newpricebase; + $this->multiprices_tva_tx[$level]= $newvat; + $this->multiprices_recuperableonly[$level]= $newnpr; + $this->price = $price; $this->price_ttc = $price_ttc; $this->price_min = $price_min; @@ -1471,33 +1504,15 @@ class Product extends CommonObject * * @param int $expression_id Expression * @return int <0 if KO, >0 if OK + * @deprecated Use Product::update instead */ function setPriceExpression($expression_id) { - global $conf; + global $user; - // Clean parameters - $this->db->begin(); - $expression_id = $expression_id != 0 ? $expression_id : 'NULL'; + $this->fk_price_expression = $expression_id; - $sql = "UPDATE ".MAIN_DB_PREFIX."product"; - $sql.= " SET fk_price_expression = ".$expression_id; - $sql.= " WHERE rowid = ".$this->id; - - dol_syslog(get_class($this)."::setPriceExpression", LOG_DEBUG); - - $resql = $this->db->query($sql); - if ($resql) - { - $this->db->commit(); - return 1; - } - else - { - $this->error=$this->db->error()." sql=".$sql; - $this->db->rollback(); - return -1; - } + return $this->update($this->id, $user); } /** @@ -1531,7 +1546,7 @@ class Product extends CommonObject $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,"; $sql.= " datec, tms, import_key, entity, desiredstock, tobatch, fk_unit"; - $sql.= " , fk_price_expression"; + $sql.= " , fk_price_expression, price_autogen"; $sql.= " FROM ".MAIN_DB_PREFIX."product"; if ($id) $sql.= " WHERE rowid = ".$this->db->escape($id); else @@ -1608,6 +1623,7 @@ class Product extends CommonObject $this->ref_ext = $obj->ref_ext; $this->fk_price_expression = $obj->fk_price_expression; $this->fk_unit = $obj->fk_unit; + $this->price_autogen = $obj->price_autogen; $this->db->free($resql); @@ -2177,11 +2193,12 @@ class Product extends CommonObject /** * Return nb of units or customers invoices in which product is included * - * @param int $socid Limit count on a particular third party id - * @param string $mode 'byunit'=number of unit, 'bynumber'=nb of entities - * @return array <0 if KO, result[month]=array(valuex,valuey) where month is 0 to 11 + * @param int $socid Limit count on a particular third party id + * @param string $mode 'byunit'=number of unit, 'bynumber'=nb of entities + * @param int $filteronproducttype 0=To filter on product only, 1=To filter on services only + * @return array <0 if KO, result[month]=array(valuex,valuey) where month is 0 to 11 */ - function get_nb_vente($socid,$mode) + function get_nb_vente($socid, $mode, $filteronproducttype=-1) { global $conf; global $user; @@ -2189,9 +2206,11 @@ class Product extends CommonObject $sql = "SELECT sum(d.qty), date_format(f.datef, '%Y%m')"; if ($mode == 'bynumber') $sql.= ", count(DISTINCT f.rowid)"; $sql.= " FROM ".MAIN_DB_PREFIX."facturedet as d, ".MAIN_DB_PREFIX."facture as f, ".MAIN_DB_PREFIX."societe as s"; + if ($filteronproducttype >= 0) $sql.=", ".MAIN_DB_PREFIX."product as p"; if (!$user->rights->societe->client->voir && !$socid) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; $sql.= " WHERE f.rowid = d.fk_facture"; - $sql.= " AND d.fk_product =".$this->id; + if ($this->id > 0) $sql.= " AND d.fk_product =".$this->id; + if ($filteronproducttype >= 0) $sql.= " AND p.rowid = d.fk_product AND p.fk_product_type =".$filteronproducttype; $sql.= " AND f.fk_soc = s.rowid"; $sql.= " AND f.entity IN (".getEntity('facture', 1).")"; if (!$user->rights->societe->client->voir && !$socid) $sql.= " AND f.fk_soc = sc.fk_soc AND sc.fk_user = " .$user->id; @@ -2206,11 +2225,12 @@ class Product extends CommonObject /** * Return nb of units or supplier invoices in which product is included * - * @param int $socid Limit count on a particular third party id - * @param string $mode 'byunit'=number of unit, 'bynumber'=nb of entities - * @return array <0 if KO, result[month]=array(valuex,valuey) where month is 0 to 11 + * @param int $socid Limit count on a particular third party id + * @param string $mode 'byunit'=number of unit, 'bynumber'=nb of entities + * @param int $filteronproducttype 0=To filter on product only, 1=To filter on services only + * @return array <0 if KO, result[month]=array(valuex,valuey) where month is 0 to 11 */ - function get_nb_achat($socid,$mode) + function get_nb_achat($socid, $mode, $filteronproducttype=-1) { global $conf; global $user; @@ -2218,9 +2238,11 @@ class Product extends CommonObject $sql = "SELECT sum(d.qty), date_format(f.datef, '%Y%m')"; if ($mode == 'bynumber') $sql.= ", count(DISTINCT f.rowid)"; $sql.= " FROM ".MAIN_DB_PREFIX."facture_fourn_det as d, ".MAIN_DB_PREFIX."facture_fourn as f, ".MAIN_DB_PREFIX."societe as s"; - if (!$user->rights->societe->client->voir && !$socid) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; + if ($filteronproducttype >= 0) $sql.=", ".MAIN_DB_PREFIX."product as p"; + if (!$user->rights->societe->client->voir && !$socid) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; $sql.= " WHERE f.rowid = d.fk_facture_fourn"; - $sql.= " AND d.fk_product =".$this->id; + if ($this->id > 0) $sql.= " AND d.fk_product =".$this->id; + if ($filteronproducttype >= 0) $sql.= " AND p.rowid = d.fk_product AND p.fk_product_type =".$filteronproducttype; $sql.= " AND f.fk_soc = s.rowid"; $sql.= " AND f.entity IN (".getEntity('facture_fourn', 1).")"; if (!$user->rights->societe->client->voir && !$socid) $sql.= " AND f.fk_soc = sc.fk_soc AND sc.fk_user = " .$user->id; @@ -2235,11 +2257,12 @@ class Product extends CommonObject /** * Return nb of units or proposals in which product is included * - * @param int $socid Limit count on a particular third party id - * @param string $mode 'byunit'=number of unit, 'bynumber'=nb of entities - * @return array <0 if KO, result[month]=array(valuex,valuey) where month is 0 to 11 + * @param int $socid Limit count on a particular third party id + * @param string $mode 'byunit'=number of unit, 'bynumber'=nb of entities + * @param int $filteronproducttype 0=To filter on product only, 1=To filter on services only + * @return array <0 if KO, result[month]=array(valuex,valuey) where month is 0 to 11 */ - function get_nb_propal($socid,$mode) + function get_nb_propal($socid, $mode, $filteronproducttype=-1) { global $conf; global $user; @@ -2247,9 +2270,11 @@ class Product extends CommonObject $sql = "SELECT sum(d.qty), date_format(p.datep, '%Y%m')"; if ($mode == 'bynumber') $sql.= ", count(DISTINCT p.rowid)"; $sql.= " FROM ".MAIN_DB_PREFIX."propaldet as d, ".MAIN_DB_PREFIX."propal as p, ".MAIN_DB_PREFIX."societe as s"; + if ($filteronproducttype >= 0) $sql.=", ".MAIN_DB_PREFIX."product as prod"; if (!$user->rights->societe->client->voir && !$socid) $sql .= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; $sql.= " WHERE p.rowid = d.fk_propal"; - $sql.= " AND d.fk_product =".$this->id; + if ($this->id > 0) $sql.= " AND d.fk_product =".$this->id; + if ($filteronproducttype >= 0) $sql.= " AND prod.rowid = d.fk_product AND prod.fk_product_type =".$filteronproducttype; $sql.= " AND p.fk_soc = s.rowid"; $sql.= " AND p.entity IN (".getEntity('propal', 1).")"; if (!$user->rights->societe->client->voir && !$socid) $sql.= " AND p.fk_soc = sc.fk_soc AND sc.fk_user = " .$user->id; @@ -2263,20 +2288,23 @@ class Product extends CommonObject /** * Return nb of units or orders in which product is included * - * @param int $socid Limit count on a particular third party id - * @param string $mode 'byunit'=number of unit, 'bynumber'=nb of entities - * @return array <0 if KO, result[month]=array(valuex,valuey) where month is 0 to 11 + * @param int $socid Limit count on a particular third party id + * @param string $mode 'byunit'=number of unit, 'bynumber'=nb of entities + * @param int $filteronproducttype 0=To filter on product only, 1=To filter on services only + * @return array <0 if KO, result[month]=array(valuex,valuey) where month is 0 to 11 */ - function get_nb_order($socid,$mode) + function get_nb_order($socid, $mode, $filteronproducttype=-1) { global $conf, $user; $sql = "SELECT sum(d.qty), date_format(c.date_commande, '%Y%m')"; if ($mode == 'bynumber') $sql.= ", count(DISTINCT c.rowid)"; $sql.= " FROM ".MAIN_DB_PREFIX."commandedet as d, ".MAIN_DB_PREFIX."commande as c, ".MAIN_DB_PREFIX."societe as s"; - if (!$user->rights->societe->client->voir && !$socid) $sql .= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; + if ($filteronproducttype >= 0) $sql.=", ".MAIN_DB_PREFIX."product as p"; + if (!$user->rights->societe->client->voir && !$socid) $sql .= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; $sql.= " WHERE c.rowid = d.fk_commande"; - $sql.= " AND d.fk_product =".$this->id; + if ($this->id > 0) $sql.= " AND d.fk_product =".$this->id; + if ($filteronproducttype >= 0) $sql.= " AND p.rowid = d.fk_product AND p.fk_product_type =".$filteronproducttype; $sql.= " AND c.fk_soc = s.rowid"; $sql.= " AND c.entity IN (".getEntity('commande', 1).")"; if (!$user->rights->societe->client->voir && !$socid) $sql.= " AND c.fk_soc = sc.fk_soc AND sc.fk_user = " .$user->id; @@ -2290,20 +2318,23 @@ class Product extends CommonObject /** * Return nb of units or orders in which product is included * - * @param int $socid Limit count on a particular third party id - * @param string $mode 'byunit'=number of unit, 'bynumber'=nb of entities - * @return array <0 if KO, result[month]=array(valuex,valuey) where month is 0 to 11 + * @param int $socid Limit count on a particular third party id + * @param string $mode 'byunit'=number of unit, 'bynumber'=nb of entities + * @param int $filteronproducttype 0=To filter on product only, 1=To filter on services only + * @return array <0 if KO, result[month]=array(valuex,valuey) where month is 0 to 11 */ - function get_nb_ordersupplier($socid,$mode) + function get_nb_ordersupplier($socid, $mode, $filteronproducttype=-1) { global $conf, $user; $sql = "SELECT sum(d.qty), date_format(c.date_commande, '%Y%m')"; if ($mode == 'bynumber') $sql.= ", count(DISTINCT c.rowid)"; $sql.= " FROM ".MAIN_DB_PREFIX."commande_fournisseurdet as d, ".MAIN_DB_PREFIX."commande_fournisseur as c, ".MAIN_DB_PREFIX."societe as s"; + if ($filteronproducttype >= 0) $sql.=", ".MAIN_DB_PREFIX."product as p"; if (!$user->rights->societe->client->voir && !$socid) $sql .= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; $sql.= " WHERE c.rowid = d.fk_commande"; - $sql.= " AND d.fk_product =".$this->id; + if ($this->id > 0) $sql.= " AND d.fk_product =".$this->id; + if ($filteronproducttype >= 0) $sql.= " AND p.rowid = d.fk_product AND p.fk_product_type =".$filteronproducttype; $sql.= " AND c.fk_soc = s.rowid"; $sql.= " AND c.entity IN (".getEntity('commande_fournisseur', 1).")"; if (!$user->rights->societe->client->voir && !$socid) $sql.= " AND c.fk_soc = sc.fk_soc AND sc.fk_user = " .$user->id; @@ -2753,7 +2784,8 @@ class Product extends CommonObject 'type'=>$type, // Nb of units that compose parent product 'desiredstock'=>$this->desiredstock, 'level'=>$level, - 'incdec'=>$incdec + 'incdec'=>$incdec, + 'entity'=>$this->entity ); // Recursive call if there is childs to child @@ -2835,7 +2867,7 @@ class Product extends CommonObject */ function getFather() { - $sql = "SELECT p.rowid, p.label as label, p.ref as ref, pa.fk_product_pere as id, p.fk_product_type, pa.qty, pa.incdec"; + $sql = "SELECT p.rowid, p.label as label, p.ref as ref, pa.fk_product_pere as id, p.fk_product_type, pa.qty, pa.incdec, p.entity"; $sql.= " FROM ".MAIN_DB_PREFIX."product_association as pa,"; $sql.= " ".MAIN_DB_PREFIX."product as p"; $sql.= " WHERE p.rowid = pa.fk_product_pere"; @@ -2853,6 +2885,7 @@ class Product extends CommonObject $prods[$record['id']]['qty'] = $record['qty']; $prods[$record['id']]['incdec'] = $record['incdec']; $prods[$record['id']]['fk_product_type'] = $record['fk_product_type']; + $prods[$record['id']]['entity'] = $record['entity']; } return $prods; } @@ -3395,7 +3428,7 @@ class Product extends CommonObject $dir = $sdir; if (! empty($conf->global->PRODUCT_USE_OLD_PATH_FOR_PHOTO)) $dir .= '/'. get_exdir($this->id,2,0,0,$this,'product') . $this->id ."/photos"; - else $dir .= '/'.dol_sanitizeFileName($this->ref); + else $dir .= '/'.get_exdir(0,0,0,0,$this,'product').dol_sanitizeFileName($this->ref); dol_mkdir($dir); @@ -3433,7 +3466,7 @@ class Product extends CommonObject $dir = $sdir; if (! empty($conf->global->PRODUCT_USE_OLD_PATH_FOR_PHOTO)) $dir .= '/'. get_exdir($this->id,2,0,0,$this,'product') . $this->id ."/photos/"; - else $dir .= '/'.dol_sanitizeFileName($this->ref).'/'; + else $dir .= '/'.get_exdir(0,0,0,0,$this,'product').dol_sanitizeFileName($this->ref).'/'; $nbphoto=0; @@ -3466,9 +3499,10 @@ class Product extends CommonObject * @param int $showaction 1=Show icon with action links (resize, delete) * @param int $maxHeight Max height of image when size=1 * @param int $maxWidth Max width of image when size=1 + * @param int $nolink Do not add a href link to view enlarged imaged into a new tab * @return string Html code to show photo. Number of photos shown is saved in this->nbphoto */ - function show_photos($sdir,$size=0,$nbmax=0,$nbbyrow=5,$showfilename=0,$showaction=0,$maxHeight=120,$maxWidth=160) + function show_photos($sdir,$size=0,$nbmax=0,$nbbyrow=5,$showfilename=0,$showaction=0,$maxHeight=120,$maxWidth=160,$nolink=0) { global $conf,$user,$langs; @@ -3484,8 +3518,8 @@ class Product extends CommonObject } else { - $dir .= $this->ref.'/'; - $pdir .= $this->ref.'/'; + $dir .= get_exdir(0,0,0,0,$this,'product').$this->ref.'/'; + $pdir .= get_exdir(0,0,0,0,$this,'product').$this->ref.'/'; } $dirthumb = $dir.'thumbs/'; @@ -3533,7 +3567,7 @@ class Product extends CommonObject else if ($nbbyrow < 0) $return .= '
'; $return.= "\n"; - $return.= ''; + if (empty($nolink)) $return.= ''; // Show image (width height=$maxHeight) // Si fichier vignette disponible et image source trop grande, on utilise la vignette, sinon on utilise photo origine @@ -3549,7 +3583,8 @@ class Product extends CommonObject $return.= 'dol_use_jmobile?'max-height':'height').'="'.$maxHeight.'" src="'.DOL_URL_ROOT.'/viewimage.php?modulepart=product&entity='.$this->entity.'&file='.urlencode($pdir.$photo).'" title="'.dol_escape_htmltag($alt).'">'; } - $return.= ''."\n"; + if (empty($nolink)) $return.= ''; + $return.="\n"; if ($showfilename) $return.= '
'.$viewfilename; if ($showaction) @@ -3769,7 +3804,7 @@ class Product extends CommonObject * * @return boolean True if it's a product */ - function isproduct() + function isProduct() { return ($this->type == Product::TYPE_PRODUCT ? true : false); } @@ -3779,7 +3814,7 @@ class Product extends CommonObject * * @return boolean True if it's a service */ - function isservice() + function isService() { return ($this->type == Product::TYPE_SERVICE ? true : false); } @@ -3992,4 +4027,80 @@ class Product extends CommonObject return CommonObject::commonReplaceThirdparty($db, $origin_id, $dest_id, $tables); } + + /** + * Generates prices for a product based on product multiprice generation rules + * + * @param User $user User that updates the prices + * @param float $baseprice Base price + * @param string $price_type Base price type + * @param float $price_vat VAT % tax + * @param int $npr NPR + * @param string $psq ¿? + * @return int -1 KO, 1 OK + */ + public function generateMultiprices(User $user, $baseprice, $price_type, $price_vat, $npr, $psq) + { + global $conf, $db; + + // FIXME USing * into select is forbidden + $sql = "SELECT * FROM ".MAIN_DB_PREFIX."product_pricerules"; + $query = $db->query($sql); + + $rules = array(); + + while ($result = $db->fetch_object($query)) { + $rules[$result->level] = $result; + } + + //Because prices can be based on other level's prices, we temporarily store them + $prices = array( + 1 => $baseprice + ); + + for ($i = 1; $i <= $conf->global->PRODUIT_MULTIPRICES_LIMIT; $i++) { + + $price = $baseprice; + $price_min = 0; + + if ($i > 1) { + //We have to make sure it does exist and it is > 0 + if (isset($rules[$i]->var_percent) && $rules[$i]->var_percent) { + $price = $prices[$rules[$i]->fk_level] * (1 + ($rules[$i]->var_percent/100)); + } + } + + $prices[$i] = $price; + + //We have to make sure it does exist and it is > 0 + if (isset($rules[$i]->var_min_percent) && $rules[$i]->var_min_percent) { + $price_min = $price * (1 - ($rules[$i]->var_min_percent/100)); + } + + if ($price == $this->multiprices[$i] && ($price_min == $this->multiprices_min[$i])) { + continue; + } + + if ($this->updatePrice($price, $price_type, $user, $price_vat, $price_min, $i, $npr, $psq, true) < 0) { + return -1; + } + } + + return 1; + } + + /** + * Returns the rights used for this class + * @return stdClass + */ + public function getRights() + { + global $user; + + if ($this->isProduct()) { + return $user->rights->produit; + } else { + return $user->rights->service; + } + } } diff --git a/htdocs/product/composition/card.php b/htdocs/product/composition/card.php index b813ad786ac..86dfb8a8fd4 100644 --- a/htdocs/product/composition/card.php +++ b/htdocs/product/composition/card.php @@ -139,7 +139,7 @@ if ($action == 'search') { $current_lang = $langs->getDefaultLang(); - $sql = 'SELECT DISTINCT p.rowid, p.ref, p.label, p.barcode, p.price, p.price_ttc, p.price_base_type,'; + $sql = 'SELECT DISTINCT p.rowid, p.ref, p.label, p.barcode, p.price, p.price_ttc, p.price_base_type, p.entity,'; $sql.= ' p.fk_product_type, p.tms as datem'; if (! empty($conf->global->MAIN_MULTILANGS)) $sql.= ', pl.label as labelm, pl.description as descriptionm'; $sql.= ' FROM '.MAIN_DB_PREFIX.'product as p'; @@ -193,8 +193,8 @@ if ($id > 0 || ! empty($ref)) print ""; $nblignes=6; - if ($object->isproduct() && ! empty($conf->stock->enabled)) $nblignes++; - if ($object->isservice()) $nblignes++; + if ($object->isProduct() && ! empty($conf->stock->enabled)) $nblignes++; + if ($object->isService()) $nblignes++; // Reference print ''.$langs->trans("Ref").''; @@ -278,6 +278,7 @@ if ($id > 0 || ! empty($ref)) $productstatic->type=$value["fk_product_type"]; $productstatic->ref=$value['ref']; $productstatic->label=$value['label']; + $productstatic->entity=$value['entity']; $class=($class=='impair')?'pair':'impair'; print ''; @@ -334,6 +335,7 @@ if ($id > 0 || ! empty($ref)) $productstatic->id=$value['id']; $productstatic->type=$value['type']; $productstatic->label=$value['label']; + $productstatic->entity=$value['entity']; if ($value['level'] <= 1) { @@ -542,6 +544,7 @@ if ($id > 0 || ! empty($ref)) $productstatic->ref=$objp->ref; $productstatic->label=$objp->label; $productstatic->type=$objp->type; + $productstatic->entity=$objp->entity; print ''.$productstatic->getNomUrl(1,'',24).''; $labeltoshow=$objp->label; diff --git a/htdocs/product/document.php b/htdocs/product/document.php index df1afe1db93..ecb3d12bb52 100644 --- a/htdocs/product/document.php +++ b/htdocs/product/document.php @@ -70,8 +70,14 @@ if ($id > 0 || ! empty($ref)) { $result = $object->fetch($id, $ref); - if (! empty($conf->product->enabled)) $upload_dir = $conf->product->multidir_output[$object->entity].'/'.dol_sanitizeFileName($object->ref); - elseif (! empty($conf->service->enabled)) $upload_dir = $conf->service->multidir_output[$object->entity].'/'.dol_sanitizeFileName($object->ref); + if (! empty($conf->product->enabled)) $upload_dir = $conf->product->multidir_output[$object->entity].'/'.get_exdir(0, 0, 0, 0, $object, 'product').dol_sanitizeFileName($object->ref); + elseif (! empty($conf->service->enabled)) $upload_dir = $conf->service->multidir_output[$object->entity].'/'.get_exdir(0, 0, 0, 0, $object, 'product').dol_sanitizeFileName($object->ref); + + if (! empty($conf->global->PRODUCT_USE_OLD_PATH_FOR_PHOTO)) // For backward compatiblity, we scan also old dirs + { + if (! empty($conf->product->enabled)) $upload_dirold = $conf->product->multidir_output[$object->entity].'/'.substr(substr("000".$object->id, -2),1,1).'/'.substr(substr("000".$object->id, -2),0,1).'/'.$object->id."/photos"; + else $upload_dirold = $conf->service->multidir_output[$object->entity].'/'.substr(substr("000".$object->id, -2),1,1).'/'.substr(substr("000".$object->id, -2),0,1).'/'.$object->id."/photos"; + } } $modulepart='produit'; @@ -175,40 +181,35 @@ if ($object->id) // Construit liste des fichiers $filearray=dol_dir_list($upload_dir,"files",0,'','(\.meta|_preview\.png)$',$sortfield,(strtolower($sortorder)=='desc'?SORT_DESC:SORT_ASC),1); + + if (! empty($conf->global->PRODUCT_USE_OLD_PATH_FOR_PHOTO)) // For backward compatiblity, we scan also old dirs + { + $filearrayold=dol_dir_list($upload_dirold,"files",0,'','(\.meta|_preview\.png)$',$sortfield,(strtolower($sortorder)=='desc'?SORT_DESC:SORT_ASC),1); + $filearray=array_merge($filearray, $filearrayold); + } + $totalsize=0; foreach($filearray as $key => $file) { $totalsize+=$file['size']; } + + dol_banner_tab($object, 'ref', '', ($user->societe_id?0:1), 'ref'); + + print '
'; + + print '
'; + print ''; - print '
'; - - // Ref - print ''; - print ''; - print ''; - - // Label - print ''; - - // Status (to sell) - print ''; - - // Status (to buy) - print ''; - - print ''; + print ''; print ''; print '
'.$langs->trans("Ref").''; - print $form->showrefnav($object,'ref','',1,'ref'); - print '
'.$langs->trans("Label").''.$object->label.'
'.$langs->trans("Status").' ('.$langs->trans("Sell").')'; - print $object->getLibStatut(2,0); - print '
'.$langs->trans("Status").' ('.$langs->trans("Buy").')'; - print $object->getLibStatut(2,1); - print '
'.$langs->trans("NbOfAttachedFiles").''.count($filearray).'
'.$langs->trans("NbOfAttachedFiles").''.count($filearray).'
'.$langs->trans("TotalSizeOfAttachedFiles").''.$totalsize.' '.$langs->trans("bytes").'
'; print '
'; + print '
'; + + dol_fiche_end(); $modulepart = 'produit'; $permission = (($object->type == Product::TYPE_PRODUCT && $user->rights->produit->creer) || ($object->type == Product::TYPE_SERVICE && $user->rights->service->creer)); diff --git a/htdocs/product/fournisseurs.php b/htdocs/product/fournisseurs.php index 72f8ed2b0b2..96aa9aa6311 100644 --- a/htdocs/product/fournisseurs.php +++ b/htdocs/product/fournisseurs.php @@ -95,9 +95,14 @@ if (empty($reshook)) { if ($rowid) { - $result=$object->remove_product_fournisseur_price($rowid); $action = ''; - setEventMessage($langs->trans("PriceRemoved")); + $result=$product->remove_product_fournisseur_price($rowid); + if($result > 0){ + setEventMessage($langs->trans("PriceRemoved")); + }else{ + $error++; + setEventMessages($product->error, $product->errors, 'errors'); + } } } @@ -259,21 +264,15 @@ if ($id > 0 || $ref) $picto=($object->type== Product::TYPE_SERVICE?'service':'product'); dol_fiche_head($head, 'suppliers', $titre, 0, $picto); - - print ''; - - // Reference - print ''; - print ''; - print ''; - - // Label - print ''; + dol_banner_tab($object, 'ref', '', ($user->societe_id?0:1), 'ref'); + + print '
'; + + print '
'; + print '
'.$langs->trans("Ref").''; - print $form->showrefnav($object,'ref','',1,'ref'); - print '
'.$langs->trans("Label").''.$object->label.'
'; // Minimum Price - print ''; + print ''; print ''; - // Status (to buy) - print ''; - print '
'.$langs->trans("BuyingPriceMin").'
'.$langs->trans("BuyingPriceMin").''; $product_fourn = new ProductFournisseur($db); if ($product_fourn->find_min_price_product_fournisseur($object->id) > 0) @@ -283,14 +282,13 @@ if ($id > 0 || $ref) } print '
'.$langs->trans("Status").' ('.$langs->trans("Buy").')'; - print $object->getLibStatut(2,1); - print '
'; - print "
\n"; + print '
'; + print '
'; + + dol_fiche_end(); + // Form to add or update a price if (($action == 'add_price' || $action == 'updateprice' ) && ($user->rights->produit->creer || $user->rights->service->creer)) @@ -523,7 +521,7 @@ if ($id > 0 || $ref) { // Suppliers list title print ''; - if ($object->isproduct()) $nblignefour=4; + if ($object->isProduct()) $nblignefour=4; else $nblignefour=4; $param="&id=".$object->id; diff --git a/htdocs/product/list.php b/htdocs/product/list.php index d54db832d7e..781db3fda3f 100644 --- a/htdocs/product/list.php +++ b/htdocs/product/list.php @@ -56,18 +56,28 @@ $fourn_id = GETPOST("fourn_id",'int'); $catid = GETPOST('catid','int'); $optioncss = GETPOST('optioncss','alpha'); +$limit = GETPOST("limit")?GETPOST("limit","int"):$conf->liste_limit; $sortfield = GETPOST("sortfield",'alpha'); $sortorder = GETPOST("sortorder",'alpha'); $page = GETPOST("page",'int'); if ($page == -1) { $page = 0; } -$offset = $conf->liste_limit * $page; +$offset = $liste_limit * $page; $pageprev = $page - 1; $pagenext = $page + 1; if (! $sortfield) $sortfield="p.ref"; if (! $sortorder) $sortorder="ASC"; -$limit = $conf->liste_limit; +$contextpage='productservicelist'; +if ($type === '1') { $contextpage='servicelist'; if ($search_type=='') $search_type='1'; } +if ($type === '0') { $contextpage='productlist'; if ($search_type=='') $search_type='0'; } +// 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('product'); +$search_array_options=$extrafields->getOptionalsFromPost($extralabels,'','search_'); // Get object canvas (By default, this is not defined, so standard usage of dolibarr) $canvas=GETPOST("canvas"); @@ -107,15 +117,18 @@ if (! empty($conf->barcode->enabled)) { * Actions */ +include DOL_DOCUMENT_ROOT.'/core/actions_changeselectedfields.inc.php'; + if (GETPOST("button_removefilter_x") || GETPOST("button_removefilter.x") || GETPOST("button_removefilter")) // Both test are required to be compatible with all browsers { - $sref=""; $sall=""; - $sbarcode=""; + $sref=""; $snom=""; + $sbarcode=""; $search_categ=0; $tosell=""; $tobuy=""; + $search_array_options=array(); } @@ -151,11 +164,18 @@ else $texte = $langs->trans("ProductsAndServices"); } - $sql = 'SELECT DISTINCT p.rowid, p.ref, p.label, p.barcode, p.price, p.price_ttc, p.price_base_type,'; - $sql.= ' p.fk_product_type, p.tms as datem,'; - $sql.= ' p.duration, p.tosell, p.tobuy, p.seuil_stock_alerte, p.desiredstock,'; + $sql = 'SELECT DISTINCT p.rowid, p.ref, p.label, p.barcode, p.price, p.price_ttc, p.price_base_type, p.entity,'; + $sql.= ' p.fk_product_type, p.duration, p.tosell, p.tobuy, p.seuil_stock_alerte, p.desiredstock,'; + $sql.= ' p.datec as date_creation, p.tms as date_update,'; $sql.= ' MIN(pfp.unitprice) as minsellprice'; + // Add fields from extrafields + foreach ($extrafields->attribute_label as $key => $val) $sql.=",ef.".$key.' as options_'.$key; + // Add fields from hooks + $parameters=array(); + $reshook=$hookmanager->executeHooks('printFieldListSelect',$parameters); // Note that $action and $object may have been modified by hook + $sql.=$hookmanager->resPrint; $sql.= ' FROM '.MAIN_DB_PREFIX.'product as p'; + if (is_array($extrafields->attribute_label) && count($extrafields->attribute_label)) $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product_extrafields as ef on (p.rowid = ef.fk_object)"; if (! empty($search_categ) || ! empty($catid)) $sql.= ' LEFT JOIN '.MAIN_DB_PREFIX."categorie_product as cp ON p.rowid = cp.fk_product"; // We'll need this table joined to the select in order to filter by categ $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product_fournisseur_price as pfp ON p.rowid = pfp.fk_product"; // multilang @@ -181,11 +201,33 @@ else if ($search_categ > 0) $sql.= " AND cp.fk_categorie = ".$db->escape($search_categ); if ($search_categ == -2) $sql.= " AND cp.fk_categorie IS NULL"; if ($fourn_id > 0) $sql.= " AND pfp.fk_soc = ".$fourn_id; + // Add where from extra fields + foreach ($search_array_options as $key => $val) + { + $crit=$val; + $tmpkey=preg_replace('/search_options_/','',$key); + $typ=$extrafields->attribute_type[$tmpkey]; + $mode=0; + if (in_array($typ, array('int'))) $mode=1; // Search on a numeric + if ($val && ( ($crit != '' && ! in_array($typ, array('select'))) || ! empty($crit))) + { + $sql .= natural_search('ef.'.$tmpkey, $crit, $mode); + } + } + // Add where from hooks + $parameters=array(); + $reshook=$hookmanager->executeHooks('printFieldListWhere',$parameters); // Note that $action and $object may have been modified by hook + $sql.=$hookmanager->resPrint; $sql.= " GROUP BY p.rowid, p.ref, p.label, p.barcode, p.price, p.price_ttc, p.price_base_type,"; - $sql.= " p.fk_product_type, p.tms,"; - $sql.= " p.duration, p.tosell, p.tobuy, p.seuil_stock_alerte, p.desiredstock"; + $sql.= " p.fk_product_type, p.duration, p.tosell, p.tobuy, p.seuil_stock_alerte, p.desiredstock,"; + $sql.= ' p.datec, p.tms'; + // Add fields from extrafields + foreach ($extrafields->attribute_label as $key => $val) $sql.=",ef.".$key; + // Add fields from hooks + $parameters=array(); + $reshook=$hookmanager->executeHooks('printFieldSelect',$parameters); // Note that $action and $object may have been modified by hook + $sql.=$hookmanager->resPrint; //if (GETPOST("toolowstock")) $sql.= " HAVING SUM(s.reel) < p.seuil_stock_alerte"; // Not used yet - $nbtotalofrecords = 0; if (empty($conf->global->MAIN_DISABLE_FULL_SCANLIST)) { @@ -230,12 +272,24 @@ else setEventMessage($langs->trans("ProductDeleted", GETPOST('delprod'))); } - $param="&sref=".$sref.($sbarcode?"&sbarcode=".$sbarcode:"")."&snom=".$snom."&sall=".$sall."&tosell=".$tosell."&tobuy=".$tobuy; - $param.=($fourn_id?"&fourn_id=".$fourn_id:""); - $param.=($search_categ?"&search_categ=".$search_categ:""); - $param.=isset($type)?"&type=".$type:""; + if ($sref) $param="&sref=".$sref; + if ($sbarcode) $param.=($sbarcode?"&sbarcode=".$sbarcode:""); + if ($snom) $param.="&snom=".$snom; + if ($sall) $param.="&sall=".$sall; + if ($tosell != '') $param.="&tosell=".$tosell; + if ($tobuy != '') $param.="&tobuy=".$tobuy; + if ($fourn_id) $param.=($fourn_id?"&fourn_id=".$fourn_id:""); + if ($seach_categ) $param.=($search_categ?"&search_categ=".$search_categ:""); + if ($type != '') $param.='&type='.urlencode($type); 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); + } + print_barre_liste($texte, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $num, $nbtotalofrecords,'title_products.png'); if (! empty($catid)) @@ -270,6 +324,7 @@ else print ''; if ($optioncss != '') print ''; print ''; + print ''; print ''; print ''; print ''; @@ -278,18 +333,11 @@ else 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); } // Filter on categories $moreforfilter=''; - $colspan=6; - if (! empty($conf->barcode->enabled)) $colspan++; - if (! empty($conf->service->enabled) && $type != 0) $colspan++; - if (empty($conf->global->PRODUIT_MULTIPRICES)) $colspan++; - if ($user->rights->fournisseur->lire) $colspan++; - if (! empty($conf->stock->enabled) && $user->rights->stock->lire && $type != 1) $colspan+=2; - if (! empty($conf->categorie->enabled)) { $moreforfilter.='
'; @@ -307,93 +355,162 @@ else print '
'; } - // Lignes des titres - print '
'; - print ''; - 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.label",$param,"","",$sortfield,$sortorder); - if (! empty($conf->barcode->enabled)) print_liste_field_titre($langs->trans("BarCode"), $_SERVER["PHP_SELF"], "p.barcode",$param,'','',$sortfield,$sortorder); - print_liste_field_titre($langs->trans("DateModification"), $_SERVER["PHP_SELF"], "p.tms",$param,"",'align="center"',$sortfield,$sortorder); - if (! empty($conf->service->enabled) && $type != 0) print_liste_field_titre($langs->trans("Duration"), $_SERVER["PHP_SELF"], "p.duration",$param,"",'align="center"',$sortfield,$sortorder); - if (empty($conf->global->PRODUIT_MULTIPRICES)) + if (empty($conf->global->PRODUIT_MULTIPRICES)) { - $titlefield=$langs->trans("SellingPrice"); + $titlesellprice=$langs->trans("SellingPrice"); if (! empty($conf->global->PRODUIT_CUSTOMER_PRICES)) { - $titlefield=$form->textwithpicto($langs->trans("SellingPrice"), $langs->trans("DefaultPriceRealPriceMayDependOnCustomer")); + $titlesellprice=$form->textwithpicto($langs->trans("SellingPrice"), $langs->trans("DefaultPriceRealPriceMayDependOnCustomer")); } - print_liste_field_titre($titlefield, $_SERVER["PHP_SELF"], "p.price",$param,"",'align="right"',$sortfield,$sortorder); } - if ($user->rights->fournisseur->lire) print_liste_field_titre($langs->trans("BuyingPriceMinShort"), '', '', '', '', 'align="right"'); - if (! empty($conf->stock->enabled) && $user->rights->stock->lire && $type != 1) print_liste_field_titre($langs->trans("DesiredStock"), '', '', '', '', 'align="right"'); - if (! empty($conf->stock->enabled) && $user->rights->stock->lire && $type != 1) print_liste_field_titre($langs->trans("PhysicalStock"), '', '', '', '', 'align="right"'); - print_liste_field_titre($langs->trans("Status").' ('.$langs->trans("Sell").')', $_SERVER["PHP_SELF"], "p.tosell",$param,"",'align="center"',$sortfield,$sortorder); - print_liste_field_titre($langs->trans("Status").' ('.$langs->trans("Buy").')', $_SERVER["PHP_SELF"], "p.tobuy",$param,"",'align="center"',$sortfield,$sortorder); - print_liste_field_titre('',$_SERVER["PHP_SELF"],"",'','','',$sortfield,$sortorder,'maxwidthsearch '); + + $arrayfields=array( + 'p.ref'=>array('label'=>$langs->trans("Ref"), 'checked'=>1), + 'p.label'=>array('label'=>$langs->trans("Label"), 'checked'=>1), + 'p.barcode'=>array('label'=>$langs->trans("Gencod"), 'checked'=>($contextpage != 'servicelist'), 'enabled'=>(! empty($conf->barcode->enabled))), + 'p.duration'=>array('label'=>$langs->trans("Duration"), 'checked'=>($contextpage != 'productlist'), 'enabled'=>(! empty($conf->service->enabled))), + 'p.sellprice'=>array('label'=>$titlesellprice, 'checked'=>1, 'enabled'=>empty($conf->global->PRODUIT_MULTIPRICES)), + 'p.minbuyprice'=>array('label'=>$langs->trans("BuyingPriceMinShort"), 'checked'=>1, 'enabled'=>(! empty($user->rights->fournisseur->lire))), + 'p.desiredstock'=>array('label'=>$langs->trans("DesiredStock"), 'checked'=>1, 'enabled'=>(! empty($conf->stock->enabled) && $user->rights->stock->lire && $contextpage != 'service')), + 'p.stock'=>array('label'=>$langs->trans("PhysicalStock"), 'checked'=>1, 'enabled'=>(! empty($conf->stock->enabled) && $user->rights->stock->lire && $contextpage != 'service')), + 'p.datec'=>array('label'=>$langs->trans("DateCreation"), 'checked'=>0, 'position'=>500), + 'p.tms'=>array('label'=>$langs->trans("DateModificationShort"), 'checked'=>0, 'position'=>500), + 'p.tosell'=>array('label'=>$langs->trans("Status").' ('.$langs->trans("Sell").')', 'checked'=>1, 'position'=>1000), + 'p.tobuy'=>array('label'=>$langs->trans("Status").' ('.$langs->trans("Purchases").')', '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]); + } + } + $varpage=empty($contextpage)?$_SERVER["PHP_SELF"]:$contextpage; + $selectedfields=$form->multiSelectArrayWithCheckbox('selectedfields', $arrayfields, $varpage); // This also change content of $arrayfields + print '
'; + print ''; + if (! empty($arrayfields['p.ref']['checked'])) print_liste_field_titre($arrayfields['p.ref']['label'], $_SERVER["PHP_SELF"],"p.ref","",$param,"",$sortfield,$sortorder); + if (! empty($arrayfields['p.label']['checked'])) print_liste_field_titre($arrayfields['p.label']['label'], $_SERVER["PHP_SELF"],"p.label","",$param,"",$sortfield,$sortorder); + if (! empty($arrayfields['p.barcode']['checked'])) print_liste_field_titre($arrayfields['p.barcode']['label'], $_SERVER["PHP_SELF"],"p.barcode","",$param,"",$sortfield,$sortorder); + if (! empty($arrayfields['p.duration']['checked'])) print_liste_field_titre($arrayfields['p.duration']['label'], $_SERVER["PHP_SELF"],"p.duration","",$param,"",$sortfield,$sortorder); + if (! empty($arrayfields['p.sellprice']['checked'])) print_liste_field_titre($arrayfields['p.sellprice']['label'], $_SERVER["PHP_SELF"],"","",$param,'align="right"',$sortfield,$sortorder); + if (! empty($arrayfields['p.minbuyprice']['checked'])) print_liste_field_titre($arrayfields['p.minbuyprice']['label'], $_SERVER["PHP_SELF"],"","",$param,'align="right"',$sortfield,$sortorder); + if (! empty($arrayfields['p.desiredstock']['checked'])) print_liste_field_titre($arrayfields['p.desiredstock']['label'], $_SERVER["PHP_SELF"],"p.desirestock","",$param,'align="right"',$sortfield,$sortorder); + if (! empty($arrayfields['p.stock']['checked'])) print_liste_field_titre($arrayfields['p.stock']['label'], $_SERVER["PHP_SELF"],"p.stock","",$param,'align="right"',$sortfield,$sortorder); + 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($arrayfields['p.datec']['label'],$_SERVER["PHP_SELF"],"p.datec","",$param,'align="center" class="nowrap"',$sortfield,$sortorder); + if (! empty($arrayfields['p.tms']['checked'])) print_liste_field_titre($arrayfields['p.tms']['label'],$_SERVER["PHP_SELF"],"p.tms","",$param,'align="center" class="nowrap"',$sortfield,$sortorder); + if (! empty($arrayfields['p.tosell']['checked'])) print_liste_field_titre($langs->trans("Status").' ('.$langs->trans("Sell").')',$_SERVER["PHP_SELF"],"p.tosell","",$param,'align="center"',$sortfield,$sortorder); + if (! empty($arrayfields['p.tobuy']['checked'])) print_liste_field_titre($langs->trans("Status").' ('.$langs->trans("Buy").')',$_SERVER["PHP_SELF"],"p.tobuy","",$param,'align="center"',$sortfield,$sortorder); + print_liste_field_titre($selectedfields, $_SERVER["PHP_SELF"],"",'','','align="right"',$sortfield,$sortorder,'maxwidthsearch '); print "\n"; - // Lignes des champs de filtre + // Lines with input filters print ''; - print ''; - print ''; + if (! empty($arrayfields['p.ref']['checked'])) + { + print ''; + } + if (! empty($arrayfields['p.label']['checked'])) + { + print ''; + } // Barcode - if (! empty($conf->barcode->enabled)) + if (! empty($arrayfields['p.barcode']['checked'])) { print ''; } - // Date modification - print ''; - // Duration - if (! empty($conf->service->enabled) && $type != 0) + if (! empty($arrayfields['p.duration']['checked'])) { print ''; } - // Sell price - if (empty($conf->global->PRODUIT_MULTIPRICES)) + if (! empty($arrayfields['p.sellprice']['checked'])) { print ''; } - // Minimum buying Price - if ($user->rights->fournisseur->lire) { - print ''; - } - - // Stock - if (! empty($conf->stock->enabled) && $user->rights->stock->lire && $type != 1) + if (! empty($arrayfields['p.minbuyprice']['checked'])) { print ''; - //desiredstock + } + // Desired stock + if (! empty($arrayfields['p.desiredstock']['checked'])) + { print ''; } - - print ''; - - print ''; - + // Stock + if (! empty($arrayfields['p.stock']['checked'])) + { + print ''; + } + // 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 ''; + } + } + // 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; + // Date creation + if (! empty($arrayfields['p.datec']['checked'])) + { + print ''; + } + // Date modification + if (! empty($arrayfields['p.tms']['checked'])) + { + print ''; + } + if (! empty($arrayfields['p.tosell']['checked'])) + { + print ''; + } + if (! empty($arrayfields['p.tobuy']['checked'])) + { + print ''; + } print ''; - - // Ref - print '\n"; + $product_static->status_buy = $objp->tobuy; + $product_static->status = $objp->tosell; + $product_static->entity = $objp->entity; + $var=!$var; + print ''; + + // Ref + if (! empty($arrayfields['p.ref']['checked'])) + { + print '\n"; + } + // Label - print ''; - + if (! empty($arrayfields['p.label']['checked'])) + { + print ''; + } + // Barcode - if (! empty($conf->barcode->enabled)) - { + if (! empty($arrayfields['p.barcode']['checked'])) + { print ''; } - // Modification Date - print '\n"; - // Duration - if (! empty($conf->service->enabled) && $type != 0) + if (! empty($arrayfields['p.duration']['checked'])) { print ''; } - // Show stock - if (! empty($conf->stock->enabled) && $user->rights->stock->lire && $type != 1) + if (! empty($conf->stock->enabled) && $user->rights->stock->lire && $type != 1) // To optimize call of load_stock { if ($objp->fk_product_type != 1) { $product_static->id = $objp->rowid; $product_static->load_stock(); - print ''; - print ''; - } - else - { - print ''; - print ''; } } - - $product_static->status_buy = $objp->tobuy; - $product_static->status = $objp->tosell; + + // Desired stock + if (! empty($arrayfields['p.desiredstock']['checked'])) + { + print ''; + print ''; + } + + // 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 'getAlignFlag($key); + if ($align) print ' align="'.$align.'"'; + print '>'; + $tmpkey='options_'.$key; + print $extrafields->showOutputField($key, $objp->$tmpkey, '', 1); + print ''; + } + } + } + // 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 ''; + } + // Date modification + if (! empty($arrayfields['p.tms']['checked'])) + { + print ''; + } + // Status (to sell) - print ''; - + if (! empty($arrayfields['p.tosell']['checked'])) + { + print ''; + } // Status (to buy) - print ''; - + if (! empty($arrayfields['p.tobuy']['checked'])) + { + print ''; + } + // Action print ''; print "\n"; $i++; } - $param="&sref=".$sref.($sbarcode?"&sbarcode=".$sbarcode:"")."&snom=".$snom."&sall=".$sall."&tosell=".$tosell."&tobuy=".$tobuy; - $param.=($fourn_id?"&fourn_id=".$fourn_id:""); - $param.=($search_categ?"&search_categ=".$search_categ:""); - $param.=isset($type)?"&type=".$type:""; print_barre_liste('', $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $num, $nbtotalofrecords, '', '', '', 'paginationatbottom'); $db->free($resql); diff --git a/htdocs/product/popuprop.php b/htdocs/product/popuprop.php index c8da665dd98..aad606627cb 100644 --- a/htdocs/product/popuprop.php +++ b/htdocs/product/popuprop.php @@ -38,18 +38,16 @@ $type=GETPOST("type","int"); if (! empty($user->societe_id)) $socid=$user->societe_id; $result=restrictedArea($user,'produit|service'); +$limit = GETPOST("limit")?GETPOST("limit","int"):$conf->liste_limit; $sortfield = GETPOST("sortfield",'alpha'); $sortorder = GETPOST("sortorder",'alpha'); $page = GETPOST("page",'int'); -if ($page < 0) $page = 0; +if ($page == -1) { $page = 0; } if (! $sortfield) $sortfield="c"; if (! $sortorder) $sortorder="DESC"; - -$conf->liste_limit = 3; - -if ($page == -1) $page = 0; -$limit = $conf->liste_limit; $offset = $limit * $page ; +$pageprev = $page - 1; +$pagenext = $page + 1; $staticproduct=new Product($db); @@ -69,7 +67,13 @@ if ($type == '0') else if ($type == '1') { $helpurl='EN:Module_Services_En|FR:Module_Services|ES:Módulo_Servicios'; - $title=$langs->trans("StatisticsOfServices"); + //$title=$langs->trans("StatisticsOfServices"); + $title=$langs->trans("Statistics"); +} +else +{ + $helpurl='EN:Module_Services_En|FR:Module_Services|ES:Módulo_Servicios'; + //$title=$langs->trans("StatisticsOfProductsOrServices"); $title=$langs->trans("Statistics"); } @@ -80,24 +84,30 @@ print load_fiche_titre($title, $mesg,'title_products.png'); $param = ''; $title = $langs->trans("ListProductServiceByPopularity"); -if ($type != '') { - $param = '&type='.$type; - - if ($type == 1) { - $title = $langs->trans("ListServiceByPopularity"); - } else { - $title = $langs->trans("ListProductByPopularity"); - } +if ((string) $type == '1') { + $title = $langs->trans("ListServiceByPopularity"); } +if ((string) $type == '0') { + $title = $langs->trans("ListProductByPopularity"); +} + +if ($type != '') $param .= '&type='.$type; + $h=0; $head = array(); -$head[$h][0] = $_SERVER['PHP_SELF']; -$head[$h][1] = $title; -$head[$h][2] = 'product'; + +$head[$h][0] = DOL_URL_ROOT.'/product/stats/card.php?id=all'; +$head[$h][1] = $langs->trans("Chart"); +$head[$h][2] = 'chart'; $h++; -dol_fiche_head($head,'product',$langs->trans("Statistics")); +$head[$h][0] = $_SERVER['PHP_SELF']; +$head[$h][1] = $title; +$head[$h][2] = 'popularityprop'; +$h++; + +dol_fiche_head($head,'popularityprop',$langs->trans("Statistics")); @@ -127,15 +137,15 @@ if ($result) $num = $db->num_rows($result); $i = 0; - print_barre_liste($title, $page, $_SERVER["PHP_SELF"],$param,$sortfield,$sortorder,"",$num, $totalnboflines, ''); + print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, "", $num, $totalnboflines, ''); print '
'; - print ''; - print ''; - print ''; - print ''; + print ''; + print ''; + print ''; + print ''; print ''; print ''; - print ' '; - print ''; print ' '; print ''; print ''; - print ' '; - print ''; print ' '; print ''; print ' '; print ''; - print $form->selectarray('tosell', array('0'=>$langs->trans('ProductStatusNotOnSellShort'),'1'=>$langs->trans('ProductStatusOnSellShort')),$tosell,1); - print ''; - print $form->selectarray('tobuy', array('0'=>$langs->trans('ProductStatusNotOnBuyShort'),'1'=>$langs->trans('ProductStatusOnBuyShort')),$tobuy,1); - print ''; + print ' '; + print ''; + print ''; + print ''; + print $form->selectarray('tosell', array('0'=>$langs->trans('ProductStatusNotOnSellShort'),'1'=>$langs->trans('ProductStatusOnSellShort')),$tosell,1); + print ''; + print $form->selectarray('tobuy', array('0'=>$langs->trans('ProductStatusNotOnBuyShort'),'1'=>$langs->trans('ProductStatusOnBuyShort')),$tobuy,1); + print ''; print ''; print ''; @@ -427,32 +544,39 @@ else } } - $var=!$var; - print '
'; $product_static->id = $objp->rowid; $product_static->ref = $objp->ref; $product_static->label = $objp->label; $product_static->type = $objp->fk_product_type; - print $product_static->getNomUrl(1,'',24); - print "
'; + print $product_static->getNomUrl(1,'',24); + print "'.dol_trunc($objp->label,40).''.dol_trunc($objp->label,40).''.$objp->barcode.''.dol_print_date($db->jdate($objp->datem),'day')."'; if (preg_match('/([0-9]+)[a-z]/i',$objp->duration)) @@ -468,7 +592,7 @@ else } // Sell price - if (empty($conf->global->PRODUIT_MULTIPRICES)) + if (! empty($arrayfields['p.sellprice']['checked'])) { print ''; if ($objp->tosell) @@ -480,7 +604,7 @@ else } // Better buy price - if ($user->rights->fournisseur->lire) + if (! empty($arrayfields['p.minbuyprice']['checked'])) { print ''; if ($objp->tobuy && $objp->minsellprice != '') @@ -502,62 +626,102 @@ else print ''; - print $objp->desiredstock; - print ''; - if ($product_static->stock_reel < $objp->seuil_stock_alerte) print img_warning($langs->trans("StockTooLow")).' '; - print $product_static->stock_reel; - print ''; - print ' '; - print ''; - print ' '; - print ''; + if ($objp->fk_product_type != 1) + { + print $objp->desiredstock; + } + } + // Stock + if (! empty($arrayfields['p.stock']['checked'])) + { + print ''; + if ($objp->fk_product_type != 1) + { + if ($product_static->stock_reel < $objp->seuil_stock_alerte) print img_warning($langs->trans("StockTooLow")).' '; + print $product_static->stock_reel; + } + print ''; + print dol_print_date($objp->date_creation, 'dayhour'); + print ''; + print dol_print_date($objp->date_update, 'dayhour'); + print ''; - if (! empty($conf->use_javascript_ajax) && $user->rights->produit->creer && ! empty($conf->global->MAIN_DIRECT_STATUS_UPDATE)) { - print ajax_object_onoff($product_static, 'status', 'tosell', 'ProductStatusOnSell', 'ProductStatusNotOnSell'); - } else { - print $product_static->LibStatut($objp->tosell,5,0); - } - print ''; + if (! empty($conf->use_javascript_ajax) && $user->rights->produit->creer && ! empty($conf->global->MAIN_DIRECT_STATUS_UPDATE)) { + print ajax_object_onoff($product_static, 'status', 'tosell', 'ProductStatusOnSell', 'ProductStatusNotOnSell'); + } else { + print $product_static->LibStatut($objp->tosell,5,0); + } + print ''; - if (! empty($conf->use_javascript_ajax) && $user->rights->produit->creer && ! empty($conf->global->MAIN_DIRECT_STATUS_UPDATE)) { - print ajax_object_onoff($product_static, 'status_buy', 'tobuy', 'ProductStatusOnBuy', 'ProductStatusNotOnBuy'); - } else { - print $product_static->LibStatut($objp->tobuy,5,1); - } - print ''; + if (! empty($conf->use_javascript_ajax) && $user->rights->produit->creer && ! empty($conf->global->MAIN_DIRECT_STATUS_UPDATE)) { + print ajax_object_onoff($product_static, 'status_buy', 'tobuy', 'ProductStatusOnBuy', 'ProductStatusNotOnBuy'); + } else { + print $product_static->LibStatut($objp->tobuy,5,1); + } + print ' 
'; print ""; - print_liste_field_titre($langs->trans('Ref'), $_SERVER["PHP_SELF"], 'p.ref', '', '', '', $sortfield, $sortorder); - print_liste_field_titre($langs->trans('Type'), $_SERVER["PHP_SELF"], 'p.type', '', '', '', $sortfield, $sortorder); - print_liste_field_titre($langs->trans('Label'), $_SERVER["PHP_SELF"], 'p.label', '', '', '', $sortfield, $sortorder); - print_liste_field_titre($langs->trans('NbOfProposals'), $_SERVER["PHP_SELF"], 'c', '', '', 'align="right"', $sortfield, $sortorder); + print_liste_field_titre($langs->trans('Ref'), $_SERVER["PHP_SELF"], 'p.ref', '', $param, '', $sortfield, $sortorder); + print_liste_field_titre($langs->trans('Type'), $_SERVER["PHP_SELF"], 'p.fk_product_type', '', $param, '', $sortfield, $sortorder); + print_liste_field_titre($langs->trans('Label'), $_SERVER["PHP_SELF"], 'p.label', '', $param, '', $sortfield, $sortorder); + print_liste_field_titre($langs->trans('NbOfProposals'), $_SERVER["PHP_SELF"], 'c', '', $param, 'align="right"', $sortfield, $sortorder); print "\n"; diff --git a/htdocs/product/price.php b/htdocs/product/price.php index ac611faf5c3..497f676ae8c 100644 --- a/htdocs/product/price.php +++ b/htdocs/product/price.php @@ -113,92 +113,119 @@ if (empty($reshook)) $action=''; } - if (($action == 'update_price') && !$cancel && ($user->rights->produit->creer || $user->rights->service->creer)) + if (($action == 'update_price') && !$cancel && $object->getRights()->creer) { + $error = 0; + $pricestoupdate = array(); + + $psq = GETPOST('psqflag'); + $psq = empty($newpsq) ? 0 : $newpsq; $maxpricesupplier = $object->min_recommended_price(); - $object->fk_price_expression = empty($eid) ? 0 : $eid; //0 discards expression - // MultiPrix - if (! empty($conf->global->PRODUIT_MULTIPRICES)) - { - $newprice = ''; - $newprice_min = ''; - $newpricebase = ''; - $newvat = ''; + if (!empty($conf->dynamicprices->enabled)) { + $object->fk_price_expression = empty($eid) ? 0 : $eid; //0 discards expression - for ($i = 1; $i <= $conf->global->PRODUIT_MULTIPRICES_LIMIT; $i ++) - { - if (isset($_POST ["price_" . $i])) - { - $level = $i; - $newprice = price2num($_POST ["price_" . $i], 'MU'); - $newprice_min = price2num($_POST ["price_min_" . $i], 'MU'); - $newpricebase = $_POST ["multiprices_base_type_" . $i]; - $newnpr = (preg_match('/\*/', $_POST ["tva_tx_" . $i]) ? 1 : 0); - $newvat = str_replace('*', '', $_POST ["tva_tx_" . $i]); - $newpsq = GETPOST('psqflag'); - $newpsq = empty($newpsq) ? 0 : $newpsq; - break; // We found submited price - } - } - } - else - { - $level = 0; - $newprice = price2num($_POST ["price"], 'MU'); - $newprice_min = price2num($_POST ["price_min"], 'MU'); - $newpricebase = $_POST ["price_base_type"]; - $newnpr = (preg_match('/\*/', $_POST ["tva_tx"]) ? 1 : 0); - $newvat = str_replace('*', '', $_POST ["tva_tx"]); - $newpsq = GETPOST('psqflag'); - $newpsq = empty($newpsq) ? 0 : $newpsq; - } - - if (! empty($conf->global->PRODUCT_MINIMUM_RECOMMENDED_PRICE) && $newprice_min < $maxpricesupplier) - { - setEventMessage($langs->trans("MinimumPriceLimit",price($maxpricesupplier,0,'',1,-1,-1,'auto')),'errors'); - $error++; - $action='edit_price'; - } - - if ($newprice < $newprice_min && ! empty($object->fk_price_expression)) - { - $newprice = $newprice_min; //Set price same as min, the user will not see the - } - - if ($object->updatePrice($newprice, $newpricebase, $user, $newvat, $newprice_min, $level, $newnpr, $newpsq) > 0) - { if ($object->fk_price_expression != 0) { //Check the expression validity by parsing it $priceparser = new PriceParser($db); - $price_result = $priceparser->parseProduct($object); - if ($price_result < 0) { //Expression is not valid - $error++; - $action='edit_price'; + + if ($priceparser->parseProduct($object) < 0) { + $error ++; setEventMessage($priceparser->translatedError(), 'errors'); } } - if (empty($error) && ! empty($conf->dynamicprices->enabled)) - { - $ret=$object->setPriceExpression($object->fk_price_expression); - if ($ret < 0) - { - $error++; - $action='edit_price'; - setEventMessage($object->error, 'errors'); + } + + // Multiprices + if (!$error && !empty($conf->global->PRODUIT_MULTIPRICES)) { + + $newprice = GETPOST('price', 'array'); + $newprice_min = GETPOST('price_min', 'array'); + $newpricebase = GETPOST('multiprices_base_type', 'array'); + $newvattx = GETPOST('tva_tx', 'array'); + + //Shall we generate prices using price rules? + $object->price_autogen = GETPOST('usePriceRules') == 'on' ? true : false; + + for ($i = 1; $i <= $conf->global->PRODUIT_MULTIPRICES_LIMIT; $i ++) { + + if (!isset($newprice[$i])) { + continue; + } + + $newnpr = (preg_match('/\*/', $newvattx[$i] ? 1 : 0)); + $newvat = str_replace('*', '', $newvattx[$i]); + + $pricestoupdate[$i] = array( + 'price' => $newprice[$i], + 'price_min' => $newprice_min[$i], + 'price_base_type' => $newpricebase[$i], + 'vat_tx' => $newvat, + 'npr' => $newnpr + ); + + //If autogeneration is enabled, then we only set the first level + if ($object->price_autogen) { + break; } } - if (empty($error)) - { - $action = ''; - setEventMessage($langs->trans("RecordSaved")); + } else { + $pricestoupdate[0] = array( + 'price' => $_POST ["price"], + 'price_min' => $_POST ["price_min"], + 'price_base_type' => $_POST ["price_base_type"], + 'vat_tx' => str_replace('*', '', $_POST ["tva_tx"]), + 'npr' => preg_match('/\*/', $_POST ["tva_tx"]) ? 1 : 0 + ); + } + + if (!$error && $object->update($object->id, $user) < 1) { + $error++; + setEventMessage($object->error, 'errors'); + $action = 'edit_price'; + } + + if (!$error) { + $db->begin(); + + foreach ($pricestoupdate as $key => $val) { + + $newprice = $val['price']; + + if ($val['price'] < $val['price_min'] && !empty($object->fk_price_expression)) { + $newprice = $val['price_min']; //Set price same as min, the user will not see the + } + + $newprice = price2num($newprice, 'MU'); + $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'); + $error ++; + break; + } + + $res = $object->updatePrice($newprice, $val['price_base_type'], $user, $val['vat_tx'], $newprice_min, $key, $val['npr'], $psq); + + if ($res < 0) { + $error ++; + setEventMessage($object->error, 'errors'); + break; + } } + } + + if (empty($error)) { + $action = ''; + setEventMessage($langs->trans("RecordSaved")); + $db->commit(); } else { $action = 'edit_price'; - setEventMessage($object->error, 'errors'); + $db->rollback(); } } + if ($action == 'delete' && $user->rights->produit->supprimer) { $result = $object->log_price_delete($user, $_GET ["lineid"]); @@ -404,34 +431,13 @@ $titre = $langs->trans("CardProduct" . $object->type); $picto = ($object->type == Product::TYPE_SERVICE ? 'service' : 'product'); dol_fiche_head($head, 'price', $titre, 0, $picto); -print '
'; +dol_banner_tab($object, 'ref', '', ($user->societe_id?0:1), 'ref'); -// Ref -print ''; -print ''; -print ''; -// Label -print ''; +print '
'; -$isphoto = $object->is_photo_available($conf->product->multidir_output [$object->entity]); - -$nblignes = 5; -if ($isphoto) { - // Photo - print '
'; -} - -print ''; - -// Status (to sell) -print ''; +print '
'; +print '
' . $langs->trans("Ref") . ''; -print $form->showrefnav($object, 'ref', '', 1, 'ref'); -print '
' . $langs->trans("Label") . '' . $object->label . ''; - print $object->show_photos($conf->product->multidir_output [$object->entity], 1, 1, 0, 0, 0, 80); - print '
' . $langs->trans("Status") . ' (' . $langs->trans("Sell") . ')'; -print $object->getLibStatut(2, 0); -print '
'; // MultiPrix if (! empty($conf->global->PRODUIT_MULTIPRICES)) @@ -444,15 +450,15 @@ if (! empty($conf->global->PRODUIT_MULTIPRICES)) $soc->fetch($socid); // Selling price - print '' . $langs->trans("SellingPrice") . ''; + print ''; print ''; if (! empty($conf->global->PRODUIT_MULTIPRICES_USE_VAT_PER_LEVEL)) // using this option is a bug. kept for backward compatibility { // TVA - print ''; + print ''; } else { @@ -485,12 +491,12 @@ if (! empty($conf->global->PRODUIT_MULTIPRICES)) if (! empty($conf->global->PRODUIT_MULTIPRICES_USE_VAT_PER_LEVEL)) // using this option is a bug. kept for backward compatibility { // We show only vat for level 1 - print ''; + print ''; } else { // TVA - print ''; + print ''; } print ''; @@ -505,28 +511,28 @@ if (! empty($conf->global->PRODUIT_MULTIPRICES)) if (! empty($conf->global->$keyforlabel)) print ' - '.$langs->trans($conf->global->$keyforlabel); print ''; - if ($object->multiprices_base_type ["$i"] == 'TTC') { - print '';; + if ($object->multiprices_base_type[$i]) { + print ' '.$langs->trans($object->multiprices_base_type [$i]).''; } else { - print ' '.$langs->trans($object->price_base_type).'';; + print ' '.$langs->trans($object->price_base_type).''; } // Prix min print ''; @@ -607,7 +613,7 @@ if (! empty($conf->global->PRODUIT_MULTIPRICES)) else { // TVA - print ''; + print ''; // Price print '
' . $langs->trans("SellingPrice") . ''; - if ($object->multiprices_base_type["$soc->price_level"] == 'TTC') { - print price($object->multiprices_ttc["$soc->price_level"]); + if ($object->multiprices_base_type[$soc->price_level] == 'TTC') { + print price($object->multiprices_ttc[$soc->price_level]); } else { - print price($object->multiprices["$soc->price_level"]); + print price($object->multiprices[$soc->price_level]); } - if ($object->multiprices_base_type["$soc->price_level"]) { - print ' ' . $langs->trans($object->multiprices_base_type["$soc->price_level"]); + if ($object->multiprices_base_type[$soc->price_level]) { + print ' ' . $langs->trans($object->multiprices_base_type[$soc->price_level]); } else { print ' ' . $langs->trans($object->price_base_type); } @@ -460,18 +466,18 @@ if (! empty($conf->global->PRODUIT_MULTIPRICES)) // Price min print '
' . $langs->trans("MinPrice") . ''; - if ($object->multiprices_base_type["$soc->price_level"] == 'TTC') + if ($object->multiprices_base_type[$soc->price_level] == 'TTC') { - print price($object->multiprices_min_ttc["$soc->price_level"]) . ' ' . $langs->trans($object->multiprices_base_type["$soc->price_level"]); + print price($object->multiprices_min_ttc[$soc->price_level]) . ' ' . $langs->trans($object->multiprices_base_type[$soc->price_level]); } else { - print price($object->multiprices_min["$soc->price_level"]) . ' ' . $langs->trans(empty($object->multiprices_base_type["$soc->price_level"])?'HT':$object->multiprices_base_type["$soc->price_level"]); + print price($object->multiprices_min[$soc->price_level]) . ' ' . $langs->trans(empty($object->multiprices_base_type[$soc->price_level])?'HT':$object->multiprices_base_type[$soc->price_level]); } print '
' . $langs->trans("VATRate") . '' . vatrate($object->multiprices_tva_tx["$soc->price_level"], true) . '
' . $langs->trans("VATRate") . '' . vatrate($object->multiprices_tva_tx[$soc->price_level], true) . '
' . $langs->trans("VATRate") . '' . vatrate($object->multiprices_tva_tx [1], true) . '
' . $langs->trans("VATRate") . '' . vatrate($object->multiprices_tva_tx [1], true) . '
' . $langs->trans("VATRate") . '' . vatrate($object->tva_tx . ($object->tva_npr ? '*' : ''), true) . '
' . $langs->trans("VATRate") . '' . vatrate($object->tva_tx . ($object->tva_npr ? '*' : ''), true) . '
'.$langs->trans("PriceLevel").''.$langs->trans("SellingPrice").''.$langs->trans("MinPrice").'
' . price($object->multiprices_ttc["$i"]); + if ($object->multiprices_base_type [$i] == 'TTC') { + print '' . price($object->multiprices_ttc[$i]); } else { - print '' . price($object->multiprices["$i"]); + print '' . price($object->multiprices[$i]); } - if ($object->multiprices_base_type["$i"]) { - print ' '.$langs->trans($object->multiprices_base_type ["$i"]).''; - if (empty($object->multiprices_base_type["$i"])) $object->multiprices_base_type["$i"]="HT"; - if ($object->multiprices_base_type["$i"] == 'TTC') + if (empty($object->multiprices_base_type[$i])) $object->multiprices_base_type[$i]="HT"; + if ($object->multiprices_base_type[$i] == 'TTC') { - print price($object->multiprices_min_ttc["$i"]) . ' ' . $langs->trans($object->multiprices_base_type["$i"]); + print price($object->multiprices_min_ttc[$i]) . ' ' . $langs->trans($object->multiprices_base_type[$i]); } else { - print price($object->multiprices_min["$i"]) . ' ' . $langs->trans($object->multiprices_base_type["$i"]); + print price($object->multiprices_min[$i]) . ' ' . $langs->trans($object->multiprices_base_type[$i]); } print '
' . $langs->trans("VATRate") . '' . vatrate($object->tva_tx . ($object->tva_npr ? '*' : ''), true) . '
' . $langs->trans("VATRate") . '' . vatrate($object->tva_tx . ($object->tva_npr ? '*' : ''), true) . '
' . $langs->trans("SellingPrice") . ''; @@ -705,6 +711,10 @@ else print "
\n"; +print '
'; +print '
'; + + dol_fiche_end(); @@ -718,28 +728,30 @@ if (! $action || $action == 'delete' || $action == 'showlog_customer_price' || $ { print "\n" . '
' . "\n"; - if (empty($conf->global->PRODUIT_MULTIPRICES)) + if (empty($conf->global->PRODUIT_MULTIPRICES)) // For everyone, except multiprices { if ($user->rights->produit->creer || $user->rights->service->creer) { print ''; } } - else + + if (! empty($conf->global->PRODUIT_CUSTOMER_PRICES)) + { + if ($user->rights->produit->creer || $user->rights->service->creer) { + print ''; + } + } + + if (! empty($conf->global->PRODUIT_MULTIPRICES)) { if ($user->rights->produit->creer || $user->rights->service->creer) { print ''; } if ($user->rights->produit->creer || $user->rights->service->creer) { - print ''; + print ''; } } - if (! empty($conf->global->PRODUIT_CUSTOMER_PRICES)) - { - if ($user->rights->produit->creer || $user->rights->service->creer) { - print ''; - } - } print "\n
\n"; } @@ -889,26 +901,55 @@ if ($action == 'edit_price' && ($user->rights->produit->creer || $user->rights-> { dol_fiche_head(''); - for ($i = 1; $i <= $conf->global->PRODUIT_MULTIPRICES_LIMIT; $i ++) + + ?> + + id . '" method="POST">'; + + for($i = 1; $i <= $conf->global->PRODUIT_MULTIPRICES_LIMIT; $i ++) { - if ($i > 1) print '
'; - - print ''; + + if ($i > 1) print '
'; + elseif (! empty($conf->global->PRODUIT_MULTIPRICES) && ! empty($conf->global->PRODUIT_MULTIPRICES_ALLOW_AUTOCALC_PRICELEVEL)) { + print $langs->trans('UseMultipriceRules'). ' price_autogen ? 'checked' : '').'>

'; + } print ''; print ''; print ''; if (empty($conf->global->PRODUIT_MULTIPRICES_USE_VAT_PER_LEVEL)) { - print ''; + print ''; } print ''; // VAT - if (! empty($conf->global->PRODUIT_MULTIPRICES_USE_VAT_PER_LEVEL)) + if (! empty($conf->global->PRODUIT_MULTIPRICES_USE_VAT_PER_LEVEL)) // This option is kept for backward compatibility but has no sense { print ''; } @@ -917,22 +958,22 @@ if ($action == 'edit_price' && ($user->rights->produit->creer || $user->rights-> $text = $langs->trans('SellingPrice') . ' ' . $i; print $form->textwithpicto($text, $langs->trans("PrecisionUnitIsLimitedToXDecimals", $conf->global->MAIN_MAX_DECIMALS_UNIT), 1, 1); print ''; // Min price print ''; - print ''; - print '
' . $langs->trans("VATRate") . ''; - print $form->load_tva("tva_tx_" . $i, $object->multiprices_tva_tx["$i"], $mysoc, '', $object->id); + print $form->load_tva("tva_tx[" . $i.']', $object->multiprices_tva_tx[$i], $mysoc, '', $object->id); print '
'; - if ($object->multiprices_base_type ["$i"] == 'TTC') { - print ''; + if ($object->multiprices_base_type [$i] == 'TTC') { + print ''; } else { - print ''; + print ''; } - print $form->selectPriceBaseType($object->multiprices_base_type ["$i"], "multiprices_base_type_" . $i); + print ' '.$form->selectPriceBaseType($object->multiprices_base_type [$i], "multiprices_base_type[" . $i."]"); print '
'; $text = $langs->trans('MinPrice') . ' ' . $i; print $form->textwithpicto($text, $langs->trans("PrecisionUnitIsLimitedToXDecimals", $conf->global->MAIN_MAX_DECIMALS_UNIT), 1, 1); - if ($object->multiprices_base_type ["$i"] == 'TTC') { - print ''; + if ($object->multiprices_base_type [$i] == 'TTC') { + print ''; } else { - print ''; + print ''; } if ( !empty($conf->global->PRODUCT_MINIMUM_RECOMMENDED_PRICE)) { @@ -940,15 +981,16 @@ if ($action == 'edit_price' && ($user->rights->produit->creer || $user->rights-> } print '
'; - print '   '; - print '
'; - print ''; } - + + print '
'; + print ''; + print '   '; + print '
'; + print ''; + dol_fiche_end(); } } diff --git a/htdocs/product/reassort.php b/htdocs/product/reassort.php index be5be86a8b8..218b7dba066 100644 --- a/htdocs/product/reassort.php +++ b/htdocs/product/reassort.php @@ -101,7 +101,7 @@ $htmlother=new FormOther($db); $title=$langs->trans("ProductsAndServices"); -$sql = 'SELECT p.rowid, p.ref, p.label, p.barcode, p.price, p.price_ttc, p.price_base_type,'; +$sql = 'SELECT p.rowid, p.ref, p.label, p.barcode, p.price, p.price_ttc, p.price_base_type,p.entity,'; $sql.= ' p.fk_product_type, p.tms as datem,'; $sql.= ' p.duration, p.tosell as statut, p.tobuy, p.seuil_stock_alerte, p.desiredstock,'; $sql.= ' SUM(s.reel) as stock_physique'; @@ -315,6 +315,7 @@ if ($resql) $product_static->id=$objp->rowid; $product_static->label = $objp->label; $product_static->type=$objp->fk_product_type; + $product_static->entity=$objp->entity; print $product_static->getNomUrl(1,'',16); //if ($objp->stock_theorique < $objp->seuil_stock_alerte) print ' '.img_warning($langs->trans("StockTooLow")); print ''; diff --git a/htdocs/product/reassortlot.php b/htdocs/product/reassortlot.php index 41482c4e796..7788f289609 100644 --- a/htdocs/product/reassortlot.php +++ b/htdocs/product/reassortlot.php @@ -104,7 +104,7 @@ $htmlother=new FormOther($db); $title=$langs->trans("ProductsAndServices"); -$sql = 'SELECT p.rowid, p.ref, p.label, p.barcode, p.price, p.price_ttc, p.price_base_type,'; +$sql = 'SELECT p.rowid, p.ref, p.label, p.barcode, p.price, p.price_ttc, p.price_base_type,p.entity,'; $sql.= ' p.fk_product_type, p.tms as datem,'; $sql.= ' p.duration, p.tosell as statut, p.tobuy, p.seuil_stock_alerte, p.desiredstock,'; $sql.= ' s.fk_entrepot,'; @@ -329,6 +329,7 @@ if ($resql) $product_static->id=$objp->rowid; $product_static->label = $objp->label; $product_static->type=$objp->fk_product_type; + $product_static->entity=$objp->entity; print $product_static->getNomUrl(1,'',16); //if ($objp->stock_theorique < $objp->seuil_stock_alerte) print ' '.img_warning($langs->trans("StockTooLow")); print ''; @@ -349,7 +350,7 @@ if ($resql) // Warehouse print ''; - $warehousetmp->fetch($obj->fk_entrepot); + $warehousetmp->fetch($objp->fk_entrepot); print $warehousetmp->getNomUrl(1); print ''; print ''.$objp->batch.''; diff --git a/htdocs/product/stats/card.php b/htdocs/product/stats/card.php index 5fe6d5a4be3..79d33b1d884 100644 --- a/htdocs/product/stats/card.php +++ b/htdocs/product/stats/card.php @@ -27,6 +27,7 @@ require '../../main.inc.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/product.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; require_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/dolgraph.class.php'; @@ -38,7 +39,7 @@ $langs->load("products"); $langs->load("bills"); $langs->load("other"); -$id = GETPOST('id','int'); +$id = GETPOST('id','int'); // For this page, id can also be 'all' $ref = GETPOST('ref'); $mode = (GETPOST('mode') ? GETPOST('mode') : 'byunit'); $error = 0; @@ -56,16 +57,48 @@ $result=restrictedArea($user,'produit|service',$fieldvalue,'product&product','', /* * View */ + $form = new Form($db); -if (! empty($id) || ! empty($ref)) +if (! empty($id) || ! empty($ref) || GETPOST('id') == 'all') { $object = new Product($db); - $result = $object->fetch($id,$ref); + if (GETPOST('id') == 'all') + { + llxHeader("",$langs->trans("ProductStatistics")); - llxHeader("","",$langs->trans("CardProduct".$object->type)); - - if ($result) + $type = GETPOST('type'); + + $helpurl=''; + if ($type == '0') + { + $helpurl='EN:Module_Products|FR:Module_Produits|ES:Módulo_Productos'; + //$title=$langs->trans("StatisticsOfProducts"); + $title=$langs->trans("Statistics"); + } + else if ($type == '1') + { + $helpurl='EN:Module_Services_En|FR:Module_Services|ES:Módulo_Servicios'; + //$title=$langs->trans("StatisticsOfServices"); + $title=$langs->trans("Statistics"); + } + else + { + $helpurl='EN:Module_Services_En|FR:Module_Services|ES:Módulo_Servicios'; + //$title=$langs->trans("StatisticsOfProductsOrServices"); + $title=$langs->trans("Statistics"); + } + + print load_fiche_titre($title, $mesg,'title_products.png'); + } + else + { + $result = $object->fetch($id,$ref); + llxHeader("",$langs->trans("CardProduct".$object->type)); + } + + + if ($result && (! empty($id) || ! empty($ref))) { $head=product_prepare_head($object); $titre=$langs->trans("CardProduct".$object->type); @@ -73,37 +106,74 @@ if (! empty($id) || ! empty($ref)) dol_fiche_head($head, 'stats', $titre, 0, $picto); - print ''; - - // Reference - print ''; - print ''; - print ''; - - // Label - print ''; - - // Status (to sell) - print ''; - - // Status (to buy) - print ''; - - print '
'.$langs->trans("Ref").''; - print $form->showrefnav($object,'ref','',1,'ref'); - print '
'.$langs->trans("Label").''.$object->label.'
'.$langs->trans("Status").' ('.$langs->trans("Sell").')'; - print $object->getLibStatut(2,0); - print '
'.$langs->trans("Status").' ('.$langs->trans("Buy").')'; - print $object->getLibStatut(2,1); - print '
'; - + dol_banner_tab($object, 'ref', '', ($user->societe_id?0:1), 'ref'); + dol_fiche_end(); - - + } + if (GETPOST('id') == 'all') + { + $h=0; + $head = array(); + + $head[$h][0] = DOL_URL_ROOT.'/product/stats/card.php?id=all'; + $head[$h][1] = $langs->trans("Chart"); + $head[$h][2] = 'chart'; + $h++; + + $title = $langs->trans("ListProductServiceByPopularity"); + if ((string) $type == '1') { + $title = $langs->trans("ListServiceByPopularity"); + } + if ((string) $type == '0') { + $title = $langs->trans("ListProductByPopularity"); + } + + $head[$h][0] = DOL_URL_ROOT.'/product/popuprop.php'.($type != ''?'?type='.$type:''); + $head[$h][1] = $title; + $head[$h][2] = 'popularityprop'; + $h++; + + dol_fiche_head($head,'chart',$langs->trans("Statistics")); + } + + + if ($result || GETPOST('id') == 'all') + { + if (GETPOST('id') == 'all') + { + // Choice of type of product + if (! empty($conf->dol_use_jmobile)) print "\n".'
'."\n"; + + if ((string) $type != '0') print 'id).'&type=0">'; + else print img_picto('','tick').' '; + print $langs->trans("Products"); + if ((string) $type != '0') print ''; + + if (! empty($conf->dol_use_jmobile)) print '
'."\n".'
'."\n"; + else print '   /   '; + + if ((string) $type != '1') print 'id).'&type=1">'; + else print img_picto('','tick').' '; + print $langs->trans("Services"); + if ((string) $type != '1') print ''; + + if (! empty($conf->dol_use_jmobile)) print '
'."\n".'
'."\n"; + else print '   /   '; + + if ((string) $type == '0' || (string) $type == '1') print 'id).'">'; + else print img_picto('','tick').' '; + print $langs->trans("ProductsAndServices"); + if ((string) $type == '0' || (string) $type == '1') print ''; + + if (! empty($conf->dol_use_jmobile)) print '
'; + else print '
'; + print '
'; + } + // Choice of stats if (! empty($conf->dol_use_jmobile)) print "\n".'
'."\n"; - if ($mode == 'bynumber') print ''; + if ($mode == 'bynumber') print 'id).($type != '' ? '&type='.$type:'').'&mode=byunit">'; else print img_picto('','tick').' '; print $langs->trans("StatsByNumberOfUnits"); if ($mode == 'bynumber') print ''; @@ -111,7 +181,7 @@ if (! empty($id) || ! empty($ref)) if (! empty($conf->dol_use_jmobile)) print '
'."\n".'
'."\n"; else print '   /   '; - if ($mode == 'byunit') print ''; + if ($mode == 'byunit') print 'id).($type != '' ? '&type='.$type:'').'&mode=bynumber">'; else print img_picto('','tick').' '; print $langs->trans("StatsByNumberOfEntities"); if ($mode == 'byunit') print ''; @@ -135,19 +205,19 @@ if (! empty($id) || ! empty($ref)) $graphfiles=array( 'propal' =>array('modulepart'=>'productstats_proposals', - 'file' => $object->id.'/propal12m.png', + 'file' => $object->id.'/propal12m'.((string) $type != '' ? '_type'.$type : '').'_'.$mode.'.png', 'label' => ($mode=='byunit'?$langs->transnoentitiesnoconv("NumberOfUnitsProposals"):$langs->transnoentitiesnoconv("NumberOfProposals"))), 'orders' =>array('modulepart'=>'productstats_orders', - 'file' => $object->id.'/orders12m.png', + 'file' => $object->id.'/orders12m'.((string) $type != '' ? '_type'.$type : '').'_'.$mode.'.png', 'label' => ($mode=='byunit'?$langs->transnoentitiesnoconv("NumberOfUnitsCustomerOrders"):$langs->transnoentitiesnoconv("NumberOfCustomerOrders"))), 'invoices' =>array('modulepart'=>'productstats_invoices', - 'file' => $object->id.'/invoices12m.png', + 'file' => $object->id.'/invoices12m'.((string) $type != '' ? '_type'.$type : '').'_'.$mode.'.png', 'label' => ($mode=='byunit'?$langs->transnoentitiesnoconv("NumberOfUnitsCustomerInvoices"):$langs->transnoentitiesnoconv("NumberOfCustomerInvoices"))), 'orderssuppliers'=>array('modulepart'=>'productstats_orderssuppliers', - 'file' => $object->id.'/orderssuppliers12m.png', + 'file' => $object->id.'/orderssuppliers12m'.((string) $type != '' ? '_type'.$type : '').'_'.$mode.'.png', 'label' => ($mode=='byunit'?$langs->transnoentitiesnoconv("NumberOfUnitsSupplierOrders"):$langs->transnoentitiesnoconv("NumberOfSupplierOrders"))), 'invoicessuppliers'=>array('modulepart'=>'productstats_invoicessuppliers', - 'file' => $object->id.'/invoicessuppliers12m.png', + 'file' => $object->id.'/invoicessuppliers12m'.((string) $type != '' ? '_type'.$type : '').'_'.$mode.'.png', 'label' => ($mode=='byunit'?$langs->transnoentitiesnoconv("NumberOfUnitsSupplierInvoices"):$langs->transnoentitiesnoconv("NumberOfSupplierInvoices"))), ); @@ -164,13 +234,21 @@ if (! empty($id) || ! empty($ref)) $graph_data = array(); - // TODO Test si deja existant et recent, on ne genere pas - if ($key == 'propal') $graph_data = $object->get_nb_propal($socid,$mode); - if ($key == 'orders') $graph_data = $object->get_nb_order($socid,$mode); - if ($key == 'invoices') $graph_data = $object->get_nb_vente($socid,$mode); - if ($key == 'invoicessuppliers') $graph_data = $object->get_nb_achat($socid,$mode); - if ($key == 'orderssuppliers') $graph_data = $object->get_nb_ordersupplier($socid,$mode); - + if (dol_is_file($dir . '/' . $graphfiles[$key]['file'])) + { + // TODO Load cachefile $graphfiles[$key]['file'] + } + else + { + if ($key == 'propal') $graph_data = $object->get_nb_propal($socid,$mode,((string) $type != '' ? $type : -1)); + if ($key == 'orders') $graph_data = $object->get_nb_order($socid,$mode,((string) $type != '' ? $type : -1)); + if ($key == 'invoices') $graph_data = $object->get_nb_vente($socid,$mode,((string) $type != '' ? $type : -1)); + if ($key == 'invoicessuppliers') $graph_data = $object->get_nb_achat($socid,$mode,((string) $type != '' ? $type : -1)); + if ($key == 'orderssuppliers') $graph_data = $object->get_nb_ordersupplier($socid,$mode,((string) $type != '' ? $type : -1)); + + // TODO Save cachefile $graphfiles[$key]['file'] + } + if (is_array($graph_data)) { $px->SetData($graph_data); @@ -237,13 +315,13 @@ if (! empty($id) || ! empty($ref)) if ($graphfiles[$key]['output'] && ! $px->isGraphKo()) { if (file_exists($dir."/".$graphfiles[$key]['file']) && filemtime($dir."/".$graphfiles[$key]['file'])) print ''.$langs->trans("GeneratedOn",dol_print_date(filemtime($dir."/".$graphfiles[$key]['file']),"dayhour")).''; - else print ''.$langs->trans("GeneratedOn",dol_print_date(dol_now()),"dayhour").''; + else print ''.$langs->trans("GeneratedOn",dol_print_date(dol_now(),"dayhour")).''; } else { print ''.($mesg?''.$mesg.'':$langs->trans("ChartNotGenerated")).''; } - print ''.img_picto($langs->trans("ReCalculate"),'refresh').''; + print 'id).((string) $type != ''?'&type='.$type:'').'&action=recalcul&mode='.$mode.'">'.img_picto($langs->trans("ReCalculate"),'refresh').''; print ''; print ''; @@ -266,10 +344,11 @@ if (! empty($id) || ! empty($ref)) print "\n".'
'; print '

'."\n"; } - - print '
'; - print '
'; - + } + + if (GETPOST('id') == 'all') + { + dol_fiche_end(); } } else diff --git a/htdocs/product/stats/commande.php b/htdocs/product/stats/commande.php index c95845191bf..69334976141 100644 --- a/htdocs/product/stats/commande.php +++ b/htdocs/product/stats/commande.php @@ -81,6 +81,8 @@ if ($id > 0 || ! empty($ref)) $product = new Product($db); $result = $product->fetch($id, $ref); + $object = $product; + $parameters=array('id'=>$id); $reshook=$hookmanager->executeHooks('doActions',$parameters,$product,$action); // Note that $action and $object may have been modified by some hooks if ($reshook < 0) setEventMessages($hookmanager->error, $hookmanager->errors, 'errors'); @@ -97,39 +99,27 @@ if ($id > 0 || ! empty($ref)) $reshook=$hookmanager->executeHooks('formObjectOptions',$parameters,$product,$action); // Note that $action and $object may have been modified by hook if ($reshook < 0) setEventMessages($hookmanager->error, $hookmanager->errors, 'errors'); - print ''; - - // Reference - print ''; - print ''; - print ''; - - // Libelle - print ''; - print ''; - - // Status (to sell) - print ''; - - // Status (to buy) - print ''; + dol_banner_tab($object, 'ref', '', ($user->societe_id?0:1), 'ref'); + + print '
'; + + print '
'; + print '
'.$langs->trans("Ref").''; - print $form->showrefnav($product,'ref','',1,'ref'); - print '
'.$langs->trans("Label").''.$product->label.'
'.$langs->trans("Status").' ('.$langs->trans("Sell").')'; - print $product->getLibStatut(2,0); - print '
'.$langs->trans("Status").' ('.$langs->trans("Buy").')'; - print $product->getLibStatut(2,1); - print '
'; show_stats_for_company($product,$socid); print "
"; - print '
'; + print '
'; + print '
'; + + dol_fiche_end(); + if ($user->rights->commande->lire) { $sql = "SELECT DISTINCT s.nom as name, s.rowid as socid, s.code_client, c.rowid, d.total_ht as total_ht, c.ref,"; - $sql .= " c.ref_client,"; + $sql.= " c.ref_client,"; $sql.= " c.date_commande, c.fk_statut as statut, c.facture, c.rowid as commandeid, d.rowid, d.qty"; if (!$user->rights->societe->client->voir && !$socid) $sql.= ", sc.fk_soc, sc.fk_user "; $sql.= " FROM ".MAIN_DB_PREFIX."societe as s"; diff --git a/htdocs/product/stats/commande_fournisseur.php b/htdocs/product/stats/commande_fournisseur.php index e0dca72864f..83f0912b3ee 100644 --- a/htdocs/product/stats/commande_fournisseur.php +++ b/htdocs/product/stats/commande_fournisseur.php @@ -86,16 +86,17 @@ if ($id > 0 || ! empty($ref)) { $product = new Product($db); $result = $product->fetch($id, $ref); - $parameters = array ( - 'id' => $id - ); + $object = $product; + + $parameters = array ('id' => $id); $reshook = $hookmanager->executeHooks('doActions', $parameters, $product, $action); // Note that $action and $object may have been modified by some hooks if ($reshook < 0) setEventMessages($hookmanager->error, $hookmanager->errors, 'errors'); llxHeader("", "", $langs->trans("CardProduct" . $product->type)); - if ($result > 0) { + if ($result > 0) + { $head = product_prepare_head($product); $titre = $langs->trans("CardProduct" . $product->type); $picto = ($product->type == Product::TYPE_SERVICE ? 'service' : 'product'); @@ -105,36 +106,25 @@ if ($id > 0 || ! empty($ref)) { if ($reshook < 0) setEventMessages($hookmanager->error, $hookmanager->errors, 'errors'); - print ''; - - // Reference - print ''; - print ''; - print ''; - - // Libelle - print ''; - print ''; - - // Status (to sell) - print ''; - - // Status (to buy) - print ''; + dol_banner_tab($object, 'ref', '', ($user->societe_id?0:1), 'ref'); + + print '
'; + + print '
'; + print '
' . $langs->trans("Ref") . ''; - print $form->showrefnav($product, 'ref', '', 1, 'ref'); - print '
' . $langs->trans("Label") . '' . $product->label . '
' . $langs->trans("Status") . ' (' . $langs->trans("Sell") . ')'; - print $product->getLibStatut(2, 0); - print '
' . $langs->trans("Status") . ' (' . $langs->trans("Buy") . ')'; - print $product->getLibStatut(2, 1); - print '
'; show_stats_for_company($product, $socid); print "
"; - print ''; + print ''; + print '
'; + + dol_fiche_end(); + - if ($user->rights->fournisseur->commande->lire) { + if ($user->rights->fournisseur->commande->lire) + { $sql = "SELECT DISTINCT s.nom as name, s.rowid as socid, s.code_client,"; $sql .= " c.rowid, d.total_ht as total_ht, c.ref,"; $sql .= " c.date_commande, c.fk_statut as statut, c.rowid as commandeid, d.rowid, d.qty"; diff --git a/htdocs/product/stats/contrat.php b/htdocs/product/stats/contrat.php index 9d4d7d53abc..c2e6b25f7ab 100644 --- a/htdocs/product/stats/contrat.php +++ b/htdocs/product/stats/contrat.php @@ -71,6 +71,8 @@ if ($id > 0 || ! empty($ref)) $product = new Product($db); $result = $product->fetch($id, $ref); + $object = $product; + $parameters=array('id'=>$id); $reshook=$hookmanager->executeHooks('doActions',$parameters,$product,$action); // Note that $action and $object may have been modified by some hooks if ($reshook < 0) setEventMessages($hookmanager->error, $hookmanager->errors, 'errors'); @@ -87,34 +89,22 @@ if ($id > 0 || ! empty($ref)) $reshook=$hookmanager->executeHooks('formObjectOptions',$parameters,$product,$action); // Note that $action and $object may have been modified by hook if ($reshook < 0) setEventMessages($hookmanager->error, $hookmanager->errors, 'errors'); - print ''; + dol_banner_tab($object, 'ref', '', ($user->societe_id?0:1), 'ref'); + + print '
'; + + print '
'; + print '
'; - // Reference - print ''; - print ''; - print ''; - - // Libelle - print ''; - print ''; - - // Status (to sell) - print ''; - - // Status (to buy) - print ''; - - show_stats_for_company($product,$socid); + show_stats_for_company($product,$socid); print "
'.$langs->trans("Ref").''; - print $form->showrefnav($product,'ref','',1,'ref'); - print '
'.$langs->trans("Label").''.$product->label.'
'.$langs->trans("Status").' ('.$langs->trans("Sell").')'; - print $product->getLibStatut(2,0); - print '
'.$langs->trans("Status").' ('.$langs->trans("Buy").')'; - print $product->getLibStatut(2,1); - print '
"; - print ''; + print ''; + print '
'; + + dol_fiche_end(); + $now=dol_now(); diff --git a/htdocs/product/stats/facture.php b/htdocs/product/stats/facture.php index da39d5d67c1..590830702bb 100644 --- a/htdocs/product/stats/facture.php +++ b/htdocs/product/stats/facture.php @@ -81,7 +81,9 @@ if ($id > 0 || ! empty($ref)) { $product = new Product($db); $result = $product->fetch($id, $ref); - + + $object = $product; + $parameters=array('id'=>$id); $reshook=$hookmanager->executeHooks('doActions',$parameters,$product,$action); // Note that $action and $object may have been modified by some hooks if ($reshook < 0) setEventMessages($hookmanager->error, $hookmanager->errors, 'errors'); @@ -98,34 +100,21 @@ if ($id > 0 || ! empty($ref)) $reshook=$hookmanager->executeHooks('formObjectOptions',$parameters,$product,$action); // Note that $action and $object may have been modified by hook if ($reshook < 0) setEventMessages($hookmanager->error, $hookmanager->errors, 'errors'); - print ''; - - // Reference - print ''; - print ''; - print ''; - - // Libelle - print ''; - print ''; - - // Status (to sell) - print ''; - - // Status (to buy) - print ''; + dol_banner_tab($object, 'ref', '', ($user->societe_id?0:1), 'ref'); + + print '
'; + + print '
'; + print '
'.$langs->trans("Ref").''; - print $form->showrefnav($product,'ref','',1,'ref'); - print '
'.$langs->trans("Label").''.$product->label.'
'.$langs->trans("Status").' ('.$langs->trans("Sell").')'; - print $product->getLibStatut(2,0); - print '
'.$langs->trans("Status").' ('.$langs->trans("Buy").')'; - print $product->getLibStatut(2,1); - print '
'; show_stats_for_company($product,$socid); print "
"; - print ''; + print ''; + print '
'; + + dol_fiche_end(); if ($user->rights->facture->lire) diff --git a/htdocs/product/stats/facture_fournisseur.php b/htdocs/product/stats/facture_fournisseur.php index 3d5cbcbe455..27e5495a771 100644 --- a/htdocs/product/stats/facture_fournisseur.php +++ b/htdocs/product/stats/facture_fournisseur.php @@ -83,6 +83,8 @@ if ($id > 0 || ! empty($ref)) $product = new Product($db); $result = $product->fetch($id, $ref); + $object = $product; + $parameters = array('id' => $id); $reshook = $hookmanager->executeHooks('doActions', $parameters, $product, $action); // Note that $action and $object may have been modified by some hooks if ($reshook < 0) setEventMessages($hookmanager->error, $hookmanager->errors, 'errors'); @@ -99,34 +101,22 @@ if ($id > 0 || ! empty($ref)) $reshook = $hookmanager->executeHooks('formObjectOptions', $parameters, $product, $action); // Note that $action and $object may have been modified by hook if ($reshook < 0) setEventMessages($hookmanager->error, $hookmanager->errors, 'errors'); - print ''; - - // Reference - print ''; - print ''; - print ''; - - // Libelle - print ''; - print ''; - - // Status (to sell) - print ''; - - // Status (to buy) - print ''; + dol_banner_tab($object, 'ref', '', ($user->societe_id?0:1), 'ref'); + + print '
'; + + print '
'; + print '
' . $langs->trans("Ref") . ''; - print $form->showrefnav($product, 'ref', '', 1, 'ref'); - print '
' . $langs->trans("Label") . '' . $product->label . '
' . $langs->trans("Status") . ' (' . $langs->trans("Sell") . ')'; - print $product->getLibStatut(2, 0); - print '
' . $langs->trans("Status") . ' (' . $langs->trans("Buy") . ')'; - print $product->getLibStatut(2, 1); - print '
'; show_stats_for_company($product, $socid); print "
"; - print ''; + print ''; + print '
'; + + dol_fiche_end(); + if ($user->rights->fournisseur->facture->lire) { diff --git a/htdocs/product/stats/propal.php b/htdocs/product/stats/propal.php index 95c273929cd..2fa69740e8b 100644 --- a/htdocs/product/stats/propal.php +++ b/htdocs/product/stats/propal.php @@ -81,6 +81,8 @@ if ($id > 0 || ! empty($ref)) $product = new Product($db); $result = $product->fetch($id, $ref); + $object = $product; + $parameters = array ('id' => $id); $reshook = $hookmanager->executeHooks('doActions', $parameters, $product, $action); // Note that $action and $object may have been modified by some hooks if ($reshook < 0) setEventMessages($hookmanager->error, $hookmanager->errors, 'errors'); @@ -97,36 +99,25 @@ if ($id > 0 || ! empty($ref)) $reshook = $hookmanager->executeHooks('formObjectOptions', $parameters, $product, $action); // Note that $action and $object may have been modified by hook if ($reshook < 0) setEventMessages($hookmanager->error, $hookmanager->errors, 'errors'); - print ''; - - // Reference - print ''; - print ''; - print ''; - - // Libelle - print ''; - print ''; - - // Status (to sell) - print ''; - - // Status (to buy) - print ''; + dol_banner_tab($object, 'ref', '', ($user->societe_id?0:1), 'ref'); + + print '
'; + + print '
'; + print '
' . $langs->trans("Ref") . ''; - print $form->showrefnav($product, 'ref', '', 1, 'ref'); - print '
' . $langs->trans("Label") . '' . $product->label . '
' . $langs->trans("Status") . ' (' . $langs->trans("Sell") . ')'; - print $product->getLibStatut(2, 0); - print '
' . $langs->trans("Status") . ' (' . $langs->trans("Buy") . ')'; - print $product->getLibStatut(2, 1); - print '
'; show_stats_for_company($product, $socid); print "
"; - print ''; + print ''; + print '
'; + + dol_fiche_end(); + - if ($user->rights->propale->lire) { + if ($user->rights->propale->lire) + { $sql = "SELECT DISTINCT s.nom as name, s.rowid as socid, p.rowid as propalid, p.ref, d.total_ht as amount,"; $sql .= " p.ref_client,"; $sql .= "p.datep, p.fk_statut as statut, d.rowid, d.qty"; diff --git a/htdocs/product/stock/card.php b/htdocs/product/stock/card.php index 9be03e9dee0..522d2cf242a 100644 --- a/htdocs/product/stock/card.php +++ b/htdocs/product/stock/card.php @@ -394,7 +394,7 @@ else $totalunit=0; $totalvalue=$totalvaluesell=0; - $sql = "SELECT p.rowid as rowid, p.ref, p.label as produit, p.fk_product_type as type, p.pmp as ppmp, p.price, p.price_ttc,"; + $sql = "SELECT p.rowid as rowid, p.ref, p.label as produit, p.fk_product_type as type, p.pmp as ppmp, p.price, p.price_ttc, p.entity,"; $sql.= " ps.pmp, ps.reel as value"; $sql.= " FROM ".MAIN_DB_PREFIX."product_stock as ps, ".MAIN_DB_PREFIX."product as p"; $sql.= " WHERE ps.fk_product = p.rowid"; @@ -438,6 +438,7 @@ else $productstatic->ref = $objp->ref; $productstatic->label = $objp->produit; $productstatic->type=$objp->type; + $productstatic->entity=$objp->entity; print $productstatic->getNomUrl(1,'stock',16); print ''; print ''.$objp->produit.''; diff --git a/htdocs/product/stock/mouvement.php b/htdocs/product/stock/mouvement.php index 12ede4463cb..a6085699a63 100644 --- a/htdocs/product/stock/mouvement.php +++ b/htdocs/product/stock/mouvement.php @@ -164,7 +164,7 @@ $form=new Form($db); $formother=new FormOther($db); $formproduct=new FormProduct($db); -$sql = "SELECT p.rowid, p.ref as product_ref, p.label as produit, p.fk_product_type as type,"; +$sql = "SELECT p.rowid, p.ref as product_ref, p.label as produit, p.fk_product_type as type, p.entity,"; $sql.= " e.label as stock, e.rowid as entrepot_id, e.lieu,"; $sql.= " m.rowid as mid, m.value, m.datem, m.fk_user_author, m.label, m.inventorycode, m.fk_origin, m.origintype,"; $sql.= " m.batch,m.eatby,m.sellby,"; @@ -575,6 +575,7 @@ if ($resql) $productstatic->ref=$objp->product_ref; $productstatic->label=$objp->produit; $productstatic->type=$objp->type; + $productstatic->entity=$objp->entity; print $productstatic->getNomUrl(1,'stock',16); print "\n"; // Product label diff --git a/htdocs/product/stock/product.php b/htdocs/product/stock/product.php index 775a3ae0bfe..093a364752c 100644 --- a/htdocs/product/stock/product.php +++ b/htdocs/product/stock/product.php @@ -72,24 +72,24 @@ if ($cancel) $action=''; // Set stock limit if ($action == 'setstocklimit') { - $product = new Product($db); - $result=$product->fetch($id); - $product->seuil_stock_alerte=$stocklimit; - $result=$product->update($product->id,$user,0,'update'); + $object = new Product($db); + $result=$object->fetch($id); + $object->seuil_stock_alerte=$stocklimit; + $result=$object->update($object->id,$user,0,'update'); if ($result < 0) - setEventMessage($product->error, 'errors'); + setEventMessage($object->error, 'errors'); $action=''; } // Set desired stock if ($action == 'setdesiredstock') { - $product = new Product($db); - $result=$product->fetch($id); - $product->desiredstock=$desiredstock; - $result=$product->update($product->id,$user,0,'update'); + $object = new Product($db); + $result=$object->fetch($id); + $object->desiredstock=$desiredstock; + $result=$object->update($object->id,$user,0,'update'); if ($result < 0) - setEventMessage($product->error, 'errors'); + setEventMessage($object->error, 'errors'); $action=''; } @@ -112,10 +112,10 @@ if ($action == "correct_stock" && ! $cancel) if (! empty($conf->productbatch->enabled)) { - $product = new Product($db); - $result=$product->fetch($id); + $object = new Product($db); + $result=$object->fetch($id); - if ($product->hasbatch() && (! GETPOST("sellby")) && (! GETPOST("eatby")) && (! GETPOST("batch_number"))) { + if ($object->hasbatch() && (! GETPOST("sellby")) && (! GETPOST("eatby")) && (! GETPOST("batch_number"))) { setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("atleast1batchfield")), null, 'errors'); $error++; $action='correction'; @@ -127,13 +127,13 @@ if ($action == "correct_stock" && ! $cancel) $priceunit=price2num(GETPOST("unitprice")); if (is_numeric(GETPOST("nbpiece")) && $id) { - if (empty($product)) { - $product = new Product($db); - $result=$product->fetch($id); + if (empty($object)) { + $object = new Product($db); + $result=$object->fetch($id); } - if ($product->hasbatch()) + if ($object->hasbatch()) { - $result=$product->correct_stock_batch( + $result=$object->correct_stock_batch( $user, GETPOST("id_entrepot"), GETPOST("nbpiece"), @@ -148,7 +148,7 @@ if ($action == "correct_stock" && ! $cancel) } else { - $result=$product->correct_stock( + $result=$object->correct_stock( $user, GETPOST("id_entrepot"), GETPOST("nbpiece"), @@ -168,13 +168,13 @@ if ($action == "correct_stock" && ! $cancel) } else { - header("Location: ".$_SERVER["PHP_SELF"]."?id=".$product->id); + header("Location: ".$_SERVER["PHP_SELF"]."?id=".$object->id); exit; } } else { - setEventMessage($product->error,'errors'); + setEventMessage($object->error,'errors'); $action='correction'; } } @@ -207,20 +207,20 @@ if ($action == "transfert_stock" && ! $cancel) { if ($id) { - $product = new Product($db); - $result=$product->fetch($id); + $object = new Product($db); + $result=$object->fetch($id); $db->begin(); - $product->load_stock(); // Load array product->stock_warehouse + $object->load_stock(); // Load array product->stock_warehouse // Define value of products moved $pricesrc=0; - //if (isset($product->stock_warehouse[GETPOST("id_entrepot_source")]->pmp)) $pricesrc=$product->stock_warehouse[GETPOST("id_entrepot_source")]->pmp; - if (isset($product->pmp)) $pricesrc=$product->pmp; + //if (isset($object->stock_warehouse[GETPOST("id_entrepot_source")]->pmp)) $pricesrc=$object->stock_warehouse[GETPOST("id_entrepot_source")]->pmp; + if (isset($object->pmp)) $pricesrc=$object->pmp; $pricedest=$pricesrc; - if ($product->hasbatch()) + if ($object->hasbatch()) { $pdluo = new Productbatch($db); @@ -251,7 +251,7 @@ if ($action == "transfert_stock" && ! $cancel) if (! $error) { // Remove stock - $result1=$product->correct_stock_batch( + $result1=$object->correct_stock_batch( $user, $srcwarehouseid, GETPOST("nbpiece",'int'), @@ -262,7 +262,7 @@ if ($action == "transfert_stock" && ! $cancel) GETPOST('inventorycode') ); // Add stock - $result2=$product->correct_stock_batch( + $result2=$object->correct_stock_batch( $user, GETPOST("id_entrepot_destination",'int'), GETPOST("nbpiece",'int'), @@ -277,7 +277,7 @@ if ($action == "transfert_stock" && ! $cancel) else { // Remove stock - $result1=$product->correct_stock( + $result1=$object->correct_stock( $user, GETPOST("id_entrepot_source"), GETPOST("nbpiece"), @@ -288,7 +288,7 @@ if ($action == "transfert_stock" && ! $cancel) ); // Add stock - $result2=$product->correct_stock( + $result2=$object->correct_stock( $user, GETPOST("id_entrepot_destination"), GETPOST("nbpiece"), @@ -309,13 +309,13 @@ if ($action == "transfert_stock" && ! $cancel) } else { - header("Location: product.php?id=".$product->id); + header("Location: product.php?id=".$object->id); exit; } } else { - setEventMessages($product->error, $product->errors, 'errors'); + setEventMessages($object->error, $object->errors, 'errors'); $db->rollback(); $action='transfert'; } @@ -370,70 +370,46 @@ if ($action == 'updateline' && GETPOST('save') == $langs->trans('Save')) * View */ +$form = new Form($db); $formproduct=new FormProduct($db); if ($id > 0 || $ref) { - $product = new Product($db); - $result = $product->fetch($id,$ref); - $product->load_stock(); + $object = new Product($db); + $result = $object->fetch($id,$ref); + $object->load_stock(); $help_url='EN:Module_Stocks_En|FR:Module_Stock|ES:Módulo_Stocks'; - llxHeader("",$langs->trans("CardProduct".$product->type),$help_url); + llxHeader("",$langs->trans("CardProduct".$object->type),$help_url); if ($result > 0) { - $head=product_prepare_head($product); - $titre=$langs->trans("CardProduct".$product->type); - $picto=($product->type==Product::TYPE_SERVICE?'service':'product'); + $head=product_prepare_head($object); + $titre=$langs->trans("CardProduct".$object->type); + $picto=($object->type==Product::TYPE_SERVICE?'service':'product'); dol_fiche_head($head, 'stock', $titre, 0, $picto); dol_htmloutput_events(); - $form = new Form($db); - - print ''; - - // Ref - print ''; - print ''; - print ''; - - // Label - print ''; - print ''; - - // Status (to sell) - print ''; - - // Status (to buy) - print ''; - - if ($conf->productbatch->enabled) { - print '
'.$langs->trans("Ref").''; - print $form->showrefnav($product,'ref','',1,'ref'); - print '
'.$langs->trans("Label").''.$product->label.'
'.$langs->trans("Status").' ('.$langs->trans("Sell").')'; - if (! empty($conf->use_javascript_ajax) && $user->rights->produit->creer && ! empty($conf->global->MAIN_DIRECT_STATUS_UPDATE)) { - print ajax_object_onoff($product, 'status', 'tosell', 'ProductStatusOnSell', 'ProductStatusNotOnSell'); - } else { - print $product->getLibStatut(2,0); - } - print '
'.$langs->trans("Status").' ('.$langs->trans("Buy").')'; - if (! empty($conf->use_javascript_ajax) && $user->rights->produit->creer && ! empty($conf->global->MAIN_DIRECT_STATUS_UPDATE)) { - print ajax_object_onoff($product, 'status_buy', 'tobuy', 'ProductStatusOnBuy', 'ProductStatusNotOnBuy'); - } else { - print $product->getLibStatut(2,1); - } - print '
'.$langs->trans("ManageLotSerial").''; - print $product->getLibStatut(0,2); + dol_banner_tab($object, 'ref', '', ($user->societe_id?0:1), 'ref'); + + print '
'; + + print '
'; + print ''; + + if ($conf->productbatch->enabled) + { + print ''; } // PMP - print ''; + print ''; print ''; print ''; @@ -441,14 +417,13 @@ if ($id > 0 || $ref) print ''; print ''; - $object = $product; if (empty($conf->global->PRODUIT_MULTIPRICES)) { // Price @@ -483,17 +458,17 @@ if ($id > 0 || $ref) } // Stock alert threshold - print ''; // Desired stock - print ''; // Real stock - $product->load_stock(); + $object->load_stock(); $text_stock_options = ''; $text_stock_options.= (! empty($conf->global->STOCK_CALCULATE_ON_SHIPMENT)?$langs->trans("DeStockOnShipment").'
':''); $text_stock_options.= (! empty($conf->global->STOCK_CALCULATE_ON_VALIDATE_ORDER)?$langs->trans("DeStockOnValidateOrder").'
':''); @@ -504,15 +479,15 @@ if ($id > 0 || $ref) print ''; - print ''; print ''; // Calculating a theorical value print ''; - print "'; @@ -528,36 +503,36 @@ if ($id > 0 || $ref) if (! empty($conf->commande->enabled)) { if ($found) print '
'; else $found=1; - print $langs->trans("ProductQtyInCustomersOrdersRunning").': '.$product->stats_commande['qty']; - $result=$product->load_stats_commande(0,'0'); - if ($result < 0) dol_print_error($db,$product->error); - print ' ('.$langs->trans("ProductQtyInDraft").': '.$product->stats_commande['qty'].')'; + print $langs->trans("ProductQtyInCustomersOrdersRunning").': '.$object->stats_commande['qty']; + $result=$object->load_stats_commande(0,'0'); + if ($result < 0) dol_print_error($db,$object->error); + print ' ('.$langs->trans("ProductQtyInDraft").': '.$object->stats_commande['qty'].')'; } // Number of product from customer order already sent (partial shipping) if (! empty($conf->expedition->enabled)) { if ($found) print '
'; else $found=1; - $result=$product->load_stats_sending(0,'2'); - print $langs->trans("ProductQtyInShipmentAlreadySent").': '.$product->stats_expedition['qty']; + $result=$object->load_stats_sending(0,'2'); + print $langs->trans("ProductQtyInShipmentAlreadySent").': '.$object->stats_expedition['qty']; } // Number of supplier order running if (! empty($conf->fournisseur->enabled)) { if ($found) print '
'; else $found=1; - $result=$product->load_stats_commande_fournisseur(0,'3,4'); - print $langs->trans("ProductQtyInSuppliersOrdersRunning").': '.$product->stats_commande_fournisseur['qty']; - $result=$product->load_stats_commande_fournisseur(0,'0,1,2'); - if ($result < 0) dol_print_error($db,$product->error); - print ' ('.$langs->trans("ProductQtyInDraftOrWaitingApproved").': '.$product->stats_commande_fournisseur['qty'].')'; + $result=$object->load_stats_commande_fournisseur(0,'3,4'); + print $langs->trans("ProductQtyInSuppliersOrdersRunning").': '.$object->stats_commande_fournisseur['qty']; + $result=$object->load_stats_commande_fournisseur(0,'0,1,2'); + if ($result < 0) dol_print_error($db,$object->error); + print ' ('.$langs->trans("ProductQtyInDraftOrWaitingApproved").': '.$object->stats_commande_fournisseur['qty'].')'; } // Number of product from supplier order already received (partial receipt) if (! empty($conf->fournisseur->enabled)) { if ($found) print '
'; else $found=1; - print $langs->trans("ProductQtyInSuppliersShipmentAlreadyRecevied").': '.$product->stats_reception['qty']; + print $langs->trans("ProductQtyInSuppliersShipmentAlreadyRecevied").': '.$object->stats_reception['qty']; } print ''; @@ -565,7 +540,7 @@ if ($id > 0 || $ref) // Last movement $sql = "SELECT max(m.datem) as datem"; $sql.= " FROM ".MAIN_DB_PREFIX."stock_mouvement as m"; - $sql.= " WHERE m.fk_product = '".$product->id."'"; + $sql.= " WHERE m.fk_product = '".$object->id."'"; $resqlbis = $db->query($sql); if ($resqlbis) { @@ -580,18 +555,21 @@ if ($id > 0 || $ref) if ($lastmovementdate) { print dol_print_date($lastmovementdate,'dayhour').' '; - print '('.$langs->trans("FullList").')'; + print '('.$langs->trans("FullList").')'; } else { - print ''.$langs->trans("None").''; + print ''.$langs->trans("None").''; } print ""; print "
'.$langs->trans("ManageLotSerial").''; + print $object->getLibStatut(0,2); print '
'.$langs->trans("AverageUnitPricePMP").'
'.$langs->trans("AverageUnitPricePMP").''; - if ($product->pmp > 0) print price($product->pmp).' '.$langs->trans("HT"); + if ($object->pmp > 0) print price($object->pmp).' '.$langs->trans("HT"); print '
'.$langs->trans("BuyingPriceMin").''; $product_fourn = new ProductFournisseur($db); - if ($product_fourn->find_min_price_product_fournisseur($product->id) > 0) + if ($product_fourn->find_min_price_product_fournisseur($object->id) > 0) { if ($product_fourn->product_fourn_price_id > 0) print $product_fourn->display_price_product_fournisseur(); else print $langs->trans("NotDefined"); } print '
'.$form->editfieldkey("StockLimit",'stocklimit',$product->seuil_stock_alerte,$product,$user->rights->produit->creer).''; - print $form->editfieldval("StockLimit",'stocklimit',$product->seuil_stock_alerte,$product,$user->rights->produit->creer); + print '
'.$form->editfieldkey("StockLimit",'stocklimit',$object->seuil_stock_alerte,$object,$user->rights->produit->creer).''; + print $form->editfieldval("StockLimit",'stocklimit',$object->seuil_stock_alerte,$object,$user->rights->produit->creer); print '
'.$form->editfieldkey("DesiredStock",'desiredstock',$product->desiredstock,$product,$user->rights->produit->creer).''; - print $form->editfieldval("DesiredStock",'desiredstock',$product->desiredstock,$product,$user->rights->produit->creer); + print '
'.$form->editfieldkey("DesiredStock",'desiredstock',$object->desiredstock,$object,$user->rights->produit->creer).''; + print $form->editfieldval("DesiredStock",'desiredstock',$object->desiredstock,$object,$user->rights->produit->creer); print '
'; print $form->textwithtooltip($langs->trans("PhysicalStock"), $text_stock_options, 2, 1, img_picto('', 'info'), '', 2); print ''.$product->stock_reel; - if ($product->seuil_stock_alerte && ($product->stock_reel < $product->seuil_stock_alerte)) print ' '.img_warning($langs->trans("StockLowerThanLimit")); + print ''.$object->stock_reel; + if ($object->seuil_stock_alerte && ($object->stock_reel < $object->seuil_stock_alerte)) print ' '.img_warning($langs->trans("StockLowerThanLimit")); print '
'.$langs->trans("VirtualStock").'".(empty($product->stock_theorique)?0:$product->stock_theorique); - if ($product->stock_theorique < $product->seuil_stock_alerte) { + print "".(empty($object->stock_theorique)?0:$object->stock_theorique); + if ($object->stock_theorique < $object->seuil_stock_alerte) { print ' '.img_warning($langs->trans("StockLowerThanLimit")); } print '
"; + print '
'; + print '
'; + + dol_fiche_end(); } - print ''; /* * Correct stock @@ -618,7 +596,7 @@ if ($id > 0 || $ref) if ($_GET["action"] == "definir") { print load_fiche_titre($langs->trans("SetStock")); - print "
id\" method=\"post\">\n"; + print "id\" method=\"post\">\n"; print ''; print ''; print ''; @@ -645,19 +623,19 @@ else /* ************************************************************************** */ -if (empty($action) && $product->id) +if (empty($action) && $object->id) { print "
\n"; if ($user->rights->stock->mouvement->creer) { - print ''.$langs->trans("StockCorrection").''; + print ''.$langs->trans("StockCorrection").''; } - //if (($user->rights->stock->mouvement->creer) && ! $product->hasbatch()) + //if (($user->rights->stock->mouvement->creer) && ! $object->hasbatch()) if ($user->rights->stock->mouvement->creer) { - print ''.$langs->trans("StockMovement").''; + print ''.$langs->trans("StockMovement").''; } print '
'; @@ -678,7 +656,7 @@ print ''; print ''; print ''; print ''; -if ((! empty($conf->productbatch->enabled)) && $product->hasbatch()) +if ((! empty($conf->productbatch->enabled)) && $object->hasbatch()) { print ''; print ''; @@ -691,10 +669,11 @@ if ((! empty($conf->productbatch->enabled)) && $product->hasbatch()) $sql = "SELECT e.rowid, e.label, e.lieu, ps.reel, ps.pmp, ps.rowid as product_stock_id"; $sql.= " FROM ".MAIN_DB_PREFIX."entrepot as e,"; $sql.= " ".MAIN_DB_PREFIX."product_stock as ps"; +$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product as p ON p.rowid = ps.fk_product"; $sql.= " WHERE ps.reel != 0"; $sql.= " AND ps.fk_entrepot = e.rowid"; $sql.= " AND e.entity IN (".getEntity('stock', 1).")"; -$sql.= " AND ps.fk_product = ".$product->id; +$sql.= " AND ps.fk_product = ".$object->id; $sql.= " ORDER BY e.label"; $entrepotstatic=new Entrepot($db); @@ -717,25 +696,25 @@ if ($resql) print ''; print ''; // PMP - print ''; + print ''; // Value purchase - print ''; + print ''; // Sell price print ''; // Value sell print ''; + if (empty($conf->global->PRODUIT_MULTI_PRICES)) print price(price2num($object->price*$obj->reel,'MT'),1).''; else print $langs->trans("Variable"); print ''; ; $total += $obj->reel; - if (price2num($product->pmp)) $totalwithpmp += $obj->reel; - $totalvalue = $totalvalue + ($product->pmp*$obj->reel); - $totalvaluesell = $totalvaluesell + ($product->price*$obj->reel); + if (price2num($object->pmp)) $totalwithpmp += $obj->reel; + $totalvalue = $totalvalue + ($object->pmp*$obj->reel); + $totalvaluesell = $totalvaluesell + ($object->price*$obj->reel); //Batch Detail - if ((! empty($conf->productbatch->enabled)) && $product->hasbatch()) + if ((! empty($conf->productbatch->enabled)) && $object->hasbatch()) { $details=Productbatch::findAll($db,$obj->product_stock_id); if ($details<0) dol_print_error($db); @@ -761,7 +740,7 @@ if ($resql) { print "\n".'
'.$langs->trans("EstimatedStockValueShort").''.$langs->trans("SellPriceMin").''.$langs->trans("EstimatedStockValueSellShort").'
'.$langs->trans("batch_number").''.$entrepotstatic->getNomUrl(1).''.$obj->reel.($obj->reel<0?' '.img_warning():'').''.(price2num($product->pmp)?price2num($product->pmp,'MU'):'').''.(price2num($object->pmp)?price2num($object->pmp,'MU'):'').''.(price2num($product->pmp)?price(price2num($product->pmp*$obj->reel,'MT')):'').''.(price2num($object->pmp)?price(price2num($object->pmp*$obj->reel,'MT')):'').''; - if (empty($conf->global->PRODUIT_MULTI_PRICES)) print price(price2num($product->price,'MU'),1); + if (empty($conf->global->PRODUIT_MULTI_PRICES)) print price(price2num($object->price,'MU'),1); else print $langs->trans("Variable"); print ''; - if (empty($conf->global->PRODUIT_MULTI_PRICES)) print price(price2num($product->price*$obj->reel,'MT'),1).'
'; print img_picto($langs->trans("Tranfer"),'uparrow','class="hideonsmartphone"').' '; - print 'id.'">'.$langs->trans("StockMovement").''; + print 'id.'">'.$langs->trans("StockMovement").''; // Disabled, because edition of stock content must use the "Correct stock menu". // Do not use this, or data will be wrong (bad tracking of movement label, inventory code, ... //print 'id.'#'.$pdluo->id.'">'; diff --git a/htdocs/product/stock/tpl/stockcorrection.tpl.php b/htdocs/product/stock/tpl/stockcorrection.tpl.php index dc102d8eb05..b1121731293 100644 --- a/htdocs/product/stock/tpl/stockcorrection.tpl.php +++ b/htdocs/product/stock/tpl/stockcorrection.tpl.php @@ -21,7 +21,9 @@ load("productbatch"); + if (! is_object($product)) $product=$object; + + $langs->load("productbatch"); if (empty($id)) $id = $object->id; diff --git a/htdocs/product/stock/tpl/stocktransfer.tpl.php b/htdocs/product/stock/tpl/stocktransfer.tpl.php index de947a75014..93c3135e5f1 100644 --- a/htdocs/product/stock/tpl/stocktransfer.tpl.php +++ b/htdocs/product/stock/tpl/stocktransfer.tpl.php @@ -21,7 +21,11 @@ load("productbatch"); + + $pdluoid=GETPOST('pdluoid','int'); $pdluo = new Productbatch($db); diff --git a/htdocs/product/traduction.php b/htdocs/product/traduction.php index 413cb589dff..96187fad8dd 100644 --- a/htdocs/product/traduction.php +++ b/htdocs/product/traduction.php @@ -58,9 +58,9 @@ if ($cancel == $langs->trans("Cancel")) if ($action == 'delete' && GETPOST('langtodelete','alpha')) { - $product = new Product($db); - $product->fetch($id); - $product->delMultiLangs(GETPOST('langtodelete','alpha')); + $object = new Product($db); + $object->fetch($id); + $object->delMultiLangs(GETPOST('langtodelete','alpha')); } // Add translation @@ -68,33 +68,33 @@ if ($action == 'vadd' && $cancel != $langs->trans("Cancel") && ($user->rights->produit->creer || $user->rights->service->creer)) { - $product = new Product($db); - $product->fetch($id); + $object = new Product($db); + $object->fetch($id); $current_lang = $langs->getDefaultLang(); // update de l'objet if ( $_POST["forcelangprod"] == $current_lang ) { - $product->label = $_POST["libelle"]; - $product->description = dol_htmlcleanlastbr($_POST["desc"]); - $product->note = dol_htmlcleanlastbr($_POST["note"]); + $object->label = $_POST["libelle"]; + $object->description = dol_htmlcleanlastbr($_POST["desc"]); + $object->note = dol_htmlcleanlastbr($_POST["note"]); } else { - $product->multilangs[$_POST["forcelangprod"]]["label"] = $_POST["libelle"]; - $product->multilangs[$_POST["forcelangprod"]]["description"] = dol_htmlcleanlastbr($_POST["desc"]); - $product->multilangs[$_POST["forcelangprod"]]["note"] = dol_htmlcleanlastbr($_POST["note"]); + $object->multilangs[$_POST["forcelangprod"]]["label"] = $_POST["libelle"]; + $object->multilangs[$_POST["forcelangprod"]]["description"] = dol_htmlcleanlastbr($_POST["desc"]); + $object->multilangs[$_POST["forcelangprod"]]["note"] = dol_htmlcleanlastbr($_POST["note"]); } // sauvegarde en base - if ( $product->setMultiLangs() > 0 ) + if ( $object->setMultiLangs() > 0 ) { $action = ''; } else { $action = 'add'; - setEventMessage($product->error,'errors'); + setEventMessage($object->error,'errors'); } } @@ -103,34 +103,34 @@ if ($action == 'vedit' && $cancel != $langs->trans("Cancel") && ($user->rights->produit->creer || $user->rights->service->creer)) { - $product = new Product($db); - $product->fetch($id); + $object = new Product($db); + $object->fetch($id); $current_lang = $langs->getDefaultLang(); - foreach ( $product->multilangs as $key => $value ) // enregistrement des nouvelles valeurs dans l'objet + foreach ( $object->multilangs as $key => $value ) // enregistrement des nouvelles valeurs dans l'objet { if ( $key == $current_lang ) { - $product->label = $_POST["libelle-".$key]; - $product->description = dol_htmlcleanlastbr($_POST["desc-".$key]); - $product->note = dol_htmlcleanlastbr($_POST["note-".$key]); + $object->label = $_POST["libelle-".$key]; + $object->description = dol_htmlcleanlastbr($_POST["desc-".$key]); + $object->note = dol_htmlcleanlastbr($_POST["note-".$key]); } else { - $product->multilangs[$key]["label"] = $_POST["libelle-".$key]; - $product->multilangs[$key]["description"] = dol_htmlcleanlastbr($_POST["desc-".$key]); - $product->multilangs[$key]["note"] = dol_htmlcleanlastbr($_POST["note-".$key]); + $object->multilangs[$key]["label"] = $_POST["libelle-".$key]; + $object->multilangs[$key]["description"] = dol_htmlcleanlastbr($_POST["desc-".$key]); + $object->multilangs[$key]["note"] = dol_htmlcleanlastbr($_POST["note-".$key]); } } - if ( $product->setMultiLangs() > 0 ) + if ( $object->setMultiLangs() > 0 ) { $action = ''; } else { $action = 'edit'; - setEventMessage($product->error,'errors'); + setEventMessage($object->error,'errors'); } } @@ -139,24 +139,24 @@ if ($action == 'vdelete' && $cancel != $langs->trans("Cancel") && ($user->rights->produit->creer || $user->rights->service->creer)) { - $product = new Product($db); - $product->fetch($id); + $object = new Product($db); + $object->fetch($id); $langtodelete=GETPOST('langdel','alpha'); - if ( $product->delMultiLangs($langtodelete) > 0 ) + if ( $object->delMultiLangs($langtodelete) > 0 ) { $action = ''; } else { $action = 'edit'; - setEventMessage($product->error,'errors'); + setEventMessage($object->error,'errors'); } } -$product = new Product($db); -$result = $product->fetch($id,$ref); +$object = new Product($db); +$result = $object->fetch($id,$ref); /* @@ -168,20 +168,10 @@ llxHeader("","",$langs->trans("Translation")); $form = new Form($db); $formadmin=new FormAdmin($db); -$head=product_prepare_head($product); -$titre=$langs->trans("CardProduct".$product->type); -$picto=($product->type==Product::TYPE_SERVICE?'service':'product'); -dol_fiche_head($head, 'translation', $titre, 0, $picto); +$head=product_prepare_head($object); +$titre=$langs->trans("CardProduct".$object->type); +$picto=($object->type==Product::TYPE_SERVICE?'service':'product'); -print ''; - -// Reference -print ''; -print ''; -print ''; -print '
'.$langs->trans("Ref").''; -print $form->showrefnav($product,'ref','',1,'ref'); -print '
'; if ($action == 'edit') { @@ -191,33 +181,40 @@ if ($action == 'edit') print ''; print ''; print ''; - print ''; + print ''; - if (! empty($product->multilangs)) + dol_fiche_head($head, 'translation', $titre, 0, $picto); + + dol_banner_tab($object, 'ref', '', ($user->societe_id?0:1), 'ref'); + + if (! empty($object->multilangs)) { - foreach ($product->multilangs as $key => $value) + foreach ($object->multilangs as $key => $value) { - print "
".$langs->trans('Language_'.$key)." :
"; + $s=picto_from_langcode($key); + print "
".($s?$s.' ':'')." ".$langs->trans('Language_'.$key).": ".'
'.img_delete('', '')."
"; + print ''; - print ''; + print ''; print ''; print ''; - print ''; print '
'.$langs->trans('Label').'
'.$langs->trans('Label').'
'.$langs->trans('Description').''; - $doleditor = new DolEditor("desc-$key", $product->multilangs[$key]["description"], '', 160, 'dolibarr_notes', '', false, true, $conf->global->FCKEDITOR_ENABLE_PRODUCTDESC, 3, 80); + $doleditor = new DolEditor("desc-$key", $object->multilangs[$key]["description"], '', 160, 'dolibarr_notes', '', false, true, $conf->global->FCKEDITOR_ENABLE_PRODUCTDESC, 3, 80); $doleditor->Create(); print '
'.$langs->trans('Note').''; - $doleditor = new DolEditor("note-$key", $product->multilangs[$key]["note"], '', 160, 'dolibarr_notes', '', false, true, $conf->global->FCKEDITOR_ENABLE_PRODUCTDESC, 3, 80); + $doleditor = new DolEditor("note-$key", $object->multilangs[$key]["note"], '', 160, 'dolibarr_notes', '', false, true, $conf->global->FCKEDITOR_ENABLE_PRODUCTDESC, 3, 80); $doleditor->Create(); print '
'.$langs->trans("Delete").'
'; } } - print '
'; + dol_fiche_end(); + + print '
'; print ''; print '     '; print ''; @@ -228,25 +225,30 @@ if ($action == 'edit') } else { - $cnt_trans = 0; - if (! empty($product->multilangs)) + dol_fiche_head($head, 'translation', $titre, 0, $picto); + + dol_banner_tab($object, 'ref', '', ($user->societe_id?0:1), 'ref'); + + $cnt_trans = 0; + if (! empty($object->multilangs)) { - foreach ($product->multilangs as $key => $value) + foreach ($object->multilangs as $key => $value) { $cnt_trans++; $s=picto_from_langcode($key); - print "
".($s?$s.' ':'')." ".$langs->trans('Language_'.$key).": ".''.img_delete('', '')."
"; + print "
".($s?$s.' ':'')." ".$langs->trans('Language_'.$key).": ".''.img_delete('', '')."
"; print ''; - print ''; - print ''; - print ''; + print ''; + print ''; + print ''; print '
'.$langs->trans('Label').''.$product->multilangs[$key]["label"].'
'.$langs->trans('Description').''.$product->multilangs[$key]["description"].'
'.$langs->trans('Note').''.$product->multilangs[$key]["note"].'
'.$langs->trans('Label').''.$object->multilangs[$key]["label"].'
'.$langs->trans('Description').''.$object->multilangs[$key]["description"].'
'.$langs->trans('Note').''.$object->multilangs[$key]["note"].'
'; } } if (! $cnt_trans) print '
'. $langs->trans('NoTranslation'); + + dol_fiche_end(); } -print "
\n"; /* ************************************************************************** */ @@ -260,8 +262,8 @@ print "\n
\n"; if ($action == '') if ($user->rights->produit->creer || $user->rights->service->creer) { - print ''.$langs->trans("Add").''; - print ''.$langs->trans("Update").''; + print ''.$langs->trans("Add").''; + print ''.$langs->trans("Update").''; } print "\n
\n"; @@ -284,7 +286,7 @@ if ($action == 'add' && ($user->rights->produit->creer || $user->rights->service print ''; print ''; print ''; print ''; + $suggestedref=($_POST["ref"]?$_POST["ref"]:$defaultref); + print ''; // Label - print ''; + print ''; // Thirdparty print '
'.$langs->trans('Language').''; - print $formadmin->select_language('','forcelangprod',0,$product->multilangs,1); + print $formadmin->select_language('','forcelangprod',0,$object->multilangs,1); print '
'.$langs->trans('Label').'
'.$langs->trans('Description').''; diff --git a/htdocs/projet/activity/perweek.php b/htdocs/projet/activity/perweek.php index 6201c601d18..a8f531cc790 100644 --- a/htdocs/projet/activity/perweek.php +++ b/htdocs/projet/activity/perweek.php @@ -34,6 +34,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/class/html.formprojet.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/html.formcompany.class.php'; $langs->load('projects'); +$langs->load('users'); $action=GETPOST('action'); $mode=GETPOST("mode"); diff --git a/htdocs/projet/admin/project.php b/htdocs/projet/admin/project.php index 686e764978a..f42fc7c4720 100644 --- a/htdocs/projet/admin/project.php +++ b/htdocs/projet/admin/project.php @@ -104,7 +104,7 @@ else if ($action == 'specimen') $project = new Project($db); $project->initAsSpecimen(); - + // Search template files $file=''; $classname=''; $filefound=0; $dirmodels=array_merge(array('/'),(array) $conf->modules_parts['models']); diff --git a/htdocs/projet/card.php b/htdocs/projet/card.php index 748f91dbefe..c05cb6948a5 100644 --- a/htdocs/projet/card.php +++ b/htdocs/projet/card.php @@ -450,10 +450,13 @@ if ($action == 'create' && $user->rights->projet->creer) if (is_numeric($defaultref) && $defaultref <= 0) $defaultref=''; // Ref - print '
'.$langs->trans("Ref").'
'.$langs->trans("Ref").''; + print ' '.$form->textwithpicto('', $langs->trans("YouCanCompleteRef", $suggestedref)); + print '
'.$langs->trans("Label").'
'.$langs->trans("Label").'
'.$langs->trans("ThirdParty").''; @@ -617,12 +620,15 @@ else print ''; // Ref + $suggestedref=$object->ref; print ''; - print ''; + print ''; // Label print ''; - print ''; + print ''; // Thirdparty print '
'.$langs->trans("Ref").'
'; + print ' '.$form->textwithpicto('', $langs->trans("YouCanCompleteRef", $suggestedref)); + print '
'.$langs->trans("Label").'
'.$langs->trans("ThirdParty").''; diff --git a/htdocs/projet/class/project.class.php b/htdocs/projet/class/project.class.php index 7ac7fa66cea..aca5fe67d0d 100644 --- a/htdocs/projet/class/project.class.php +++ b/htdocs/projet/class/project.class.php @@ -453,7 +453,9 @@ class Project extends CommonObject function get_element_list($type, $tablename, $datefieldname='', $dates='', $datee='') { $elements = array(); - + + if ($this->id <= 0) return $elements; + if ($type == 'agenda') { $sql = "SELECT id as rowid FROM " . MAIN_DB_PREFIX . "actioncomm WHERE fk_project=" . $this->id; @@ -929,6 +931,7 @@ class Project extends CommonObject $this->date_c = $now; $this->date_m = $now; $this->date_start = $now; + $this->date_end = $now + (3600 * 24 * 365); $this->note_public = 'SPECIMEN'; $this->fk_ele = 20000; $this->opp_amount = 20000; diff --git a/htdocs/projet/list.php b/htdocs/projet/list.php index 17aa5cac222..7481a6bf05c 100644 --- a/htdocs/projet/list.php +++ b/htdocs/projet/list.php @@ -259,7 +259,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); } $colspan=8; diff --git a/htdocs/public/emailing/mailing-read.php b/htdocs/public/emailing/mailing-read.php index 1e991305658..4aa388ecf24 100644 --- a/htdocs/public/emailing/mailing-read.php +++ b/htdocs/public/emailing/mailing-read.php @@ -72,13 +72,13 @@ if (! empty($tag)) $resql=$db->query($sql); //Update status communication of thirdparty prospect - $sql = "UPDATE ".MAIN_DB_PREFIX."societe SET fk_stcomm=3 WHERE rowid IN (SELECT source_id FROM ".MAIN_DB_PREFIX."mailing_cibles WHERE tag='".$db->escape($tag)."' AND source_type='thirdparty' AND source_id is not null)"; + $sql = "UPDATE ".MAIN_DB_PREFIX."societe SET fk_stcomm=3 WHERE fk_stcomm != -1 AND rowid IN (SELECT source_id FROM ".MAIN_DB_PREFIX."mailing_cibles WHERE tag='".$db->escape($tag)."' AND source_type='thirdparty' AND source_id is not null)"; dol_syslog("public/emailing/mailing-read.php : Mail read thirdparty : ".$sql, LOG_DEBUG); $resql=$db->query($sql); //Update status communication of contact prospect - $sql = "UPDATE ".MAIN_DB_PREFIX."societe SET fk_stcomm=3 WHERE rowid IN (SELECT sc.fk_soc FROM ".MAIN_DB_PREFIX."socpeople AS sc INNER JOIN ".MAIN_DB_PREFIX."mailing_cibles AS mc ON mc.tag = '".$db->escape($tag)."' AND mc.source_type = 'contact' AND mc.source_id = sc.rowid)"; + $sql = "UPDATE ".MAIN_DB_PREFIX."societe SET fk_stcomm=3 WHERE fk_stcomm != -1 AND rowid IN (SELECT sc.fk_soc FROM ".MAIN_DB_PREFIX."socpeople AS sc INNER JOIN ".MAIN_DB_PREFIX."mailing_cibles AS mc ON mc.tag = '".$db->escape($tag)."' AND mc.source_type = 'contact' AND mc.source_id = sc.rowid)"; dol_syslog("public/emailing/mailing-read.php : Mail read contact : ".$sql, LOG_DEBUG); $resql=$db->query($sql); diff --git a/htdocs/public/paybox/newpayment.php b/htdocs/public/paybox/newpayment.php index 42ea013eade..481fd17f049 100644 --- a/htdocs/public/paybox/newpayment.php +++ b/htdocs/public/paybox/newpayment.php @@ -583,7 +583,7 @@ if (GETPOST("source") == 'contractline' && $valid) $duration=''; if ($contractline->fk_product) { - if ($product->isservice() && $product->duration_value > 0) + if ($product->isService() && $product->duration_value > 0) { $label=$langs->trans("Duration"); diff --git a/htdocs/public/paypal/newpayment.php b/htdocs/public/paypal/newpayment.php index 23f81c4295b..dcb43c07170 100644 --- a/htdocs/public/paypal/newpayment.php +++ b/htdocs/public/paypal/newpayment.php @@ -720,7 +720,7 @@ if (GETPOST("source") == 'contractline' && $valid) $duration=''; if ($contractline->fk_product) { - if ($product->isservice() && $product->duration_value > 0) + if ($product->isService() && $product->duration_value > 0) { $label=$langs->trans("Duration"); diff --git a/htdocs/public/paypal/paymentok.php b/htdocs/public/paypal/paymentok.php index f59bab46bd1..90f13aa6f17 100644 --- a/htdocs/public/paypal/paymentok.php +++ b/htdocs/public/paypal/paymentok.php @@ -224,11 +224,11 @@ if ($PAYPALTOKEN) $ErrorLongMsg = urldecode($resArray["L_LONGMESSAGE0"]); $ErrorSeverityCode = urldecode($resArray["L_SEVERITYCODE0"]); - echo "DoExpressCheckoutPayment API call failed.
\n"; - echo "Detailed Error Message: " . $ErrorLongMsg."
\n"; - echo "Short Error Message: " . $ErrorShortMsg."
\n"; - echo "Error Code: " . $ErrorCode."
\n"; - echo "Error Severity Code: " . $ErrorSeverityCode."
\n"; + echo $langs->trans('DoExpressCheckoutPaymentAPICallFailed') . "
\n"; + echo $langs->trans('DetailedErrorMessage') . ": " . $ErrorLongMsg."
\n"; + echo $langs->trans('ShortErrorMessage') . ": " . $ErrorShortMsg."
\n"; + echo $langs->trans('ErrorCode') . ": " . $ErrorCode."
\n"; + echo $langs->trans('ErrorSeverityCode') . ": " . $ErrorSeverityCode."
\n"; if ($mysoc->email) echo "\nPlease, send a screenshot of this page to ".$mysoc->email."
\n"; diff --git a/htdocs/public/test/test_forms.php b/htdocs/public/test/test_forms.php index f1c00f94acf..7fec8e895b6 100644 --- a/htdocs/public/test/test_forms.php +++ b/htdocs/public/test/test_forms.php @@ -68,7 +68,6 @@ print "Test 4d: a select with ajax refresh and with onchange call of url
\n"; $selected=-1; print $form->selectArrayAjax('testselectc', DOL_URL_ROOT.'/core/ajax/selectsearchbox.php', $selected, 'style="min-width: 250px;"', '', 0, 1, '', 1); - print '

'."\n"; // Test5a: form->select_thirdparty diff --git a/htdocs/societe/class/societe.class.php b/htdocs/societe/class/societe.class.php index fb99f819af2..57049610390 100644 --- a/htdocs/societe/class/societe.class.php +++ b/htdocs/societe/class/societe.class.php @@ -1760,7 +1760,7 @@ class Societe extends CommonObject if (! empty($conf->dol_no_mouse_hover)) $notooltip=1; - if ($conf->global->SOCIETE_ADD_REF_IN_LIST && (!empty($withpicto))) + if (! empty($conf->global->SOCIETE_ADD_REF_IN_LIST) && (!empty($withpicto))) { if (($this->client) && (! empty ( $this->code_client ))) { $code = $this->code_client . ' - '; @@ -1771,9 +1771,7 @@ class Societe extends CommonObject $name =$code.' '.$name; } - if (!empty($this->name_alias)) { - $name .= ' ('.$this->name_alias.')'; - } + if (!empty($this->name_alias)) $name .= ' ('.$this->name_alias.')'; $result=''; $label=''; $link=''; $linkend=''; diff --git a/htdocs/societe/consumption.php b/htdocs/societe/consumption.php index e6207782e9c..8cfe687a60b 100644 --- a/htdocs/societe/consumption.php +++ b/htdocs/societe/consumption.php @@ -288,7 +288,7 @@ $sql = $sql_select; $sql.= ' d.description as description,'; if ($type_element != 'fichinter' && $type_element != 'contract') $sql.= ' d.label, d.fk_product as product_id, d.fk_product as fk_product, d.info_bits, d.date_start, d.date_end, d.qty, d.qty as prod_qty,'; if ($type_element == 'contract') $sql.= ' d.label, d.fk_product as product_id, d.fk_product as fk_product, d.info_bits, d.date_ouverture as date_start, d.date_cloture as date_end, d.qty, d.qty as prod_qty,'; -if ($type_element != 'fichinter') $sql.= ' p.ref as ref, p.rowid as prod_id, p.rowid as fk_product, p.fk_product_type as prod_type, p.fk_product_type as fk_product_type,'; +if ($type_element != 'fichinter') $sql.= ' p.ref as ref, p.rowid as prod_id, p.rowid as fk_product, p.fk_product_type as prod_type, p.fk_product_type as fk_product_type, p.entity as pentity,'; $sql.= " s.rowid as socid "; if ($type_element != 'fichinter') $sql.= ", p.ref as prod_ref, p.label as product_label"; $sql.= " FROM ".MAIN_DB_PREFIX."societe as s, ".$tables_from; @@ -405,6 +405,7 @@ if ($sql_select) $product_static->type=$objp->fk_product_type; $product_static->id=$objp->fk_product; $product_static->ref=$objp->ref; + $product_static->entity=$objp->pentity; $text=$product_static->getNomUrl(1); } diff --git a/htdocs/societe/index.php b/htdocs/societe/index.php index ebe4b4c0342..9556a95b826 100644 --- a/htdocs/societe/index.php +++ b/htdocs/societe/index.php @@ -60,7 +60,7 @@ print '
'; // Search thirdparty if (! empty($conf->societe->enabled) && $user->rights->societe->lire) { - $listofsearchfields['search_thirdparty']=array('text'=>'Thirdparty'); + $listofsearchfields['search_thirdparty']=array('text'=>'ThirdParty'); } // Search contact/address if (! empty($conf->societe->enabled) && $user->rights->societe->lire) diff --git a/htdocs/societe/list.php b/htdocs/societe/list.php index 0e102af33f9..3d234728a70 100644 --- a/htdocs/societe/list.php +++ b/htdocs/societe/list.php @@ -61,11 +61,10 @@ $search_idprof5=trim(GETPOST('search_idprof5')); $search_idprof6=trim(GETPOST('search_idprof6')); $search_sale=trim(GETPOST("search_sale",'int')); $search_categ=trim(GETPOST("search_categ",'int')); -$search_type=trim(GETPOST('search_type')); $search_country=GETPOST("search_country",'int'); $search_type_thirdparty=GETPOST("search_type_thirdparty",'int'); -$search_type=GETPOST('search_type','alpha'); $search_status=GETPOST("search_status",'int'); +$search_type=GETPOST('search_type','alpha'); $search_level_from = GETPOST("search_level_from","alpha"); $search_level_to = GETPOST("search_level_to","alpha"); $search_stcomm=GETPOST('search_stcomm','int'); @@ -75,13 +74,14 @@ $optioncss=GETPOST('optioncss','alpha'); $mode=GETPOST("mode"); $action=GETPOST('action'); +$limit = GETPOST("limit")?GETPOST("limit","int"):$conf->liste_limit; $sortfield=GETPOST("sortfield",'alpha'); $sortorder=GETPOST("sortorder",'alpha'); $page=GETPOST("page",'int'); if (! $sortorder) $sortorder="ASC"; if (! $sortfield) $sortfield="s.nom"; if ($page == -1) { $page = 0 ; } -$offset = $conf->liste_limit * $page ; +$offset = $limit * $page ; $pageprev = $page - 1; $pagenext = $page + 1; @@ -147,56 +147,6 @@ if (empty($reshook)) } } -// special search -/*if ($mode == 'search') -{ - $sql = "SELECT s.rowid"; - $sql.= " FROM ".MAIN_DB_PREFIX."societe as s"; - if ($search_sale || (!$user->rights->societe->client->voir && !$socid)) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; - // We'll need this table joined to the select in order to filter by categ - if ($search_categ) $sql.= ", ".MAIN_DB_PREFIX."categorie_societe as cs"; - $sql.= " WHERE s.entity IN (".getEntity('societe', 1).")"; - // sall criteria - $sql.= natural_search($fields, $sall); - - if (!$user->rights->societe->client->voir && !$socid) $sql.= " AND s.rowid = sc.fk_soc AND sc.fk_user = " .$user->id; - if ($socid) $sql.= " AND s.rowid = ".$socid; - if ($search_sale) $sql.= " AND s.rowid = sc.fk_soc"; // Join for the needed table to filter by sale - if ($search_categ) $sql.= " AND s.rowid = cs.fk_soc"; // Join for the needed table to filter by categ - if (! $user->rights->societe->lire || ! $user->rights->fournisseur->lire) - { - if (! $user->rights->fournisseur->lire) $sql.=" AND s.fournisseur != 1"; - } - // Insert sale filter - if ($search_sale) - { - $sql .= " AND sc.fk_user = ".$search_sale; - } - // Insert categ filter - if ($search_categ) - { - $sql .= " AND cs.fk_categorie = ".$search_categ; - } - // Filter on type of thirdparty - if ($search_type > 0 && in_array($search_type,array('1,3','2,3'))) $sql .= " AND s.client IN (".$db->escape($search_type).")"; - if ($search_type > 0 && in_array($search_type,array('4'))) $sql .= " AND s.fournisseur = 1"; - if ($search_type == '0') $sql .= " AND s.client = 0 AND s.fournisseur = 0"; - - $result=$db->query($sql); - if ($result) - { - if ($db->num_rows($result) == 1) - { - $obj = $db->fetch_object($result); - $socid = $obj->rowid; - header("Location: ".DOL_URL_ROOT."/societe/soc.php?socid=".$socid); - exit; - } - $db->free($result); - } -} -*/ - // 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 { @@ -346,13 +296,13 @@ if ($search_sale) $sql .= ", sc.fk_soc, sc.fk_user"; // We'll need these fields in order to filter by categ if ($search_categ) $sql .= ", cs.fk_categorie, cs.fk_soc"; // Add fields from extrafields -foreach ($extrafields->attribute_list as $key => $val) $sql.=",ef.".$key.' as options_'.$key; +foreach ($extrafields->attribute_label as $key => $val) $sql.=",ef.".$key.' as options_'.$key; // Add fields from hooks $parameters=array(); $reshook=$hookmanager->executeHooks('printFieldListSelect',$parameters); // Note that $action and $object may have been modified by hook $sql.=$hookmanager->resPrint; $sql.= " FROM ".MAIN_DB_PREFIX."societe as s"; -if (is_array($extrafields->attribute_list) && count($extrafields->attribute_list)) $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."societe_extrafields as ef on (s.rowid = ef.fk_object)"; +if (is_array($extrafields->attribute_label) && count($extrafields->attribute_label)) $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."societe_extrafields as ef on (s.rowid = ef.fk_object)"; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."c_country as country on (country.rowid = s.fk_pays) "; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."c_typent as typent on (typent.id = s.fk_typent) "; $sql.= " ,".MAIN_DB_PREFIX."c_stcomm as st"; @@ -494,7 +444,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); } // Filter on categories @@ -579,12 +529,20 @@ if ($resql) 's.tms'=>array('label'=>$langs->trans("DateModificationShort"), 'checked'=>0, 'position'=>500), 's.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]); + } + } $varpage=empty($contextpage)?$_SERVER["PHP_SELF"]:$contextpage; $selectedfields=$form->multiSelectArrayWithCheckbox('selectedfields', $arrayfields, $varpage); // This also change content of $arrayfields print ''; print ''; - if (! empty($arrayfields['s.nom']['checked'])) print_liste_field_titre($langs->trans("Company"),$_SERVER["PHP_SELF"],"s.nom","",$param,"",$sortfield,$sortorder); + if (! empty($arrayfields['s.nom']['checked'])) print_liste_field_titre($langs->trans("Company"), $_SERVER["PHP_SELF"],"s.nom","",$param,"",$sortfield,$sortorder); if (! empty($arrayfields['s.barcode']['checked'])) print_liste_field_titre($langs->trans("Gencod"), $_SERVER["PHP_SELF"], "s.barcode",$param,'','',$sortfield,$sortorder); if (! empty($arrayfields['s.code_client']['checked'])) print_liste_field_titre($arrayfields['s.code_client']['label'],$_SERVER["PHP_SELF"],"s.code_client","",$param,'',$sortfield,$sortorder); if (! empty($arrayfields['s.code_fournisseur']['checked'])) print_liste_field_titre($arrayfields['s.code_fournisseur']['label'],$_SERVER["PHP_SELF"],"s.code_fournisseur","",$param,'',$sortfield,$sortorder); @@ -604,14 +562,15 @@ if ($resql) if (! empty($arrayfields['s.fk_prospectlevel']['checked'])) print_liste_field_titre($arrayfields['s.fk_prospectlevel']['label'],$_SERVER["PHP_SELF"],"s.fk_prospectlevel","",$param,'align="center"',$sortfield,$sortorder); if (! empty($arrayfields['s.fk_stcomm']['checked'])) print_liste_field_titre($arrayfields['s.fk_stcomm']['label'],$_SERVER["PHP_SELF"],"s.fk_stcomm","",$param,'align="center"',$sortfield,$sortorder); // Extra fields - if (is_array($extrafields->attribute_list) && count($extrafields->attribute_list)) + if (is_array($extrafields->attribute_label) && count($extrafields->attribute_label)) { - foreach($extrafields->attribute_list as $key => $val) + foreach($extrafields->attribute_label as $key => $val) { - if ($val) - { - if (! empty($arrayfields["ef.".$key]['checked'])) print_liste_field_titre($extralabels[$key],$_SERVER["PHP_SELF"],"ef.".$key,"",$param,"",$sortfield,$sortorder); - } + 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 @@ -790,7 +749,18 @@ if ($resql) print $form->selectarray('search_stcomm', $arraystcomm, $search_stcomm, -2); print ''; } - + // 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 ''; + } + } + } // Fields from hook $parameters=array('arrayfields'=>$arrayfields); $reshook=$hookmanager->executeHooks('printFieldListOption',$parameters); // Note that $action and $object may have been modified by hook @@ -929,18 +899,21 @@ if ($resql) if (($obj->client==1 || $obj->client==3) && empty($conf->global->SOCIETE_DISABLE_CUSTOMERS)) { $companystatic->name=$langs->trans("Customer"); + $companystatic->name_alias=''; $s.=$companystatic->getNomUrl(0,'customer'); } if (($obj->client==2 || $obj->client==3) && empty($conf->global->SOCIETE_DISABLE_PROSPECTS)) { if ($s) $s.=" / "; $companystatic->name=$langs->trans("Prospect"); - $s.=$companystatic->getNomUrl(0,'prospect'); + $companystatic->name_alias=''; + $s.=$companystatic->getNomUrl(0,'prospect'); } if (! empty($conf->fournisseur->enabled) && $obj->fournisseur) { if ($s) $s.=" / "; $companystatic->name=$langs->trans("Supplier"); + $companystatic->name_alias=''; $s.=$companystatic->getNomUrl(0,'supplier'); } print $s; @@ -966,7 +939,23 @@ if ($resql) } print ''; } - + // 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 'getAlignFlag($key); + if ($align) print ' align="'.$align.'"'; + print '>'; + $tmpkey='options_'.$key; + print $extrafields->showOutputField($key, $obj->$tmpkey, '', 1); + print ''; + } + } + } // 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 @@ -975,14 +964,14 @@ if ($resql) if (! empty($arrayfields['s.datec']['checked'])) { print ''; } // Date modification if (! empty($arrayfields['s.tms']['checked'])) { print ''; } // Status diff --git a/htdocs/societe/price.php b/htdocs/societe/price.php index 159dcb69d18..64ac2fbb256 100644 --- a/htdocs/societe/price.php +++ b/htdocs/societe/price.php @@ -44,16 +44,16 @@ $langs->load("bills"); $action = GETPOST('action', 'alpha'); // Security check -$socid = GETPOST('socid', 'int'); +$socid = GETPOST('socid', 'int')?GETPOST('socid', 'int'):GETPOST('id', 'int'); if ($user->societe_id) $socid = $user->societe_id; $result = restrictedArea($user, 'societe', $socid, '&societe'); -/** - * *************************************************** - * Price by customer - * **************************************************** + +/* + * Actions */ + if ($action == 'add_customer_price_confirm' && ! $_POST ["cancel"] && ($user->rights->produit->creer || $user->rights->service->creer)) { $update_child_soc = GETPOST('updatechildprice'); @@ -114,6 +114,7 @@ if ($action == 'update_customer_price_confirm' && ! $_POST ["cancel"] && ($user- $action = ''; } + /* * View */ diff --git a/htdocs/theme/common/dolibarr_logo_bw.png b/htdocs/theme/common/dolibarr_logo_bw.png new file mode 100644 index 00000000000..238a1899c00 Binary files /dev/null and b/htdocs/theme/common/dolibarr_logo_bw.png differ diff --git a/htdocs/theme/eldy/style.css.php b/htdocs/theme/eldy/style.css.php index ce83c4c41f2..c245fce73c8 100644 --- a/htdocs/theme/eldy/style.css.php +++ b/htdocs/theme/eldy/style.css.php @@ -641,7 +641,7 @@ div.divphotoref { div.statusref { float: right; padding-right: 12px; - margin-top: 6px; + margin-top: 7px; margin-bottom: 10px; } img.photoref { @@ -3533,6 +3533,12 @@ a span.select2-chosen { background: #FFFFFF; } +.select2-results { + max-height: 400px; +} +.css-searchselectcombo ul.select2-results { + max-height: none; +} .select2-container-multi.select2-container-disabled .select2-choices { background-color: #FFFFFF; background-image: none; diff --git a/htdocs/theme/md/style.css.php b/htdocs/theme/md/style.css.php index 47da3176126..45a4f755a05 100644 --- a/htdocs/theme/md/style.css.php +++ b/htdocs/theme/md/style.css.php @@ -165,7 +165,7 @@ if ($tmpval <= 360) { $colortextbackvmenu='FFFFFF'; } else { $colortextbackvmenu='111111'; } $tmppart=explode(',',$colorbacktitle1); $tmpval=(! empty($tmppart[1]) ? $tmppart[1] : '')+(! empty($tmppart[2]) ? $tmppart[2] : '')+(! empty($tmppart[3]) ? $tmppart[3] : ''); -if ($tmpval <= 360) { $colortexttitle='FFFFFF'; $colorshadowtitle='888888'; } +if ($tmpval <= 260) { $colortexttitle='FFFFFF'; $colorshadowtitle='888888'; } else { $colortexttitle='111111'; $colorshadowtitle='FFFFFF'; } $tmppart=explode(',',$colorbacktabcard1); $tmpval=(! empty($tmppart[1]) ? $tmppart[1] : '')+(! empty($tmppart[2]) ? $tmppart[2] : '')+(! empty($tmppart[3]) ? $tmppart[3] : ''); @@ -687,7 +687,7 @@ div.divphotoref { div.statusref { float: right; padding-right: 12px; - margin-top: 7px; + margin-top: 8px; margin-bottom: 10px; } img.photoref { @@ -3385,6 +3385,12 @@ a span.select2-chosen { background: #FFFFFF; } +.select2-results { + max-height: 400px; +} +.css-searchselectcombo ul.select2-results { + max-height: none; +} .select2-container-multi.select2-container-disabled .select2-choices { background-color: #FFFFFF; background-image: none; diff --git a/htdocs/user/agenda_extsites.php b/htdocs/user/agenda_extsites.php index dc5ec528a21..1dd494cb3e8 100644 --- a/htdocs/user/agenda_extsites.php +++ b/htdocs/user/agenda_extsites.php @@ -153,7 +153,9 @@ $head=user_prepare_head($object); dol_fiche_head($head, 'extsites', $langs->trans("User"), 0, 'user'); -dol_banner_tab($object,'id','',$user->rights->user->user->lire || $user->admin); +$linkback = ''.$langs->trans("BackToList").''; + +dol_banner_tab($object,'id',$linkback,$user->rights->user->user->lire || $user->admin); print '
'; diff --git a/htdocs/user/card.php b/htdocs/user/card.php index 407941c28fd..e1329a591be 100644 --- a/htdocs/user/card.php +++ b/htdocs/user/card.php @@ -92,7 +92,7 @@ $extrafields = new ExtraFields($db); // fetch optionals attributes and labels $extralabels=$extrafields->fetch_name_optionals_label($object->table_element); -// Initialize technical object to manage hooks of thirdparties. Note that conf->hooks_modules contains array array +// Initialize technical object to manage hooks. Note that conf->hooks_modules contains array $hookmanager->initHooks(array('usercard','globalcard')); @@ -697,7 +697,7 @@ if (($action == 'create') || ($action == 'adduserldap')) print ''; // Lastname - print ''; + print ''; print '
'; + print ''; - print dol_print_date($obj->date_creation, 'dayhour'); + print dol_print_date($db->jdate($obj->date_creation), 'dayhour'); print ''; - print dol_print_date($obj->date_update, 'dayhour'); + print dol_print_date($db->jdate($obj->date_update), 'dayhour'); print '
'.$langs->trans("Lastname").''.$langs->trans("Lastname").''; if (! empty($ldap_lastname)) { @@ -1156,7 +1156,9 @@ else { dol_fiche_head($head, 'user', $title, 0, 'user'); - dol_banner_tab($object,'id','',$user->rights->user->user->lire || $user->admin); + $linkback = ''.$langs->trans("BackToList").''; + + dol_banner_tab($object,'id',$linkback,$user->rights->user->user->lire || $user->admin); print '
'; @@ -1166,7 +1168,7 @@ else print ''; // Login - print ''; + print ''; if (! empty($object->ldap_sid) && $object->statut==0) { print ''; @@ -1360,7 +1362,7 @@ else print '
'; print '
'.$langs->trans("Login").'
'.$langs->trans("Login").''.$langs->trans("LoginAccountDisableInDolibarr").'
'; - print ''; + print ''; print ''; print "\n"; diff --git a/htdocs/user/clicktodial.php b/htdocs/user/clicktodial.php index 13aaff9560f..fb3104dc285 100644 --- a/htdocs/user/clicktodial.php +++ b/htdocs/user/clicktodial.php @@ -91,7 +91,9 @@ if ($id > 0) $title = $langs->trans("User"); dol_fiche_head($head, 'clicktodial', $title, 0, 'user'); - dol_banner_tab($object,'id','',$user->rights->user->user->lire || $user->admin); + $linkback = ''.$langs->trans("BackToList").''; + + dol_banner_tab($object,'id',$linkback,$user->rights->user->user->lire || $user->admin); print '
'; diff --git a/htdocs/user/document.php b/htdocs/user/document.php index ef4f6650818..b8152f33a85 100644 --- a/htdocs/user/document.php +++ b/htdocs/user/document.php @@ -129,7 +129,9 @@ if ($object->id) dol_fiche_head($head, 'document', $langs->trans("User"),0,'user'); - dol_banner_tab($object,'id','',$user->rights->user->user->lire || $user->admin); + $linkback = ''.$langs->trans("BackToList").''; + + dol_banner_tab($object,'id',$linkback,$user->rights->user->user->lire || $user->admin); print '
'; diff --git a/htdocs/user/hierarchy.php b/htdocs/user/hierarchy.php index 14b8ec4265b..8ac96a336f4 100644 --- a/htdocs/user/hierarchy.php +++ b/htdocs/user/hierarchy.php @@ -43,7 +43,6 @@ $sall=GETPOST('sall','alpha'); $search_user=GETPOST('search_user','alpha'); $userstatic=new User($db); -$companystatic = new Societe($db); $search_statut=GETPOST('search_statut','int'); if ($search_statut == '') $search_statut='1'; diff --git a/htdocs/user/index.php b/htdocs/user/index.php index 6b618552dc6..9c1828653ac 100644 --- a/htdocs/user/index.php +++ b/htdocs/user/index.php @@ -55,14 +55,15 @@ $optioncss = GETPOST('optioncss','alpha'); if ($search_statut == '') $search_statut='1'; +// Load variable for pagination +$limit = GETPOST("limit")?GETPOST("limit","int"):$conf->liste_limit; $sortfield = GETPOST('sortfield','alpha'); $sortorder = GETPOST('sortorder','alpha'); $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 (! $sortfield) $sortfield="u.login"; if (! $sortorder) $sortorder="ASC"; @@ -78,23 +79,6 @@ $userstatic=new User($db); $companystatic = new Societe($db); $form = new Form($db); -if (GETPOST("button_removefilter_x") || GETPOST("button_removefilter")) // Both test are required to be compatible with all browsers -{ - $search_user=""; - $search_login=""; - $search_lastname=""; - $search_firstname=""; - $search_accountancy_code=""; - $search_email=""; - $search_statut=""; - $search_thirdparty=""; - $search_supervisor=""; - $search_datelastlogin=""; - $search_datepreviouslogin=""; - $search_date_creation=""; - $search_date_update=""; -} - // List of fields to search into when doing a "search in all" $fieldstosearchall = array( 'u.login'=>"Login", @@ -116,6 +100,24 @@ if ($reshook < 0) setEventMessages($hookmanager->error, $hookmanager->errors, 'e include DOL_DOCUMENT_ROOT.'/core/actions_changeselectedfields.inc.php'; +if (GETPOST("button_removefilter_x") || GETPOST("button_removefilter.x") ||GETPOST("button_removefilter")) // All test are required to be compatible with all browsers +{ + $search_user=""; + $search_login=""; + $search_lastname=""; + $search_firstname=""; + $search_accountancy_code=""; + $search_email=""; + $search_statut=""; + $search_thirdparty=""; + $search_supervisor=""; + $search_datelastlogin=""; + $search_datepreviouslogin=""; + $search_date_creation=""; + $search_date_update=""; + $search_array_options=array(); +} + /* @@ -135,12 +137,13 @@ $sql.= " u.tms as date_update, u.datec as date_creation,"; $sql.= " u2.rowid as id2, u2.login as login2, u2.firstname as firstname2, u2.lastname as lastname2, u2.admin as admin2, u2.fk_soc as fk_soc2, u2.email as email2, u2.gender as gender2, u2.photo as photo2, u2.entity as entity2,"; $sql.= " s.nom as name, s.canvas"; // Add fields from extrafields -foreach ($extrafields->attribute_list as $key => $val) $sql.=",ef.".$key.' as options_'.$key; +foreach ($extrafields->attribute_label as $key => $val) $sql.=",ef.".$key.' as options_'.$key; // Add fields from hooks $parameters=array(); $reshook=$hookmanager->executeHooks('printFieldListSelect',$parameters); // Note that $action and $object may have been modified by hook $sql.=$hookmanager->resPrint; $sql.= " FROM ".MAIN_DB_PREFIX."user as u"; +if (is_array($extrafields->attribute_label) && count($extrafields->attribute_label)) $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."user_extrafields as ef on (u.rowid = ef.fk_object)"; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."societe as s ON u.fk_soc = s.rowid"; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."user as u2 ON u.fk_user = u2.rowid"; if(! empty($conf->multicompany->enabled) && $conf->entity == 1 && (! empty($conf->multicompany->transverse_mode) || (! empty($user->admin) && empty($user->entity)))) @@ -236,9 +239,17 @@ if ($result) 'u.tms'=>array('label'=>$langs->trans("DateModificationShort"), 'checked'=>0, 'position'=>500), 'u.statut'=>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]); + } + } $varpage=empty($contextpage)?$_SERVER["PHP_SELF"]:$contextpage; $selectedfields=$form->multiSelectArrayWithCheckbox('selectedfields', $arrayfields, $varpage); // This also change content of $arrayfields - print '
'.$langs->trans("LastConnexion").'
'.$langs->trans("LastConnexion").''.dol_print_date($object->datelastlogin,"dayhour").'
'; + print '
'; print ''; 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); @@ -251,17 +262,18 @@ if ($result) if (! empty($arrayfields['u.datelastlogin']['checked'])) print_liste_field_titre($langs->trans("LastConnexion"),$_SERVER['PHP_SELF'],"u.datelastlogin",$param,"",'align="center"',$sortfield,$sortorder); if (! empty($arrayfields['u.datepreviouslogin']['checked'])) print_liste_field_titre($langs->trans("PreviousConnexion"),$_SERVER['PHP_SELF'],"u.datepreviouslogin",$param,"",'align="center"',$sortfield,$sortorder); // Extra fields - if (is_array($extrafields->attribute_list) && count($extrafields->attribute_list)) + if (is_array($extrafields->attribute_label) && count($extrafields->attribute_label)) { - foreach($extrafields->attribute_list as $key => $val) + foreach($extrafields->attribute_label as $key => $val) { - if ($val) - { - if (! empty($arrayfields["ef.".$key]['checked'])) print_liste_field_titre($extralabels[$key],$_SERVER["PHP_SELF"],"ef.".$key,"",$param,"",$sortfield,$sortorder); - } + 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 + // 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; @@ -313,7 +325,14 @@ if ($result) { print ''; } - + // 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 ''; + } + } // Fields from hook $parameters=array('arrayfields'=>$arrayfields); $reshook=$hookmanager->executeHooks('printFieldListOption',$parameters); // Note that $action and $object may have been modified by hook @@ -480,22 +499,39 @@ if ($result) print ''; } + // 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 'getAlignFlag($key); + if ($align) print ' align="'.$align.'"'; + print '>'; + $tmpkey='options_'.$key; + print $extrafields->showOutputField($key, $obj->$tmpkey, '', 1); + print ''; + } + } + } // 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 + // Date creation if (! empty($arrayfields['u.datec']['checked'])) { print ''; } // Date modification if (! empty($arrayfields['u.tms']['checked'])) { print ''; } // Status diff --git a/htdocs/user/info.php b/htdocs/user/info.php index f069ac4782b..1d10875b3eb 100644 --- a/htdocs/user/info.php +++ b/htdocs/user/info.php @@ -32,7 +32,10 @@ $langs->load("users"); // Security check $id = GETPOST('id','int'); $object = new User($db); -$object->fetch($id); +if ($id > 0 || ! empty($ref)) +{ + $result = $object->fetch($id, $ref); +} // Security check $socid=0; @@ -58,17 +61,18 @@ $form = new Form($db); llxHeader(); -$object->info($id); - $head = user_prepare_head($object); $title = $langs->trans("User"); dol_fiche_head($head, 'info', $title, 0, 'user'); -$linkback = ''.$langs->trans("BackToList").''; +$linkback = ''.$langs->trans("BackToList").''; -dol_banner_tab($object, 'id', $linkback, 1, 'rowid', 'ref', ''); +dol_banner_tab($object, 'id', $linkback, $user->rights->user->user->lire || $user->admin); + + +$object->info($id); // This overwrite ->ref with login instead of id print '
'; diff --git a/htdocs/user/ldap.php b/htdocs/user/ldap.php index 48e4f8fcbb6..968c3e565a5 100644 --- a/htdocs/user/ldap.php +++ b/htdocs/user/ldap.php @@ -93,7 +93,9 @@ $head = user_prepare_head($object); $title = $langs->trans("User"); dol_fiche_head($head, 'ldap', $title, 0, 'user'); -dol_banner_tab($object,'id','',$user->rights->user->user->lire || $user->admin); +$linkback = ''.$langs->trans("BackToList").''; + +dol_banner_tab($object,'id',$linkback,$user->rights->user->user->lire || $user->admin); print '
'; diff --git a/htdocs/user/note.php b/htdocs/user/note.php index 7780227fb00..ccd7eb153a4 100644 --- a/htdocs/user/note.php +++ b/htdocs/user/note.php @@ -89,7 +89,9 @@ if ($id) $title = $langs->trans("User"); dol_fiche_head($head, 'note', $title, 0, 'user'); - dol_banner_tab($object,'id','',$user->rights->user->user->lire || $user->admin); + $linkback = ''.$langs->trans("BackToList").''; + + dol_banner_tab($object,'id',$linkback,$user->rights->user->user->lire || $user->admin); print '
'; diff --git a/htdocs/user/param_ihm.php b/htdocs/user/param_ihm.php index 85b4ba04e84..724f2572be2 100644 --- a/htdocs/user/param_ihm.php +++ b/htdocs/user/param_ihm.php @@ -151,7 +151,9 @@ if ($action == 'edit') { dol_fiche_head($head, 'guisetup', $title, 0, 'user'); - dol_banner_tab($object,'id','',$user->rights->user->user->lire || $user->admin); + $linkback = ''.$langs->trans("BackToList").''; + + dol_banner_tab($object,'id',$linkback,$user->rights->user->user->lire || $user->admin); print '
'; @@ -251,7 +253,9 @@ else { dol_fiche_head($head, 'guisetup', $title, 0, 'user'); - dol_banner_tab($object,'id','',$user->rights->user->user->lire || $user->admin); + $linkback = ''.$langs->trans("BackToList").''; + + dol_banner_tab($object,'id',$linkback,$user->rights->user->user->lire || $user->admin); print '
'; diff --git a/htdocs/user/perms.php b/htdocs/user/perms.php index 750035e2dda..ae32a624175 100644 --- a/htdocs/user/perms.php +++ b/htdocs/user/perms.php @@ -256,8 +256,9 @@ else * Ecran ajout/suppression permission */ +$linkback = ''.$langs->trans("BackToList").''; -dol_banner_tab($object,'id','',$user->rights->user->user->lire || $user->admin); +dol_banner_tab($object,'id',$linkback,$user->rights->user->user->lire || $user->admin); print '
'; diff --git a/scripts/members/sync_members_ldap2dolibarr.php b/scripts/members/sync_members_ldap2dolibarr.php index cf18a75e508..b6a27250557 100755 --- a/scripts/members/sync_members_ldap2dolibarr.php +++ b/scripts/members/sync_members_ldap2dolibarr.php @@ -2,7 +2,7 @@ - * Copyright (C) 2006-2010 Laurent Destailleur + * Copyright (C) 2006-2015 Laurent Destailleur * * 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 @@ -115,7 +115,8 @@ print "port=".$conf->global->LDAP_SERVER_PORT."\n"; print "login=".$conf->global->LDAP_ADMIN_DN."\n"; print "pass=".preg_replace('/./i','*',$conf->global->LDAP_ADMIN_PASS)."\n"; print "DN to extract=".$conf->global->LDAP_MEMBER_DN."\n"; -print 'Filter=('.$conf->global->LDAP_KEY_MEMBERS.'=*)'."\n"; +if (! empty($conf->global->LDAP_MEMBER_FILTER)) print 'Filter=('.$conf->global->LDAP_MEMBER_FILTER.')'."\n"; // Note: filter is defined into function getRecords +else print 'Filter=('.$conf->global->LDAP_KEY_MEMBERS.'=*)'."\n"; print "----- To Dolibarr database:\n"; print "type=".$conf->db->type."\n"; print "host=".$conf->db->host."\n"; @@ -191,7 +192,7 @@ if ($result >= 0) // We disable synchro Dolibarr-LDAP $conf->global->LDAP_MEMBER_ACTIVE=0; - $ldaprecords = $ldap->getRecords('*',$conf->global->LDAP_MEMBER_DN, $conf->global->LDAP_KEY_MEMBERS, $required_fields, 0); + $ldaprecords = $ldap->getRecords('*',$conf->global->LDAP_MEMBER_DN, $conf->global->LDAP_KEY_MEMBERS, $required_fields, 'member'); // Fiter on 'member' filter param if (is_array($ldaprecords)) { $db->begin(); diff --git a/scripts/user/sync_users_ldap2dolibarr.php b/scripts/user/sync_users_ldap2dolibarr.php index 53a48cc03ca..48917cc1042 100755 --- a/scripts/user/sync_users_ldap2dolibarr.php +++ b/scripts/user/sync_users_ldap2dolibarr.php @@ -106,7 +106,8 @@ print "port=".$conf->global->LDAP_SERVER_PORT."\n"; print "login=".$conf->global->LDAP_ADMIN_DN."\n"; print "pass=".preg_replace('/./i','*',$conf->global->LDAP_ADMIN_PASS)."\n"; print "DN to extract=".$conf->global->LDAP_USER_DN."\n"; -print 'Filter=('.$conf->global->LDAP_KEY_USERS.'=*)'."\n"; +if (! empty($conf->global->LDAP_FILTER_CONNECTION)) print 'Filter=('.$conf->global->LDAP_FILTER_CONNECTION.')'."\n"; // Note: filter is defined into function getRecords +else print 'Filter=('.$conf->global->LDAP_KEY_USERS.'=*)'."\n"; print "----- To Dolibarr database:\n"; print "type=".$conf->db->type."\n"; print "host=".$conf->db->host."\n"; @@ -177,7 +178,7 @@ if ($result >= 0) // We disable synchro Dolibarr-LDAP $conf->global->LDAP_SYNCHRO_ACTIVE=0; - $ldaprecords = $ldap->getRecords('*',$conf->global->LDAP_USER_DN, $conf->global->LDAP_KEY_USERS, $required_fields, 0); + $ldaprecords = $ldap->getRecords('*',$conf->global->LDAP_USER_DN, $conf->global->LDAP_KEY_USERS, $required_fields, 'user'); // Fiter on 'user' filter param if (is_array($ldaprecords)) { $db->begin();
'.dol_print_date($db->jdate($obj->datepreviouslogin),"dayhour").''; - print dol_print_date($obj->date_creation, 'dayhour'); + print dol_print_date($db->jdate($obj->date_creation), 'dayhour'); print ''; - print dol_print_date($obj->date_update, 'dayhour'); + print dol_print_date($db->jdate($obj->date_update), 'dayhour'); print '