Dear all,<br><br>I'm using R 2.8.1 with MySQL 5.1.33, RMySQL 0.7-3 (built against MySQL 5.1.3 version), DBI 0.2-4 on windows XP.<br><br>I'm trying to do a basic SQL statement <br><br>SELECT  AVG(mycolumnA), COUNT(mycolumnA), mycolumnB FROM mytable GROUP BY mycolumnB;<br>
<br>directly from R using DBI functions. But it just crashes R with no explicit reason. If I do manually this statement in MySQL (exactly <br>SELECT  AVG(mycolumnA), COUNT(mycolumnA), mycolumnB FROM mydb.mytable GROUP BY mycolumnB; ), it works and produces the following output :<br>
<br>+----------------+------------------+-----------+<br>| avg(mycolumnA) | count(mycolumnA) | mycolumnB |<br>+----------------+------------------+-----------+<br>|         0.5262 |              669 |         1 |<br>|         0.2242 |              455 |         2 |<br>
|         0.3347 |              505 |         3 |<br>|         0.2416 |              389 |         4 |<br>|         0.5857 |             1038 |         5 |<br>|         0.3250 |              523 |         6 |<br>|         0.1935 |              310 |         7 |<br>
|         0.3574 |              333 |         8 |<br>|         0.4132 |              167 |         9 |<br>|         0.3529 |              136 |        10 |<br>|         0.4043 |              282 |        11 |<br>|         0.0000 |                2 |        12 |<br>
+----------------+------------------+-----------+<br>12 rows in set (0.03 sec)<br><br clear="all">I have a reproductible example (this time). See the R file and the csv file. <br><br>Originally I worked with R 2.7.2 version and MySQL 5.0.67, RMySQL 0.6-1, DBI 0.2-4, and got the same crash.<br>
<br>Does anyone idea of what I'm doing wrong? or encounter similar problems?<br><br>Thanks in advance<br><br>Christophe<br><br>PS : I copy/paste my files, in the case attachments are not permitted.<br><br>---------------------------------------------------------------- mycode.R<br>
library(RODBC)<br>library(DBI)<br>library(RMySQL)<br>library(MASS)<br><br>options("max.print"=1000)<br>options(show.error.messages = TRUE)<br><br>checkMySQLreservedname <- function(name2check)<br>{<br># reserved name by MySQL cf. <a href="http://dev.mysql.com/doc/mysqld-version-reference/en/mysqld-version-reference-reservedwords-5-1.html">http://dev.mysql.com/doc/mysqld-version-reference/en/mysqld-version-reference-reservedwords-5-1.html</a><br>
<br><br>    thelist <- c("ACCESSIBLE","ADD","ALL",    "ALTER","ANALYZE","AND",    "AS","ASC","ASENSITIVE",<br>    "BEFORE","BETWEEN","BIGINT",    "BINARY","BLOB","BOTH",    "BY","CALL","CASCADE",<br>
    "CASE","CHANGE","CHAR",    "CHARACTER","CHECK","COLLATE",    "COLUMN","CONDITION","CONNECTION",<br>    "CONSTRAINT","CONTINUE","CONVERT",    "CREATE","CROSS","CURRENT_DATE",    "CURRENT_TIME","CURRENT_TIMESTAMP","CURRENT_USER",<br>
    "CURSOR","DATABASE","DATABASES",    "DAY_HOUR","DAY_MICROSECOND","DAY_MINUTE",    "DAY_SECOND","DEC","DECIMAL",<br>    "DECLARE","DEFAULT","DELAYED",    "DELETE","DESC","DESCRIBE",    "DETERMINISTIC","DISTINCT","DISTINCTROW",<br>
    "DIV","DOUBLE","DROP",    "DUAL","EACH","ELSE",    "ELSEIF","ENCLOSED","ESCAPED",<br>    "EXISTS","EXIT","EXPLAIN",    "FALSE","FETCH","FLOAT",    "FLOAT4","FLOAT8","FOR",<br>
    "FORCE","FOREIGN","FROM",    "FULLTEXT","GOTO","GRANT",    "GROUP","HAVING","HIGH_PRIORITY",<br>    "HOUR_MICROSECOND","HOUR_MINUTE","HOUR_SECOND",    "IF","IGNORE","IN",    "INDEX","INFILE","INNER",<br>
    "INOUT","INSENSITIVE","INSERT",    "INT","INT1","INT2",    "INT3","INT4","INT8",<br>    "INTEGER","INTERVAL","INTO",    "IS","ITERATE","JOIN",    "KEY","KEYS","KILL",<br>
    "LABEL","LEADING","LEAVE",    "LEFT","LIKE","LIMIT",    "LINEAR","LINES","LOAD",<br>    "LOCALTIME","LOCALTIMESTAMP","LOCK",    "LONG","LONGBLOB","LONGTEXT",    "LOOP","LOW_PRIORITY","MASTER_SSL_VERIFY_SERVER_CERT",<br>
    "MATCH","MEDIUMBLOB","MEDIUMINT",    "MEDIUMTEXT","MIDDLEINT","MINUTE_MICROSECOND",    "MINUTE_SECOND","MOD","MODIFIES",<br>    "NATURAL","NOT","NO_WRITE_TO_BINLOG",    "NULL","NUMERIC","ON",    "OPTIMIZE","OPTION","OPTIONALLY",<br>
    "OR","ORDER","OUT",    "OUTER","OUTFILE","PRECISION",    "PRIMARY","PROCEDURE","PURGE",<br>    "RANGE","READ","READS",    "READ_ONLY","READ_WRITE","REAL",    "REFERENCES","REGEXP","RELEASE",<br>
    "RENAME","REPEAT","REPLACE",    "REQUIRE","RESTRICT","RETURN",    "REVOKE","RIGHT","RLIKE",<br>    "SCHEMA","SCHEMAS","SECOND_MICROSECOND",    "SELECT","SENSITIVE","SEPARATOR",    "SET","SHOW","SMALLINT",<br>
    "SPATIAL","SPECIFIC","SQL",    "SQLEXCEPTION","SQLSTATE","SQLWARNING",    "SQL_BIG_RESULT","SQL_CALC_FOUND_ROWS","SQL_SMALL_RESULT",<br>
    "SSL","STARTING","STRAIGHT_JOIN",    "TABLE","TERMINATED","THEN",    "TINYBLOB","TINYINT","TINYTEXT",<br>    "TO","TRAILING","TRIGGER",    "TRUE","UNDO","UNION",    "UNIQUE","UNLOCK","UNSIGNED",<br>
    "UPDATE","UPGRADE","USAGE",    "USE","USING","UTC_DATE",    "UTC_TIME","UTC_TIMESTAMP","VALUES",<br>    "VARBINARY","VARCHAR","VARCHARACTER",    "VARYING","WHEN","WHERE",    "WHILE","WITH","WRITE",<br>
    "XOR","YEAR_MONTH","ZEROFILL")<br>    <br>    name2change <- name2check %in% thelist | name2check %in% tolower(thelist)<br>    name2change <- name2check[name2change]<br><br>    if(length(name2change) == 0) <br>
    {<br>        return(NULL)<br>    }else<br>        return(name2change)<br><br><br><br>}<br><br><br>changeName <- function(name)<br>{<br><br>    result <- sapply(name, FUN = function(x) paste("my__", x, sep=""))<br>
<br>    result<br>}<br><br><br>#-------------------------------------------------------<br><br>MyDirectory <- "C:/Documents and Settings/chris/Bureau/essai"<br>mytablename <- "mytable"<br>dbname <- "mydb"<br>
print.log <- TRUE<br>csvtype <- ";"<br><br>#-------------------------------------------------------<br><br>drv <- dbDriver("MySQL")<br>if(print.log) print(summary(drv))<br><br>con <- dbConnect(drv) <br>
if(print.log) print(summary(con))<br><br><br>dbSendQuery(con,  paste("CREATE DATABASE IF NOT EXISTS ", dbname))<br>con <- dbConnect(drv, dbname=dbname) #as anonymous<br><br>if(print.log) print(summary(con))<br>
<br>if(!is.character(mytablename))<br>    stop("internal error wrong table name") <br><br>if(dbExistsTable(con, mytablename))<br>    dbRemoveTable(con, mytablename)<br><br><br>dbefore <- getwd()<br><br>setwd(MyDirectory)<br>
<br><br>lfile <- list.files()<br>lfile <- lfile[grep(".csv",lfile)]<br><br><br>resExport <- matrix("",length(lfile),4)<br>colnames(resExport) <-  c("input file name", "nb row imported","nb column imported", "var name changed")<br>
<br>exporttoDB <- function(file, table, toappend, endofline="\r\n") <br>{<br>    <br>    #dimension checking<br>    if(csvtype == ",")    <br>    {    firstrow <- read.csv(file, nrows=1)        <br>
    }else if(csvtype == ";")<br>    {    firstrow <- read.csv2(file, nrows=1)    <br>    }else<br>    {    stop("wrong csv value separator, neither comma nor semi colon")<br>    }<br>    <br>    zecolname <- colnames(firstrow)<br>
