diff --git a/build/api/core/ModuleRequest.php b/build/api/core/ModuleRequest.php index 0b53661..4a79fe0 100644 --- a/build/api/core/ModuleRequest.php +++ b/build/api/core/ModuleRequest.php @@ -4,6 +4,7 @@ use \database\core\DatabaseDriver; use \manager\ManagerError; use \api\core\Checker; + use \database\core\Repo; class ModuleRequest{ diff --git a/build/api/module/download.php b/build/api/module/download.php index d57ab6e..d9ea6e6 100644 --- a/build/api/module/download.php +++ b/build/api/module/download.php @@ -116,17 +116,6 @@ - - - - - - - - - - - /* DOWNLOAD D'UN FICHIER CONTENANT LES DONNEES SELECTIONNEES * * @subjects Liste des identifiants des sujets à prendre en compte @@ -298,9 +287,6 @@ /* EXPORT POUR GEPHI OU AUTRE LOGICIEL SUR LE PRINCIPE NODES+EDGES * * @subjects Liste des identifiants des sujets à prendre en compte - * @phone Si TRUE, prend en compte les données des questionnaires cellulaires - * @facebook Si TRUE, prend en compte les données des questionnaires facebook - * @survey Si TRUE, prend en compte les données des questionnaires ResTIC * @all Si TRUE, prend en compte tous les sujets (annule @subjects) * * @return data Retourne une archive .zip contenant toutes les données sélectionnées @@ -309,15 +295,12 @@ extract($params); /* (0) Gestion du formattage des paramètres */ - $subjects = !is_array($subjects) ? [] : $subjects; - $phone = !is_bool($phone) ? false : $phone; - $facebook = !is_bool($facebook) ? false : $facebook; - $survey = !is_bool($survey) ? false : $survey; - $all = !is_bool($all) ? false : $all; + $subjects = !is_array($subjects) ? [] : $subjects; + $all = !is_bool($all) ? false : $all; /* [0] On récupère le dictionnaire =========================================================*/ - $dict = file_get_contents(__BUILD__.'/src/dynamic/dictionary.json'); + $dict = file_get_contents(__BUILD__.'/lightdb/storage/dictionary.json'); /* (2) Si une erreur pour le fichier de conf */ if( $dict === false ) @@ -331,184 +314,114 @@ return [ 'ModuleError' => ManagerError::ParsingFailed ]; - /* [1] On construit l'arborescence des données + /* [1] Initialisation =========================================================*/ + /* (1) Fichiers de sortie */ $output = [ - 'common_' => [ - 'contacts' => '', - 'relations' => '', - 'dict' => '' - ], - 'logs/' => [] // Contiendra les journaux d'appels + 'gephi.nodes' => '', // contiendra les contacts et leurs données + 'gephi.edges' => '', // contiendra les relations + 'dict' => '' // contiendra le dictionnaire de valeurs ]; + /* (2) Base de données */ + $subjectdb = new lightdb('subject'); + $contactdb = new lightdb('contact'); - /* [2] On construit les fichiers de chaque sujet DE TELEPHONE + /* [2] On construit la liste des sujets =========================================================*/ - if( $phone ){ // Si @phone vaut TRUE + $subjectindexes = array_keys($subjectdb->index()); + $subjectids = []; - // On ouvre une instance de la base de données - $db = new lightdb('phone_db'); + /* (1) On récupère tous les sujets si c'est spécifié */ + if( $all ) - // Si on doit prendre tous les sujets, on les récupère - if( $all ) - $subjects = array_keys( $db->index() ); + $subjectids = $subjectindexes; - // Pour chaque sujet - foreach($subjects as $s=>$subjectId){ + /* (2) Sinon on retire les ids incorrects */ + else - /* (1) On récupère les données du sujet en cours */ - $subjectData = $db->fetch($subjectId); + foreach($subjects as $i=>$id) + if( in_array($id, $subjectindexes) ) + $subjectids[] = intval($id); - // Si on ne trouve rien, on passe au suivant - if( $subjectData === false ) + + + /* (3) Si aucun sujet restant -> error */ + if( count($subjectids) === 0 ) + return ['ModuleError' => ManagerError::ParamError]; + + + /* [3] Export contacts/relations des sujets selectionnés + =========================================================*/ + foreach($subjectids as $subid){ + + /* (1) On récupère les données du sujet */ + $subject = $subjectdb->fetch($subid); + + // si pas trouvé -> suivant + if( $subject === false ) + continue; + + /* (2) Si aucun contact -> suivant */ + if( !isset($subject['contacts']) || !is_array($subject['contacts']) ) + continue; + + /* (3) Pour chaque contact */ + foreach($subject['contacts'] as $c=>$contactid){ + + // {3.1} On récupère le contact // + $contact = $contactdb->fetch($contactid); + + // si pas trouvé -> suivant + if( $contact === false ) continue; - /* (2) On construit le log s'il existe */ - $output['logs/'][$subjectId] = self::parseCSV($subjectData['logs'], $dict['logs']); + // {3.2} On ajoute le contact au fichier des FICHES // + if( array_key_exists('studies2', $contact) ){ + // On affiche les colonnes pour le premier contact uniquement + $contact['type'] = 'fiche'; + $output['gephi.nodes'] .= self::parseCSV([$contact], $dict['contacts'], strlen($output['gephi.nodes']) == 0 ); - /* (3) On complète les relations */ - // {1} On retire les valeurs ou le type = 0 // - $formattedRelations = []; - foreach($subjectData['relations'] as $i=>$relation) - if( $relation['type'] != 0 ) - array_push($formattedRelations, [ - 'source' => $relation['idA'], - 'target' => $relation['idB'], - 'weight' => ($relation['idA']==$subjectId) ? .1 : 1, // plus de poids aux relations alter/alter - 'type' => 'Undirected' - ]); - - // {2} On ajoute au contenu // - $output['common_']['relations'] .= self::parseCSV($formattedRelations, [], strlen($output['common_']['relations']) == 0 ); // On affiche les colonnes pour la première fois uniquement - - /* (4) On ajoute les contacts à la liste */ - $output['common_']['contacts'] .= self::parseCSV($subjectData['contacts'], $dict['contacts'], strlen($output['common_']['contacts']) == 0 ); // On affiche les colonnes pour la première fois uniquement + // {3.3} On ajoute le contact au fichier des MINI // + }elseif( array_key_exists('studies1', $contact) ){ + // On affiche les colonnes pour le premier contact uniquement + $contact['type'] = 'mini'; + $output['gephi.nodes'] .= self::parseCSV([$contact], $dict['contacts'], strlen($output['gephi.nodes']) == 0 ); + } } - // On ferme l'instance de la base de données - $db->close(); + /* (4) Si aucune relation -> suivant */ + if( !isset($subject['relations']) || !is_array($subject['relations']) ) + continue; + + /* (5) On ajoute les relations */ + foreach($subject['relations'] as $r=>$rel) + + $output['gephi.edges'] .= self::parseCSV( + [[ + 'source' => $rel['idA'], + 'target' => $rel['idB'], + 'weight' => ($rel['idA']==$subid) ? .5 : 1, + 'type' => 'Undirected' + ]], + [], + strlen($output['gephi.edges']) == 0 + ); + + } - - - - - - - /* [3] On construit les fichiers de chaque sujet DE FACEBOOK - =========================================================*/ - if( $facebook ){ // Si @facebook vaut TRUE - - // On ouvre une instance de la base de données - $db = new lightdb('facebook_db'); - - // Si on doit prendre tous les sujets, on les récupère - if( $all ) - $subjects = array_keys( $db->index() ); - - // Pour chaque sujet - foreach($subjects as $s=>$subjectId){ - - /* (1) On récupère les données du sujet en cours */ - $subjectData = $db->fetch($subjectId); - - // Si on ne trouve rien, on passe au suivant - if( $subjectData === false ) - continue; - - /* (2) On complète les relations */ - // {1} On retire les valeurs ou le type = 0 // - $formattedRelations = []; - foreach($subjectData['relations'] as $i=>$relation) - if( $relation['type'] != 0 ) - array_push($formattedRelations, [ - 'source' => $relation['idA'], - 'target' => $relation['idB'], - 'weight' => ($relation['idA']==$subjectId) ? .1 : 1, // plus de poids aux relations alter/alter - 'type' => 'Undirected' - ]); - - // {2} On ajoute au contenu // - $output['common_']['relations'] .= self::parseCSV($formattedRelations, [], strlen($output['common_']['relations']) == 0 ); // On affiche les colonnes pour la première fois uniquement - - /* (3) On ajoute les contacts à la liste */ - $output['common_']['contacts'] .= self::parseCSV($subjectData['contacts'], $dict['contacts'], strlen($output['common_']['contacts']) == 0 ); // On affiche les colonnes pour la première fois uniquement - - } - - // On ferme l'instance de la base de données - $db->close(); - - } - - - - - - - - - /* [4] On construit les fichiers de chaque sujet DE FORMULAIRE - =========================================================*/ - if( $survey ){ // Si @survey vaut TRUE - - // On ouvre une instance de la base de données - $db = new lightdb('survey_db'); - - // Si on doit prendre tous les sujets, on les récupère - if( $all ) - $subjects = array_keys( $db->index() ); - - // Pour chaque sujet - foreach($subjects as $s=>$subjectId){ - - /* (1) On récupère les données du sujet en cours */ - $subjectData = $db->fetch($subjectId); - - // Si on ne trouve rien, on passe au suivant - if( $subjectData === false ) - continue; - - /* (2) On complète les relations */ - // {1} On retire les valeurs ou le type = 0 // - $formattedRelations = []; - foreach($subjectData['relations'] as $i=>$relation) - if( $relation['type'] != 0 ) // On retire les relations ego/alter - array_push($formattedRelations, [ - 'source' => $relation['idA'], - 'target' => $relation['idB'], - 'weight' => ($relation['idA']==$subjectId) ? .1 : 1, // plus de poids aux relations alter/alter - 'type' => 'Undirected' - ]); - - // {2} On ajoute au contenu // - $output['common_']['relations'] .= self::parseCSV($formattedRelations, [], strlen($output['common_']['relations']) == 0 ); // On affiche les colonnes pour la première fois uniquement - - /* (3) On ajoute les contacts à la liste */ - $output['common_']['contacts'] .= self::parseCSV($subjectData['contacts'], $dict['contacts'], strlen($output['common_']['contacts']) == 0 ); // On affiche les colonnes pour la première fois uniquement - - } - - // On ferme l'instance de la base de données - $db->close(); - - } - - - - /* [5] On ajoute le dictionnaire =========================================================*/ - $output['common_']['dict'] .= "\"sheet\";\"field\";\"key\";\"value\"\r\n"; + $output['dict'] .= "\"sheet\";\"field\";\"key\";\"value\"\r\n"; foreach($dict as $ds=>$dataset) foreach($dataset as $f=>$field) foreach($field as $key=>$value) - $output['common_']['dict'] .= "\"$ds\";\"$f\";\"$key\";\"$value\"\r\n"; + $output['dict'] .= "\"$ds\";\"$f\";\"$key\";\"$value\"\r\n"; /* [6] Création de l'archive @@ -517,12 +430,10 @@ $fname = __TMP__.'/'.time().'.zip'; $zip->open($fname, \ZipArchive::CREATE); - foreach($output as $folder=>$files){ - foreach($files as $file=>$content) - if( strlen($content) > 0 ) - $zip->addFromString($folder.$file.'.csv', $content); - } + foreach($output as $file=>$content) + if( strlen($content) > 0 ) + $zip->addFromString($file.'.csv', $content); $zip->close(); diff --git a/build/api/module/input.php b/build/api/module/input.php index 55c6f9d..14bc800 100644 --- a/build/api/module/input.php +++ b/build/api/module/input.php @@ -64,7 +64,7 @@ /* TRAITE LES DONNÉES D'UN FORMULAIRE DE TYPE TÉLÉPHONIQUE * - * @subject Tableau contenant les données du sujet + * @subject Id du sujet concerné * @contacts Tableau contenant les données des contacts * @mini Tableau contenant les données des mini fiches relation * @fiches Tableau contenant les données des fiches relation @@ -91,7 +91,7 @@ $offset = intval($uniqid) + 1; // on enregistre l'id du sujet - $subject_id = intval($subject['subject_id']); + $subject_id = intval($subject); // Contiendra la valeur de l'id maximum $maxId = $offset; @@ -420,10 +420,9 @@ - /* TRAITE LES DONNÉES D'UN FORMULAIRE DE TYPE FACEBOOK * - * @subject Tableau contenant les données du sujet + * @subject Id du sujet concerné * @contacts Tableau contenant les données des contacts * @mini Tableau contenant les données des mini fiches relation * @fiches Tableau contenant les données des fiches relation @@ -450,7 +449,7 @@ $offset = intval($uniqid) + 1; // on enregistre l'id du sujet - $subject_id = intval($subject['subject_id']); + $subject_id = intval($subject); // Contiendra la valeur de l'id maximum $maxId = $offset; diff --git a/build/api/module/subject.php b/build/api/module/subject.php index 1e3866d..f28d9c4 100644 --- a/build/api/module/subject.php +++ b/build/api/module/subject.php @@ -140,7 +140,7 @@ /* [1] On récupère l'id unique actuel =========================================================*/ - $funiq = fopen( __BUILD__.'/src/dynamic/uniqid', 'r+' ); + $funiq = fopen( __BUILD__.'/lightdb/storage/uniqid', 'r+' ); flock($funiq, LOCK_EX); // On verrouille le fichier $uniqid = trim( fgets( $funiq ) ); diff --git a/build/lightdb/storage/subject/data b/build/lightdb/storage/subject/data index 276dd4d..d4b7133 100755 --- a/build/lightdb/storage/subject/data +++ b/build/lightdb/storage/subject/data @@ -1 +1 @@ -{"subject":{"id":3,"name":"Clarisse","surveys":["facebook","phone"],"creation":1479898736},"contacts":[2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,43,44,45,46],"relations":[{"idA":1,"idB":2,"type":6},{"idA":1,"idB":3,"type":6},{"idA":1,"idB":4,"type":6},{"idA":1,"idB":5,"type":6},{"idA":1,"idB":6,"type":6},{"idA":1,"idB":7,"type":6},{"idA":1,"idB":8,"type":6},{"idA":1,"idB":9,"type":6},{"idA":1,"idB":10,"type":6},{"idA":1,"idB":11,"type":6},{"idA":1,"idB":12,"type":6},{"idA":1,"idB":13,"type":6},{"idA":1,"idB":14,"type":6},{"idA":1,"idB":15,"type":6},{"idA":1,"idB":16,"type":6},{"idA":1,"idB":17,"type":6},{"idA":1,"idB":18,"type":6},{"idA":1,"idB":19,"type":6},{"idA":1,"idB":20,"type":6},{"idA":1,"idB":21,"type":6},{"idA":1,"idB":23,"type":7},{"idA":1,"idB":24,"type":7},{"idA":1,"idB":25,"type":7},{"idA":1,"idB":26,"type":7},{"idA":1,"idB":27,"type":7},{"idA":1,"idB":28,"type":7},{"idA":1,"idB":29,"type":7},{"idA":1,"idB":30,"type":7},{"idA":1,"idB":31,"type":7},{"idA":1,"idB":32,"type":7},{"idA":1,"idB":33,"type":7},{"idA":1,"idB":34,"type":7},{"idA":1,"idB":35,"type":7},{"idA":1,"idB":36,"type":7},{"idA":1,"idB":37,"type":7},{"idA":1,"idB":38,"type":7},{"idA":1,"idB":39,"type":7},{"idA":1,"idB":40,"type":7},{"idA":1,"idB":41,"type":7},{"idA":1,"idB":43,"type":3},{"idA":1,"idB":44,"type":3},{"idA":1,"idB":45,"type":3},{"idA":1,"idB":46,"type":3},{"idA":2,"idB":3,"type":1},{"idA":2,"idB":4,"type":1},{"idA":2,"idB":5,"type":0},{"idA":2,"idB":6,"type":0},{"idA":2,"idB":7,"type":0},{"idA":2,"idB":8,"type":0},{"idA":2,"idB":9,"type":0},{"idA":2,"idB":10,"type":0},{"idA":2,"idB":11,"type":0},{"idA":2,"idB":12,"type":0},{"idA":2,"idB":13,"type":1},{"idA":2,"idB":14,"type":0},{"idA":2,"idB":15,"type":0},{"idA":2,"idB":16,"type":0},{"idA":2,"idB":17,"type":0},{"idA":2,"idB":18,"type":0},{"idA":2,"idB":19,"type":0},{"idA":2,"idB":20,"type":0},{"idA":2,"idB":21,"type":0},{"idA":2,"idB":23,"type":0},{"idA":2,"idB":24,"type":0},{"idA":2,"idB":25,"type":0},{"idA":2,"idB":26,"type":0},{"idA":2,"idB":27,"type":1},{"idA":2,"idB":28,"type":0},{"idA":2,"idB":29,"type":0},{"idA":2,"idB":30,"type":1},{"idA":2,"idB":31,"type":0},{"idA":2,"idB":32,"type":0},{"idA":2,"idB":33,"type":0},{"idA":2,"idB":34,"type":0},{"idA":2,"idB":35,"type":0},{"idA":2,"idB":36,"type":0},{"idA":2,"idB":37,"type":0},{"idA":2,"idB":38,"type":0},{"idA":2,"idB":39,"type":0},{"idA":2,"idB":40,"type":0},{"idA":2,"idB":41,"type":0},{"idA":2,"idB":43,"type":0},{"idA":2,"idB":44,"type":0},{"idA":2,"idB":45,"type":0},{"idA":2,"idB":46,"type":0},{"idA":3,"idB":4,"type":0},{"idA":3,"idB":5,"type":0},{"idA":3,"idB":6,"type":0},{"idA":3,"idB":7,"type":0},{"idA":3,"idB":8,"type":0},{"idA":3,"idB":9,"type":0},{"idA":3,"idB":10,"type":0},{"idA":3,"idB":11,"type":0},{"idA":3,"idB":12,"type":0},{"idA":3,"idB":13,"type":0},{"idA":3,"idB":14,"type":0},{"idA":3,"idB":15,"type":0},{"idA":3,"idB":16,"type":0},{"idA":3,"idB":17,"type":0},{"idA":3,"idB":18,"type":0},{"idA":3,"idB":19,"type":0},{"idA":3,"idB":20,"type":0},{"idA":3,"idB":21,"type":0},{"idA":3,"idB":23,"type":0},{"idA":3,"idB":24,"type":0},{"idA":3,"idB":25,"type":0},{"idA":3,"idB":26,"type":0},{"idA":3,"idB":27,"type":0},{"idA":3,"idB":28,"type":0},{"idA":3,"idB":29,"type":0},{"idA":3,"idB":30,"type":0},{"idA":3,"idB":31,"type":0},{"idA":3,"idB":32,"type":0},{"idA":3,"idB":33,"type":0},{"idA":3,"idB":34,"type":0},{"idA":3,"idB":35,"type":0},{"idA":3,"idB":36,"type":0},{"idA":3,"idB":37,"type":0},{"idA":3,"idB":38,"type":0},{"idA":3,"idB":39,"type":0},{"idA":3,"idB":40,"type":0},{"idA":3,"idB":41,"type":0},{"idA":3,"idB":43,"type":0},{"idA":3,"idB":44,"type":0},{"idA":3,"idB":45,"type":0},{"idA":3,"idB":46,"type":0},{"idA":4,"idB":5,"type":0},{"idA":4,"idB":6,"type":0},{"idA":4,"idB":7,"type":0},{"idA":4,"idB":8,"type":0},{"idA":4,"idB":9,"type":0},{"idA":4,"idB":10,"type":0},{"idA":4,"idB":11,"type":0},{"idA":4,"idB":12,"type":0},{"idA":4,"idB":13,"type":0},{"idA":4,"idB":14,"type":0},{"idA":4,"idB":15,"type":0},{"idA":4,"idB":16,"type":0},{"idA":4,"idB":17,"type":0},{"idA":4,"idB":18,"type":0},{"idA":4,"idB":19,"type":0},{"idA":4,"idB":20,"type":0},{"idA":4,"idB":21,"type":0},{"idA":4,"idB":23,"type":0},{"idA":4,"idB":24,"type":0},{"idA":4,"idB":25,"type":0},{"idA":4,"idB":26,"type":0},{"idA":4,"idB":27,"type":0},{"idA":4,"idB":28,"type":0},{"idA":4,"idB":29,"type":0},{"idA":4,"idB":30,"type":0},{"idA":4,"idB":31,"type":0},{"idA":4,"idB":32,"type":0},{"idA":4,"idB":33,"type":0},{"idA":4,"idB":34,"type":0},{"idA":4,"idB":35,"type":0},{"idA":4,"idB":36,"type":0},{"idA":4,"idB":37,"type":0},{"idA":4,"idB":38,"type":0},{"idA":4,"idB":39,"type":0},{"idA":4,"idB":40,"type":0},{"idA":4,"idB":41,"type":0},{"idA":4,"idB":43,"type":0},{"idA":4,"idB":44,"type":0},{"idA":4,"idB":45,"type":0},{"idA":4,"idB":46,"type":0},{"idA":5,"idB":6,"type":0},{"idA":5,"idB":7,"type":0},{"idA":5,"idB":8,"type":0},{"idA":5,"idB":9,"type":0},{"idA":5,"idB":10,"type":0},{"idA":5,"idB":11,"type":0},{"idA":5,"idB":12,"type":0},{"idA":5,"idB":13,"type":0},{"idA":5,"idB":14,"type":0},{"idA":5,"idB":15,"type":0},{"idA":5,"idB":16,"type":0},{"idA":5,"idB":17,"type":0},{"idA":5,"idB":18,"type":0},{"idA":5,"idB":19,"type":0},{"idA":5,"idB":20,"type":0},{"idA":5,"idB":21,"type":0},{"idA":5,"idB":23,"type":0},{"idA":5,"idB":24,"type":0},{"idA":5,"idB":25,"type":0},{"idA":5,"idB":26,"type":0},{"idA":5,"idB":27,"type":0},{"idA":5,"idB":28,"type":0},{"idA":5,"idB":29,"type":0},{"idA":5,"idB":30,"type":0},{"idA":5,"idB":31,"type":0},{"idA":5,"idB":32,"type":0},{"idA":5,"idB":33,"type":0},{"idA":5,"idB":34,"type":0},{"idA":5,"idB":35,"type":0},{"idA":5,"idB":36,"type":0},{"idA":5,"idB":37,"type":0},{"idA":5,"idB":38,"type":0},{"idA":5,"idB":39,"type":0},{"idA":5,"idB":40,"type":0},{"idA":5,"idB":41,"type":0},{"idA":5,"idB":43,"type":0},{"idA":5,"idB":44,"type":0},{"idA":5,"idB":45,"type":0},{"idA":5,"idB":46,"type":0},{"idA":6,"idB":7,"type":0},{"idA":6,"idB":8,"type":0},{"idA":6,"idB":9,"type":0},{"idA":6,"idB":10,"type":0},{"idA":6,"idB":11,"type":0},{"idA":6,"idB":12,"type":0},{"idA":6,"idB":13,"type":0},{"idA":6,"idB":14,"type":0},{"idA":6,"idB":15,"type":0},{"idA":6,"idB":16,"type":0},{"idA":6,"idB":17,"type":0},{"idA":6,"idB":18,"type":1},{"idA":6,"idB":19,"type":0},{"idA":6,"idB":20,"type":0},{"idA":6,"idB":21,"type":0},{"idA":6,"idB":23,"type":0},{"idA":6,"idB":24,"type":0},{"idA":6,"idB":25,"type":0},{"idA":6,"idB":26,"type":0},{"idA":6,"idB":27,"type":0},{"idA":6,"idB":28,"type":1},{"idA":6,"idB":29,"type":0},{"idA":6,"idB":30,"type":0},{"idA":6,"idB":31,"type":0},{"idA":6,"idB":32,"type":0},{"idA":6,"idB":33,"type":0},{"idA":6,"idB":34,"type":0},{"idA":6,"idB":35,"type":0},{"idA":6,"idB":36,"type":0},{"idA":6,"idB":37,"type":0},{"idA":6,"idB":38,"type":0},{"idA":6,"idB":39,"type":0},{"idA":6,"idB":40,"type":0},{"idA":6,"idB":41,"type":0},{"idA":6,"idB":43,"type":0},{"idA":6,"idB":44,"type":0},{"idA":6,"idB":45,"type":0},{"idA":6,"idB":46,"type":0},{"idA":7,"idB":8,"type":0},{"idA":7,"idB":9,"type":0},{"idA":7,"idB":10,"type":0},{"idA":7,"idB":11,"type":0},{"idA":7,"idB":12,"type":0},{"idA":7,"idB":13,"type":1},{"idA":7,"idB":14,"type":0},{"idA":7,"idB":15,"type":0},{"idA":7,"idB":16,"type":0},{"idA":7,"idB":17,"type":0},{"idA":7,"idB":18,"type":0},{"idA":7,"idB":19,"type":0},{"idA":7,"idB":20,"type":0},{"idA":7,"idB":21,"type":0},{"idA":7,"idB":23,"type":0},{"idA":7,"idB":24,"type":0},{"idA":7,"idB":25,"type":1},{"idA":7,"idB":26,"type":0},{"idA":7,"idB":27,"type":0},{"idA":7,"idB":28,"type":0},{"idA":7,"idB":29,"type":1},{"idA":7,"idB":30,"type":0},{"idA":7,"idB":31,"type":0},{"idA":7,"idB":32,"type":0},{"idA":7,"idB":33,"type":0},{"idA":7,"idB":34,"type":0},{"idA":7,"idB":35,"type":0},{"idA":7,"idB":36,"type":0},{"idA":7,"idB":37,"type":0},{"idA":7,"idB":38,"type":0},{"idA":7,"idB":39,"type":0},{"idA":7,"idB":40,"type":0},{"idA":7,"idB":41,"type":0},{"idA":7,"idB":43,"type":0},{"idA":7,"idB":44,"type":0},{"idA":7,"idB":45,"type":0},{"idA":7,"idB":46,"type":0},{"idA":8,"idB":9,"type":0},{"idA":8,"idB":10,"type":0},{"idA":8,"idB":11,"type":0},{"idA":8,"idB":12,"type":0},{"idA":8,"idB":13,"type":0},{"idA":8,"idB":14,"type":0},{"idA":8,"idB":15,"type":0},{"idA":8,"idB":16,"type":0},{"idA":8,"idB":17,"type":0},{"idA":8,"idB":18,"type":0},{"idA":8,"idB":19,"type":0},{"idA":8,"idB":20,"type":0},{"idA":8,"idB":21,"type":0},{"idA":8,"idB":23,"type":0},{"idA":8,"idB":24,"type":0},{"idA":8,"idB":25,"type":0},{"idA":8,"idB":26,"type":0},{"idA":8,"idB":27,"type":0},{"idA":8,"idB":28,"type":0},{"idA":8,"idB":29,"type":0},{"idA":8,"idB":30,"type":0},{"idA":8,"idB":31,"type":0},{"idA":8,"idB":32,"type":0},{"idA":8,"idB":33,"type":0},{"idA":8,"idB":34,"type":0},{"idA":8,"idB":35,"type":0},{"idA":8,"idB":36,"type":0},{"idA":8,"idB":37,"type":0},{"idA":8,"idB":38,"type":0},{"idA":8,"idB":39,"type":0},{"idA":8,"idB":40,"type":0},{"idA":8,"idB":41,"type":0},{"idA":8,"idB":43,"type":0},{"idA":8,"idB":44,"type":0},{"idA":8,"idB":45,"type":0},{"idA":8,"idB":46,"type":0},{"idA":9,"idB":10,"type":0},{"idA":9,"idB":11,"type":0},{"idA":9,"idB":12,"type":0},{"idA":9,"idB":13,"type":0},{"idA":9,"idB":14,"type":0},{"idA":9,"idB":15,"type":0},{"idA":9,"idB":16,"type":0},{"idA":9,"idB":17,"type":0},{"idA":9,"idB":18,"type":0},{"idA":9,"idB":19,"type":0},{"idA":9,"idB":20,"type":0},{"idA":9,"idB":21,"type":0},{"idA":9,"idB":23,"type":0},{"idA":9,"idB":24,"type":0},{"idA":9,"idB":25,"type":0},{"idA":9,"idB":26,"type":0},{"idA":9,"idB":27,"type":0},{"idA":9,"idB":28,"type":0},{"idA":9,"idB":29,"type":0},{"idA":9,"idB":30,"type":0},{"idA":9,"idB":31,"type":0},{"idA":9,"idB":32,"type":0},{"idA":9,"idB":33,"type":0},{"idA":9,"idB":34,"type":0},{"idA":9,"idB":35,"type":0},{"idA":9,"idB":36,"type":0},{"idA":9,"idB":37,"type":0},{"idA":9,"idB":38,"type":0},{"idA":9,"idB":39,"type":0},{"idA":9,"idB":40,"type":0},{"idA":9,"idB":41,"type":0},{"idA":9,"idB":43,"type":0},{"idA":9,"idB":44,"type":0},{"idA":9,"idB":45,"type":0},{"idA":9,"idB":46,"type":0},{"idA":10,"idB":11,"type":0},{"idA":10,"idB":12,"type":0},{"idA":10,"idB":13,"type":0},{"idA":10,"idB":14,"type":0},{"idA":10,"idB":15,"type":0},{"idA":10,"idB":16,"type":0},{"idA":10,"idB":17,"type":0},{"idA":10,"idB":18,"type":0},{"idA":10,"idB":19,"type":0},{"idA":10,"idB":20,"type":0},{"idA":10,"idB":21,"type":0},{"idA":10,"idB":23,"type":0},{"idA":10,"idB":24,"type":0},{"idA":10,"idB":25,"type":0},{"idA":10,"idB":26,"type":0},{"idA":10,"idB":27,"type":0},{"idA":10,"idB":28,"type":0},{"idA":10,"idB":29,"type":0},{"idA":10,"idB":30,"type":0},{"idA":10,"idB":31,"type":0},{"idA":10,"idB":32,"type":0},{"idA":10,"idB":33,"type":0},{"idA":10,"idB":34,"type":0},{"idA":10,"idB":35,"type":0},{"idA":10,"idB":36,"type":0},{"idA":10,"idB":37,"type":0},{"idA":10,"idB":38,"type":0},{"idA":10,"idB":39,"type":0},{"idA":10,"idB":40,"type":0},{"idA":10,"idB":41,"type":0},{"idA":10,"idB":43,"type":0},{"idA":10,"idB":44,"type":0},{"idA":10,"idB":45,"type":0},{"idA":10,"idB":46,"type":0},{"idA":11,"idB":12,"type":0},{"idA":11,"idB":13,"type":0},{"idA":11,"idB":14,"type":0},{"idA":11,"idB":15,"type":0},{"idA":11,"idB":16,"type":0},{"idA":11,"idB":17,"type":0},{"idA":11,"idB":18,"type":0},{"idA":11,"idB":19,"type":0},{"idA":11,"idB":20,"type":0},{"idA":11,"idB":21,"type":0},{"idA":11,"idB":23,"type":0},{"idA":11,"idB":24,"type":0},{"idA":11,"idB":25,"type":0},{"idA":11,"idB":26,"type":0},{"idA":11,"idB":27,"type":0},{"idA":11,"idB":28,"type":0},{"idA":11,"idB":29,"type":0},{"idA":11,"idB":30,"type":0},{"idA":11,"idB":31,"type":0},{"idA":11,"idB":32,"type":0},{"idA":11,"idB":33,"type":0},{"idA":11,"idB":34,"type":0},{"idA":11,"idB":35,"type":0},{"idA":11,"idB":36,"type":0},{"idA":11,"idB":37,"type":0},{"idA":11,"idB":38,"type":0},{"idA":11,"idB":39,"type":0},{"idA":11,"idB":40,"type":0},{"idA":11,"idB":41,"type":0},{"idA":11,"idB":43,"type":0},{"idA":11,"idB":44,"type":0},{"idA":11,"idB":45,"type":0},{"idA":11,"idB":46,"type":0},{"idA":12,"idB":13,"type":0},{"idA":12,"idB":14,"type":0},{"idA":12,"idB":15,"type":0},{"idA":12,"idB":16,"type":0},{"idA":12,"idB":17,"type":0},{"idA":12,"idB":18,"type":0},{"idA":12,"idB":19,"type":0},{"idA":12,"idB":20,"type":0},{"idA":12,"idB":21,"type":0},{"idA":12,"idB":23,"type":0},{"idA":12,"idB":24,"type":0},{"idA":12,"idB":25,"type":0},{"idA":12,"idB":26,"type":0},{"idA":12,"idB":27,"type":0},{"idA":12,"idB":28,"type":0},{"idA":12,"idB":29,"type":0},{"idA":12,"idB":30,"type":0},{"idA":12,"idB":31,"type":0},{"idA":12,"idB":32,"type":0},{"idA":12,"idB":33,"type":0},{"idA":12,"idB":34,"type":0},{"idA":12,"idB":35,"type":0},{"idA":12,"idB":36,"type":0},{"idA":12,"idB":37,"type":0},{"idA":12,"idB":38,"type":0},{"idA":12,"idB":39,"type":0},{"idA":12,"idB":40,"type":0},{"idA":12,"idB":41,"type":0},{"idA":12,"idB":43,"type":0},{"idA":12,"idB":44,"type":0},{"idA":12,"idB":45,"type":0},{"idA":12,"idB":46,"type":0},{"idA":13,"idB":14,"type":0},{"idA":13,"idB":15,"type":0},{"idA":13,"idB":16,"type":0},{"idA":13,"idB":17,"type":0},{"idA":13,"idB":18,"type":0},{"idA":13,"idB":19,"type":0},{"idA":13,"idB":20,"type":0},{"idA":13,"idB":21,"type":0},{"idA":13,"idB":23,"type":0},{"idA":13,"idB":24,"type":0},{"idA":13,"idB":25,"type":0},{"idA":13,"idB":26,"type":0},{"idA":13,"idB":27,"type":0},{"idA":13,"idB":28,"type":0},{"idA":13,"idB":29,"type":0},{"idA":13,"idB":30,"type":0},{"idA":13,"idB":31,"type":0},{"idA":13,"idB":32,"type":0},{"idA":13,"idB":33,"type":0},{"idA":13,"idB":34,"type":0},{"idA":13,"idB":35,"type":0},{"idA":13,"idB":36,"type":0},{"idA":13,"idB":37,"type":0},{"idA":13,"idB":38,"type":0},{"idA":13,"idB":39,"type":0},{"idA":13,"idB":40,"type":0},{"idA":13,"idB":41,"type":0},{"idA":13,"idB":43,"type":0},{"idA":13,"idB":44,"type":0},{"idA":13,"idB":45,"type":0},{"idA":13,"idB":46,"type":0},{"idA":14,"idB":15,"type":0},{"idA":14,"idB":16,"type":0},{"idA":14,"idB":17,"type":0},{"idA":14,"idB":18,"type":0},{"idA":14,"idB":19,"type":0},{"idA":14,"idB":20,"type":0},{"idA":14,"idB":21,"type":0},{"idA":14,"idB":23,"type":0},{"idA":14,"idB":24,"type":0},{"idA":14,"idB":25,"type":0},{"idA":14,"idB":26,"type":0},{"idA":14,"idB":27,"type":0},{"idA":14,"idB":28,"type":0},{"idA":14,"idB":29,"type":0},{"idA":14,"idB":30,"type":0},{"idA":14,"idB":31,"type":0},{"idA":14,"idB":32,"type":0},{"idA":14,"idB":33,"type":0},{"idA":14,"idB":34,"type":0},{"idA":14,"idB":35,"type":0},{"idA":14,"idB":36,"type":0},{"idA":14,"idB":37,"type":0},{"idA":14,"idB":38,"type":0},{"idA":14,"idB":39,"type":0},{"idA":14,"idB":40,"type":0},{"idA":14,"idB":41,"type":0},{"idA":14,"idB":43,"type":0},{"idA":14,"idB":44,"type":0},{"idA":14,"idB":45,"type":0},{"idA":14,"idB":46,"type":0},{"idA":15,"idB":16,"type":0},{"idA":15,"idB":17,"type":0},{"idA":15,"idB":18,"type":0},{"idA":15,"idB":19,"type":0},{"idA":15,"idB":20,"type":0},{"idA":15,"idB":21,"type":0},{"idA":15,"idB":23,"type":0},{"idA":15,"idB":24,"type":0},{"idA":15,"idB":25,"type":0},{"idA":15,"idB":26,"type":0},{"idA":15,"idB":27,"type":0},{"idA":15,"idB":28,"type":0},{"idA":15,"idB":29,"type":0},{"idA":15,"idB":30,"type":0},{"idA":15,"idB":31,"type":0},{"idA":15,"idB":32,"type":0},{"idA":15,"idB":33,"type":0},{"idA":15,"idB":34,"type":0},{"idA":15,"idB":35,"type":0},{"idA":15,"idB":36,"type":0},{"idA":15,"idB":37,"type":0},{"idA":15,"idB":38,"type":0},{"idA":15,"idB":39,"type":0},{"idA":15,"idB":40,"type":0},{"idA":15,"idB":41,"type":0},{"idA":15,"idB":43,"type":0},{"idA":15,"idB":44,"type":0},{"idA":15,"idB":45,"type":0},{"idA":15,"idB":46,"type":0},{"idA":16,"idB":17,"type":0},{"idA":16,"idB":18,"type":0},{"idA":16,"idB":19,"type":0},{"idA":16,"idB":20,"type":0},{"idA":16,"idB":21,"type":0},{"idA":16,"idB":23,"type":0},{"idA":16,"idB":24,"type":0},{"idA":16,"idB":25,"type":0},{"idA":16,"idB":26,"type":0},{"idA":16,"idB":27,"type":0},{"idA":16,"idB":28,"type":0},{"idA":16,"idB":29,"type":0},{"idA":16,"idB":30,"type":0},{"idA":16,"idB":31,"type":0},{"idA":16,"idB":32,"type":0},{"idA":16,"idB":33,"type":0},{"idA":16,"idB":34,"type":0},{"idA":16,"idB":35,"type":0},{"idA":16,"idB":36,"type":0},{"idA":16,"idB":37,"type":0},{"idA":16,"idB":38,"type":0},{"idA":16,"idB":39,"type":0},{"idA":16,"idB":40,"type":0},{"idA":16,"idB":41,"type":0},{"idA":16,"idB":43,"type":0},{"idA":16,"idB":44,"type":0},{"idA":16,"idB":45,"type":0},{"idA":16,"idB":46,"type":0},{"idA":17,"idB":18,"type":0},{"idA":17,"idB":19,"type":0},{"idA":17,"idB":20,"type":0},{"idA":17,"idB":21,"type":0},{"idA":17,"idB":23,"type":0},{"idA":17,"idB":24,"type":0},{"idA":17,"idB":25,"type":0},{"idA":17,"idB":26,"type":0},{"idA":17,"idB":27,"type":0},{"idA":17,"idB":28,"type":0},{"idA":17,"idB":29,"type":0},{"idA":17,"idB":30,"type":0},{"idA":17,"idB":31,"type":0},{"idA":17,"idB":32,"type":0},{"idA":17,"idB":33,"type":0},{"idA":17,"idB":34,"type":0},{"idA":17,"idB":35,"type":0},{"idA":17,"idB":36,"type":0},{"idA":17,"idB":37,"type":0},{"idA":17,"idB":38,"type":0},{"idA":17,"idB":39,"type":0},{"idA":17,"idB":40,"type":0},{"idA":17,"idB":41,"type":0},{"idA":17,"idB":43,"type":0},{"idA":17,"idB":44,"type":0},{"idA":17,"idB":45,"type":0},{"idA":17,"idB":46,"type":0},{"idA":18,"idB":19,"type":0},{"idA":18,"idB":20,"type":0},{"idA":18,"idB":21,"type":0},{"idA":18,"idB":23,"type":0},{"idA":18,"idB":24,"type":0},{"idA":18,"idB":25,"type":0},{"idA":18,"idB":26,"type":0},{"idA":18,"idB":27,"type":0},{"idA":18,"idB":28,"type":0},{"idA":18,"idB":29,"type":0},{"idA":18,"idB":30,"type":0},{"idA":18,"idB":31,"type":0},{"idA":18,"idB":32,"type":0},{"idA":18,"idB":33,"type":0},{"idA":18,"idB":34,"type":0},{"idA":18,"idB":35,"type":0},{"idA":18,"idB":36,"type":0},{"idA":18,"idB":37,"type":0},{"idA":18,"idB":38,"type":0},{"idA":18,"idB":39,"type":0},{"idA":18,"idB":40,"type":0},{"idA":18,"idB":41,"type":0},{"idA":18,"idB":43,"type":0},{"idA":18,"idB":44,"type":0},{"idA":18,"idB":45,"type":0},{"idA":18,"idB":46,"type":0},{"idA":19,"idB":20,"type":0},{"idA":19,"idB":21,"type":0},{"idA":19,"idB":23,"type":0},{"idA":19,"idB":24,"type":0},{"idA":19,"idB":25,"type":0},{"idA":19,"idB":26,"type":0},{"idA":19,"idB":27,"type":0},{"idA":19,"idB":28,"type":0},{"idA":19,"idB":29,"type":0},{"idA":19,"idB":30,"type":0},{"idA":19,"idB":31,"type":0},{"idA":19,"idB":32,"type":0},{"idA":19,"idB":33,"type":0},{"idA":19,"idB":34,"type":0},{"idA":19,"idB":35,"type":0},{"idA":19,"idB":36,"type":0},{"idA":19,"idB":37,"type":0},{"idA":19,"idB":38,"type":0},{"idA":19,"idB":39,"type":0},{"idA":19,"idB":40,"type":0},{"idA":19,"idB":41,"type":0},{"idA":19,"idB":43,"type":0},{"idA":19,"idB":44,"type":0},{"idA":19,"idB":45,"type":0},{"idA":19,"idB":46,"type":0},{"idA":20,"idB":21,"type":0},{"idA":20,"idB":23,"type":0},{"idA":20,"idB":24,"type":0},{"idA":20,"idB":25,"type":0},{"idA":20,"idB":26,"type":0},{"idA":20,"idB":27,"type":0},{"idA":20,"idB":28,"type":0},{"idA":20,"idB":29,"type":0},{"idA":20,"idB":30,"type":0},{"idA":20,"idB":31,"type":0},{"idA":20,"idB":32,"type":0},{"idA":20,"idB":33,"type":0},{"idA":20,"idB":34,"type":0},{"idA":20,"idB":35,"type":0},{"idA":20,"idB":36,"type":0},{"idA":20,"idB":37,"type":0},{"idA":20,"idB":38,"type":0},{"idA":20,"idB":39,"type":0},{"idA":20,"idB":40,"type":0},{"idA":20,"idB":41,"type":0},{"idA":20,"idB":43,"type":0},{"idA":20,"idB":44,"type":0},{"idA":20,"idB":45,"type":0},{"idA":20,"idB":46,"type":0},{"idA":21,"idB":23,"type":0},{"idA":21,"idB":24,"type":0},{"idA":21,"idB":25,"type":0},{"idA":21,"idB":26,"type":0},{"idA":21,"idB":27,"type":0},{"idA":21,"idB":28,"type":0},{"idA":21,"idB":29,"type":0},{"idA":21,"idB":30,"type":0},{"idA":21,"idB":31,"type":0},{"idA":21,"idB":32,"type":0},{"idA":21,"idB":33,"type":0},{"idA":21,"idB":34,"type":0},{"idA":21,"idB":35,"type":0},{"idA":21,"idB":36,"type":0},{"idA":21,"idB":37,"type":0},{"idA":21,"idB":38,"type":0},{"idA":21,"idB":39,"type":0},{"idA":21,"idB":40,"type":0},{"idA":21,"idB":41,"type":0},{"idA":21,"idB":43,"type":0},{"idA":21,"idB":44,"type":0},{"idA":21,"idB":45,"type":0},{"idA":21,"idB":46,"type":0},{"idA":23,"idB":24,"type":0},{"idA":23,"idB":25,"type":0},{"idA":23,"idB":26,"type":0},{"idA":23,"idB":27,"type":0},{"idA":23,"idB":28,"type":0},{"idA":23,"idB":29,"type":0},{"idA":23,"idB":30,"type":0},{"idA":23,"idB":31,"type":0},{"idA":23,"idB":32,"type":0},{"idA":23,"idB":33,"type":0},{"idA":23,"idB":34,"type":0},{"idA":23,"idB":35,"type":0},{"idA":23,"idB":36,"type":0},{"idA":23,"idB":37,"type":0},{"idA":23,"idB":38,"type":0},{"idA":23,"idB":39,"type":0},{"idA":23,"idB":40,"type":0},{"idA":23,"idB":41,"type":0},{"idA":23,"idB":43,"type":0},{"idA":23,"idB":44,"type":0},{"idA":23,"idB":45,"type":0},{"idA":23,"idB":46,"type":0},{"idA":24,"idB":25,"type":0},{"idA":24,"idB":26,"type":0},{"idA":24,"idB":27,"type":0},{"idA":24,"idB":28,"type":0},{"idA":24,"idB":29,"type":0},{"idA":24,"idB":30,"type":0},{"idA":24,"idB":31,"type":0},{"idA":24,"idB":32,"type":0},{"idA":24,"idB":33,"type":0},{"idA":24,"idB":34,"type":0},{"idA":24,"idB":35,"type":0},{"idA":24,"idB":36,"type":0},{"idA":24,"idB":37,"type":0},{"idA":24,"idB":38,"type":0},{"idA":24,"idB":39,"type":0},{"idA":24,"idB":40,"type":0},{"idA":24,"idB":41,"type":0},{"idA":24,"idB":43,"type":0},{"idA":24,"idB":44,"type":0},{"idA":24,"idB":45,"type":0},{"idA":24,"idB":46,"type":0},{"idA":25,"idB":26,"type":0},{"idA":25,"idB":27,"type":0},{"idA":25,"idB":28,"type":0},{"idA":25,"idB":29,"type":0},{"idA":25,"idB":30,"type":0},{"idA":25,"idB":31,"type":0},{"idA":25,"idB":32,"type":0},{"idA":25,"idB":33,"type":0},{"idA":25,"idB":34,"type":0},{"idA":25,"idB":35,"type":0},{"idA":25,"idB":36,"type":0},{"idA":25,"idB":37,"type":0},{"idA":25,"idB":38,"type":0},{"idA":25,"idB":39,"type":0},{"idA":25,"idB":40,"type":0},{"idA":25,"idB":41,"type":0},{"idA":25,"idB":43,"type":0},{"idA":25,"idB":44,"type":0},{"idA":25,"idB":45,"type":0},{"idA":25,"idB":46,"type":0},{"idA":26,"idB":27,"type":0},{"idA":26,"idB":28,"type":0},{"idA":26,"idB":29,"type":0},{"idA":26,"idB":30,"type":0},{"idA":26,"idB":31,"type":0},{"idA":26,"idB":32,"type":0},{"idA":26,"idB":33,"type":0},{"idA":26,"idB":34,"type":0},{"idA":26,"idB":35,"type":0},{"idA":26,"idB":36,"type":0},{"idA":26,"idB":37,"type":0},{"idA":26,"idB":38,"type":0},{"idA":26,"idB":39,"type":0},{"idA":26,"idB":40,"type":0},{"idA":26,"idB":41,"type":0},{"idA":26,"idB":43,"type":0},{"idA":26,"idB":44,"type":0},{"idA":26,"idB":45,"type":0},{"idA":26,"idB":46,"type":0},{"idA":27,"idB":28,"type":0},{"idA":27,"idB":29,"type":0},{"idA":27,"idB":30,"type":0},{"idA":27,"idB":31,"type":0},{"idA":27,"idB":32,"type":0},{"idA":27,"idB":33,"type":0},{"idA":27,"idB":34,"type":0},{"idA":27,"idB":35,"type":0},{"idA":27,"idB":36,"type":0},{"idA":27,"idB":37,"type":0},{"idA":27,"idB":38,"type":0},{"idA":27,"idB":39,"type":0},{"idA":27,"idB":40,"type":0},{"idA":27,"idB":41,"type":0},{"idA":27,"idB":43,"type":0},{"idA":27,"idB":44,"type":0},{"idA":27,"idB":45,"type":0},{"idA":27,"idB":46,"type":0},{"idA":28,"idB":29,"type":0},{"idA":28,"idB":30,"type":0},{"idA":28,"idB":31,"type":0},{"idA":28,"idB":32,"type":0},{"idA":28,"idB":33,"type":0},{"idA":28,"idB":34,"type":0},{"idA":28,"idB":35,"type":0},{"idA":28,"idB":36,"type":0},{"idA":28,"idB":37,"type":0},{"idA":28,"idB":38,"type":0},{"idA":28,"idB":39,"type":0},{"idA":28,"idB":40,"type":0},{"idA":28,"idB":41,"type":0},{"idA":28,"idB":43,"type":0},{"idA":28,"idB":44,"type":0},{"idA":28,"idB":45,"type":0},{"idA":28,"idB":46,"type":0},{"idA":29,"idB":30,"type":0},{"idA":29,"idB":31,"type":0},{"idA":29,"idB":32,"type":0},{"idA":29,"idB":33,"type":0},{"idA":29,"idB":34,"type":0},{"idA":29,"idB":35,"type":0},{"idA":29,"idB":36,"type":0},{"idA":29,"idB":37,"type":0},{"idA":29,"idB":38,"type":0},{"idA":29,"idB":39,"type":0},{"idA":29,"idB":40,"type":0},{"idA":29,"idB":41,"type":0},{"idA":29,"idB":43,"type":0},{"idA":29,"idB":44,"type":0},{"idA":29,"idB":45,"type":0},{"idA":29,"idB":46,"type":0},{"idA":30,"idB":31,"type":0},{"idA":30,"idB":32,"type":0},{"idA":30,"idB":33,"type":0},{"idA":30,"idB":34,"type":0},{"idA":30,"idB":35,"type":0},{"idA":30,"idB":36,"type":0},{"idA":30,"idB":37,"type":0},{"idA":30,"idB":38,"type":0},{"idA":30,"idB":39,"type":0},{"idA":30,"idB":40,"type":0},{"idA":30,"idB":41,"type":0},{"idA":30,"idB":43,"type":0},{"idA":30,"idB":44,"type":0},{"idA":30,"idB":45,"type":0},{"idA":30,"idB":46,"type":0},{"idA":31,"idB":32,"type":0},{"idA":31,"idB":33,"type":0},{"idA":31,"idB":34,"type":0},{"idA":31,"idB":35,"type":0},{"idA":31,"idB":36,"type":0},{"idA":31,"idB":37,"type":0},{"idA":31,"idB":38,"type":0},{"idA":31,"idB":39,"type":0},{"idA":31,"idB":40,"type":0},{"idA":31,"idB":41,"type":0},{"idA":31,"idB":43,"type":0},{"idA":31,"idB":44,"type":0},{"idA":31,"idB":45,"type":0},{"idA":31,"idB":46,"type":0},{"idA":32,"idB":33,"type":0},{"idA":32,"idB":34,"type":0},{"idA":32,"idB":35,"type":0},{"idA":32,"idB":36,"type":0},{"idA":32,"idB":37,"type":0},{"idA":32,"idB":38,"type":0},{"idA":32,"idB":39,"type":0},{"idA":32,"idB":40,"type":0},{"idA":32,"idB":41,"type":0},{"idA":32,"idB":43,"type":0},{"idA":32,"idB":44,"type":0},{"idA":32,"idB":45,"type":0},{"idA":32,"idB":46,"type":0},{"idA":33,"idB":34,"type":0},{"idA":33,"idB":35,"type":0},{"idA":33,"idB":36,"type":0},{"idA":33,"idB":37,"type":0},{"idA":33,"idB":38,"type":1},{"idA":33,"idB":39,"type":1},{"idA":33,"idB":40,"type":0},{"idA":33,"idB":41,"type":0},{"idA":33,"idB":43,"type":0},{"idA":33,"idB":44,"type":0},{"idA":33,"idB":45,"type":0},{"idA":33,"idB":46,"type":0},{"idA":34,"idB":35,"type":0},{"idA":34,"idB":36,"type":1},{"idA":34,"idB":37,"type":0},{"idA":34,"idB":38,"type":0},{"idA":34,"idB":39,"type":0},{"idA":34,"idB":40,"type":0},{"idA":34,"idB":41,"type":0},{"idA":34,"idB":43,"type":0},{"idA":34,"idB":44,"type":0},{"idA":34,"idB":45,"type":0},{"idA":34,"idB":46,"type":0},{"idA":35,"idB":36,"type":1},{"idA":35,"idB":37,"type":0},{"idA":35,"idB":38,"type":0},{"idA":35,"idB":39,"type":0},{"idA":35,"idB":40,"type":1},{"idA":35,"idB":41,"type":0},{"idA":35,"idB":43,"type":0},{"idA":35,"idB":44,"type":0},{"idA":35,"idB":45,"type":0},{"idA":35,"idB":46,"type":0},{"idA":36,"idB":37,"type":0},{"idA":36,"idB":38,"type":0},{"idA":36,"idB":39,"type":0},{"idA":36,"idB":40,"type":0},{"idA":36,"idB":41,"type":0},{"idA":36,"idB":43,"type":0},{"idA":36,"idB":44,"type":0},{"idA":36,"idB":45,"type":0},{"idA":36,"idB":46,"type":0},{"idA":37,"idB":38,"type":0},{"idA":37,"idB":39,"type":1},{"idA":37,"idB":40,"type":0},{"idA":37,"idB":41,"type":0},{"idA":37,"idB":43,"type":0},{"idA":37,"idB":44,"type":0},{"idA":37,"idB":45,"type":0},{"idA":37,"idB":46,"type":0},{"idA":38,"idB":39,"type":0},{"idA":38,"idB":40,"type":0},{"idA":38,"idB":41,"type":0},{"idA":38,"idB":43,"type":0},{"idA":38,"idB":44,"type":0},{"idA":38,"idB":45,"type":0},{"idA":38,"idB":46,"type":0},{"idA":39,"idB":40,"type":0},{"idA":39,"idB":41,"type":0},{"idA":39,"idB":43,"type":0},{"idA":39,"idB":44,"type":0},{"idA":39,"idB":45,"type":0},{"idA":39,"idB":46,"type":0},{"idA":40,"idB":41,"type":0},{"idA":40,"idB":43,"type":0},{"idA":40,"idB":44,"type":0},{"idA":40,"idB":45,"type":0},{"idA":40,"idB":46,"type":0},{"idA":41,"idB":43,"type":0},{"idA":41,"idB":44,"type":0},{"idA":41,"idB":45,"type":0},{"idA":41,"idB":46,"type":0},{"idA":43,"idB":44,"type":0},{"idA":43,"idB":45,"type":0},{"idA":43,"idB":46,"type":0},{"idA":44,"idB":45,"type":0},{"idA":44,"idB":46,"type":0},{"idA":45,"idB":46,"type":0}]} +{"subject":{"id":1,"name":"Sujet 1","creation":1480074746,"surveys":["facebook","phone"]},"contacts":[2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,43,44,45,46],"relations":[{"idA":1,"idB":2,"type":6},{"idA":1,"idB":3,"type":6},{"idA":1,"idB":4,"type":6},{"idA":1,"idB":5,"type":6},{"idA":1,"idB":6,"type":6},{"idA":1,"idB":7,"type":6},{"idA":1,"idB":8,"type":6},{"idA":1,"idB":9,"type":6},{"idA":1,"idB":10,"type":6},{"idA":1,"idB":11,"type":6},{"idA":1,"idB":12,"type":6},{"idA":1,"idB":13,"type":6},{"idA":1,"idB":14,"type":6},{"idA":1,"idB":15,"type":6},{"idA":1,"idB":16,"type":6},{"idA":1,"idB":17,"type":6},{"idA":1,"idB":18,"type":6},{"idA":1,"idB":19,"type":6},{"idA":1,"idB":20,"type":6},{"idA":1,"idB":21,"type":6},{"idA":1,"idB":23,"type":7},{"idA":1,"idB":24,"type":7},{"idA":1,"idB":25,"type":7},{"idA":1,"idB":26,"type":7},{"idA":1,"idB":27,"type":7},{"idA":1,"idB":28,"type":7},{"idA":1,"idB":29,"type":7},{"idA":1,"idB":30,"type":7},{"idA":1,"idB":31,"type":7},{"idA":1,"idB":32,"type":7},{"idA":1,"idB":33,"type":7},{"idA":1,"idB":34,"type":7},{"idA":1,"idB":35,"type":7},{"idA":1,"idB":36,"type":7},{"idA":1,"idB":37,"type":7},{"idA":1,"idB":38,"type":7},{"idA":1,"idB":39,"type":7},{"idA":1,"idB":40,"type":7},{"idA":1,"idB":41,"type":7},{"idA":1,"idB":43,"type":3},{"idA":1,"idB":44,"type":3},{"idA":1,"idB":45,"type":3},{"idA":1,"idB":46,"type":3},{"idA":2,"idB":3,"type":1},{"idA":2,"idB":4,"type":1},{"idA":2,"idB":5,"type":0},{"idA":2,"idB":6,"type":0},{"idA":2,"idB":7,"type":0},{"idA":2,"idB":8,"type":0},{"idA":2,"idB":9,"type":0},{"idA":2,"idB":10,"type":0},{"idA":2,"idB":11,"type":0},{"idA":2,"idB":12,"type":0},{"idA":2,"idB":13,"type":1},{"idA":2,"idB":14,"type":0},{"idA":2,"idB":15,"type":0},{"idA":2,"idB":16,"type":0},{"idA":2,"idB":17,"type":0},{"idA":2,"idB":18,"type":0},{"idA":2,"idB":19,"type":0},{"idA":2,"idB":20,"type":0},{"idA":2,"idB":21,"type":0},{"idA":2,"idB":23,"type":0},{"idA":2,"idB":24,"type":0},{"idA":2,"idB":25,"type":0},{"idA":2,"idB":26,"type":0},{"idA":2,"idB":27,"type":1},{"idA":2,"idB":28,"type":0},{"idA":2,"idB":29,"type":0},{"idA":2,"idB":30,"type":1},{"idA":2,"idB":31,"type":0},{"idA":2,"idB":32,"type":0},{"idA":2,"idB":33,"type":0},{"idA":2,"idB":34,"type":0},{"idA":2,"idB":35,"type":0},{"idA":2,"idB":36,"type":0},{"idA":2,"idB":37,"type":0},{"idA":2,"idB":38,"type":0},{"idA":2,"idB":39,"type":0},{"idA":2,"idB":40,"type":0},{"idA":2,"idB":41,"type":0},{"idA":2,"idB":43,"type":0},{"idA":2,"idB":44,"type":0},{"idA":2,"idB":45,"type":0},{"idA":2,"idB":46,"type":0},{"idA":3,"idB":4,"type":0},{"idA":3,"idB":5,"type":0},{"idA":3,"idB":6,"type":0},{"idA":3,"idB":7,"type":0},{"idA":3,"idB":8,"type":0},{"idA":3,"idB":9,"type":0},{"idA":3,"idB":10,"type":0},{"idA":3,"idB":11,"type":0},{"idA":3,"idB":12,"type":0},{"idA":3,"idB":13,"type":0},{"idA":3,"idB":14,"type":0},{"idA":3,"idB":15,"type":0},{"idA":3,"idB":16,"type":0},{"idA":3,"idB":17,"type":0},{"idA":3,"idB":18,"type":0},{"idA":3,"idB":19,"type":0},{"idA":3,"idB":20,"type":0},{"idA":3,"idB":21,"type":0},{"idA":3,"idB":23,"type":0},{"idA":3,"idB":24,"type":0},{"idA":3,"idB":25,"type":0},{"idA":3,"idB":26,"type":0},{"idA":3,"idB":27,"type":0},{"idA":3,"idB":28,"type":0},{"idA":3,"idB":29,"type":0},{"idA":3,"idB":30,"type":0},{"idA":3,"idB":31,"type":0},{"idA":3,"idB":32,"type":0},{"idA":3,"idB":33,"type":0},{"idA":3,"idB":34,"type":0},{"idA":3,"idB":35,"type":0},{"idA":3,"idB":36,"type":0},{"idA":3,"idB":37,"type":0},{"idA":3,"idB":38,"type":0},{"idA":3,"idB":39,"type":0},{"idA":3,"idB":40,"type":0},{"idA":3,"idB":41,"type":0},{"idA":3,"idB":43,"type":0},{"idA":3,"idB":44,"type":0},{"idA":3,"idB":45,"type":0},{"idA":3,"idB":46,"type":0},{"idA":4,"idB":5,"type":0},{"idA":4,"idB":6,"type":0},{"idA":4,"idB":7,"type":0},{"idA":4,"idB":8,"type":0},{"idA":4,"idB":9,"type":0},{"idA":4,"idB":10,"type":0},{"idA":4,"idB":11,"type":0},{"idA":4,"idB":12,"type":0},{"idA":4,"idB":13,"type":0},{"idA":4,"idB":14,"type":0},{"idA":4,"idB":15,"type":0},{"idA":4,"idB":16,"type":0},{"idA":4,"idB":17,"type":0},{"idA":4,"idB":18,"type":0},{"idA":4,"idB":19,"type":0},{"idA":4,"idB":20,"type":0},{"idA":4,"idB":21,"type":0},{"idA":4,"idB":23,"type":0},{"idA":4,"idB":24,"type":0},{"idA":4,"idB":25,"type":0},{"idA":4,"idB":26,"type":0},{"idA":4,"idB":27,"type":0},{"idA":4,"idB":28,"type":0},{"idA":4,"idB":29,"type":0},{"idA":4,"idB":30,"type":0},{"idA":4,"idB":31,"type":0},{"idA":4,"idB":32,"type":0},{"idA":4,"idB":33,"type":0},{"idA":4,"idB":34,"type":0},{"idA":4,"idB":35,"type":0},{"idA":4,"idB":36,"type":0},{"idA":4,"idB":37,"type":0},{"idA":4,"idB":38,"type":0},{"idA":4,"idB":39,"type":0},{"idA":4,"idB":40,"type":0},{"idA":4,"idB":41,"type":0},{"idA":4,"idB":43,"type":0},{"idA":4,"idB":44,"type":0},{"idA":4,"idB":45,"type":0},{"idA":4,"idB":46,"type":0},{"idA":5,"idB":6,"type":0},{"idA":5,"idB":7,"type":0},{"idA":5,"idB":8,"type":0},{"idA":5,"idB":9,"type":0},{"idA":5,"idB":10,"type":0},{"idA":5,"idB":11,"type":0},{"idA":5,"idB":12,"type":0},{"idA":5,"idB":13,"type":0},{"idA":5,"idB":14,"type":0},{"idA":5,"idB":15,"type":0},{"idA":5,"idB":16,"type":0},{"idA":5,"idB":17,"type":0},{"idA":5,"idB":18,"type":0},{"idA":5,"idB":19,"type":0},{"idA":5,"idB":20,"type":0},{"idA":5,"idB":21,"type":0},{"idA":5,"idB":23,"type":0},{"idA":5,"idB":24,"type":0},{"idA":5,"idB":25,"type":0},{"idA":5,"idB":26,"type":0},{"idA":5,"idB":27,"type":0},{"idA":5,"idB":28,"type":0},{"idA":5,"idB":29,"type":0},{"idA":5,"idB":30,"type":0},{"idA":5,"idB":31,"type":0},{"idA":5,"idB":32,"type":0},{"idA":5,"idB":33,"type":0},{"idA":5,"idB":34,"type":0},{"idA":5,"idB":35,"type":0},{"idA":5,"idB":36,"type":0},{"idA":5,"idB":37,"type":0},{"idA":5,"idB":38,"type":0},{"idA":5,"idB":39,"type":0},{"idA":5,"idB":40,"type":0},{"idA":5,"idB":41,"type":0},{"idA":5,"idB":43,"type":0},{"idA":5,"idB":44,"type":0},{"idA":5,"idB":45,"type":0},{"idA":5,"idB":46,"type":0},{"idA":6,"idB":7,"type":0},{"idA":6,"idB":8,"type":0},{"idA":6,"idB":9,"type":0},{"idA":6,"idB":10,"type":0},{"idA":6,"idB":11,"type":0},{"idA":6,"idB":12,"type":0},{"idA":6,"idB":13,"type":0},{"idA":6,"idB":14,"type":0},{"idA":6,"idB":15,"type":0},{"idA":6,"idB":16,"type":0},{"idA":6,"idB":17,"type":0},{"idA":6,"idB":18,"type":1},{"idA":6,"idB":19,"type":0},{"idA":6,"idB":20,"type":0},{"idA":6,"idB":21,"type":0},{"idA":6,"idB":23,"type":0},{"idA":6,"idB":24,"type":0},{"idA":6,"idB":25,"type":0},{"idA":6,"idB":26,"type":0},{"idA":6,"idB":27,"type":0},{"idA":6,"idB":28,"type":1},{"idA":6,"idB":29,"type":0},{"idA":6,"idB":30,"type":0},{"idA":6,"idB":31,"type":0},{"idA":6,"idB":32,"type":0},{"idA":6,"idB":33,"type":0},{"idA":6,"idB":34,"type":0},{"idA":6,"idB":35,"type":0},{"idA":6,"idB":36,"type":0},{"idA":6,"idB":37,"type":0},{"idA":6,"idB":38,"type":0},{"idA":6,"idB":39,"type":0},{"idA":6,"idB":40,"type":0},{"idA":6,"idB":41,"type":0},{"idA":6,"idB":43,"type":0},{"idA":6,"idB":44,"type":0},{"idA":6,"idB":45,"type":0},{"idA":6,"idB":46,"type":0},{"idA":7,"idB":8,"type":0},{"idA":7,"idB":9,"type":0},{"idA":7,"idB":10,"type":0},{"idA":7,"idB":11,"type":0},{"idA":7,"idB":12,"type":0},{"idA":7,"idB":13,"type":1},{"idA":7,"idB":14,"type":0},{"idA":7,"idB":15,"type":0},{"idA":7,"idB":16,"type":0},{"idA":7,"idB":17,"type":0},{"idA":7,"idB":18,"type":0},{"idA":7,"idB":19,"type":0},{"idA":7,"idB":20,"type":0},{"idA":7,"idB":21,"type":0},{"idA":7,"idB":23,"type":0},{"idA":7,"idB":24,"type":0},{"idA":7,"idB":25,"type":1},{"idA":7,"idB":26,"type":0},{"idA":7,"idB":27,"type":0},{"idA":7,"idB":28,"type":0},{"idA":7,"idB":29,"type":1},{"idA":7,"idB":30,"type":0},{"idA":7,"idB":31,"type":0},{"idA":7,"idB":32,"type":0},{"idA":7,"idB":33,"type":0},{"idA":7,"idB":34,"type":0},{"idA":7,"idB":35,"type":0},{"idA":7,"idB":36,"type":0},{"idA":7,"idB":37,"type":0},{"idA":7,"idB":38,"type":0},{"idA":7,"idB":39,"type":0},{"idA":7,"idB":40,"type":0},{"idA":7,"idB":41,"type":0},{"idA":7,"idB":43,"type":0},{"idA":7,"idB":44,"type":0},{"idA":7,"idB":45,"type":0},{"idA":7,"idB":46,"type":0},{"idA":8,"idB":9,"type":0},{"idA":8,"idB":10,"type":0},{"idA":8,"idB":11,"type":0},{"idA":8,"idB":12,"type":0},{"idA":8,"idB":13,"type":0},{"idA":8,"idB":14,"type":0},{"idA":8,"idB":15,"type":0},{"idA":8,"idB":16,"type":0},{"idA":8,"idB":17,"type":0},{"idA":8,"idB":18,"type":0},{"idA":8,"idB":19,"type":0},{"idA":8,"idB":20,"type":0},{"idA":8,"idB":21,"type":0},{"idA":8,"idB":23,"type":0},{"idA":8,"idB":24,"type":0},{"idA":8,"idB":25,"type":0},{"idA":8,"idB":26,"type":0},{"idA":8,"idB":27,"type":0},{"idA":8,"idB":28,"type":0},{"idA":8,"idB":29,"type":0},{"idA":8,"idB":30,"type":0},{"idA":8,"idB":31,"type":0},{"idA":8,"idB":32,"type":0},{"idA":8,"idB":33,"type":0},{"idA":8,"idB":34,"type":0},{"idA":8,"idB":35,"type":0},{"idA":8,"idB":36,"type":0},{"idA":8,"idB":37,"type":0},{"idA":8,"idB":38,"type":0},{"idA":8,"idB":39,"type":0},{"idA":8,"idB":40,"type":0},{"idA":8,"idB":41,"type":0},{"idA":8,"idB":43,"type":0},{"idA":8,"idB":44,"type":0},{"idA":8,"idB":45,"type":0},{"idA":8,"idB":46,"type":0},{"idA":9,"idB":10,"type":0},{"idA":9,"idB":11,"type":0},{"idA":9,"idB":12,"type":0},{"idA":9,"idB":13,"type":0},{"idA":9,"idB":14,"type":0},{"idA":9,"idB":15,"type":0},{"idA":9,"idB":16,"type":0},{"idA":9,"idB":17,"type":0},{"idA":9,"idB":18,"type":0},{"idA":9,"idB":19,"type":0},{"idA":9,"idB":20,"type":0},{"idA":9,"idB":21,"type":0},{"idA":9,"idB":23,"type":0},{"idA":9,"idB":24,"type":0},{"idA":9,"idB":25,"type":0},{"idA":9,"idB":26,"type":0},{"idA":9,"idB":27,"type":0},{"idA":9,"idB":28,"type":0},{"idA":9,"idB":29,"type":0},{"idA":9,"idB":30,"type":0},{"idA":9,"idB":31,"type":0},{"idA":9,"idB":32,"type":0},{"idA":9,"idB":33,"type":0},{"idA":9,"idB":34,"type":0},{"idA":9,"idB":35,"type":0},{"idA":9,"idB":36,"type":0},{"idA":9,"idB":37,"type":0},{"idA":9,"idB":38,"type":0},{"idA":9,"idB":39,"type":0},{"idA":9,"idB":40,"type":0},{"idA":9,"idB":41,"type":0},{"idA":9,"idB":43,"type":0},{"idA":9,"idB":44,"type":0},{"idA":9,"idB":45,"type":0},{"idA":9,"idB":46,"type":0},{"idA":10,"idB":11,"type":0},{"idA":10,"idB":12,"type":0},{"idA":10,"idB":13,"type":0},{"idA":10,"idB":14,"type":0},{"idA":10,"idB":15,"type":0},{"idA":10,"idB":16,"type":0},{"idA":10,"idB":17,"type":0},{"idA":10,"idB":18,"type":0},{"idA":10,"idB":19,"type":0},{"idA":10,"idB":20,"type":0},{"idA":10,"idB":21,"type":0},{"idA":10,"idB":23,"type":0},{"idA":10,"idB":24,"type":0},{"idA":10,"idB":25,"type":0},{"idA":10,"idB":26,"type":0},{"idA":10,"idB":27,"type":0},{"idA":10,"idB":28,"type":0},{"idA":10,"idB":29,"type":0},{"idA":10,"idB":30,"type":0},{"idA":10,"idB":31,"type":0},{"idA":10,"idB":32,"type":0},{"idA":10,"idB":33,"type":0},{"idA":10,"idB":34,"type":0},{"idA":10,"idB":35,"type":0},{"idA":10,"idB":36,"type":0},{"idA":10,"idB":37,"type":0},{"idA":10,"idB":38,"type":0},{"idA":10,"idB":39,"type":0},{"idA":10,"idB":40,"type":0},{"idA":10,"idB":41,"type":0},{"idA":10,"idB":43,"type":0},{"idA":10,"idB":44,"type":0},{"idA":10,"idB":45,"type":0},{"idA":10,"idB":46,"type":0},{"idA":11,"idB":12,"type":0},{"idA":11,"idB":13,"type":0},{"idA":11,"idB":14,"type":0},{"idA":11,"idB":15,"type":0},{"idA":11,"idB":16,"type":0},{"idA":11,"idB":17,"type":0},{"idA":11,"idB":18,"type":0},{"idA":11,"idB":19,"type":0},{"idA":11,"idB":20,"type":0},{"idA":11,"idB":21,"type":0},{"idA":11,"idB":23,"type":0},{"idA":11,"idB":24,"type":0},{"idA":11,"idB":25,"type":0},{"idA":11,"idB":26,"type":0},{"idA":11,"idB":27,"type":0},{"idA":11,"idB":28,"type":0},{"idA":11,"idB":29,"type":0},{"idA":11,"idB":30,"type":0},{"idA":11,"idB":31,"type":0},{"idA":11,"idB":32,"type":0},{"idA":11,"idB":33,"type":0},{"idA":11,"idB":34,"type":0},{"idA":11,"idB":35,"type":0},{"idA":11,"idB":36,"type":0},{"idA":11,"idB":37,"type":0},{"idA":11,"idB":38,"type":0},{"idA":11,"idB":39,"type":0},{"idA":11,"idB":40,"type":0},{"idA":11,"idB":41,"type":0},{"idA":11,"idB":43,"type":0},{"idA":11,"idB":44,"type":0},{"idA":11,"idB":45,"type":0},{"idA":11,"idB":46,"type":0},{"idA":12,"idB":13,"type":0},{"idA":12,"idB":14,"type":0},{"idA":12,"idB":15,"type":0},{"idA":12,"idB":16,"type":0},{"idA":12,"idB":17,"type":0},{"idA":12,"idB":18,"type":0},{"idA":12,"idB":19,"type":0},{"idA":12,"idB":20,"type":0},{"idA":12,"idB":21,"type":0},{"idA":12,"idB":23,"type":0},{"idA":12,"idB":24,"type":0},{"idA":12,"idB":25,"type":0},{"idA":12,"idB":26,"type":0},{"idA":12,"idB":27,"type":0},{"idA":12,"idB":28,"type":0},{"idA":12,"idB":29,"type":0},{"idA":12,"idB":30,"type":0},{"idA":12,"idB":31,"type":0},{"idA":12,"idB":32,"type":0},{"idA":12,"idB":33,"type":0},{"idA":12,"idB":34,"type":0},{"idA":12,"idB":35,"type":0},{"idA":12,"idB":36,"type":0},{"idA":12,"idB":37,"type":0},{"idA":12,"idB":38,"type":0},{"idA":12,"idB":39,"type":0},{"idA":12,"idB":40,"type":0},{"idA":12,"idB":41,"type":0},{"idA":12,"idB":43,"type":0},{"idA":12,"idB":44,"type":0},{"idA":12,"idB":45,"type":0},{"idA":12,"idB":46,"type":0},{"idA":13,"idB":14,"type":0},{"idA":13,"idB":15,"type":0},{"idA":13,"idB":16,"type":0},{"idA":13,"idB":17,"type":0},{"idA":13,"idB":18,"type":0},{"idA":13,"idB":19,"type":0},{"idA":13,"idB":20,"type":0},{"idA":13,"idB":21,"type":0},{"idA":13,"idB":23,"type":0},{"idA":13,"idB":24,"type":0},{"idA":13,"idB":25,"type":0},{"idA":13,"idB":26,"type":0},{"idA":13,"idB":27,"type":0},{"idA":13,"idB":28,"type":0},{"idA":13,"idB":29,"type":0},{"idA":13,"idB":30,"type":0},{"idA":13,"idB":31,"type":0},{"idA":13,"idB":32,"type":0},{"idA":13,"idB":33,"type":0},{"idA":13,"idB":34,"type":0},{"idA":13,"idB":35,"type":0},{"idA":13,"idB":36,"type":0},{"idA":13,"idB":37,"type":0},{"idA":13,"idB":38,"type":0},{"idA":13,"idB":39,"type":0},{"idA":13,"idB":40,"type":0},{"idA":13,"idB":41,"type":0},{"idA":13,"idB":43,"type":0},{"idA":13,"idB":44,"type":0},{"idA":13,"idB":45,"type":0},{"idA":13,"idB":46,"type":0},{"idA":14,"idB":15,"type":0},{"idA":14,"idB":16,"type":0},{"idA":14,"idB":17,"type":0},{"idA":14,"idB":18,"type":0},{"idA":14,"idB":19,"type":0},{"idA":14,"idB":20,"type":0},{"idA":14,"idB":21,"type":0},{"idA":14,"idB":23,"type":0},{"idA":14,"idB":24,"type":0},{"idA":14,"idB":25,"type":0},{"idA":14,"idB":26,"type":0},{"idA":14,"idB":27,"type":0},{"idA":14,"idB":28,"type":0},{"idA":14,"idB":29,"type":0},{"idA":14,"idB":30,"type":0},{"idA":14,"idB":31,"type":0},{"idA":14,"idB":32,"type":0},{"idA":14,"idB":33,"type":0},{"idA":14,"idB":34,"type":0},{"idA":14,"idB":35,"type":0},{"idA":14,"idB":36,"type":0},{"idA":14,"idB":37,"type":0},{"idA":14,"idB":38,"type":0},{"idA":14,"idB":39,"type":0},{"idA":14,"idB":40,"type":0},{"idA":14,"idB":41,"type":0},{"idA":14,"idB":43,"type":0},{"idA":14,"idB":44,"type":0},{"idA":14,"idB":45,"type":0},{"idA":14,"idB":46,"type":0},{"idA":15,"idB":16,"type":0},{"idA":15,"idB":17,"type":0},{"idA":15,"idB":18,"type":0},{"idA":15,"idB":19,"type":0},{"idA":15,"idB":20,"type":0},{"idA":15,"idB":21,"type":0},{"idA":15,"idB":23,"type":0},{"idA":15,"idB":24,"type":0},{"idA":15,"idB":25,"type":0},{"idA":15,"idB":26,"type":0},{"idA":15,"idB":27,"type":0},{"idA":15,"idB":28,"type":0},{"idA":15,"idB":29,"type":0},{"idA":15,"idB":30,"type":0},{"idA":15,"idB":31,"type":0},{"idA":15,"idB":32,"type":0},{"idA":15,"idB":33,"type":0},{"idA":15,"idB":34,"type":0},{"idA":15,"idB":35,"type":0},{"idA":15,"idB":36,"type":0},{"idA":15,"idB":37,"type":0},{"idA":15,"idB":38,"type":0},{"idA":15,"idB":39,"type":0},{"idA":15,"idB":40,"type":0},{"idA":15,"idB":41,"type":0},{"idA":15,"idB":43,"type":0},{"idA":15,"idB":44,"type":0},{"idA":15,"idB":45,"type":0},{"idA":15,"idB":46,"type":0},{"idA":16,"idB":17,"type":0},{"idA":16,"idB":18,"type":0},{"idA":16,"idB":19,"type":0},{"idA":16,"idB":20,"type":0},{"idA":16,"idB":21,"type":0},{"idA":16,"idB":23,"type":0},{"idA":16,"idB":24,"type":0},{"idA":16,"idB":25,"type":0},{"idA":16,"idB":26,"type":0},{"idA":16,"idB":27,"type":0},{"idA":16,"idB":28,"type":0},{"idA":16,"idB":29,"type":0},{"idA":16,"idB":30,"type":0},{"idA":16,"idB":31,"type":0},{"idA":16,"idB":32,"type":0},{"idA":16,"idB":33,"type":0},{"idA":16,"idB":34,"type":0},{"idA":16,"idB":35,"type":0},{"idA":16,"idB":36,"type":0},{"idA":16,"idB":37,"type":0},{"idA":16,"idB":38,"type":0},{"idA":16,"idB":39,"type":0},{"idA":16,"idB":40,"type":0},{"idA":16,"idB":41,"type":0},{"idA":16,"idB":43,"type":0},{"idA":16,"idB":44,"type":0},{"idA":16,"idB":45,"type":0},{"idA":16,"idB":46,"type":0},{"idA":17,"idB":18,"type":0},{"idA":17,"idB":19,"type":0},{"idA":17,"idB":20,"type":0},{"idA":17,"idB":21,"type":0},{"idA":17,"idB":23,"type":0},{"idA":17,"idB":24,"type":0},{"idA":17,"idB":25,"type":0},{"idA":17,"idB":26,"type":0},{"idA":17,"idB":27,"type":0},{"idA":17,"idB":28,"type":0},{"idA":17,"idB":29,"type":0},{"idA":17,"idB":30,"type":0},{"idA":17,"idB":31,"type":0},{"idA":17,"idB":32,"type":0},{"idA":17,"idB":33,"type":0},{"idA":17,"idB":34,"type":0},{"idA":17,"idB":35,"type":0},{"idA":17,"idB":36,"type":0},{"idA":17,"idB":37,"type":0},{"idA":17,"idB":38,"type":0},{"idA":17,"idB":39,"type":0},{"idA":17,"idB":40,"type":0},{"idA":17,"idB":41,"type":0},{"idA":17,"idB":43,"type":0},{"idA":17,"idB":44,"type":0},{"idA":17,"idB":45,"type":0},{"idA":17,"idB":46,"type":0},{"idA":18,"idB":19,"type":0},{"idA":18,"idB":20,"type":0},{"idA":18,"idB":21,"type":0},{"idA":18,"idB":23,"type":0},{"idA":18,"idB":24,"type":0},{"idA":18,"idB":25,"type":0},{"idA":18,"idB":26,"type":0},{"idA":18,"idB":27,"type":0},{"idA":18,"idB":28,"type":0},{"idA":18,"idB":29,"type":0},{"idA":18,"idB":30,"type":0},{"idA":18,"idB":31,"type":0},{"idA":18,"idB":32,"type":0},{"idA":18,"idB":33,"type":0},{"idA":18,"idB":34,"type":0},{"idA":18,"idB":35,"type":0},{"idA":18,"idB":36,"type":0},{"idA":18,"idB":37,"type":0},{"idA":18,"idB":38,"type":0},{"idA":18,"idB":39,"type":0},{"idA":18,"idB":40,"type":0},{"idA":18,"idB":41,"type":0},{"idA":18,"idB":43,"type":0},{"idA":18,"idB":44,"type":0},{"idA":18,"idB":45,"type":0},{"idA":18,"idB":46,"type":0},{"idA":19,"idB":20,"type":0},{"idA":19,"idB":21,"type":0},{"idA":19,"idB":23,"type":0},{"idA":19,"idB":24,"type":0},{"idA":19,"idB":25,"type":0},{"idA":19,"idB":26,"type":0},{"idA":19,"idB":27,"type":0},{"idA":19,"idB":28,"type":0},{"idA":19,"idB":29,"type":0},{"idA":19,"idB":30,"type":0},{"idA":19,"idB":31,"type":0},{"idA":19,"idB":32,"type":0},{"idA":19,"idB":33,"type":0},{"idA":19,"idB":34,"type":0},{"idA":19,"idB":35,"type":0},{"idA":19,"idB":36,"type":0},{"idA":19,"idB":37,"type":0},{"idA":19,"idB":38,"type":0},{"idA":19,"idB":39,"type":0},{"idA":19,"idB":40,"type":0},{"idA":19,"idB":41,"type":0},{"idA":19,"idB":43,"type":0},{"idA":19,"idB":44,"type":0},{"idA":19,"idB":45,"type":0},{"idA":19,"idB":46,"type":0},{"idA":20,"idB":21,"type":0},{"idA":20,"idB":23,"type":0},{"idA":20,"idB":24,"type":0},{"idA":20,"idB":25,"type":0},{"idA":20,"idB":26,"type":0},{"idA":20,"idB":27,"type":0},{"idA":20,"idB":28,"type":0},{"idA":20,"idB":29,"type":0},{"idA":20,"idB":30,"type":0},{"idA":20,"idB":31,"type":0},{"idA":20,"idB":32,"type":0},{"idA":20,"idB":33,"type":0},{"idA":20,"idB":34,"type":0},{"idA":20,"idB":35,"type":0},{"idA":20,"idB":36,"type":0},{"idA":20,"idB":37,"type":0},{"idA":20,"idB":38,"type":0},{"idA":20,"idB":39,"type":0},{"idA":20,"idB":40,"type":0},{"idA":20,"idB":41,"type":0},{"idA":20,"idB":43,"type":0},{"idA":20,"idB":44,"type":0},{"idA":20,"idB":45,"type":0},{"idA":20,"idB":46,"type":0},{"idA":21,"idB":23,"type":0},{"idA":21,"idB":24,"type":0},{"idA":21,"idB":25,"type":0},{"idA":21,"idB":26,"type":0},{"idA":21,"idB":27,"type":0},{"idA":21,"idB":28,"type":0},{"idA":21,"idB":29,"type":0},{"idA":21,"idB":30,"type":0},{"idA":21,"idB":31,"type":0},{"idA":21,"idB":32,"type":0},{"idA":21,"idB":33,"type":0},{"idA":21,"idB":34,"type":0},{"idA":21,"idB":35,"type":0},{"idA":21,"idB":36,"type":0},{"idA":21,"idB":37,"type":0},{"idA":21,"idB":38,"type":0},{"idA":21,"idB":39,"type":0},{"idA":21,"idB":40,"type":0},{"idA":21,"idB":41,"type":0},{"idA":21,"idB":43,"type":0},{"idA":21,"idB":44,"type":0},{"idA":21,"idB":45,"type":0},{"idA":21,"idB":46,"type":0},{"idA":23,"idB":24,"type":0},{"idA":23,"idB":25,"type":0},{"idA":23,"idB":26,"type":0},{"idA":23,"idB":27,"type":0},{"idA":23,"idB":28,"type":0},{"idA":23,"idB":29,"type":0},{"idA":23,"idB":30,"type":0},{"idA":23,"idB":31,"type":0},{"idA":23,"idB":32,"type":0},{"idA":23,"idB":33,"type":0},{"idA":23,"idB":34,"type":0},{"idA":23,"idB":35,"type":0},{"idA":23,"idB":36,"type":0},{"idA":23,"idB":37,"type":0},{"idA":23,"idB":38,"type":0},{"idA":23,"idB":39,"type":0},{"idA":23,"idB":40,"type":0},{"idA":23,"idB":41,"type":0},{"idA":23,"idB":43,"type":0},{"idA":23,"idB":44,"type":0},{"idA":23,"idB":45,"type":0},{"idA":23,"idB":46,"type":0},{"idA":24,"idB":25,"type":0},{"idA":24,"idB":26,"type":0},{"idA":24,"idB":27,"type":0},{"idA":24,"idB":28,"type":0},{"idA":24,"idB":29,"type":0},{"idA":24,"idB":30,"type":0},{"idA":24,"idB":31,"type":0},{"idA":24,"idB":32,"type":0},{"idA":24,"idB":33,"type":0},{"idA":24,"idB":34,"type":0},{"idA":24,"idB":35,"type":0},{"idA":24,"idB":36,"type":0},{"idA":24,"idB":37,"type":0},{"idA":24,"idB":38,"type":0},{"idA":24,"idB":39,"type":0},{"idA":24,"idB":40,"type":0},{"idA":24,"idB":41,"type":0},{"idA":24,"idB":43,"type":0},{"idA":24,"idB":44,"type":0},{"idA":24,"idB":45,"type":0},{"idA":24,"idB":46,"type":0},{"idA":25,"idB":26,"type":0},{"idA":25,"idB":27,"type":0},{"idA":25,"idB":28,"type":0},{"idA":25,"idB":29,"type":0},{"idA":25,"idB":30,"type":0},{"idA":25,"idB":31,"type":0},{"idA":25,"idB":32,"type":0},{"idA":25,"idB":33,"type":0},{"idA":25,"idB":34,"type":0},{"idA":25,"idB":35,"type":0},{"idA":25,"idB":36,"type":0},{"idA":25,"idB":37,"type":0},{"idA":25,"idB":38,"type":0},{"idA":25,"idB":39,"type":0},{"idA":25,"idB":40,"type":0},{"idA":25,"idB":41,"type":0},{"idA":25,"idB":43,"type":0},{"idA":25,"idB":44,"type":0},{"idA":25,"idB":45,"type":0},{"idA":25,"idB":46,"type":0},{"idA":26,"idB":27,"type":0},{"idA":26,"idB":28,"type":0},{"idA":26,"idB":29,"type":0},{"idA":26,"idB":30,"type":0},{"idA":26,"idB":31,"type":0},{"idA":26,"idB":32,"type":0},{"idA":26,"idB":33,"type":0},{"idA":26,"idB":34,"type":0},{"idA":26,"idB":35,"type":0},{"idA":26,"idB":36,"type":0},{"idA":26,"idB":37,"type":0},{"idA":26,"idB":38,"type":0},{"idA":26,"idB":39,"type":0},{"idA":26,"idB":40,"type":0},{"idA":26,"idB":41,"type":0},{"idA":26,"idB":43,"type":0},{"idA":26,"idB":44,"type":0},{"idA":26,"idB":45,"type":0},{"idA":26,"idB":46,"type":0},{"idA":27,"idB":28,"type":0},{"idA":27,"idB":29,"type":0},{"idA":27,"idB":30,"type":0},{"idA":27,"idB":31,"type":0},{"idA":27,"idB":32,"type":0},{"idA":27,"idB":33,"type":0},{"idA":27,"idB":34,"type":0},{"idA":27,"idB":35,"type":0},{"idA":27,"idB":36,"type":0},{"idA":27,"idB":37,"type":0},{"idA":27,"idB":38,"type":0},{"idA":27,"idB":39,"type":0},{"idA":27,"idB":40,"type":0},{"idA":27,"idB":41,"type":0},{"idA":27,"idB":43,"type":0},{"idA":27,"idB":44,"type":0},{"idA":27,"idB":45,"type":0},{"idA":27,"idB":46,"type":0},{"idA":28,"idB":29,"type":0},{"idA":28,"idB":30,"type":0},{"idA":28,"idB":31,"type":0},{"idA":28,"idB":32,"type":0},{"idA":28,"idB":33,"type":0},{"idA":28,"idB":34,"type":0},{"idA":28,"idB":35,"type":0},{"idA":28,"idB":36,"type":0},{"idA":28,"idB":37,"type":0},{"idA":28,"idB":38,"type":0},{"idA":28,"idB":39,"type":0},{"idA":28,"idB":40,"type":0},{"idA":28,"idB":41,"type":0},{"idA":28,"idB":43,"type":0},{"idA":28,"idB":44,"type":0},{"idA":28,"idB":45,"type":0},{"idA":28,"idB":46,"type":0},{"idA":29,"idB":30,"type":0},{"idA":29,"idB":31,"type":0},{"idA":29,"idB":32,"type":0},{"idA":29,"idB":33,"type":0},{"idA":29,"idB":34,"type":0},{"idA":29,"idB":35,"type":0},{"idA":29,"idB":36,"type":0},{"idA":29,"idB":37,"type":0},{"idA":29,"idB":38,"type":0},{"idA":29,"idB":39,"type":0},{"idA":29,"idB":40,"type":0},{"idA":29,"idB":41,"type":0},{"idA":29,"idB":43,"type":0},{"idA":29,"idB":44,"type":0},{"idA":29,"idB":45,"type":0},{"idA":29,"idB":46,"type":0},{"idA":30,"idB":31,"type":0},{"idA":30,"idB":32,"type":0},{"idA":30,"idB":33,"type":0},{"idA":30,"idB":34,"type":0},{"idA":30,"idB":35,"type":0},{"idA":30,"idB":36,"type":0},{"idA":30,"idB":37,"type":0},{"idA":30,"idB":38,"type":0},{"idA":30,"idB":39,"type":0},{"idA":30,"idB":40,"type":0},{"idA":30,"idB":41,"type":0},{"idA":30,"idB":43,"type":0},{"idA":30,"idB":44,"type":0},{"idA":30,"idB":45,"type":0},{"idA":30,"idB":46,"type":0},{"idA":31,"idB":32,"type":0},{"idA":31,"idB":33,"type":0},{"idA":31,"idB":34,"type":0},{"idA":31,"idB":35,"type":0},{"idA":31,"idB":36,"type":0},{"idA":31,"idB":37,"type":0},{"idA":31,"idB":38,"type":0},{"idA":31,"idB":39,"type":0},{"idA":31,"idB":40,"type":0},{"idA":31,"idB":41,"type":0},{"idA":31,"idB":43,"type":0},{"idA":31,"idB":44,"type":0},{"idA":31,"idB":45,"type":0},{"idA":31,"idB":46,"type":0},{"idA":32,"idB":33,"type":0},{"idA":32,"idB":34,"type":0},{"idA":32,"idB":35,"type":0},{"idA":32,"idB":36,"type":0},{"idA":32,"idB":37,"type":0},{"idA":32,"idB":38,"type":0},{"idA":32,"idB":39,"type":0},{"idA":32,"idB":40,"type":0},{"idA":32,"idB":41,"type":0},{"idA":32,"idB":43,"type":0},{"idA":32,"idB":44,"type":0},{"idA":32,"idB":45,"type":0},{"idA":32,"idB":46,"type":0},{"idA":33,"idB":34,"type":0},{"idA":33,"idB":35,"type":0},{"idA":33,"idB":36,"type":0},{"idA":33,"idB":37,"type":0},{"idA":33,"idB":38,"type":1},{"idA":33,"idB":39,"type":1},{"idA":33,"idB":40,"type":0},{"idA":33,"idB":41,"type":0},{"idA":33,"idB":43,"type":0},{"idA":33,"idB":44,"type":0},{"idA":33,"idB":45,"type":0},{"idA":33,"idB":46,"type":0},{"idA":34,"idB":35,"type":0},{"idA":34,"idB":36,"type":1},{"idA":34,"idB":37,"type":0},{"idA":34,"idB":38,"type":0},{"idA":34,"idB":39,"type":0},{"idA":34,"idB":40,"type":0},{"idA":34,"idB":41,"type":0},{"idA":34,"idB":43,"type":0},{"idA":34,"idB":44,"type":0},{"idA":34,"idB":45,"type":0},{"idA":34,"idB":46,"type":0},{"idA":35,"idB":36,"type":1},{"idA":35,"idB":37,"type":0},{"idA":35,"idB":38,"type":0},{"idA":35,"idB":39,"type":0},{"idA":35,"idB":40,"type":1},{"idA":35,"idB":41,"type":0},{"idA":35,"idB":43,"type":0},{"idA":35,"idB":44,"type":0},{"idA":35,"idB":45,"type":0},{"idA":35,"idB":46,"type":0},{"idA":36,"idB":37,"type":0},{"idA":36,"idB":38,"type":0},{"idA":36,"idB":39,"type":0},{"idA":36,"idB":40,"type":0},{"idA":36,"idB":41,"type":0},{"idA":36,"idB":43,"type":0},{"idA":36,"idB":44,"type":0},{"idA":36,"idB":45,"type":0},{"idA":36,"idB":46,"type":0},{"idA":37,"idB":38,"type":0},{"idA":37,"idB":39,"type":1},{"idA":37,"idB":40,"type":0},{"idA":37,"idB":41,"type":0},{"idA":37,"idB":43,"type":0},{"idA":37,"idB":44,"type":0},{"idA":37,"idB":45,"type":0},{"idA":37,"idB":46,"type":0},{"idA":38,"idB":39,"type":0},{"idA":38,"idB":40,"type":0},{"idA":38,"idB":41,"type":0},{"idA":38,"idB":43,"type":0},{"idA":38,"idB":44,"type":0},{"idA":38,"idB":45,"type":0},{"idA":38,"idB":46,"type":0},{"idA":39,"idB":40,"type":0},{"idA":39,"idB":41,"type":0},{"idA":39,"idB":43,"type":0},{"idA":39,"idB":44,"type":0},{"idA":39,"idB":45,"type":0},{"idA":39,"idB":46,"type":0},{"idA":40,"idB":41,"type":0},{"idA":40,"idB":43,"type":0},{"idA":40,"idB":44,"type":0},{"idA":40,"idB":45,"type":0},{"idA":40,"idB":46,"type":0},{"idA":41,"idB":43,"type":0},{"idA":41,"idB":44,"type":0},{"idA":41,"idB":45,"type":0},{"idA":41,"idB":46,"type":0},{"idA":43,"idB":44,"type":0},{"idA":43,"idB":45,"type":0},{"idA":43,"idB":46,"type":0},{"idA":44,"idB":45,"type":0},{"idA":44,"idB":46,"type":0},{"idA":45,"idB":46,"type":0}]} diff --git a/build/lightdb/storage/uniqid b/build/lightdb/storage/uniqid index 7003e7f..2e66562 100755 --- a/build/lightdb/storage/uniqid +++ b/build/lightdb/storage/uniqid @@ -1 +1 @@ -51 \ No newline at end of file +49 \ No newline at end of file diff --git a/build/manager/ManagerError.php b/build/manager/ManagerError.php index 9b04bc6..930c95b 100644 --- a/build/manager/ManagerError.php +++ b/build/manager/ManagerError.php @@ -88,33 +88,33 @@ */ public static function explicit($error){ switch($error){ - case self::Success: return "Tout s'est bien deroulé."; break; + case self::Success: return "All right."; break; - case self::ParsingFailed: return "La lecture du fichier JSON ou XML a echouée."; break; + case self::ParsingFailed: return "JSON/XML file format error."; break; - case self::InvalidFlags: return "Les spécifications (drapeaux) sont incorrects."; break; - case self::UnreachableResource: return "La ressource n'existe pas (404)."; break; - case self::MissingPath: return "Le chemin de délégation n'a pas été renseigné."; break; - case self::WrongPathModule: return "Le chemin de délégation est incorrect ('nomModule/nomMethode')."; break; - case self::WrongPathRepo: return "Le chemin de délégation est incorrect ('nomRepo/nomMethode')."; break; - case self::UnknownModule: return "Le module n'existe pas."; break; - case self::UnknownRepo: return "Le repo n'existe pas."; break; - case self::UnknownMethod: return "Le methode n'existe pas."; break; - case self::UncallableMethod: return "Le methode n'est pas amorçable."; break; + case self::InvalidFlags: return "Flags are incorrect."; break; + case self::UnreachableResource: return "Resource unreachable (404)."; break; + case self::MissingPath: return "Path missing."; break; + case self::WrongPathModule: return "Module path incorrect 'module/method'."; break; + case self::WrongPathRepo: return "Repository path incorrect 'repo/method'."; break; + case self::UnknownModule: return "Requested module not found."; break; + case self::UnknownRepo: return "Requested repository not found."; break; + case self::UnknownMethod: return "Requested method not found."; break; + case self::UncallableMethod: return "Cannot call requested method."; break; - case self::ParamError: return "Un ou plusieurs paramètres sont manquants ou incorrects."; break; - case self::ModuleError: return "Erreur lors du traitement du module."; break; - case self::RepoError: return "Erreur lors du traitement du repo."; break; + case self::ParamError: return "Wrong or missing parameter(s)."; break; + case self::ModuleError: return "Module error."; break; + case self::RepoError: return "Repository error."; break; - case self::PDOConnection: return "La connexion avec la base de données a echouée."; break; + case self::PDOConnection: return "Database connection failed."; break; - case self::TokenError: return "Le token de connection est absent, érroné ou expiré."; break; - case self::PermissionError: return "Vous n'avez pas la permission d'effectuer cette action."; break; - case self::UploadError: return "Une erreur d'upload est survenue."; break; - case self::FormatError: return "Le fichier n'est pas au bon format."; break; - case self::Already: return "Action déja effectuée."; break; + case self::TokenError: return "Access token wrong, missing or expired."; break; + case self::PermissionError: return "Not granted to do so."; break; + case self::UploadError: return "Upload error."; break; + case self::FormatError: return "Format error."; break; + case self::Already: return "Already done."; break; - default: return "Description d'erreur inconnue..."; break; + default: return "Unknown debug error"; break; } // Erreur inconnue diff --git a/config/modules.json b/config/modules.json index 99c3566..91eda8d 100755 --- a/config/modules.json +++ b/config/modules.json @@ -34,7 +34,6 @@ "parameters": {} }, - "markdown": { "description": "Retourne une description en markdown des différents modules de l'API", "permissions": [], @@ -42,7 +41,6 @@ "parameters": {} }, - "apiBlueprint": { "description": "Retourne une documentation de l'API au format API Blueprint.", "permissions": [], @@ -70,7 +68,6 @@ "parameters": {} }, - "getById": { "description": "Retourne les informations d'un utilisateur.", "permissions": ["admin"], @@ -82,7 +79,6 @@ } }, - "getAll": { "description": "Retourne les informations de tous les utilisateurs.", "permissions": ["admin"], @@ -92,7 +88,6 @@ } }, - "create": { "description": "Creation d'un nouvel administrateur.", "permissions": ["admin"], @@ -106,7 +101,6 @@ } }, - "remove": { "description": "Suppression d'un utilisateur.", "permissions": ["admin"], @@ -127,7 +121,6 @@ } }, - "generate": { "description": "Création d'un token de nom et de durée donnée", "permissions": ["admin"], @@ -174,7 +167,6 @@ } }, - "create": { "description": "Creation d'un nouveau sujet.", "permissions": ["admin"], @@ -190,11 +182,26 @@ "input": { + "surveysync": { + "description": "Enregistre les données d'une enquête lab-surveys.", + "permissions": ["admin"], + "parameters": { + "subject": { "description": "Id du sujet concerné.", "type": "id" }, + "contacts": { "description": "Données des contacts de l'enquête.", "type": "array" }, + "mini": { "description": "Mini fiches relations sur les contacts de l'enquête.", "type": "array" }, + "fiches": { "description": "Fiches relation sur les plus proches contacts de l'enquête.", "type": "array" }, + "matrice": { "description": "Matrice contenant les relations entre les plus proches contacts", "type": "array", "optional": true } + }, + "output": { + "subject_id": { "description": "Identifiant du sujet complété", "type": "id" } + } + }, + "phone": { "description": "Enregistre les données d'une enquête téléphonique.", "permissions": ["admin"], "parameters": { - "subject": { "description": "Données sur le sujet de l'enquête.", "type": "array" }, + "subject": { "description": "Id du sujet concerné", "type": "id" }, "contacts": { "description": "Données des contacts de l'enquête.", "type": "array" }, "mini": { "description": "Mini fiches relations sur les contacts de l'enquête.", "type": "array" }, "fiches": { "description": "Fiches relation sur les plus proches contacts de l'enquête.", "type": "array" }, @@ -209,7 +216,7 @@ "description": "Enregistre les données d'une enquête facebook.", "permissions": ["admin"], "parameters": { - "subject": { "description": "Données sur le sujet de l'enquête.", "type": "array" }, + "subject": { "description": "Id du sujet concerné", "type": "id" }, "contacts": { "description": "Données des contacts de l'enquête.", "type": "array" }, "mini": { "description": "Mini fiches relations sur les contacts de l'enquête.", "type": "array" }, "fiches": { "description": "Fiches relation sur les plus proches contacts de l'enquête.", "type": "array" }, @@ -256,9 +263,6 @@ "options": { "download": true }, "parameters": { "subjects": { "description": "Identifiants des sujets d'enquêtes à intégrer.", "type": "array", "optional": true }, - "phone": { "description": "Si vaut TRUE, renvoie les sujets cellulaires.", "type": "boolean", "optional": true }, - "facebook": { "description": "Si vaut TRUE, renvoie les sujet facebook.", "type": "boolean", "optional": true }, - "survey": { "description": "Si vaut TRUE, renvoie les sujets ResTIC.", "type": "boolean", "optional": true }, "all": { "description": "Si vaut TRUE, renvoie tous les sujets enregistrés.", "type": "boolean", "optional": true } } }, diff --git a/public_html/view/data.php b/public_html/view/data.php index 2e9cd89..5a15a62 100644 --- a/public_html/view/data.php +++ b/public_html/view/data.php @@ -61,8 +61,8 @@ $pers = $request->answer();

Exporter les données au format .csv pour un logiciel de visualisation de réseau

Choix des sujets -
-
+
+


@@ -70,10 +70,10 @@ $pers = $request->answer();
-


Types de données +

diff --git a/public_html/view/js/data.js b/public_html/view/js/data.js index 29e51de..9432497 100644 --- a/public_html/view/js/data.js +++ b/public_html/view/js/data.js @@ -82,7 +82,7 @@ $('#export-form #export_export-all').addEventListener('click', function(e){ -/* [0] Gestion de l'export +/* [0] Gestion de l'export GEPHI =========================================================*/ /* (0) Initialisation des variables */ var chartsSubjectList = $('#charts_subject-list'); @@ -90,8 +90,8 @@ var chartsSubjectAdd = $('#charts_add-subject'); var chartsDeflater = new FormDeflater( document.getElementById('charts-form'), - ['input'], // éléments à éviter (tagName) - ['data-name'] // Attributs par ordre de priorité + ['input'], // éléments à éviter (tagName) + ['data-name'] // Attributs par ordre de priorité ); /* (1) Gestion de l'ajout dynamique des sujets */ @@ -134,17 +134,10 @@ $('#charts-form #charts_export-all').addEventListener('click', function(e){ /* (4) On construit la requête */ var request = { path: 'download/chart', - phone: deflated.phone == '1', // VRAI si on veut les données téléphoniques - facebook: deflated.facebook == '1', // VRAI si on veut les données facebook - survey: deflated.survey == '1', // VRAI si on veut les données ResTIC + subjects: subjects, all: deflated.group == 'all' // VRAI si on veut TOUS les sujets }; - // On ajoute les sujets s'il y en a - if( deflated.group != 'all' && subjects.length > 0 ) - request.subjects = subjects; - - /* (5) On lance la requête */ api.send(request, function(res){ diff --git a/public_html/view/js/input.js b/public_html/view/js/input.js index 012f0fb..a363ae8 100644 --- a/public_html/view/js/input.js +++ b/public_html/view/js/input.js @@ -310,7 +310,7 @@ var phoneRoutine = function(){ var request = { path: 'input/phone', - subject: lsi.export('p_subject')[0], + subject: lsi.export('p_subject')[0].subject_id, contacts: lsi.export('p_contacts'), mini: lsi.export('p_mini-fiches'), fiches: lsi.export('p_fiches'), @@ -457,7 +457,7 @@ var facebookRoutine = function(){ /* (1) On construit les données */ var data = { - subject: lsi.export('f_subject')[0], + subject: lsi.export('f_subject')[0].subject_id, contacts: lsi.export('f_contacts'), mini: lsi.export('f_mini-fiches'), fiches: lsi.export('f_fiches'), diff --git a/public_html/view/js/min/data.js b/public_html/view/js/min/data.js index 4fcd952..55be2fb 100644 --- a/public_html/view/js/min/data.js +++ b/public_html/view/js/min/data.js @@ -1,5 +1,4 @@ -var exportSubjectList=$("#export_subject-list"),exportSubjectAdd=$("#export_add-subject"),exportDeflater=new FormDeflater(document.getElementById("export-form"),["input"],["data-name"]);exportSubjectAdd.addEventListener("click",function(b){b=document.createElement("input");b.type="number";b.dataset.name="subjects";b.placeholder="Sujet";b.style="width: 5em; display: block;";exportSubjectList.appendChild(b)},!1); -$("#export-form #export_export-all").addEventListener("click",function(b){var a=(new FormDeflater(exportSubjectList,["input"],["data-name"])).deflate().subjects;b=[];a instanceof Array||(a=[a]);for(var c=0;c GATHERING ALL DATA");pContactManager.fieldsToStorage();pMiniManager.fieldsToStorage();pFicheManager.fieldsToStorage(); if(!pSubjectManager.check())return Notification.warning("Attention","Vous devez saisir les informations du sujet"),!1;a=lsi["export"]("p_mini-fiches");var b=0,c;for(c in a)if(!isNaN(c)&&(b++,!a[c].valid))return Notification.warning("Attention","La fiche rapide "+b+" est incompl\u00e8te et/ou incorrecte"),!1;a=lsi["export"]("p_fiches");for(c in a)if(!a[c].valid)return Notification.warning("Attention","La fiche compl\u00e8te "+(parseInt(c)+1)+" est incompl\u00e8te et/ou incorrecte"), -!1;c={path:"input/phone",subject:lsi["export"]("p_subject")[0],contacts:lsi["export"]("p_contacts"),mini:lsi["export"]("p_mini-fiches"),fiches:lsi["export"]("p_fiches"),matrice:lsi["export"]("p_matrice")[0]};api.send(c,function(a){console.log(a);if(0!=a.ModuleError)return Notification.error("ERREUR",a.ModuleError),!1;Notification.success("OK","L'identifiant du sujet est "+a.subject_id+" ! Tout s'est bien d\u00e9roul\u00e9.",1E4);console.log(a)},!1)},!1),console.groupEnd())}; +!1;c={path:"input/phone",subject:lsi["export"]("p_subject")[0].subject_id,contacts:lsi["export"]("p_contacts"),mini:lsi["export"]("p_mini-fiches"),fiches:lsi["export"]("p_fiches"),matrice:lsi["export"]("p_matrice")[0]};api.send(c,function(a){console.log(a);if(0!=a.ModuleError)return Notification.error("ERREUR",a.ModuleError),!1;Notification.success("OK","L'identifiant du sujet est "+a.subject_id+" ! Tout s'est bien d\u00e9roul\u00e9.",1E4);console.log(a)},!1)},!1),console.groupEnd())}; include("/js/includes/input-phone-subject.js",function(){pLoaded[0]=1;phoneRoutine()});include("/js/includes/input-phone-contact.js",function(){pLoaded[1]=1;phoneRoutine()});include("/js/includes/input-phone-mini.js",function(){pLoaded[2]=1;phoneRoutine()});include("/js/includes/input-phone-fiche.js",function(){pLoaded[3]=1;phoneRoutine()});include("/js/includes/input-phone-matrice.js",function(){pLoaded[4]=1;phoneRoutine()}); var fAlready=0,fLoaded=[0,0,0,0,0],facebookRoutine=function(){!Math.min.apply(Math,fLoaded)|fAlready||(fAlready=1,console.groupEnd(),console.group("[facebook] Initialization"),fSubjectManager=new inputFacebookSubject($('[data-sublink="facebook"] article.subject-panel [data-name="subject_id"]'),$('[data-sublink="facebook"] article.subject-panel [data-name="submit"]')),fSubjectManager.attach(fDynamicUpdate),fContactManager=new inputFacebookContact($('[data-sublink="facebook"] article.contact-panel'), $('[data-sublink="facebook"] #f_nav-contact')),fContactManager.attach(fDynamicUpdate),fMiniManager=new inputFacebookMini($('[data-sublink="facebook"] article.mini-relation-panel'),$('[data-sublink="facebook"] #f_nav-mini')),fMiniManager.attach(fDynamicUpdate),fFicheManager=new inputFacebookFiche($('[data-sublink="facebook"] article.relation-panel'),$('[data-sublink="facebook"] #f_nav-fiche')),fFicheManager.top_size=20,fFicheManager.attach(fDynamicUpdate),fMatriceManager=new inputFacebookMatrice($('[data-sublink="facebook"] article.matrice-panel')), fMatriceManager.attach(fDynamicUpdate),$('[data-sublink="facebook"] #f_clear-all').addEventListener("click",function(a){lsi.clear("f_subject");lsi.clear("f_contacts");lsi.clear("f_mini-fiches");lsi.clear("f_fiches");lsi.clear("f_matrice");lsi.clear("f_friends");fSubjectManager.storageToFields();fContactManager.storageToFields();fMiniManager.storageToFields();fFicheManager.storageToFields();fMatriceManager.storageToFields();Notification.success("OK","Les donn\u00e9es ont \u00e9t\u00e9 supprim\u00e9es")}, -!1),$('[data-sublink="facebook"] #f_export-all').addEventListener("click",function(a){Notification.info("INFORMATION","Lancement du t\u00e9l\u00e9chargement de la sauvegarde");a={subject:lsi["export"]("f_subject")[0],contacts:lsi["export"]("f_contacts"),mini:lsi["export"]("f_mini-fiches"),fiches:lsi["export"]("f_fiches"),matrice:lsi["export"]("f_matrice")[0]};var b=$('[data-sublink="facebook"] #f_download-target');b.download="local-facebook-data.json";b.href="data:application/octet-stream,"+encodeURIComponent(JSON.stringify(a)); -b.click()},!1),$('[data-sublink="facebook"] #f_import-all').addEventListener("click",function(a){$('[data-sublink="facebook"] #f_local-upload').click()},!1),$('[data-sublink="facebook"] #f_local-upload').addEventListener("click",function(a){a.target.value=null},!1),$('[data-sublink="facebook"] #f_local-upload').addEventListener("change",function(a){a={path:"upload/local_data",file:$('[data-sublink="facebook"] #f_local-upload').files[0]};api.send(a,function(a){console.log(a);if(0!=a.ModuleError)return Notification.error("Erreur", -a.ModuleError),!1;lsi.set("f_subject",0,a.local_data.subject);lsi["import"]("f_contacts",a.local_data.contacts);lsi["import"]("f_mini-fiches",a.local_data.mini);lsi["import"]("f_fiches",a.local_data.fiches);lsi.set("f_matrice",0,a.local_data.matrice);pSubjectManager.storageToFields();pContactManager.storageToFields();pMatriceManager.storageToFields();pDynamicUpdate(!0)})},!1),$('[data-sublink="facebook"] #f_submit-all').addEventListener("click",function(a){console.log("> GATHERING ALL DATA");pContactManager.fieldsToStorage(); -pMiniManager.fieldsToStorage();pFicheManager.fieldsToStorage();if(!pSubjectManager.check())return Notification.warning("Attention","Vous devez saisir les informations du sujet"),!1;a=lsi["export"]("f_mini-fiches");var b=0,c;for(c in a)if(!isNaN(c)&&(b++,!a[c].valid))return Notification.warning("Attention","La fiche rapide "+b+" est incompl\u00e8te et/ou incorrecte"),!1;a=lsi["export"]("f_fiches");for(c in a)if(!a[c].valid)return Notification.warning("Attention","La fiche compl\u00e8te "+ -(parseInt(c)+1)+" est incompl\u00e8te et/ou incorrecte"),!1;c={path:"input/facebook",subject:lsi["export"]("f_subject")[0],contacts:lsi["export"]("f_contacts"),mini:lsi["export"]("f_mini-fiches"),fiches:lsi["export"]("f_fiches"),matrice:lsi["export"]("f_matrice")[0]};api.send(c,function(a){console.log(a);if(0!=a.ModuleError)return Notification.error("ERREUR",a.ModuleError),!1;Notification.success("OK","L'identifiant du sujet est "+a.subject_id+" ! Tout s'est bien d\u00e9roul\u00e9.", -1E4);console.log(a)},!1)},!1),console.groupEnd())};include("/js/includes/input-facebook-subject.js",function(){fLoaded[0]=1;facebookRoutine()});include("/js/includes/input-facebook-contact.js",function(){fLoaded[1]=1;facebookRoutine()});include("/js/includes/input-facebook-mini.js",function(){fLoaded[2]=1;facebookRoutine()});include("/js/includes/input-facebook-fiche.js",function(){fLoaded[3]=1;facebookRoutine()});include("/js/includes/input-facebook-matrice.js",function(){fLoaded[4]=1;facebookRoutine()}); +!1),$('[data-sublink="facebook"] #f_export-all').addEventListener("click",function(a){Notification.info("INFORMATION","Lancement du t\u00e9l\u00e9chargement de la sauvegarde");a={subject:lsi["export"]("f_subject")[0].subject_id,contacts:lsi["export"]("f_contacts"),mini:lsi["export"]("f_mini-fiches"),fiches:lsi["export"]("f_fiches"),matrice:lsi["export"]("f_matrice")[0]};var b=$('[data-sublink="facebook"] #f_download-target');b.download="local-facebook-data.json";b.href="data:application/octet-stream,"+ +encodeURIComponent(JSON.stringify(a));b.click()},!1),$('[data-sublink="facebook"] #f_import-all').addEventListener("click",function(a){$('[data-sublink="facebook"] #f_local-upload').click()},!1),$('[data-sublink="facebook"] #f_local-upload').addEventListener("click",function(a){a.target.value=null},!1),$('[data-sublink="facebook"] #f_local-upload').addEventListener("change",function(a){a={path:"upload/local_data",file:$('[data-sublink="facebook"] #f_local-upload').files[0]};api.send(a,function(a){console.log(a); +if(0!=a.ModuleError)return Notification.error("Erreur",a.ModuleError),!1;lsi.set("f_subject",0,a.local_data.subject);lsi["import"]("f_contacts",a.local_data.contacts);lsi["import"]("f_mini-fiches",a.local_data.mini);lsi["import"]("f_fiches",a.local_data.fiches);lsi.set("f_matrice",0,a.local_data.matrice);pSubjectManager.storageToFields();pContactManager.storageToFields();pMatriceManager.storageToFields();pDynamicUpdate(!0)})},!1),$('[data-sublink="facebook"] #f_submit-all').addEventListener("click", +function(a){console.log("> GATHERING ALL DATA");pContactManager.fieldsToStorage();pMiniManager.fieldsToStorage();pFicheManager.fieldsToStorage();if(!pSubjectManager.check())return Notification.warning("Attention","Vous devez saisir les informations du sujet"),!1;a=lsi["export"]("f_mini-fiches");var b=0,c;for(c in a)if(!isNaN(c)&&(b++,!a[c].valid))return Notification.warning("Attention","La fiche rapide "+b+" est incompl\u00e8te et/ou incorrecte"),!1;a=lsi["export"]("f_fiches"); +for(c in a)if(!a[c].valid)return Notification.warning("Attention","La fiche compl\u00e8te "+(parseInt(c)+1)+" est incompl\u00e8te et/ou incorrecte"),!1;c={path:"input/facebook",subject:lsi["export"]("f_subject")[0],contacts:lsi["export"]("f_contacts"),mini:lsi["export"]("f_mini-fiches"),fiches:lsi["export"]("f_fiches"),matrice:lsi["export"]("f_matrice")[0]};api.send(c,function(a){console.log(a);if(0!=a.ModuleError)return Notification.error("ERREUR",a.ModuleError),!1;Notification.success("OK", +"L'identifiant du sujet est "+a.subject_id+" ! Tout s'est bien d\u00e9roul\u00e9.",1E4);console.log(a)},!1)},!1),console.groupEnd())};include("/js/includes/input-facebook-subject.js",function(){fLoaded[0]=1;facebookRoutine()});include("/js/includes/input-facebook-contact.js",function(){fLoaded[1]=1;facebookRoutine()});include("/js/includes/input-facebook-mini.js",function(){fLoaded[2]=1;facebookRoutine()});include("/js/includes/input-facebook-fiche.js",function(){fLoaded[3]=1;facebookRoutine()}); +include("/js/includes/input-facebook-matrice.js",function(){fLoaded[4]=1;facebookRoutine()}); var pDynamicUpdate=function(a){var b=a instanceof Element,c=b&&"INPUT"==a.tagName&&"submit"==a.type,g=b&&"SPAN"==a.tagName&&("p_nav-mini"==a.parentNode.id||"p_nav-fiche"==a.parentNode.id),b=b&&"SPAN"==a.tagName&&"p_nav-contact"==a.parentNode.id;if(!c&&!g&&!b&&!0!==a)return!1;console.groupEnd();console.groupEnd();console.group("[phone] Dynamic Update");pMiniManager.fieldsToStorage();pFicheManager.fieldsToStorage();pContactManager.fieldsToStorage();pMatriceManager.fieldsToStorage();pFicheManager.sync(); pMiniManager.sync();!0===a?api.send({path:"subject/getFriends",subject_id:pSubjectManager.subject_id.value},function(a){console.warn("xx",a);if(0!=a.ModuleError)return console.groupEnd(),!1;lsi["import"]("p_friends",a.subjects);pMiniManager.storageToFields();pFicheManager.storageToFields();pMatriceManager.storageToFields();pContactManager.storageToFields();pMiniManager.updateNavBar();pFicheManager.updateNavBar()}):(pMiniManager.storageToFields(),pFicheManager.storageToFields(),pMatriceManager.storageToFields(), pMiniManager.updateNavBar(),pFicheManager.updateNavBar(),(c||b)&&pContactManager.storageToFields());console.groupEnd()},fDynamicUpdate=function(a){var b=a instanceof Element,c=b&&"INPUT"==a.tagName&&"submit"==a.type,g=b&&"SPAN"==a.tagName&&("f_nav-mini"==a.parentNode.id||"f_nav-fiche"==a.parentNode.id),b=b&&"SPAN"==a.tagName&&"f_nav-contact"==a.parentNode.id;if(!c&&!g&&!b&&!0!==a)return!1;console.groupEnd();console.groupEnd();console.group("[facebook] Dynamic Update");fMiniManager.fieldsToStorage(); diff --git a/test/test.php b/test/debug.php similarity index 80% rename from test/test.php rename to test/debug.php index 066c47c..3a2fcc8 100644 --- a/test/test.php +++ b/test/debug.php @@ -13,9 +13,14 @@ if( $LOG ){ + var_dump('subjects'); + foreach($sl->index() as $index=>$null) + var_dump( $index.' # '.$sl->fetch($index)['subject']['name'] ); + $sub = $sl->fetch(1); - var_dump( count($sub['relations']) ); + var_dump( 'contacts: '.count($sub['contacts']) ); + var_dump( 'relations: '.count($sub['relations']) ); foreach($sub['relations'] as $rel){ if( $rel['idA'] == 1 )