diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..369d8e2 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,111 @@ +########################################################### +# Dockerfile de construção do container Solr +# utilizado pelo SEI e pelo SIP +# +# Baseado no CentOS 6.X +############################################################ + +# Define a imagem de base para o CentOS 6.X +FROM centos:centos6 + +# Autor e mantenedor do container +MAINTAINER MPOG\Guilherme Andrade Del Cantoni + +# Atualização do source list do repositório +RUN yum update -y && yum upgrade -y + +################## INICIO DA INSTALACAO ###################### +# Instalação do MySQL seguindo as recomendações descritas na documentação do SEI +# Ref: http://# + +# Instalação do pacote Java JDK +RUN yum install -y java-1.7.0-openjdk-devel + +# Instalação dos utilitários utilizados no provisionamento +RUN yum install -y wget tar which curl + +# Criação de usuário de execução do serviço +RUN useradd -r -s /bin/bash solr + +# Obtenção do pacote de instalação do Solr 4.9 +RUN wget -q -O /opt/solr-4.9.0.tgz http://archive.apache.org/dist/lucene/solr/4.9.0/solr-4.9.0.tgz + +# Instalação do Solr +RUN tar xvz -C /opt -f /opt/solr-4.9.0.tgz && chown -R solr:solr /opt/solr-4.9.0 && rm /opt/solr-4.9.0.tgz + +# Configuração dos parâmetros default +RUN echo "JAVA_OPTIONS='-Dsolr.solr.home=/opt/solr-4.9.0/example/solr $JAVA_OPTIONS'" | tee -a /etc/default/jetty && \ + echo "JETTY_HOME=/opt/solr-4.9.0/example" | tee -a /etc/default/jetty && \ + echo "JETTY_USER=solr" | tee -a /etc/default/jetty + +# Configuração do script de inicialização automática +RUN wget -q -O /etc/init.d/solr http://dev.eclipse.org/svnroot/rt/org.eclipse.jetty/jetty/trunk/jetty-distribution/src/main/resources/bin/jetty.sh +RUN chmod +x /etc/init.d/solr + +# Criação dos diretório de armazenamento de índices +RUN mkdir /var/opt/sei && \ + mkdir /var/opt/sei/sei-protocolos && ln -s /var/opt/sei/sei-protocolos /opt/solr-4.9.0/example/solr/ && \ + mkdir /var/opt/sei/sei-bases-conhecimento && ln -s /var/opt/sei/sei-bases-conhecimento /opt/solr-4.9.0/example/solr/ && \ + mkdir /var/opt/sei/sei-publicacoes && ln -s /var/opt/sei/sei-publicacoes /opt/solr-4.9.0/example/solr/ + +# Copia do conjunto de configurações padrão do Solr +RUN cp -R /opt/solr-4.9.0/example/solr/collection1/conf /var/opt/sei/sei-protocolos/ && \ + cp -R /opt/solr-4.9.0/example/solr/collection1/conf /var/opt/sei/sei-bases-conhecimento/ && \ + cp -R /opt/solr-4.9.0/example/solr/collection1/conf /var/opt/sei/sei-publicacoes/ + +# Removeção dos arquivos schema.xml e solrconfig.xml das cópias +RUN rm /var/opt/sei/sei-protocolos/conf/schema.xml && \ + rm /var/opt/sei/sei-bases-conhecimento/conf/schema.xml && \ + rm /var/opt/sei/sei-publicacoes/conf/schema.xml && \ + rm /var/opt/sei/sei-protocolos/conf/solrconfig.xml && \ + rm /var/opt/sei/sei-bases-conhecimento/conf/solrconfig.xml && \ + rm /var/opt/sei/sei-publicacoes/conf/solrconfig.xml + +# Configuração dos índices do SEI +ADD index/sei-protocolos-schema.xml /var/opt/sei/sei-protocolos/conf/sei-protocolos-schema.xml +ADD index/sei-bases-conhecimento-schema.xml /var/opt/sei/sei-bases-conhecimento/conf/sei-bases-conhecimento-schema.xml +ADD index/sei-publicacoes-schema.xml /var/opt/sei/sei-publicacoes/conf/sei-publicacoes-schema.xml +ADD index/sei-protocolos-config.xml /var/opt/sei/sei-protocolos/conf/sei-protocolos-config.xml +ADD index/sei-bases-conhecimento-config.xml /var/opt/sei/sei-bases-conhecimento/conf/sei-bases-conhecimento-config.xml +ADD index/sei-publicacoes-config.xml /var/opt/sei/sei-publicacoes/conf/sei-publicacoes-config.xml + +# Criação de diretório de conteúdo para os índices +RUN mkdir /var/opt/sei/sei-protocolos/conteudo && \ + mkdir /var/opt/sei/sei-bases-conhecimento/conteudo && \ + mkdir /var/opt/sei/sei-publicacoes/conteudo + +# Configuração dos links a instalação do Solr e o índice Protocolo +RUN ln -s /opt/solr-4.9.0/contrib/ /var/opt/sei/sei-protocolos/contrib && \ + ln -s /opt/solr-4.9.0/dist/ /var/opt/sei/sei-protocolos/dist && \ + ln -s /opt/solr-4.9.0/example/lib/ /var/opt/sei/sei-protocolos/lib + +# Configuração dos links a instalação do Solr e o índice Base de Conhecimento +RUN ln -s /opt/solr-4.9.0/contrib/ /var/opt/sei/sei-bases-conhecimento/contrib && \ + ln -s /opt/solr-4.9.0/dist/ /var/opt/sei/sei-bases-conhecimento/dist && \ + ln -s /opt/solr-4.9.0/example/lib/ /var/opt/sei/sei-bases-conhecimento/lib + +# Configuração dos links a instalação do Solr e o índice Publicações +RUN ln -s /opt/solr-4.9.0/contrib/ /var/opt/sei/sei-publicacoes/contrib && \ + ln -s /opt/solr-4.9.0/dist/ /var/opt/sei/sei-publicacoes/dist && \ + ln -s /opt/solr-4.9.0/example/lib/ /var/opt/sei/sei-publicacoes/lib + +# Configuração de log e permissões de pastas +RUN mkdir /var/log/solr +RUN chown solr:solr -R /opt/solr-4.9.0 /var/opt/sei /var/log/solr + +# Construção dos índices do SEI +RUN service solr start && sleep 6 && \ + curl http://localhost/solr/admin/cores?action=CREATE&name=seiprotocolos&instanceDir=/var/opt/sei/sei-protocolos&config=sei-protocolosconfig.xml&schema=sei-protocolos-schema.xml&dataDir=/var/opt/sei/sei-protocolos/conteudo && \ + curl http://localhost/solr/admin/cores?action=CREATE&name=sei-basesconhecimento&instanceDir=/var/opt/sei/sei-bases-conhecimento&config=sei-bases-conhecimentoconfig.xml&schema=sei-bases-conhecimento-schema.xml&dataDir=/var/opt/sei/sei-basesconhecimento/conteudo && \ + curl http://localhost/solr/admin/cores?action=CREATE&name=seipublicacoes&instanceDir=/var/opt/sei/sei-publicacoes&config=sei-publicacoesconfig.xml&schema=sei-publicacoes-schema.xml&dataDir=/var/opt/sei/sei-publicacoes/conteudo + +#RUN service solr start && sleep 6 && curl http://localhost/solr/admin/cores?action=RELOAD + +##################### FIM DA INSTALACAO ##################### +WORKDIR /opt/solr-4.9.0/example + +# Expõe a porta padrão do MySQL Server +EXPOSE 8983 + +# Default port to execute the entrypoint (MongoDB) +CMD ["java", "-jar", "start.jar"] \ No newline at end of file diff --git a/index/sei-bases-conhecimento-config.xml b/index/sei-bases-conhecimento-config.xml new file mode 100755 index 0000000..a905520 --- /dev/null +++ b/index/sei-bases-conhecimento-config.xml @@ -0,0 +1,1773 @@ + + + + + + + + + LUCENE_40 + + + + + + + + + + + + + + + + + + + + + + + + + + ${solr.data.dir:} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 300000 + false + + + + + + + + + + + + + ${solr.data.dir:} + + + + + + + + + + + + + + 1024 + + + + + + + + + + + + + + + + + + + + + + true + + + + + + 20 + + + 200 + + + + + + + + + + + + static firstSearcher warming in solrconfig.xml + + + + + + false + + + 2 + + + + + + + + + + + + + + + + + + + + + + + explicit + 10 + text + + + + + + + + + + + + + + + explicit + json + true + text + + + + + + + + true + json + true + + + + + + + + explicit + + + velocity + browse + layout + Solritas + + + edismax + + text^0.5 features^1.0 name^1.2 sku^1.5 id^10.0 manu^1.1 cat^1.4 + title^10.0 description^5.0 keywords^5.0 author^2.0 resourcename^1.0 + + text + 100% + *:* + 10 + *,score + + + text^0.5 features^1.0 name^1.2 sku^1.5 id^10.0 manu^1.1 cat^1.4 + title^10.0 description^5.0 keywords^5.0 author^2.0 resourcename^1.0 + + text,features,name,sku,id,manu,cat,title,description,keywords,author,resourcename + 3 + + + on + cat + manu_exact + content_type + author_s + ipod + GB + 1 + cat,inStock + after + price + 0 + 600 + 50 + popularity + 0 + 10 + 3 + manufacturedate_dt + NOW/YEAR-10YEARS + NOW + +1YEAR + before + after + + + on + content + html + ]]> + ]]> + 0 + title + 0 + name + 3 + 1000 + content + 250 + + + + on + false + 5 + 2 + 5 + true + true + 5 + 3 + + + + + spellcheck + + + + + + + + + + + + + + application/json + + + + + application/csv + + + + + + + true + ignored_ + + + true + links + ignored_ + + + + + + + + + + + + + + + + + + + + + + solrpingquery + + + all + + + + + + + + + explicit + true + + + + + + + + + + + + + + + + textSpell + + + + + + default + name + solr.DirectSolrSpellChecker + + internal + + 0.5 + + 2 + + 1 + + 5 + + 4 + + 0.01 + + + + + + wordbreak + solr.WordBreakSolrSpellChecker + name + true + true + 10 + + + + + + + + + + + + + + + + text + + default + wordbreak + on + true + 10 + 5 + 5 + true + true + 10 + 5 + + + spellcheck + + + + + + + + + + text + true + + + tvComponent + + + + + + + + + default + + + org.carrot2.clustering.lingo.LingoClusteringAlgorithm + + + 20 + + + clustering/carrot2 + + + PORTUGUESE + + + stc + org.carrot2.clustering.stc.STCClusteringAlgorithm + + + + + + + true + default + true + + name + id + + features + + true + + + + false + + edismax + + text^0.5 features^1.0 name^1.2 sku^1.5 id^10.0 manu^1.1 cat^1.4 + + *:* + 10 + *,score + + + clustering + + + + + + + + + + true + false + + + terms + + + + + + + + string + elevate.xml + + + + + + explicit + text + + + elevator + + + + + + + + + + + 250 + + + + + + + + 250 + + 0.5 + + [-\w ,/\n\"']{20,200} + + + + + + + ]]> + ]]> + + + + + + + + + + + + + + + + + + + + + + + + ,, + ,, + ,, + ,, + ,]]> + ]]> + + + + + + 10 + .,!? + + + + + + + + + WORD + + + pt + BR + + + + + + + + + + + + + + + + + + + + + + text/plain; charset=UTF-8 + + + + + + + + + 5 + + + + + + + + + + + + + + + + + + *:* + + + diff --git a/index/sei-bases-conhecimento-schema.xml b/index/sei-bases-conhecimento-schema.xml new file mode 100755 index 0000000..f2c80d1 --- /dev/null +++ b/index/sei-bases-conhecimento-schema.xml @@ -0,0 +1,1147 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/index/sei-protocolos-config.xml b/index/sei-protocolos-config.xml new file mode 100755 index 0000000..a905520 --- /dev/null +++ b/index/sei-protocolos-config.xml @@ -0,0 +1,1773 @@ + + + + + + + + + LUCENE_40 + + + + + + + + + + + + + + + + + + + + + + + + + + ${solr.data.dir:} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 300000 + false + + + + + + + + + + + + + ${solr.data.dir:} + + + + + + + + + + + + + + 1024 + + + + + + + + + + + + + + + + + + + + + + true + + + + + + 20 + + + 200 + + + + + + + + + + + + static firstSearcher warming in solrconfig.xml + + + + + + false + + + 2 + + + + + + + + + + + + + + + + + + + + + + + explicit + 10 + text + + + + + + + + + + + + + + + explicit + json + true + text + + + + + + + + true + json + true + + + + + + + + explicit + + + velocity + browse + layout + Solritas + + + edismax + + text^0.5 features^1.0 name^1.2 sku^1.5 id^10.0 manu^1.1 cat^1.4 + title^10.0 description^5.0 keywords^5.0 author^2.0 resourcename^1.0 + + text + 100% + *:* + 10 + *,score + + + text^0.5 features^1.0 name^1.2 sku^1.5 id^10.0 manu^1.1 cat^1.4 + title^10.0 description^5.0 keywords^5.0 author^2.0 resourcename^1.0 + + text,features,name,sku,id,manu,cat,title,description,keywords,author,resourcename + 3 + + + on + cat + manu_exact + content_type + author_s + ipod + GB + 1 + cat,inStock + after + price + 0 + 600 + 50 + popularity + 0 + 10 + 3 + manufacturedate_dt + NOW/YEAR-10YEARS + NOW + +1YEAR + before + after + + + on + content + html + ]]> + ]]> + 0 + title + 0 + name + 3 + 1000 + content + 250 + + + + on + false + 5 + 2 + 5 + true + true + 5 + 3 + + + + + spellcheck + + + + + + + + + + + + + + application/json + + + + + application/csv + + + + + + + true + ignored_ + + + true + links + ignored_ + + + + + + + + + + + + + + + + + + + + + + solrpingquery + + + all + + + + + + + + + explicit + true + + + + + + + + + + + + + + + + textSpell + + + + + + default + name + solr.DirectSolrSpellChecker + + internal + + 0.5 + + 2 + + 1 + + 5 + + 4 + + 0.01 + + + + + + wordbreak + solr.WordBreakSolrSpellChecker + name + true + true + 10 + + + + + + + + + + + + + + + + text + + default + wordbreak + on + true + 10 + 5 + 5 + true + true + 10 + 5 + + + spellcheck + + + + + + + + + + text + true + + + tvComponent + + + + + + + + + default + + + org.carrot2.clustering.lingo.LingoClusteringAlgorithm + + + 20 + + + clustering/carrot2 + + + PORTUGUESE + + + stc + org.carrot2.clustering.stc.STCClusteringAlgorithm + + + + + + + true + default + true + + name + id + + features + + true + + + + false + + edismax + + text^0.5 features^1.0 name^1.2 sku^1.5 id^10.0 manu^1.1 cat^1.4 + + *:* + 10 + *,score + + + clustering + + + + + + + + + + true + false + + + terms + + + + + + + + string + elevate.xml + + + + + + explicit + text + + + elevator + + + + + + + + + + + 250 + + + + + + + + 250 + + 0.5 + + [-\w ,/\n\"']{20,200} + + + + + + + ]]> + ]]> + + + + + + + + + + + + + + + + + + + + + + + + ,, + ,, + ,, + ,, + ,]]> + ]]> + + + + + + 10 + .,!? + + + + + + + + + WORD + + + pt + BR + + + + + + + + + + + + + + + + + + + + + + text/plain; charset=UTF-8 + + + + + + + + + 5 + + + + + + + + + + + + + + + + + + *:* + + + diff --git a/index/sei-protocolos-schema.xml b/index/sei-protocolos-schema.xml new file mode 100755 index 0000000..a19e1b3 --- /dev/null +++ b/index/sei-protocolos-schema.xml @@ -0,0 +1,1163 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/index/sei-publicacoes-config.xml b/index/sei-publicacoes-config.xml new file mode 100755 index 0000000..7cec1ed --- /dev/null +++ b/index/sei-publicacoes-config.xml @@ -0,0 +1,1773 @@ + + + + + + + + + LUCENE_40 + + + + + + + + + + + + + + + + + + + + + + + + + + ${solr.data.dir:} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 300000 + false + + + + + + + + + + + + + ${solr.data.dir:} + + + + + + + + + + + + + + 1024 + + + + + + + + + + + + + + + + + + + + + + true + + + + + + 20 + + + 200 + + + + + + + + + + + + static firstSearcher warming in solrconfig.xml + + + + + + false + + + 2 + + + + + + + + + + + + + + + + + + + + + + + explicit + 10 + text + + + + + + + + + + + + + + + explicit + json + true + text + + + + + + + + true + json + true + + + + + + + + explicit + + + velocity + browse + layout + Solritas + + + edismax + + text^0.5 features^1.0 name^1.2 sku^1.5 id^10.0 manu^1.1 cat^1.4 + title^10.0 description^5.0 keywords^5.0 author^2.0 resourcename^1.0 + + text + 100% + *:* + 10 + *,score + + + text^0.5 features^1.0 name^1.2 sku^1.5 id^10.0 manu^1.1 cat^1.4 + title^10.0 description^5.0 keywords^5.0 author^2.0 resourcename^1.0 + + text,features,name,sku,id,manu,cat,title,description,keywords,author,resourcename + 3 + + + on + cat + manu_exact + content_type + author_s + ipod + GB + 1 + cat,inStock + after + price + 0 + 600 + 50 + popularity + 0 + 10 + 3 + manufacturedate_dt + NOW/YEAR-10YEARS + NOW + +1YEAR + before + after + + + on + content + html + ]]> + ]]> + 0 + title + 0 + name + 3 + 1000 + content + 250 + + + + on + false + 5 + 2 + 5 + true + true + 5 + 3 + + + + + spellcheck + + + + + + + + + + + + + + application/json + + + + + application/csv + + + + + + + true + ignored_ + + + true + links + ignored_ + + + + + + + + + + + + + + + + + + + + + + solrpingquery + + + all + + + + + + + + + explicit + true + + + + + + + + + + + + + + + + textSpell + + + + + + default + name + solr.DirectSolrSpellChecker + + internal + + 0.5 + + 2 + + 1 + + 5 + + 4 + + 0.01 + + + + + + wordbreak + solr.WordBreakSolrSpellChecker + name + true + true + 10 + + + + + + + + + + + + + + + + text + + default + wordbreak + on + true + 10 + 5 + 5 + true + true + 10 + 5 + + + spellcheck + + + + + + + + + + text + true + + + tvComponent + + + + + + + + + default + + + org.carrot2.clustering.lingo.LingoClusteringAlgorithm + + + 20 + + + clustering/carrot2 + + + PORTUGUESE + + + stc + org.carrot2.clustering.stc.STCClusteringAlgorithm + + + + + + + true + default + true + + name + id + + features + + true + + + + false + + edismax + + text^0.5 features^1.0 name^1.2 sku^1.5 id^10.0 manu^1.1 cat^1.4 + + *:* + 10 + *,score + + + clustering + + + + + + + + + + true + false + + + terms + + + + + + + + string + elevate.xml + + + + + + explicit + text + + + elevator + + + + + + + + + + + 250 + + + + + + + + 250 + + 0.5 + + [-\w ,/\n\"']{20,200} + + + + + + + ]]> + ]]> + + + + + + + + + + + + + + + + + + + + + + + + ,, + ,, + ,, + ,, + ,]]> + ]]> + + + + + + 10 + .,!? + + + + + + + + + WORD + + + pt + BR + + + + + + + + + + + + + + + + + + + + + + text/plain; charset=UTF-8 + + + + + + + + + 5 + + + + + + + + + + + + + + + + + + *:* + + + \ No newline at end of file diff --git a/index/sei-publicacoes-schema.xml b/index/sei-publicacoes-schema.xml new file mode 100755 index 0000000..631d7b8 --- /dev/null +++ b/index/sei-publicacoes-schema.xml @@ -0,0 +1,1177 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file -- libgit2 0.21.2