<br>    nbcolumn <- length(zecolname)<br>    if(nbcolumn > 1)<br>    {    mask  <- c(NA, rep("NULL",nbcolumn-1))<br>    }else<br>    {    mask  <- NA<br>    }<br><br>    if(csvtype == ",")    <br>
    {    firstcolumn <- read.csv(file, colClasses=mask)        <br>    }else if(csvtype == ";")<br>    {    firstcolumn <- read.csv2(file, colClasses=mask)    <br>    }else<br>    {    stop("wrong csv value separator, neither comma nor semi colon")<br>
    }<br>    <br>    nbrow <- NROW(firstcolumn)<br><br>    need2Change <- checkMySQLreservedname(zecolname)<br>    if(!is.null(need2Change))<br>    {<br>        newname <- changeName(need2Change)<br>        zecolname[zecolname %in% need2Change] <- newname<br>
    }else<br>    {<br>        newname <- ""    <br>    }    <br><br><br>    if(print.log) print("dimension")<br>    if(print.log) print(nbrow)<br>    if(print.log) print(nbcolumn)<br>    <br>    # can be loaded directly into R<br>
    if(nbrow*nbcolumn <= 10*10^6)<br>    {<br>        if(csvtype == ",")    <br>        {    data <- read.csv(file)    <br>        }else if(csvtype == ";")<br>        {    data <- read.csv2(file)    <br>
        }else<br>        {    stop("wrong csv value separator, neither comma nor semi colon")<br>        }<br>        print(head(data))<br>            <br>        colnames(data) <- zecolname    <br><br>        dbWriteTable(con, table, data, append=toappend, eol=endofline)<br>
<br>        nbrowread <- NROW(data)<br>    }else<br>    {<br>    # must be splitted    <br>        nbpart <- ceiling(nbrow*nbcolumn/(10*10^6))<br>        nbrow2read <- ceiling(nbrow/nbpart)<br>        <br>        if(csvtype == ",")    <br>
        {    data <- read.csv(file, nrows=nbrow2read-1, skip=0, header=TRUE)    <br>        }else if(csvtype == ";")<br>        {    data <- read.csv2(file, nrows=nbrow2read-1, skip=0, header=TRUE)    <br>
        }else<br>        {    stop("wrong csv value separator, neither comma nor semi colon")<br>        }<br><br>        colnames(data) <- zecolname<br><br><br>        <br>        dbWriteTable(con, table, data, append=toappend, eol=endofline)    <br>
    <br>        nbrowread <- NROW(data)<br><br><br>        for(i in 2:nbpart)<br>        {<br>            if(csvtype == ",")    <br>            {    data <- read.csv(file, nrows=nbrow2read, skip=(i-1)*nbrow2read, header=FALSE)    <br>
            }else if(csvtype == ";")<br>            {    data <- read.csv2(file, nrows=nbrow2read, skip=(i-1)*nbrow2read, header=FALSE)    <br>            }else<br>            {    stop("wrong csv value separator, neither comma nor semi colon")<br>
            }<br>        <br>            colnames(data) <- zecolname<br><br><br><br>            dbWriteTable(con, table, data, append=TRUE, eol=endofline)    <br><br>            nbrowread <- nbrowread + NROW(data)<br>
<br>        }<br>    }    <br>    c(nbrowread, nbcolumn, newname) <br>}<br><br><br><br><br><br>tryexport <- function(...) <br>{<br>    as.character(try(exporttoDB(...)))<br>    #!(is.character(try(exporttoDB(...))))<br>
<br>}<br> <br>for (i in 1:length(lfile)) <br>{<br>    resExport[i,1] <- lfile[i]<br>    cat(lfile[i],"\n")<br>    resExport[i,2:4] <- tryexport(lfile[i], mytablename, ifelse(i==1, FALSE, TRUE))        <br>
}<br><br>setwd(dbefore)<br><br>if(print.log) <br>{<br>cat("check database\n")<br>print(dbListFields(con, mytablename))<br>print(dbListTables(con))<br>print(resExport)<br>}<br><br><br>sumdrv <- NULL<br>test.try <- try(sumdrv <- summary(drv))<br>
<br>if( !any(class(test.try) == "try-error" ))<br>{<br>    test.try <- try(all_cons <- dbListConnections(drv))<br>    if( any(class(test.try) == "try-error" ))<br>        traceback()<br>    <br>    if(length(all_cons) > 0)<br>
    {<br>      for(i in 1:length(all_cons))<br>      {<br>        test.try <- try(all_res <- dbListResults(all_cons[[i]]))<br>        <br>        if(length(all_res) > 0)<br>        {<br>          for(j in 1:length(all_res))<br>
            test.try <- try( dbClearResult(all_res[[j]]) )<br>        }<br>        test.try <- try( dbDisconnect(all_cons[[i]]) )<br>      }<br>    }<br><br>test.try <- try( dbUnloadDriver(drv) )<br><br>}<br><br>
<br>#-------------------------------------------------------<br><br>dodescriptive <- TRUE<br>dbname <- "mydb"<br>tablenametodescribe <- "mytable"<br>desciptvar <- "mycolumnA"<br>whereSQLcondition3 <- ""<br>
groupbySQLvar <- "mycolumnB"<br>havingSQLcondition3 <- ""<br>print.log <- TRUE<br>#-------------------------------------------------------<br># launch scripts<br>#open DBI connections<br>beginopen <- proc.time()[3]<br>
if(dodescriptive )<br>{<br>    <br>drv <- dbDriver("MySQL")<br>if(print.log) print(summary(drv))<br>print("---")<br>con <- dbConnect(drv, dbname=dbname) #as anonymous<br>if(print.log) print(summary(con))<br>
print("---")<br>}<br>endopen <- proc.time()[3]<br>#compute MCA<br>begindescribe <- proc.time()[3]<br>if(dodescriptive )<br>{<br>    <br>interestvar <- paste("AVG(",desciptvar,"), COUNT(",desciptvar, "), ",groupbySQLvar, sep="")<br>
<br>SQLDescribe <- paste("SELECT ", interestvar ,"FROM", tablenametodescribe, sep=" ")<br><br><br>if(nchar(whereSQLcondition3) != 0)<br>{<br>    SQLDescribe<- paste(SQLDescribe, "WHERE", whereSQLcondition3, sep=" ")<br>
}<br><br>if(nchar(groupbySQLvar) != 0)<br>{<br>    SQLDescribe <- paste(SQLDescribe, "GROUP BY", groupbySQLvar, sep=" ")<br>}<br><br>if(nchar(havingSQLcondition3) != 0)<br>{<br>    SQLDescribe <- paste(SQLDescribe, "HAVING", havingSQLcondition3, sep=" ")<br>
}<br><br>print(SQLDescribe )<br><br>#get info on the database<br>options(show.error.messages = FALSE)<br><br>test.try <- try(resSQL <- dbSendQuery(con, SQLDescribe))<br><br>if(class(test.try) == "try-error")<br>
{<br>    print("------ traceback")<br>      traceback()<br>    print("------ message")<br>      print(test.try[1])    <br>      stop("SQL query failed.")<br>}<br>print("---")<br>print(summary(con))<br>
<br>print("--->>>>")<br>print(resSQL)<br>print(summary(resSQL))<br>print("<<<<---")<br>options(show.error.messages = TRUE)<br><br><br>#if(print.log) print(summary(resSQL))<br><br>
#<br>#resfetched <- fetch(resSQL, n=-1)<br>#print(summary(resfetched))<br>#<br>#datadescribe <- data.frame(resfetched, stringsAsFactors=TRUE)<br>#<br>#if(print.log) print(whatis(datadescribe))<br>#<br># <br># <br>  <br>
}<br>enddescribe <- proc.time()[3]<br>#close DBI connections<br>beginclose <- proc.time()[3]<br>if(dodescriptive )<br>{<br>    <br>options(show.error.messages = FALSE)<br><br>sumdrv <- NULL<br>test.try <- try(sumdrv <- summary(drv))<br>
<br>if( !any(class(test.try) == "try-error" ))<br>{<br>    test.try <- try(all_cons <- dbListConnections(drv))<br>    if( any(class(test.try) == "try-error" ))<br>        traceback()<br>    <br>    if(length(all_cons) > 0)<br>
    {<br>      for(i in 1:length(all_cons))<br>      {<br>        test.try <- try(all_res <- dbListResults(all_cons[[i]]))<br>        <br>        if(length(all_res) > 0)<br>        {<br>          for(j in 1:length(all_res))<br>
            test.try <- try( dbClearResult(all_res[[j]]) )<br>        }<br>        test.try <- try( dbDisconnect(all_cons[[i]]) )<br>      }<br>    }<br><br>test.try <- try( dbUnloadDriver(drv) )<br><br>}<br><br>
options(show.error.messages = TRUE)<br><br><br><br>}<br>if(print.log) cat("database closing done\n")<br>endclose <- proc.time()[3]<br>timeopen <- significativeNumbers(4)(endopen-beginopen)<br>timedescribe <- significativeNumbers(4)(enddescribe - begindescribe)<br>
timeclose <- significativeNumbers(4)(endclose-beginclose)<br>time <- timeopen +begindescribe +timeclose<br><br><br>---------------------------------------------------------------- essai.csv<br><br>mycolumnA;mycolumnB<br>
1;7<br>1;11<br>1;10<br>1;11<br>1;11<br>1;11<br>1;11<br>1;11<br>1;9<br>1;11<br>1;6<br>1;6<br>1;6<br>1;6<br>1;6<br>1;6<br>1;6<br>1;6<br>1;6<br>1;6<br>1;6<br>1;11<br>1;11<br>1;10<br>1;11<br>1;5<br>1;11<br>1;11<br>1;5<br>1;5<br>
1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;11<br>1;4<br>1;4<br>1;4<br>1;4<br>1;4<br>1;4<br>1;4<br>1;4<br>1;4<br>1;4<br>1;10<br>1;5<br>1;11<br>1;4<br>1;8<br>1;8<br>1;8<br>1;8<br>1;8<br>
1;8<br>1;8<br>1;8<br>1;9<br>1;4<br>1;10<br>1;10<br>1;8<br>1;8<br>1;8<br>1;8<br>1;10<br>1;10<br>1;7<br>1;5<br>1;10<br>1;10<br>1;8<br>1;3<br>1;8<br>1;8<br>1;11<br>1;10<br>1;10<br>1;8<br>1;11<br>1;10<br>1;9<br>1;11<br>1;9<br>
1;11<br>1;11<br>1;9<br>1;9<br>1;2<br>1;9<br>1;9<br>1;11<br>1;11<br>1;11<br>1;6<br>1;11<br>1;9<br>1;9<br>1;7<br>1;4<br>1;10<br>1;10<br>1;8<br>1;11<br>1;2<br>1;9<br>1;9<br>1;11<br>1;9<br>1;9<br>1;11<br>1;7<br>1;11<br>1;11<br>
1;8<br>1;11<br>1;8<br>1;7<br>1;8<br>1;11<br>1;9<br>1;11<br>1;1<br>1;11<br>1;11<br>1;7<br>1;11<br>1;10<br>1;10<br>0;8<br>0;10<br>0;6<br>1;10<br>0;10<br>1;10<br>0;10<br>1;10<br>0;10<br>1;10<br>0;10<br>1;10<br>0;10<br>1;10<br>
1;10<br>0;10<br>1;10<br>0;10<br>1;10<br>0;10<br>1;10<br>0;10<br>1;10<br>1;10<br>0;10<br>0;10<br>1;10<br>0;10<br>1;10<br>0;8<br>0;8<br>0;7<br>0;7<br>0;7<br>0;6<br>0;6<br>0;6<br>0;10<br>0;10<br>0;5<br>0;5<br>0;5<br>0;5<br>0;5<br>
0;5<br>1;5<br>1;5<br>0;5<br>1;5<br>1;5<br>1;5<br>0;5<br>1;5<br>1;5<br>0;5<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;3<br>0;3<br>0;3<br>0;3<br>0;2<br>0;2<br>0;2<br>0;2<br>0;9<br>0;9<br>0;10<br>0;10<br>0;1<br>
0;1<br>0;1<br>0;1<br>0;1<br>0;1<br>0;1<br>0;1<br>0;5<br>1;10<br>1;7<br>1;7<br>1;7<br>1;7<br>1;7<br>1;6<br>1;6<br>1;6<br>1;6<br>1;6<br>1;6<br>1;6<br>1;6<br>1;6<br>1;6<br>0;11<br>1;8<br>1;4<br>1;4<br>1;4<br>1;4<br>0;11<br>1;11<br>
1;11<br>1;8<br>0;8<br>0;8<br>0;8<br>0;8<br>0;8<br>0;8<br>0;8<br>0;8<br>0;8<br>0;8<br>0;8<br>0;8<br>0;8<br>0;8<br>0;8<br>0;8<br>0;8<br>0;8<br>0;8<br>0;8<br>0;8<br>0;8<br>0;8<br>1;8<br>1;8<br>1;8<br>0;8<br>0;8<br>0;8<br>0;8<br>
0;8<br>0;8<br>0;8<br>0;8<br>0;8<br>0;8<br>0;8<br>0;8<br>0;8<br>0;8<br>0;8<br>1;8<br>1;8<br>1;8<br>1;8<br>1;8<br>1;8<br>1;8<br>0;8<br>0;8<br>0;8<br>0;8<br>0;8<br>0;8<br>0;8<br>0;7<br>0;7<br>0;7<br>0;7<br>0;7<br>0;7<br>0;7<br>
0;7<br>0;7<br>0;7<br>0;7<br>0;7<br>0;6<br>0;6<br>0;6<br>0;6<br>0;6<br>0;6<br>0;6<br>0;6<br>0;6<br>0;6<br>0;6<br>0;6<br>0;6<br>0;6<br>0;6<br>0;6<br>0;5<br>0;5<br>0;5<br>0;5<br>0;5<br>0;5<br>0;5<br>0;5<br>1;5<br>0;5<br>0;5<br>
0;5<br>0;5<br>0;5<br>0;8<br>0;8<br>0;8<br>0;8<br>0;8<br>0;8<br>0;4<br>0;6<br>0;4<br>0;8<br>0;4<br>0;4<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;8<br>0;8<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>
0;8<br>0;7<br>0;8<br>0;6<br>0;1<br>0;1<br>0;1<br>0;1<br>0;1<br>0;1<br>0;1<br>0;1<br>0;1<br>0;1<br>0;1<br>0;1<br>0;1<br>0;1<br>0;1<br>0;1<br>0;1<br>0;1<br>0;1<br>0;1<br>0;1<br>0;1<br>0;1<br>0;1<br>1;9<br>0;11<br>0;11<br>0;5<br>
0;11<br>0;11<br>0;11<br>0;11<br>0;11<br>0;11<br>0;11<br>1;11<br>0;11<br>0;10<br>1;5<br>0;2<br>0;2<br>1;3<br>0;12<br>0;12<br>1;3<br>1;3<br>1;3<br>1;2<br>1;2<br>1;2<br>0;7<br>0;7<br>0;6<br>0;6<br>0;6<br>0;6<br>0;6<br>0;6<br>
0;6<br>0;6<br>0;6<br>0;6<br>0;6<br>0;6<br>0;6<br>0;6<br>0;6<br>0;6<br>0;6<br>0;6<br>0;6<br>0;6<br>0;6<br>0;6<br>0;6<br>0;6<br>0;6<br>0;6<br>0;6<br>0;6<br>0;6<br>0;6<br>0;6<br>0;6<br>0;6<br>0;6<br>0;6<br>0;6<br>0;6<br>0;6<br>
0;6<br>0;6<br>0;6<br>0;6<br>0;6<br>0;6<br>0;6<br>0;6<br>0;6<br>0;6<br>0;6<br>0;6<br>0;6<br>0;6<br>0;6<br>0;6<br>0;6<br>0;6<br>0;6<br>0;6<br>0;6<br>0;6<br>0;6<br>0;6<br>0;6<br>0;6<br>0;6<br>0;6<br>0;6<br>0;6<br>0;6<br>1;6<br>
1;6<br>1;6<br>0;6<br>0;6<br>1;6<br>1;6<br>0;6<br>1;6<br>0;6<br>1;6<br>0;6<br>0;6<br>0;6<br>0;6<br>1;6<br>0;6<br>0;6<br>1;6<br>1;6<br>0;6<br>0;6<br>1;6<br>0;6<br>1;6<br>0;6<br>1;6<br>1;6<br>1;6<br>0;6<br>0;6<br>1;6<br>0;6<br>
1;6<br>1;6<br>1;6<br>0;6<br>0;6<br>1;6<br>1;6<br>1;6<br>1;6<br>0;6<br>1;6<br>0;6<br>1;6<br>1;6<br>1;6<br>0;6<br>0;6<br>1;6<br>0;6<br>0;6<br>1;6<br>1;6<br>1;6<br>0;6<br>1;6<br>0;6<br>0;6<br>1;6<br>1;6<br>1;6<br>1;6<br>1;6<br>
1;6<br>1;6<br>1;6<br>1;6<br>1;6<br>1;6<br>1;6<br>1;6<br>1;6<br>1;6<br>1;6<br>1;6<br>1;6<br>1;6<br>1;6<br>1;6<br>1;6<br>1;6<br>1;6<br>1;6<br>1;6<br>1;6<br>1;6<br>1;6<br>1;6<br>1;6<br>1;6<br>1;6<br>1;6<br>1;6<br>1;6<br>1;6<br>
1;6<br>1;6<br>1;6<br>1;6<br>1;6<br>1;6<br>1;6<br>1;6<br>1;6<br>1;6<br>1;6<br>1;6<br>1;6<br>1;6<br>1;6<br>1;6<br>1;6<br>1;6<br>1;6<br>1;6<br>1;6<br>1;6<br>1;6<br>1;6<br>1;6<br>1;6<br>1;6<br>1;6<br>1;6<br>1;6<br>0;6<br>1;6<br>
1;6<br>1;6<br>0;6<br>0;6<br>1;6<br>1;6<br>1;6<br>0;6<br>1;6<br>1;6<br>1;6<br>1;6<br>1;6<br>1;6<br>1;6<br>1;8<br>0;8<br>1;8<br>0;8<br>1;8<br>1;8<br>1;8<br>1;8<br>1;7<br>0;8<br>0;7<br>0;9<br>1;7<br>1;7<br>1;7<br>1;11<br>1;11<br>
1;11<br>1;11<br>1;8<br>1;8<br>1;8<br>1;8<br>1;8<br>1;8<br>1;8<br>1;8<br>0;5<br>0;5<br>0;5<br>0;5<br>0;5<br>0;5<br>0;5<br>0;5<br>0;5<br>0;10<br>0;9<br>0;9<br>0;6<br>0;7<br>0;7<br>0;7<br>0;7<br>0;5<br>0;7<br>0;7<br>0;7<br>0;7<br>
0;7<br>0;7<br>0;7<br>0;7<br>0;7<br>0;7<br>0;11<br>0;8<br>0;8<br>0;8<br>0;8<br>0;10<br>0;6<br>0;5<br>0;5<br>0;5<br>0;5<br>0;5<br>0;5<br>0;5<br>0;5<br>0;5<br>0;5<br>0;5<br>0;5<br>0;5<br>0;5<br>0;5<br>0;5<br>0;5<br>0;5<br>0;5<br>
0;5<br>0;5<br>0;5<br>0;8<br>0;11<br>0;8<br>0;8<br>0;9<br>0;5<br>0;5<br>0;5<br>0;5<br>0;5<br>0;5<br>1;5<br>0;5<br>0;5<br>0;5<br>0;5<br>0;5<br>0;5<br>0;5<br>0;5<br>0;5<br>0;5<br>0;5<br>0;5<br>0;5<br>0;5<br>0;5<br>0;5<br>0;5<br>
0;5<br>0;5<br>0;5<br>0;5<br>0;5<br>0;5<br>0;5<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>
0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>
0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>
0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>
0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;7<br>0;5<br>0;9<br>0;7<br>0;11<br>0;10<br>0;7<br>0;6<br>0;6<br>0;6<br>0;6<br>0;6<br>0;6<br>0;6<br>
0;6<br>0;6<br>0;6<br>0;8<br>0;9<br>0;9<br>0;9<br>0;9<br>0;9<br>0;9<br>0;9<br>0;9<br>0;9<br>0;9<br>0;9<br>0;9<br>0;9<br>0;9<br>0;9<br>0;9<br>1;9<br>0;8<br>0;8<br>0;9<br>0;7<br>0;7<br>0;6<br>0;8<br>0;8<br>0;8<br>0;6<br>0;6<br>
0;6<br>0;6<br>0;8<br>0;6<br>0;6<br>0;9<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>1;3<br>
0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>
0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>
0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>
0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>
0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;11<br>0;9<br>0;6<br>0;6<br>0;7<br>0;6<br>0;8<br>0;8<br>0;8<br>0;8<br>0;8<br>0;8<br>0;9<br>0;9<br>0;9<br>0;9<br>0;11<br>0;11<br>0;3<br>
0;3<br>0;3<br>0;3<br>1;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>
0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;6<br>0;9<br>0;6<br>0;6<br>0;8<br>0;8<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>
0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>
0;3<br>1;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;5<br>0;5<br>0;5<br>0;6<br>0;7<br>0;7<br>0;7<br>0;7<br>0;6<br>0;5<br>0;5<br>0;10<br>0;7<br>0;7<br>0;7<br>0;10<br>0;6<br>0;10<br>0;3<br>0;10<br>0;3<br>0;4<br>0;3<br>0;3<br>0;7<br>
0;3<br>0;3<br>0;9<br>0;7<br>0;9<br>0;9<br>0;9<br>0;9<br>0;9<br>0;9<br>0;9<br>0;8<br>0;8<br>0;8<br>0;8<br>0;8<br>0;7<br>0;7<br>0;8<br>0;6<br>0;10<br>0;10<br>0;8<br>0;7<br>0;8<br>0;2<br>0;5<br>0;8<br>0;7<br>0;8<br>0;6<br>0;6<br>
0;7<br>0;8<br>0;7<br>0;7<br>0;10<br>0;5<br>0;6<br>0;7<br>0;7<br>0;6<br>0;7<br>0;7<br>0;7<br>0;6<br>0;7<br>0;6<br>0;6<br>0;7<br>0;7<br>0;10<br>0;10<br>0;8<br>0;8<br>0;8<br>0;8<br>0;8<br>0;8<br>0;8<br>0;8<br>0;7<br>0;7<br>0;7<br>
0;7<br>0;7<br>0;7<br>0;7<br>0;7<br>0;7<br>0;7<br>0;7<br>0;7<br>0;7<br>0;7<br>0;7<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;7<br>0;7<br>0;10<br>0;6<br>0;8<br>0;8<br>0;8<br>0;8<br>
0;8<br>0;8<br>0;8<br>0;7<br>0;8<br>0;7<br>0;5<br>0;7<br>0;7<br>0;5<br>0;5<br>0;3<br>0;7<br>0;7<br>0;6<br>0;7<br>0;6<br>0;9<br>0;6<br>0;6<br>0;6<br>0;6<br>0;6<br>0;6<br>0;5<br>0;5<br>0;5<br>0;5<br>0;2<br>0;10<br>0;10<br>0;10<br>
0;10<br>0;10<br>0;10<br>0;10<br>0;10<br>0;8<br>0;8<br>0;8<br>0;8<br>0;8<br>0;8<br>0;8<br>0;7<br>0;7<br>0;7<br>0;7<br>0;7<br>0;7<br>0;7<br>0;2<br>0;7<br>0;7<br>0;7<br>0;7<br>0;7<br>0;7<br>0;6<br>0;5<br>0;5<br>0;5<br>0;5<br>
0;5<br>0;5<br>0;5<br>0;5<br>0;10<br>0;5<br>0;5<br>0;5<br>0;5<br>0;7<br>0;7<br>0;7<br>0;7<br>0;8<br>0;9<br>0;11<br>0;9<br>0;9<br>0;7<br>0;7<br>0;7<br>0;7<br>0;7<br>0;6<br>0;6<br>0;2<br>0;6<br>0;6<br>0;2<br>0;2<br>0;2<br>0;2<br>
0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;6<br>0;10<br>0;5<br>0;5<br>0;5<br>0;5<br>0;5<br>0;5<br>0;5<br>0;5<br>0;6<br>0;6<br>0;7<br>0;10<br>0;7<br>0;9<br>0;9<br>0;9<br>0;9<br>0;9<br>0;9<br>0;8<br>0;9<br>0;7<br>
0;9<br>0;10<br>0;10<br>0;6<br>0;8<br>0;11<br>0;6<br>0;6<br>0;6<br>0;6<br>0;6<br>0;6<br>0;6<br>0;6<br>0;6<br>0;6<br>0;6<br>0;6<br>0;6<br>0;6<br>0;6<br>0;6<br>0;6<br>0;6<br>0;6<br>0;6<br>0;6<br>0;6<br>0;5<br>0;6<br>0;5<br>0;6<br>
0;6<br>0;6<br>0;6<br>1;10<br>1;9<br>0;10<br>0;6<br>1;11<br>1;9<br>1;6<br>0;6<br>1;6<br>0;7<br>1;7<br>1;7<br>1;9<br>1;6<br>1;6<br>1;10<br>1;6<br>1;6<br>1;11<br>1;6<br>1;6<br>0;7<br>1;6<br>0;5<br>0;3<br>0;6<br>1;6<br>1;6<br>
1;6<br>1;6<br>1;6<br>1;6<br>0;6<br>1;6<br>1;1<br>1;6<br>1;6<br>1;6<br>1;6<br>1;6<br>1;6<br>1;6<br>1;6<br>0;6<br>1;6<br>0;6<br>1;6<br>0;6<br>1;6<br>1;6<br>0;5<br>0;7<br>0;10<br>0;5<br>1;1<br>1;1<br>1;1<br>1;1<br>1;1<br>1;1<br>
1;1<br>1;1<br>1;1<br>1;1<br>1;1<br>1;1<br>1;1<br>1;1<br>0;1<br>0;1<br>0;1<br>0;1<br>0;1<br>0;1<br>0;11<br>0;2<br>1;11<br>1;11<br>0;3<br>1;5<br>1;5<br>1;3<br>1;3<br>1;3<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>
0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>1;2<br>1;2<br>1;2<br>1;2<br>1;2<br>0;2<br>0;1<br>0;1<br>
0;1<br>0;1<br>0;1<br>0;1<br>0;1<br>1;11<br>1;11<br>1;11<br>1;11<br>1;11<br>1;11<br>1;8<br>1;8<br>1;8<br>1;8<br>1;11<br>1;11<br>1;11<br>1;11<br>1;11<br>1;11<br>1;11<br>1;11<br>1;11<br>1;11<br>1;8<br>1;11<br>1;11<br>0;1<br>
0;1<br>0;1<br>0;1<br>0;1<br>0;1<br>0;1<br>0;1<br>0;1<br>0;1<br>0;1<br>0;1<br>0;1<br>0;1<br>1;11<br>0;1<br>0;1<br>0;1<br>0;1<br>0;1<br>0;9<br>0;11<br>0;11<br>0;11<br>0;7<br>1;7<br>0;7<br>0;7<br>0;7<br>0;7<br>0;5<br>0;5<br>
0;5<br>0;9<br>0;5<br>0;9<br>0;5<br>0;5<br>0;4<br>0;11<br>0;6<br>0;8<br>0;8<br>0;4<br>0;4<br>0;4<br>0;11<br>0;11<br>0;11<br>0;8<br>0;8<br>0;11<br>0;3<br>0;11<br>0;11<br>0;2<br>0;2<br>0;2<br>0;9<br>0;11<br>0;2<br>0;2<br>0;1<br>
0;1<br>0;1<br>0;1<br>0;1<br>0;1<br>0;1<br>0;1<br>0;1<br>1;1<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>
1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>0;5<br>0;5<br>0;5<br>0;5<br>0;5<br>0;5<br>0;5<br>0;5<br>0;5<br>0;5<br>0;5<br>0;5<br>0;5<br>0;5<br>0;5<br>
0;5<br>0;5<br>0;5<br>0;5<br>0;5<br>0;5<br>0;5<br>0;5<br>1;5<br>0;5<br>1;5<br>0;5<br>0;5<br>0;5<br>0;5<br>0;5<br>0;5<br>0;5<br>0;5<br>0;5<br>0;5<br>0;5<br>0;5<br>0;5<br>0;5<br>0;5<br>0;5<br>0;5<br>0;5<br>0;5<br>0;5<br>0;5<br>
0;5<br>0;5<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;5<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;1<br>0;1<br>0;1<br>0;1<br>0;1<br>0;1<br>0;1<br>0;1<br>0;1<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>
1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;2<br>1;2<br>1;2<br>1;6<br>0;7<br>0;6<br>1;6<br>1;6<br>0;6<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>0;5<br>1;5<br>1;5<br>1;5<br>
1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>
1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>0;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>0;5<br>1;5<br>0;5<br>1;5<br>
1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>0;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>1;5<br>
1;5<br>1;5<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;4<br>0;7<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>
0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;3<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>1;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>
0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>
0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>
0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>0;2<br>
0;2<br>0;2<br>0;2<br>0;2<br><br><br>-- <br>Christophe DUTANG<br>Ph. D. student at ISFA<br>