Documentation is now generated by scons

This commit is contained in:
Sylvain Tricot 2020-03-27 17:47:50 +01:00
parent 927ac8a8a3
commit e2ec1e8bcd
15 changed files with 481 additions and 110 deletions

1
.gitignore vendored
View File

@ -8,3 +8,4 @@ __pycache__
htmlcov htmlcov
package/ package/
src/msspec/results.txt src/msspec/results.txt
*venv/

88
doc/SConstruct Normal file
View File

@ -0,0 +1,88 @@
# SCons file for Sphinx
import sys
sys.path.append('./source')
import subprocess
from pathlib import Path
from sphinx.cmd.build import main as sphinx_build
import custom
doc = Environment(
# You can set these variables from the command line.
SPHINXOPTS = "",
SPHINXBUILD = "sphinx-build",
PAPER = "",
BUILDDIR = "build")
# Internal variables.
PAPEROPT_a4 = "-D latex_elements.papersize=a4paper"
#PAPEROPT_a4 = "-D latex_paper_size=a4"
#PAPEROPT_letter = "-D latex_paper_size=letter"
ALLSPHINXOPTS = f"-d {doc['BUILDDIR']}/doctrees {PAPEROPT_a4} {doc['SPHINXOPTS']} source"
# the i18n builder cannot share the environment and doctrees with the others
I18NSPHINXOPTS = "{PAPEROPT_a4} {SPHINXOPTS} source"
# create the banner of the website
banner_src = "./source/title_template.svg"
banner_tgt = "./source/title.svg"
def build_banner(env, target, source):
custom.modify_banner(str(source[0]), str(target[0]))
banner = doc.Command(banner_tgt, banner_src, Action(build_banner, "Creating the website banner..."))
doc.Alias('banner', banner)
# convert *.svg and *.gif to *.png
# first find all of them
src_dir = Path('./source')
svg_pictures = list(src_dir.glob('**/*.svg'))
gif_pictures = list(src_dir.glob('**/*.gif'))
# conversion
pictures = []
for f in svg_pictures + banner:
pictures += doc.Command(str(f).replace('.svg', '.png'), str(f),
Action("convert -background none -density 150 $SOURCE $TARGET",
"Converting $SOURCE to PNG..."))
for f in gif_pictures:
pictures += doc.Command(str(f).replace('.gif', '.png'), str(f),
Action("convert -background none -density 150 $SOURCE[0] $TARGET",
"Converting $SOURCE to PNG..."))
doc.Alias('pictures', pictures)
Depends(pictures, banner)
# html
def html_builder(env, target, source):
return sphinx_build(f"-b html {ALLSPHINXOPTS} {doc['BUILDDIR']}/html".split())
html = doc.Command("html.target", [], Action(html_builder, "Building html..."))
Depends(html, [banner, pictures])
AlwaysBuild(html)
Clean(html, f"{doc['BUILDDIR']}/html")
doc.Alias('html', html)
# generate sitemap.xml
t = f"{doc['BUILDDIR']}/html/sitemap.xml"
cmd = f"python source/sitemap-generate.py --url https://msspec.cnrs.fr --path {doc['BUILDDIR']}/html {t}"
sitemap = doc.Command(t, [], cmd)#Action(cmd, "Generating sitemap.xml..."))
Depends(sitemap, html)
doc.Alias('html', sitemap)
# install ownership
t = f"{doc['BUILDDIR']}/html"
s = Glob('source/google*.html')
ownership = doc.Install(t, s)
Depends(ownership, html)
doc.Alias('html', ownership)
# LaTeX PDF
def latexpdf_builder(env, target, source):
rc = sphinx_build(f"-b latex {ALLSPHINXOPTS} {doc['BUILDDIR']}/latex".split())
if rc == 0:
subprocess.call(f"make -C {doc['BUILDDIR']}/latex all-pdf".split())
latexpdf = doc.Command("latexpdf.target", [], Action(latexpdf_builder, "Building LaTeX PDF..."))
Depends(latexpdf, [banner, pictures])
AlwaysBuild(latexpdf)
Clean(latexpdf, f"{doc['BUILDDIR']}/latex")
doc.Alias('latexpdf', latexpdf)

View File

@ -18,9 +18,10 @@ import sys, os
# add these directories to sys.path here. If the directory is relative to the # add these directories to sys.path here. If the directory is relative to the
# documentation root, use os.path.abspath to make it absolute, like shown here. # documentation root, use os.path.abspath to make it absolute, like shown here.
sys.path.append(os.path.abspath('./')) sys.path.append(os.path.abspath('./'))
sys.path.append(os.path.abspath('../../src')) sys.path.append(os.path.abspath('../../src/msspec'))
import custom import custom
import msspec
@ -50,7 +51,7 @@ master_doc = 'index'
# General information about the project. # General information about the project.
project = u'MsSpec-python' project = u'MsSpec-python'
copyright = u'2016, Rennes Institute of Physics' copyright = u'2020, Rennes Institute of Physics'
# The version info for the project you're documenting, acts as replacement for # The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the # |version| and |release|, also used in various other places throughout the
@ -59,8 +60,7 @@ copyright = u'2016, Rennes Institute of Physics'
# The short X.Y version. # The short X.Y version.
version, dev_version = custom.get_package_version() version, dev_version = custom.get_package_version()
# The full version, including alpha/beta/rc tags. # The full version, including alpha/beta/rc tags.
#release = custom.get_package_version() release = msspec.__version__
release = '{}.post{}'.format(version, dev_version).strip('.post')
# The language for content autogenerated by Sphinx. Refer to documentation # The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages. # for a list of supported languages.

View File

@ -8,20 +8,15 @@ import re
import numpy as np import numpy as np
from lxml import etree from lxml import etree
print(os.getcwd()) import msspec
sys.path.append('../../src')
from msspec.calculator import MSSPEC from msspec.calculator import MSSPEC
from msspec.misc import set_log_level
set_log_level("error")
def get_package_version(): def get_package_version():
p = subprocess.run(["git describe|sed 's/-/.post/'|cut -d'-' -f1"], shell=True, stdout=subprocess.PIPE) version, *dev_version = msspec.__version__.split('.post')
full_version = p.stdout.decode('utf-8').strip() return version, "".join(dev_version)
versions = full_version.split('.post')
version = versions[0]
dev_version = ""
if len(versions) > 1:
dev_version = versions[1]
return version, dev_version
def generate_download_page(): def generate_download_page():
full_version = '.post'.join(get_package_version()).strip('.post') full_version = '.post'.join(get_package_version()).strip('.post')
@ -42,9 +37,9 @@ click :download:`here <{}>` to download the last version of MsSpec and
""".format(setupfile_path, docfile_path) """.format(setupfile_path, docfile_path)
fd.write(content) fd.write(content)
def modify_banner(): def modify_banner(inputfile='./title_template.svg', outputfile='./title.svg'):
version, dev_version = get_package_version() version, dev_version = get_package_version()
xml = etree.parse('./title.svg') xml = etree.parse(inputfile)
old_content = etree.tostring(xml) old_content = etree.tostring(xml)
svg = xml.getroot() svg = xml.getroot()
elements = svg.findall(".//{http://www.w3.org/2000/svg}tspan") elements = svg.findall(".//{http://www.w3.org/2000/svg}tspan")
@ -61,7 +56,7 @@ def modify_banner():
new_content = etree.tostring(xml).decode('utf-8') new_content = etree.tostring(xml).decode('utf-8')
if new_content != old_content: if new_content != old_content:
with open('./title.svg', 'w') as fd: with open(outputfile, 'w') as fd:
fd.write(new_content) fd.write(new_content)
def generate_parameters(spectroscopy=None): def generate_parameters(spectroscopy=None):

View File

@ -1,4 +1,3 @@
.. .. :orphan:
.. automodule:: calcio .. automodule:: calcio
:members: :members:

View File

@ -7,7 +7,6 @@ import re
from lxml import etree from lxml import etree
import argparse import argparse
opt_defaults = {'include': ".*\.html|.*\.pdf", opt_defaults = {'include': ".*\.html|.*\.pdf",
'exclude': "google.*\.html", 'exclude': "google.*\.html",
'timezone': 'Europe/Paris'} 'timezone': 'Europe/Paris'}

View File

@ -0,0 +1,219 @@
<!-- Created with Inkscape (http://www.inkscape.org/) --><svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="301.37326mm" height="150.32599mm" viewBox="0 0 301.37326 150.32598" version="1.1" id="svg8" sodipodi:docname="title.svg" style="enable-background:new" inkscape:version="0.92.2 (5c3e80d, 2017-08-06)">
<defs id="defs2">
<linearGradient inkscape:collect="always" id="linearGradient5962">
<stop style="stop-color:#ffffff;stop-opacity:0.85714287" offset="0" id="stop5958"/>
<stop style="stop-color:#ffffff;stop-opacity:0.31122449" offset="1" id="stop5960"/>
</linearGradient>
<linearGradient inkscape:collect="always" id="linearGradient5835">
<stop style="stop-color:#004371;stop-opacity:1;" offset="0" id="stop5831"/>
<stop style="stop-color:#ffffff;stop-opacity:1" offset="1" id="stop5833"/>
</linearGradient>
<linearGradient inkscape:collect="always" id="linearGradient4564-7">
<stop style="stop-color:#8e8e8e;stop-opacity:1" offset="0" id="stop4560"/>
<stop style="stop-color:#ffffff;stop-opacity:1" offset="1" id="stop4562"/>
</linearGradient>
<linearGradient inkscape:collect="always" xlink:href="#linearGradient4564-7" id="linearGradient4514" x1="58.972996" y1="49.015751" x2="59.154068" y2="26.337181" gradientUnits="userSpaceOnUse" gradientTransform="translate(10.381061,80.870041)"/>
<filter inkscape:label="Apparition" inkscape:menu="Blurs" inkscape:menu-tooltip="Edges are partly feathered out" style="color-interpolation-filters:sRGB" id="filter4611">
<feMorphology radius="4" in="SourceGraphic" result="result0" id="feMorphology4605"/>
<feGaussianBlur in="result0" stdDeviation="8" result="result91" id="feGaussianBlur4607"/>
<feComposite operator="in" in="SourceGraphic" in2="result91" id="feComposite4609"/>
</filter>
<filter inkscape:collect="always" style="color-interpolation-filters:sRGB" id="filter5665" x="-0.029506898" width="1.0590138" y="-0.1285961" height="1.2571923">
<feGaussianBlur inkscape:collect="always" stdDeviation="1.1495044" id="feGaussianBlur5667"/>
<feBlend inkscape:collect="always" mode="overlay" in2="BackgroundImage" id="feBlend5669"/>
</filter>
<linearGradient inkscape:collect="always" xlink:href="#linearGradient4564-7" id="linearGradient5733" gradientUnits="userSpaceOnUse" gradientTransform="translate(70.929414,60.911197)" x1="58.972996" y1="49.015751" x2="59.154068" y2="26.337181"/>
<filter inkscape:collect="always" style="color-interpolation-filters:sRGB" id="filter5792" x="-0.035265453" width="1.0705309" y="-0.075129762" height="1.1502595">
<feGaussianBlur inkscape:collect="always" stdDeviation="0.53456858" id="feGaussianBlur5794"/>
</filter>
<linearGradient inkscape:collect="always" xlink:href="#linearGradient4564-7" id="linearGradient5812" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1.5580433,0,0,1.5580433,130.60604,76.559167)" x1="58.972996" y1="49.015751" x2="59.154068" y2="26.337181"/>
<linearGradient inkscape:collect="always" xlink:href="#linearGradient5835" id="linearGradient5837" x1="200.18488" y1="228.84627" x2="200.45215" y2="96.280594" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1,0,0,0.52096691,-3.2072347,41.946135)"/>
<linearGradient inkscape:collect="always" xlink:href="#linearGradient5962" id="linearGradient5964" x1="261.8537" y1="157.31599" x2="239.34149" y2="134.75891" gradientUnits="userSpaceOnUse"/>
<radialGradient r="220.91101" fy="444.57248" fx="205.52562" cy="444.57248" cx="205.52562" spreadMethod="pad" gradientTransform="matrix(0.854086,0.989918,-0.732768,0.632222,355.7578,-40.26915)" gradientUnits="userSpaceOnUse" id="radialGradient18134" xlink:href="#linearGradient2505" inkscape:collect="always"/>
<linearGradient id="linearGradient2505">
<stop id="stop2499" offset="0" style="stop-color:#f9f9f9;stop-opacity:1"/>
<stop style="stop-color:#ffffff;stop-opacity:0.990991" offset="0.59999979" id="stop2501"/>
<stop id="stop2503" offset="1" style="stop-color:#ffffff;stop-opacity:0.0045045"/>
</linearGradient>
<filter id="filter11536" inkscape:collect="always">
<feGaussianBlur id="feGaussianBlur11538" stdDeviation="2.2348973" inkscape:collect="always"/>
</filter>
<radialGradient r="14.8125" fy="105.86218" fx="378" cy="105.86218" cx="378" gradientUnits="userSpaceOnUse" id="radialGradient18138" xlink:href="#linearGradient17684" inkscape:collect="always" gradientTransform="matrix(0.08675742,0,0,0.08675742,265.38358,83.762581)"/>
<linearGradient id="linearGradient17684">
<stop style="stop-color:white;stop-opacity:1;" offset="0" id="stop17678"/>
<stop id="stop17680" offset="0.61656123" style="stop-color:#ff5451;stop-opacity:1"/>
<stop style="stop-color:#801d08;stop-opacity:1" offset="1" id="stop17682"/>
</linearGradient>
<radialGradient r="14.8125" fy="105.86218" fx="378" cy="105.86218" cx="378" gradientUnits="userSpaceOnUse" id="radialGradient18140" xlink:href="#linearGradient17684" inkscape:collect="always" gradientTransform="matrix(0.10045591,0,0,0.10045591,258.98855,82.874188)"/>
<radialGradient r="38.57143" fy="145.05405" fx="213.50658" cy="145.05405" cx="213.50658" gradientTransform="matrix(0.08468443,-0.01655451,0.01655451,0.08468443,271.58716,83.508144)" gradientUnits="userSpaceOnUse" id="radialGradient18142" xlink:href="#linearGradient17668" inkscape:collect="always"/>
<linearGradient id="linearGradient17668">
<stop style="stop-color:#dde3f8;stop-opacity:1;" offset="0" id="stop17662"/>
<stop id="stop17664" offset="0.59999979" style="stop-color:#094976;stop-opacity:1"/>
<stop style="stop-color:#000000;stop-opacity:1" offset="1" id="stop17666"/>
</linearGradient>
<radialGradient r="38.57143" fy="145.05405" fx="213.50658" cy="145.05405" cx="213.50658" gradientTransform="matrix(0.09554143,-0.01867689,0.01867689,0.09554143,267.11146,82.729168)" gradientUnits="userSpaceOnUse" id="radialGradient18144" xlink:href="#linearGradient17668" inkscape:collect="always"/>
<radialGradient r="14.8125" fy="105.86218" fx="378" cy="105.86218" cx="378" gradientUnits="userSpaceOnUse" id="radialGradient18146" xlink:href="#linearGradient17684" inkscape:collect="always" gradientTransform="matrix(0.1141544,0,0,0.1141544,267.06598,81.914853)"/>
<radialGradient r="14.8125" fy="105.86218" fx="378" cy="105.86218" cx="378" gradientUnits="userSpaceOnUse" id="radialGradient18148" xlink:href="#linearGradient17684" inkscape:collect="always" gradientTransform="matrix(0.1278529,0,0,0.1278529,261.8788,82.163376)"/>
<radialGradient r="38.57143" fy="145.05405" fx="213.50658" cy="145.05405" cx="213.50658" gradientTransform="matrix(0.09554143,-0.01867689,0.01867689,0.09554143,280.03303,83.478259)" gradientUnits="userSpaceOnUse" id="radialGradient18150" xlink:href="#linearGradient17668" inkscape:collect="always"/>
<radialGradient r="38.57143" fy="145.05405" fx="213.50658" cy="145.05405" cx="213.50658" gradientTransform="matrix(0.09280101,-0.01814118,0.01814118,0.09280101,280.44294,84.300477)" gradientUnits="userSpaceOnUse" id="radialGradient18152" xlink:href="#linearGradient17668" inkscape:collect="always"/>
<radialGradient r="38.57143" fy="145.05405" fx="213.50658" cy="145.05405" cx="213.50658" gradientTransform="matrix(0.09077573,0.02432333,-0.02432333,0.09077573,214.12277,199.41908)" gradientUnits="userSpaceOnUse" id="radialGradient6861" xlink:href="#linearGradient17668" inkscape:collect="always"/>
<radialGradient r="38.57143" fy="145.05405" fx="213.50658" cy="145.05405" cx="213.50658" gradientTransform="matrix(0.09817741,-0.01919218,0.01919218,0.09817741,277.91766,85.314089)" gradientUnits="userSpaceOnUse" id="radialGradient18156" xlink:href="#linearGradient17668" inkscape:collect="always"/>
<radialGradient r="38.57143" fy="145.05405" fx="213.50658" cy="145.05405" cx="213.50658" gradientTransform="matrix(0.08468443,-0.01655451,0.01655451,0.08468443,295.09495,84.468901)" gradientUnits="userSpaceOnUse" id="radialGradient18158" xlink:href="#linearGradient17668" inkscape:collect="always"/>
<radialGradient r="38.57143" fy="145.05405" fx="213.50658" cy="145.05405" cx="213.50658" gradientTransform="matrix(0.09554143,-0.01867689,0.01867689,0.09554143,292.96014,83.877207)" gradientUnits="userSpaceOnUse" id="radialGradient18160" xlink:href="#linearGradient17668" inkscape:collect="always"/>
<radialGradient r="38.57143" fy="145.05405" fx="213.50658" cy="145.05405" cx="213.50658" gradientTransform="matrix(0.08909124,-0.01741598,0.01741598,0.08909124,275.20286,92.594803)" gradientUnits="userSpaceOnUse" id="radialGradient18162" xlink:href="#linearGradient17668" inkscape:collect="always"/>
<radialGradient r="38.57143" fy="145.05405" fx="213.50658" cy="145.05405" cx="213.50658" gradientTransform="matrix(0.09676828,-0.01891672,0.01891672,0.09676828,272.42859,92.633423)" gradientUnits="userSpaceOnUse" id="radialGradient18164" xlink:href="#linearGradient17668" inkscape:collect="always"/>
<radialGradient r="38.57143" fy="145.05405" fx="213.50658" cy="145.05405" cx="213.50658" gradientTransform="matrix(0.10606921,-0.02073491,0.02073491,0.10606921,268.76784,92.871496)" gradientUnits="userSpaceOnUse" id="radialGradient18166" xlink:href="#linearGradient17668" inkscape:collect="always"/>
<radialGradient r="38.57143" fy="145.05405" fx="213.50658" cy="145.05405" cx="213.50658" gradientTransform="matrix(0.08602034,-0.01681566,0.01681566,0.08602034,288.35381,93.968209)" gradientUnits="userSpaceOnUse" id="radialGradient18168" xlink:href="#linearGradient17668" inkscape:collect="always"/>
<radialGradient r="38.57143" fy="145.05405" fx="213.50658" cy="145.05405" cx="213.50658" gradientTransform="matrix(0.09830364,-0.01921686,0.01921686,0.09830364,285.18851,93.665759)" gradientUnits="userSpaceOnUse" id="radialGradient18170" xlink:href="#linearGradient17668" inkscape:collect="always"/>
<radialGradient r="38.57143" fy="145.05405" fx="213.50658" cy="145.05405" cx="213.50658" gradientTransform="matrix(0.11058681,-0.02161803,0.02161803,0.11058681,282.02322,93.769791)" gradientUnits="userSpaceOnUse" id="radialGradient18172" xlink:href="#linearGradient17668" inkscape:collect="always"/>
<radialGradient r="38.57143" fy="145.05405" fx="213.50658" cy="145.05405" cx="213.50658" gradientTransform="matrix(0.08909124,-0.01741598,0.01741598,0.08909124,300.30251,93.930093)" gradientUnits="userSpaceOnUse" id="radialGradient18174" xlink:href="#linearGradient17668" inkscape:collect="always"/>
<radialGradient r="38.57143" fy="145.05405" fx="213.50658" cy="145.05405" cx="213.50658" gradientTransform="matrix(0.10137442,-0.01981715,0.01981715,0.10137442,298.26078,93.972699)" gradientUnits="userSpaceOnUse" id="radialGradient18176" xlink:href="#linearGradient17668" inkscape:collect="always"/>
<radialGradient r="38.57143" fy="145.05405" fx="213.50658" cy="145.05405" cx="213.50658" gradientTransform="matrix(0.11058681,-0.02161803,0.02161803,0.11058681,297.01031,94.449636)" gradientUnits="userSpaceOnUse" id="radialGradient18178" xlink:href="#linearGradient17668" inkscape:collect="always"/>
<radialGradient r="38.57143" fy="145.05405" fx="213.50658" cy="145.05405" cx="213.50658" gradientTransform="matrix(0.11058681,-0.02161803,0.02161803,0.11058681,297.94664,95.76052)" gradientUnits="userSpaceOnUse" id="radialGradient18180" xlink:href="#linearGradient17668" inkscape:collect="always"/>
<radialGradient r="14.8125" fy="105.86218" fx="378" cy="105.86218" cx="378" gradientUnits="userSpaceOnUse" id="radialGradient18182" xlink:href="#linearGradient17684" inkscape:collect="always" gradientTransform="matrix(0.10391418,0,0,0.10391418,251.44648,90.65954)"/>
<radialGradient r="14.8125" fy="105.86218" fx="378" cy="105.86218" cx="378" gradientUnits="userSpaceOnUse" id="radialGradient18184" xlink:href="#linearGradient17684" inkscape:collect="always" gradientTransform="matrix(0.10391418,0,0,0.10391418,249.94829,91.783147)"/>
<radialGradient r="14.8125" fy="105.86218" fx="378" cy="105.86218" cx="378" gradientUnits="userSpaceOnUse" id="radialGradient18186" xlink:href="#linearGradient17684" inkscape:collect="always" gradientTransform="matrix(0.10391418,0,0,0.10391418,247.98199,93.187673)"/>
<radialGradient r="14.8125" fy="105.86218" fx="378" cy="105.86218" cx="378" gradientUnits="userSpaceOnUse" id="radialGradient18188" xlink:href="#linearGradient17684" inkscape:collect="always" gradientTransform="matrix(0.09745658,0,0,0.09745658,266.84457,92.50844)"/>
<radialGradient r="14.8125" fy="105.86218" fx="378" cy="105.86218" cx="378" gradientUnits="userSpaceOnUse" id="radialGradient18190" xlink:href="#linearGradient17684" inkscape:collect="always" gradientTransform="matrix(0.10391418,0,0,0.10391418,263.80622,92.906748)"/>
<radialGradient r="14.8125" fy="105.86218" fx="378" cy="105.86218" cx="378" gradientUnits="userSpaceOnUse" id="radialGradient18192" xlink:href="#linearGradient17684" inkscape:collect="always" gradientTransform="matrix(0.09745658,0,0,0.09745658,279.57888,93.351101)"/>
<radialGradient inkscape:collect="always" xlink:href="#linearGradient17684" id="radialGradient17686" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.10391418,0,0,0.10391418,277.75773,94.030354)" cx="378" cy="105.86218" fx="378" fy="105.86218" r="14.8125"/>
<radialGradient r="14.8125" fy="105.86218" fx="378" cy="105.86218" cx="378" gradientUnits="userSpaceOnUse" id="radialGradient18196" xlink:href="#linearGradient17684" inkscape:collect="always" gradientTransform="matrix(0.10391418,0,0,0.10391418,278.41318,95.622163)"/>
<radialGradient r="38.57143" fy="145.05405" fx="213.50658" cy="145.05405" cx="213.50658" gradientTransform="matrix(0.09216196,-0.01801626,0.01801626,0.09216196,266.82712,101.14959)" gradientUnits="userSpaceOnUse" id="radialGradient18198" xlink:href="#linearGradient17668" inkscape:collect="always"/>
<radialGradient r="38.57143" fy="145.05405" fx="213.50658" cy="145.05405" cx="213.50658" gradientTransform="matrix(0.09830364,-0.01921686,0.01921686,0.09830364,263.37175,102.62251)" gradientUnits="userSpaceOnUse" id="radialGradient18200" xlink:href="#linearGradient17668" inkscape:collect="always"/>
<radialGradient r="38.57143" fy="145.05405" fx="213.50658" cy="145.05405" cx="213.50658" gradientTransform="matrix(0.08909124,-0.01741598,0.01741598,0.08909124,280.54008,102.52007)" gradientUnits="userSpaceOnUse" id="radialGradient18202" xlink:href="#linearGradient17668" inkscape:collect="always"/>
<radialGradient r="38.57143" fy="145.05405" fx="213.50658" cy="145.05405" cx="213.50658" gradientTransform="matrix(0.09830364,-0.01921686,0.01921686,0.09830364,277.60417,103.65246)" gradientUnits="userSpaceOnUse" id="radialGradient18204" xlink:href="#linearGradient17668" inkscape:collect="always"/>
<radialGradient r="38.57143" fy="145.05405" fx="213.50658" cy="145.05405" cx="213.50658" gradientTransform="matrix(0.08909124,-0.01741598,0.01741598,0.08909124,293.18071,103.36277)" gradientUnits="userSpaceOnUse" id="radialGradient18206" xlink:href="#linearGradient17668" inkscape:collect="always"/>
<radialGradient r="38.57143" fy="145.05405" fx="213.50658" cy="145.05405" cx="213.50658" gradientTransform="matrix(0.10137442,-0.01981715,0.01981715,0.10137442,290.76444,104.52894)" gradientUnits="userSpaceOnUse" id="radialGradient18208" xlink:href="#linearGradient17668" inkscape:collect="always"/>
<radialGradient r="38.57143" fy="145.05405" fx="213.50658" cy="145.05405" cx="213.50658" gradientTransform="matrix(0.10444526,-0.02041745,0.02041745,0.10444526,268.90536,110.93033)" gradientUnits="userSpaceOnUse" id="radialGradient18210" xlink:href="#linearGradient17668" inkscape:collect="always"/>
<radialGradient r="59" fy="467.86218" fx="409.5" cy="467.86218" cx="409.5" spreadMethod="reflect" gradientTransform="matrix(0.04961795,-2.2553614e-8,2.0674133e-8,0.04548308,192.20499,231.05852)" gradientUnits="userSpaceOnUse" id="radialGradient18218" xlink:href="#linearGradient13688" inkscape:collect="always"/>
<linearGradient id="linearGradient13688">
<stop id="stop13690" offset="0" style="stop-color:#46fef2;stop-opacity:1;"/>
<stop style="stop-color:#468bf2;stop-opacity:0.2767857;" offset="0.13" id="stop13694"/>
<stop id="stop13692" offset="1" style="stop-color:#97fe46;stop-opacity:0.3392857;"/>
</linearGradient>
<radialGradient r="14.8125" fy="105.86218" fx="378" cy="105.86218" cx="378" gradientUnits="userSpaceOnUse" id="radialGradient18214" xlink:href="#linearGradient17684" inkscape:collect="always" gradientTransform="matrix(0.10391418,0,0,0.10391418,269.98608,102.36387)"/>
<radialGradient r="14.8125" fy="105.86218" fx="378" cy="105.86218" cx="378" gradientUnits="userSpaceOnUse" id="radialGradient18212" xlink:href="#linearGradient17684" inkscape:collect="always" gradientTransform="matrix(0.10391418,0,0,0.10391418,256.59636,101.33388)"/>
<radialGradient r="14.8125" fy="105.86218" fx="378" cy="105.86218" cx="378" gradientUnits="userSpaceOnUse" id="radialGradient18220" xlink:href="#linearGradient17684" inkscape:collect="always" gradientTransform="matrix(0.10391418,0,0,0.10391418,263.05712,94.311277)"/>
<radialGradient r="14.8125" fy="105.86218" fx="378" cy="105.86218" cx="378" gradientUnits="userSpaceOnUse" id="radialGradient18222" xlink:href="#linearGradient17684" inkscape:collect="always" gradientTransform="matrix(0.10391418,0,0,0.10391418,255.28548,103.3002)"/>
<radialGradient r="14.8125" fy="105.86218" fx="378" cy="105.86218" cx="378" gradientUnits="userSpaceOnUse" id="radialGradient18224" xlink:href="#linearGradient17684" inkscape:collect="always" gradientTransform="matrix(0.10391418,0,0,0.10391418,269.89242,104.51744)"/>
<radialGradient r="38.57143" fy="145.05405" fx="213.50658" cy="145.05405" cx="213.50658" gradientTransform="matrix(0.11058681,-0.02161803,0.02161803,0.11058681,266.15492,93.81931)" gradientUnits="userSpaceOnUse" id="radialGradient18226" xlink:href="#linearGradient17668" inkscape:collect="always"/>
<radialGradient r="38.57143" fy="145.05405" fx="213.50658" cy="145.05405" cx="213.50658" gradientTransform="matrix(0.10444526,-0.02041745,0.02041745,0.10444526,260.10372,104.00136)" gradientUnits="userSpaceOnUse" id="radialGradient18228" xlink:href="#linearGradient17668" inkscape:collect="always"/>
<radialGradient r="38.57143" fy="145.05405" fx="213.50658" cy="145.05405" cx="213.50658" gradientTransform="matrix(0.11058681,-0.02161803,0.02161803,0.11058681,282.02322,95.080643)" gradientUnits="userSpaceOnUse" id="radialGradient18230" xlink:href="#linearGradient17668" inkscape:collect="always"/>
<radialGradient r="38.57143" fy="145.05405" fx="213.50658" cy="145.05405" cx="213.50658" gradientTransform="matrix(0.10444526,-0.02041745,0.02041745,0.10444526,290.54044,105.71114)" gradientUnits="userSpaceOnUse" id="radialGradient18232" xlink:href="#linearGradient17668" inkscape:collect="always"/>
<radialGradient r="38.57143" fy="145.05405" fx="213.50658" cy="145.05405" cx="213.50658" gradientTransform="matrix(0.10444526,-0.02041745,0.02041745,0.10444526,275.36612,105.12495)" gradientUnits="userSpaceOnUse" id="radialGradient18234" xlink:href="#linearGradient17668" inkscape:collect="always"/>
<radialGradient r="38.57143" fy="145.05405" fx="213.50658" cy="145.05405" cx="213.50658" gradientTransform="matrix(0.10444526,-0.02041745,0.02041745,0.10444526,282.20697,111.42289)" gradientUnits="userSpaceOnUse" id="radialGradient18236" xlink:href="#linearGradient17668" inkscape:collect="always"/>
<radialGradient r="14.8125" fy="105.86218" fx="378" cy="105.86218" cx="378" gradientUnits="userSpaceOnUse" id="radialGradient18136" xlink:href="#linearGradient17684" inkscape:collect="always" gradientTransform="matrix(0.10391418,0,0,0.10391418,262.21442,112.47637)"/>
<radialGradient r="38.57143" fy="145.05405" fx="213.50658" cy="145.05405" cx="213.50658" gradientTransform="matrix(0.10444526,-0.02041745,0.02041745,0.10444526,267.6881,113.73935)" gradientUnits="userSpaceOnUse" id="radialGradient18240" xlink:href="#linearGradient17668" inkscape:collect="always"/>
<radialGradient r="24" fy="443.86218" fx="199" cy="443.86218" cx="199" gradientUnits="userSpaceOnUse" id="radialGradient18216" xlink:href="#linearGradient17692" inkscape:collect="always" gradientTransform="matrix(0.28222222,0,0,0.28222222,153.36192,126.15072)"/>
<linearGradient id="linearGradient17692" inkscape:collect="always">
<stop id="stop17688" offset="0" style="stop-color:#fffef7;stop-opacity:1"/>
<stop id="stop17690" offset="1" style="stop-color:#ffffff;stop-opacity:1"/>
</linearGradient>
<filter inkscape:collect="always" style="color-interpolation-filters:sRGB" id="filter17830" x="-0.2832" width="1.5664001" y="-0.2832" height="1.5664001">
<feGaussianBlur inkscape:collect="always" stdDeviation="1.5985066" id="feGaussianBlur17832"/>
</filter>
<linearGradient y2="441.14627" x2="195.45956" y1="373.93774" x1="252.95045" gradientTransform="matrix(0.05607647,-0.31558843,0.5072045,0.22442376,-26.904282,211.18477)" gradientUnits="userSpaceOnUse" id="linearGradient6803" xlink:href="#linearGradient17840" inkscape:collect="always"/>
<linearGradient id="linearGradient17840">
<stop style="stop-color:white;stop-opacity:1;" offset="0" id="stop17834"/>
<stop id="stop17836" offset="0.69984996" style="stop-color:#ff7300;stop-opacity:1;"/>
<stop style="stop-color:#8e300f;stop-opacity:1;" offset="1" id="stop17838"/>
</linearGradient>
<filter inkscape:collect="always" style="color-interpolation-filters:sRGB" id="filter17947" x="-0.061849739" width="1.1236995" y="-0.058257688" height="1.1165154">
<feGaussianBlur inkscape:collect="always" stdDeviation="0.85470564" id="feGaussianBlur17949"/>
</filter>
<radialGradient r="38.57143" fy="303.04279" fx="-508.9473" cy="303.04279" cx="-508.9473" gradientTransform="matrix(0.1368295,0,0,0.1368295,281.44244,209.12522)" gradientUnits="userSpaceOnUse" id="radialGradient6882" xlink:href="#linearGradient17668" inkscape:collect="always"/>
<linearGradient inkscape:collect="always" xlink:href="#linearGradient1718" id="linearGradient1720" x1="31.096609" y1="86.542191" x2="49.898396" y2="86.410202" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.33684722,0,0,0.33684722,2.8306206,150.92387)"/>
<linearGradient inkscape:collect="always" id="linearGradient1718">
<stop style="stop-color:#9d9d9d;stop-opacity:1" offset="0" id="stop1714"/>
<stop style="stop-color:#ffffff;stop-opacity:0" offset="1" id="stop1716"/>
</linearGradient>
<linearGradient inkscape:collect="always" xlink:href="#linearGradient1718" id="linearGradient1734" x1="31.096609" y1="86.542191" x2="50.592659" y2="87.203644" gradientUnits="userSpaceOnUse" gradientTransform="translate(24.568452,0.09449405)"/>
</defs>
<sodipodi:namedview id="base" pagecolor="#959595" bordercolor="#666666" borderopacity="1.0" inkscape:pageopacity="0" inkscape:pageshadow="2" inkscape:zoom="2.8" inkscape:cx="129.70963" inkscape:cy="92.284662" inkscape:document-units="mm" inkscape:current-layer="g917" showgrid="false" inkscape:window-width="1920" inkscape:window-height="1011" inkscape:window-x="-8" inkscape:window-y="-8" inkscape:window-maximized="1" fit-margin-top="-10" fit-margin-left="5" fit-margin-right="20" fit-margin-bottom="-10"/>
<metadata id="metadata5">
<rdf:RDF>
<cc:Work rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
<dc:title/>
</cc:Work>
</rdf:RDF>
</metadata>
<g inkscape:label="Calque 1" inkscape:groupmode="layer" id="layer1" transform="translate(-8.198192,-44.935399)">
<g id="g6009">
<g id="g6037">
<g id="g917">
<g style="enable-background:new" id="g18066" transform="matrix(1.1123424,0,0,1.1123424,-37.778328,-164.08274)">
<path inkscape:export-ydpi="90" inkscape:export-xdpi="90" inkscape:export-filename="D:\Mes Docs\EQUIPE Surfaces\LUDO\msspec0.1\splash-final 0.2.png" transform="matrix(0.28222222,0,0,-0.28222222,156.95402,384.80912)" d="m 442.23856,475.68707 c 3.69807,93.00673 -44.94791,8.37415 -99.09062,66.82346 -63.184,68.20976 67.60457,52.79282 -25.76264,115.13117 -80.00685,53.41806 -40.17787,-84.77986 -130.96015,-62.96894 -105.942031,25.45314 41.85222,133.43307 -33.581,69.93131 C 88.205025,610.18908 187.99601,586.06215 139.34105,504.36586 82.56119,409.02711 56.851973,534.24581 11.125915,435.62659 -28.056988,351.11926 52.177009,459.13583 90.169541,368.93941 134.50645,263.68108 53.865597,322.83199 135.88564,245.82164 c 70.28342,-65.99058 -61.578998,130.39917 21.72259,103.4766 97.21212,-31.41837 36.42972,-60.11355 141.32214,-54.29896 89.88287,4.98255 -51.91444,60.38777 15.00099,114.16005 78.08965,62.7517 123.99159,-42.01019 128.3072,66.52774 z" inkscape:randomized="0.227" inkscape:rounded="0.85" inkscape:flatsided="false" sodipodi:arg2="0.4041197" sodipodi:arg1="-0.039978687" sodipodi:r2="122.6253" sodipodi:r1="200.15993" sodipodi:cy="449.36218" sodipodi:cx="210" sodipodi:sides="6" id="path16774" style="opacity:0.5;fill:url(#radialGradient18134);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.89999998;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter11536)" sodipodi:type="star"/>
<circle r="1.2579826" cy="93.510834" cx="298.65506" inkscape:export-ydpi="90" inkscape:export-xdpi="90" inkscape:export-filename="D:\Mes Docs\EQUIPE Surfaces\LUDO\msspec0.1\splash-final 0.2.png" id="path16778" style="fill:url(#radialGradient18138);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.05422339;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" transform="rotate(26.06101)"/>
<circle r="1.4566108" cy="94.161636" cx="297.5134" inkscape:export-ydpi="90" inkscape:export-xdpi="90" inkscape:export-filename="D:\Mes Docs\EQUIPE Surfaces\LUDO\msspec0.1\splash-final 0.2.png" id="path16780" style="fill:url(#radialGradient18140);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.06278495;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" transform="rotate(26.06099)"/>
<circle r="2.5821714" cy="92.897217" cx="293.40952" inkscape:export-ydpi="90" inkscape:export-xdpi="90" inkscape:export-filename="D:\Mes Docs\EQUIPE Surfaces\LUDO\msspec0.1\splash-final 0.2.png" transform="rotate(26.060938)" id="path16782" style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:url(#radialGradient18142);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.39956269;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"/>
<circle r="2.9132197" cy="93.321968" cx="291.7316" inkscape:export-ydpi="90" inkscape:export-xdpi="90" inkscape:export-filename="D:\Mes Docs\EQUIPE Surfaces\LUDO\msspec0.1\splash-final 0.2.png" transform="rotate(26.060921)" style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:url(#radialGradient18144);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.39956272;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" id="path16784"/>
<circle r="1.6552389" cy="94.741493" cx="310.84421" inkscape:export-ydpi="90" inkscape:export-xdpi="90" inkscape:export-filename="D:\Mes Docs\EQUIPE Surfaces\LUDO\msspec0.1\splash-final 0.2.png" transform="rotate(26.060981)" id="path16786" style="fill:url(#radialGradient18146);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.07134651;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"/>
<circle r="1.8538671" cy="96.529205" cx="310.91037" inkscape:export-ydpi="90" inkscape:export-xdpi="90" inkscape:export-filename="D:\Mes Docs\EQUIPE Surfaces\LUDO\msspec0.1\splash-final 0.2.png" transform="rotate(26.060973)" style="fill:url(#radialGradient18148);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.07990807;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" id="path16788"/>
<circle r="2.9132197" cy="94.07106" cx="304.65317" inkscape:export-ydpi="90" inkscape:export-xdpi="90" inkscape:export-filename="D:\Mes Docs\EQUIPE Surfaces\LUDO\msspec0.1\splash-final 0.2.png" transform="rotate(26.060921)" style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:url(#radialGradient18150);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.39956272;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" id="path16790"/>
<circle r="2.8296597" cy="94.589439" cx="304.3569" inkscape:export-ydpi="90" inkscape:export-xdpi="90" inkscape:export-filename="D:\Mes Docs\EQUIPE Surfaces\LUDO\msspec0.1\splash-final 0.2.png" transform="rotate(26.060893)" id="path16792" style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:url(#radialGradient18152);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.39956269;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"/>
<path inkscape:connector-curvature="0" id="path16794" d="m 233.50751,220.28247 c -0.68202,1.39456 -2.36735,1.97286 -3.76191,1.29085 -1.39456,-0.68201 -1.97286,-2.36735 -1.29085,-3.76191 0.68201,-1.39456 2.36734,-1.97286 3.7619,-1.29085 1.39456,0.68201 1.97287,2.36735 1.29086,3.76191 z" style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:url(#radialGradient6861);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.58140689;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" inkscape:export-filename="D:\Mes Docs\EQUIPE Surfaces\LUDO\msspec0.1\splash-final 0.2.png" inkscape:export-xdpi="90" inkscape:export-ydpi="90"/>
<circle r="2.9935954" cy="96.199142" cx="303.21707" inkscape:export-ydpi="90" inkscape:export-xdpi="90" inkscape:export-filename="D:\Mes Docs\EQUIPE Surfaces\LUDO\msspec0.1\splash-final 0.2.png" transform="rotate(26.060934)" id="path16796" style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:url(#radialGradient18156);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.39956272;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"/>
<circle r="2.5821714" cy="93.857971" cx="316.91733" inkscape:export-ydpi="90" inkscape:export-xdpi="90" inkscape:export-filename="D:\Mes Docs\EQUIPE Surfaces\LUDO\msspec0.1\splash-final 0.2.png" transform="rotate(26.060938)" id="path16798" style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:url(#radialGradient18158);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.39956269;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"/>
<circle r="2.9132197" cy="94.470009" cx="317.58026" inkscape:export-ydpi="90" inkscape:export-xdpi="90" inkscape:export-filename="D:\Mes Docs\EQUIPE Surfaces\LUDO\msspec0.1\splash-final 0.2.png" transform="rotate(26.060921)" style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:url(#radialGradient18160);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.39956272;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" id="path16800"/>
<circle r="2.7165425" cy="102.47246" cx="298.16086" inkscape:export-ydpi="90" inkscape:export-xdpi="90" inkscape:export-filename="D:\Mes Docs\EQUIPE Surfaces\LUDO\msspec0.1\splash-final 0.2.png" transform="rotate(26.060977)" style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:url(#radialGradient18162);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.39956272;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" id="path16802"/>
<circle r="2.9506285" cy="103.36224" cx="297.36487" inkscape:export-ydpi="90" inkscape:export-xdpi="90" inkscape:export-filename="D:\Mes Docs\EQUIPE Surfaces\LUDO\msspec0.1\splash-final 0.2.png" transform="rotate(26.060914)" id="path16804" style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:url(#radialGradient18164);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.39956272;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"/>
<circle r="3.2342293" cy="104.63152" cx="296.10089" inkscape:export-ydpi="90" inkscape:export-xdpi="90" inkscape:export-filename="D:\Mes Docs\EQUIPE Surfaces\LUDO\msspec0.1\splash-final 0.2.png" transform="rotate(26.060964)" style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:url(#radialGradient18166);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.39956269;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" id="path16806"/>
<circle r="2.6229055" cy="103.50539" cx="310.52045" inkscape:export-ydpi="90" inkscape:export-xdpi="90" inkscape:export-filename="D:\Mes Docs\EQUIPE Surfaces\LUDO\msspec0.1\splash-final 0.2.png" transform="rotate(26.060932)" id="path16808" style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:url(#radialGradient18168);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.39956269;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"/>
<circle r="2.9974439" cy="104.56481" cx="310.52042" inkscape:export-ydpi="90" inkscape:export-xdpi="90" inkscape:export-filename="D:\Mes Docs\EQUIPE Surfaces\LUDO\msspec0.1\splash-final 0.2.png" transform="rotate(26.060918)" style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:url(#radialGradient18170);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.39956272;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" id="path16810"/>
<circle r="3.3719788" cy="106.03069" cx="310.52039" inkscape:export-ydpi="90" inkscape:export-xdpi="90" inkscape:export-filename="D:\Mes Docs\EQUIPE Surfaces\LUDO\msspec0.1\splash-final 0.2.png" transform="rotate(26.060938)" id="path16812" style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:url(#radialGradient18172);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.39956269;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"/>
<circle r="2.7165425" cy="103.80775" cx="323.2605" inkscape:export-ydpi="90" inkscape:export-xdpi="90" inkscape:export-filename="D:\Mes Docs\EQUIPE Surfaces\LUDO\msspec0.1\splash-final 0.2.png" transform="rotate(26.060977)" style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:url(#radialGradient18174);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.39956272;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" id="path16814"/>
<circle r="3.0910773" cy="105.21221" cx="324.384" inkscape:export-ydpi="90" inkscape:export-xdpi="90" inkscape:export-filename="D:\Mes Docs\EQUIPE Surfaces\LUDO\msspec0.1\splash-final 0.2.png" transform="rotate(26.060991)" id="path16816" style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:url(#radialGradient18176);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.39956272;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"/>
<circle r="3.3719788" cy="106.71053" cx="325.50748" inkscape:export-ydpi="90" inkscape:export-xdpi="90" inkscape:export-filename="D:\Mes Docs\EQUIPE Surfaces\LUDO\msspec0.1\splash-final 0.2.png" transform="rotate(26.060938)" style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:url(#radialGradient18178);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.39956269;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" id="path16818"/>
<circle r="3.3719788" cy="108.02142" cx="326.44382" inkscape:export-ydpi="90" inkscape:export-xdpi="90" inkscape:export-filename="D:\Mes Docs\EQUIPE Surfaces\LUDO\msspec0.1\splash-final 0.2.png" transform="rotate(26.060938)" id="path16820" style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:url(#radialGradient18180);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.39956269;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"/>
<circle r="1.5067556" cy="102.33556" cx="291.29758" inkscape:export-ydpi="90" inkscape:export-xdpi="90" inkscape:export-filename="D:\Mes Docs\EQUIPE Surfaces\LUDO\msspec0.1\splash-final 0.2.png" transform="rotate(26.060928)" style="fill:url(#radialGradient18182);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.06494636;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" id="path16822"/>
<circle r="1.5067556" cy="103.45917" cx="289.79938" inkscape:export-ydpi="90" inkscape:export-xdpi="90" inkscape:export-filename="D:\Mes Docs\EQUIPE Surfaces\LUDO\msspec0.1\splash-final 0.2.png" transform="rotate(26.060928)" id="path16824" style="fill:url(#radialGradient18184);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.06494636;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"/>
<circle r="1.5067556" cy="104.8637" cx="287.83307" inkscape:export-ydpi="90" inkscape:export-xdpi="90" inkscape:export-filename="D:\Mes Docs\EQUIPE Surfaces\LUDO\msspec0.1\splash-final 0.2.png" transform="rotate(26.060928)" style="fill:url(#radialGradient18186);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.06494636;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" id="path16826"/>
<circle r="1.4131204" cy="103.45888" cx="304.21918" inkscape:export-ydpi="90" inkscape:export-xdpi="90" inkscape:export-filename="D:\Mes Docs\EQUIPE Surfaces\LUDO\msspec0.1\splash-final 0.2.png" transform="rotate(26.06099)" id="path16828" style="fill:url(#radialGradient18188);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.06091036;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"/>
<circle r="1.5067556" cy="104.58277" cx="303.65732" inkscape:export-ydpi="90" inkscape:export-xdpi="90" inkscape:export-filename="D:\Mes Docs\EQUIPE Surfaces\LUDO\msspec0.1\splash-final 0.2.png" transform="rotate(26.060928)" style="fill:url(#radialGradient18190);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.06494636;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" id="path16830"/>
<circle r="1.4131204" cy="104.30154" cx="316.95349" inkscape:export-ydpi="90" inkscape:export-xdpi="90" inkscape:export-filename="D:\Mes Docs\EQUIPE Surfaces\LUDO\msspec0.1\splash-final 0.2.png" transform="rotate(26.06099)" style="fill:url(#radialGradient18192);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.06091036;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" id="path16832"/>
<circle r="1.5067556" cy="105.70638" cx="317.60883" inkscape:export-ydpi="90" inkscape:export-xdpi="90" inkscape:export-filename="D:\Mes Docs\EQUIPE Surfaces\LUDO\msspec0.1\splash-final 0.2.png" transform="rotate(26.060928)" id="path16834" style="fill:url(#radialGradient17686);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.06494636;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"/>
<circle r="1.5067556" cy="107.29819" cx="318.26428" inkscape:export-ydpi="90" inkscape:export-xdpi="90" inkscape:export-filename="D:\Mes Docs\EQUIPE Surfaces\LUDO\msspec0.1\splash-final 0.2.png" transform="rotate(26.060928)" style="fill:url(#radialGradient18196);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.06494636;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" id="path16836"/>
<circle r="2.810174" cy="111.36771" cx="290.57639" inkscape:export-ydpi="90" inkscape:export-xdpi="90" inkscape:export-filename="D:\Mes Docs\EQUIPE Surfaces\LUDO\msspec0.1\splash-final 0.2.png" transform="rotate(26.060978)" id="path16838" style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:url(#radialGradient18198);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.39956272;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"/>
<circle r="2.9974439" cy="113.52155" cx="288.70367" inkscape:export-ydpi="90" inkscape:export-xdpi="90" inkscape:export-filename="D:\Mes Docs\EQUIPE Surfaces\LUDO\msspec0.1\splash-final 0.2.png" transform="rotate(26.060918)" style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:url(#radialGradient18200);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.39956269;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" id="path16840"/>
<circle r="2.7165425" cy="112.39772" cx="303.49808" inkscape:export-ydpi="90" inkscape:export-xdpi="90" inkscape:export-filename="D:\Mes Docs\EQUIPE Surfaces\LUDO\msspec0.1\splash-final 0.2.png" transform="rotate(26.060977)" style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:url(#radialGradient18202);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.39956272;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" id="path16842"/>
<circle r="2.9974439" cy="114.55151" cx="302.9361" inkscape:export-ydpi="90" inkscape:export-xdpi="90" inkscape:export-filename="D:\Mes Docs\EQUIPE Surfaces\LUDO\msspec0.1\splash-final 0.2.png" transform="rotate(26.060918)" id="path16844" style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:url(#radialGradient18204);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.39956269;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"/>
<circle r="2.7165425" cy="113.24043" cx="316.1387" inkscape:export-ydpi="90" inkscape:export-xdpi="90" inkscape:export-filename="D:\Mes Docs\EQUIPE Surfaces\LUDO\msspec0.1\splash-final 0.2.png" transform="rotate(26.060977)" id="path16846" style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:url(#radialGradient18206);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.39956272;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"/>
<circle r="3.0910773" cy="115.76846" cx="316.8877" inkscape:export-ydpi="90" inkscape:export-xdpi="90" inkscape:export-filename="D:\Mes Docs\EQUIPE Surfaces\LUDO\msspec0.1\splash-final 0.2.png" transform="rotate(26.060991)" style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:url(#radialGradient18208);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.39956272;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" id="path16848"/>
<circle r="3.1847124" cy="122.51031" cx="295.81995" inkscape:export-ydpi="90" inkscape:export-xdpi="90" inkscape:export-filename="D:\Mes Docs\EQUIPE Surfaces\LUDO\msspec0.1\splash-final 0.2.png" transform="rotate(26.060962)" id="path16850" style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:url(#radialGradient18210);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.39956272;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"/>
<rect inkscape:export-ydpi="90" inkscape:export-xdpi="90" inkscape:export-filename="D:\Mes Docs\EQUIPE Surfaces\LUDO\msspec0.1\splash-final 0.2.png" id="rect16858" y="237.69038" x="204.96828" height="20.158731" width="21.771429" style="fill:none;stroke:none;stroke-width:0.28222221"/>
<rect inkscape:export-ydpi="90" inkscape:export-xdpi="90" inkscape:export-filename="D:\Mes Docs\EQUIPE Surfaces\LUDO\msspec0.1\splash-final 0.2.png" id="rect16860" y="240.64302" x="188.25761" height="1.3827661" width="1.9307468" style="fill:none;stroke:none;stroke-width:0.28222221"/>
<circle r="28.786657" cy="252.33842" cx="212.52354" inkscape:export-ydpi="90" inkscape:export-xdpi="90" inkscape:export-filename="D:\Mes Docs\EQUIPE Surfaces\LUDO\msspec0.1\splash-final 0.2.png" inkscape:transform-center-y="-14.6952" inkscape:transform-center-x="28.525713" id="path16864" style="opacity:0.49816853;fill:url(#radialGradient18218);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.19516377;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"/>
<circle r="1.5067556" cy="114.03989" cx="309.83716" inkscape:export-ydpi="90" inkscape:export-xdpi="90" inkscape:export-filename="D:\Mes Docs\EQUIPE Surfaces\LUDO\msspec0.1\splash-final 0.2.png" transform="rotate(26.060928)" style="fill:url(#radialGradient18214);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.06494636;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" id="path16856"/>
<circle r="1.5067556" cy="113.0099" cx="296.44745" inkscape:export-ydpi="90" inkscape:export-xdpi="90" inkscape:export-filename="D:\Mes Docs\EQUIPE Surfaces\LUDO\msspec0.1\splash-final 0.2.png" transform="rotate(26.060928)" style="fill:url(#radialGradient18212);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.06494636;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" id="path16854"/>
<circle r="1.5067556" cy="105.9873" cx="302.9082" inkscape:export-ydpi="90" inkscape:export-xdpi="90" inkscape:export-filename="D:\Mes Docs\EQUIPE Surfaces\LUDO\msspec0.1\splash-final 0.2.png" transform="rotate(26.060928)" id="path16866" style="fill:url(#radialGradient18220);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.06494636;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"/>
<circle r="1.5067556" cy="114.97623" cx="295.13657" inkscape:export-ydpi="90" inkscape:export-xdpi="90" inkscape:export-filename="D:\Mes Docs\EQUIPE Surfaces\LUDO\msspec0.1\splash-final 0.2.png" transform="rotate(26.060928)" id="path16868" style="fill:url(#radialGradient18222);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.06494636;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"/>
<circle r="1.5067556" cy="116.19346" cx="309.7435" inkscape:export-ydpi="90" inkscape:export-xdpi="90" inkscape:export-filename="D:\Mes Docs\EQUIPE Surfaces\LUDO\msspec0.1\splash-final 0.2.png" transform="rotate(26.060928)" id="path16870" style="fill:url(#radialGradient18224);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.06494636;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"/>
<circle r="3.3719788" cy="106.08021" cx="294.6521" inkscape:export-ydpi="90" inkscape:export-xdpi="90" inkscape:export-filename="D:\Mes Docs\EQUIPE Surfaces\LUDO\msspec0.1\splash-final 0.2.png" transform="rotate(26.060938)" id="path16872" style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:url(#radialGradient18226);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.39956269;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"/>
<circle r="3.1847124" cy="115.58134" cx="287.01831" inkscape:export-ydpi="90" inkscape:export-xdpi="90" inkscape:export-filename="D:\Mes Docs\EQUIPE Surfaces\LUDO\msspec0.1\splash-final 0.2.png" transform="rotate(26.060962)" id="path16874" style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:url(#radialGradient18228);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.39956272;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"/>
<circle r="3.3719788" cy="107.34155" cx="310.52039" inkscape:export-ydpi="90" inkscape:export-xdpi="90" inkscape:export-filename="D:\Mes Docs\EQUIPE Surfaces\LUDO\msspec0.1\splash-final 0.2.png" transform="rotate(26.060938)" style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:url(#radialGradient18230);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.39956269;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" id="path16876"/>
<circle r="3.1847124" cy="117.29111" cx="317.45502" mask="none" clip-path="none" inkscape:export-ydpi="90" inkscape:export-xdpi="90" inkscape:export-filename="D:\Mes Docs\EQUIPE Surfaces\LUDO\msspec0.1\splash-final 0.2.png" transform="rotate(26.060962)" id="path16878" style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:url(#radialGradient18232);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.39956272;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"/>
<circle r="3.1847124" cy="116.70493" cx="302.2807" inkscape:export-ydpi="90" inkscape:export-xdpi="90" inkscape:export-filename="D:\Mes Docs\EQUIPE Surfaces\LUDO\msspec0.1\splash-final 0.2.png" transform="rotate(26.060962)" style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:url(#radialGradient18234);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.39956272;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" id="path16880"/>
<circle r="3.1847124" cy="123.00287" cx="309.12155" mask="none" clip-path="none" inkscape:export-ydpi="90" inkscape:export-xdpi="90" inkscape:export-filename="D:\Mes Docs\EQUIPE Surfaces\LUDO\msspec0.1\splash-final 0.2.png" transform="rotate(26.060962)" id="path16882" style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:url(#radialGradient18236);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.39956272;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"/>
<circle r="1.5067556" cy="124.1524" cx="302.06552" mask="none" clip-path="none" inkscape:export-ydpi="90" inkscape:export-xdpi="90" inkscape:export-filename="D:\Mes Docs\EQUIPE Surfaces\LUDO\msspec0.1\splash-final 0.2.png" transform="rotate(26.060928)" id="path16776" style="fill:url(#radialGradient18136);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.06494636;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"/>
<circle r="3.1847124" cy="125.31933" cx="294.60269" inkscape:export-ydpi="90" inkscape:export-xdpi="90" inkscape:export-filename="D:\Mes Docs\EQUIPE Surfaces\LUDO\msspec0.1\splash-final 0.2.png" transform="rotate(26.060962)" style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:url(#radialGradient18240);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.39956272;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" id="path16884"/>
<circle r="6.7733331" cy="251.4185" cx="209.52415" mask="none" clip-path="none" inkscape:export-ydpi="90" inkscape:export-xdpi="90" inkscape:export-filename="D:\Mes Docs\EQUIPE Surfaces\LUDO\msspec0.1\splash-final 0.2.png" id="path16862" style="opacity:0.54578756;fill:url(#radialGradient18216);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.11288889;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter17830)"/>
<path sodipodi:nodetypes="zcz" inkscape:connector-curvature="0" inkscape:export-ydpi="90" inkscape:export-xdpi="90" inkscape:export-filename="D:\Mes Docs\EQUIPE Surfaces\LUDO\msspec0.1\splash-final 0.2.png" d="m 178.99298,217.43862 c 12.65005,-11.86647 30.85932,33.22099 30.85932,33.22099 0,0 -43.50935,-21.35453 -30.85932,-33.22099 z" style="fill:url(#linearGradient6803);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.14339972;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;filter:url(#filter17947)" id="path16886"/>
<circle r="4.3069592" cy="252.26474" cx="212.84364" mask="none" clip-path="none" style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:url(#radialGradient6882);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.44664761;marker:none;enable-background:accumulate" id="path4831"/>
</g>
<g id="g19727" transform="translate(1.1339286,4.5357143)">
<text id="msspec_version_shadow00" y="104.80697" x="85.896515" style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;opacity:0.7;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.80000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter5792)" xml:space="preserve" transform="matrix(1.5580433,0,0,1.5580433,20.094975,-18.343115)"><tspan style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:16.30249977px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.80000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" y="104.80697" x="85.896515" id="msspec_version_shadow" sodipodi:role="line">1.6</tspan></text>
<text id="msspec_version00" y="144.95068" x="153.92554" style="font-style:normal;font-weight:normal;font-size:16.48929024px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;opacity:1;fill:url(#linearGradient5812);fill-opacity:1;stroke:#000000;stroke-width:1.24643469;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" xml:space="preserve"><tspan style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:25.39999962px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:url(#linearGradient5812);fill-opacity:1;stroke:#000000;stroke-width:1.24643469;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" y="144.95068" x="153.92554" id="msspec_version" sodipodi:role="line">1.6</tspan></text>
</g>
<g transform="translate(10.205357,-1.3229167)" id="g5847">
<text xml:space="preserve" style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;opacity:0.7;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.80000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter5665)" x="25.310356" y="126.42889" id="text3701-0"><tspan sodipodi:role="line" id="tspan3699-4" x="25.310356" y="126.42889" style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:22.57777786px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.80000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1">MsSpec</tspan></text>
<text xml:space="preserve" style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;opacity:1;fill:url(#linearGradient4514);fill-opacity:1;stroke:#000000;stroke-width:0.80000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" x="25.348156" y="124.76579" id="text3701"><tspan sodipodi:role="line" id="tspan3699" x="25.348156" y="124.76579" style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:22.57777786px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:url(#linearGradient4514);fill-opacity:1;stroke:#000000;stroke-width:0.80000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1">MsSpec</tspan></text>
</g>
<text id="text5853" y="137.12766" x="133.93088" style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:0.5;font-family:sans-serif;text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332" xml:space="preserve"><tspan id="tspan5859" style="font-size:4.93888903px;line-height:0.5;text-align:end;text-anchor:end;fill:#ffffff;stroke-width:0.26458332" y="137.12766" x="133.93088" sodipodi:role="line">A multiple scattering package for spectroscopies</tspan><tspan id="tspan5863" style="font-size:4.93888903px;line-height:0.5;text-align:end;text-anchor:end;fill:#ffffff;stroke-width:0.26458332" y="142.47444" x="133.93088" sodipodi:role="line">using electrons to probe materials</tspan></text>
<text xml:space="preserve" style="font-style:normal;font-weight:normal;font-size:10.53155231px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#626262;fill-opacity:1;stroke:none;stroke-width:0.2632888;" x="10.515821" y="52.373512" id="____dev_version" inkscape:label="#text995"><tspan sodipodi:role="line" id="dev_version" x="10.515821" y="52.373512" style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.64444447px;font-family:sans-serif;-inkscape-font-specification:sans-serif;fill:#626262;stroke-width:0.2632888;fill-opacity:1;">post release: 51</tspan></text>
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 61 KiB

View File

@ -1,6 +1,4 @@
include msspec/spec/fortran/*.so recursive-include msspec *.f
include msspec/phagen/fortran/*.so recursive-include msspec *.inc
include msspec/results.txt recursive-include . SConstruct
include VERSION
include README.md
include requirements.txt include requirements.txt

View File

@ -87,8 +87,15 @@ env['BUILDERS']['F2PY'] = bld
# exports # exports
try:
Import('local_build')
except:
local_build = False
Export('env', 'conf') Export('env', 'conf')
print('local_build = ', local_build)
SConscript(['src/msspec/spec/fortran/SConstruct', if not local_build:
'src/msspec/phagen/fortran/SConstruct']) SConscript(['msspec/spec/fortran/SConstruct',
'msspec/phagen/fortran/SConstruct'])

View File

@ -248,7 +248,6 @@ class BaseParameters(object):
'{}' is not an allowed attribute of {} class. '{}' is not an allowed attribute of {} class.
Please use one of:\n{}""".format(key, self.__class__.__name__, Please use one of:\n{}""".format(key, self.__class__.__name__,
data) data)
print(key, value)
LOGGER.error('Unknown attribute!') LOGGER.error('Unknown attribute!')
raise AttributeError(err_msg) raise AttributeError(err_msg)
object.__setattr__(self, key, value) object.__setattr__(self, key, value)
@ -1549,7 +1548,6 @@ class CalculationParameters(BaseParameters):
assert( p.value in p.allowed_values) assert( p.value in p.allowed_values)
else: else:
assert( p.value is None ) assert( p.value is None )
print(iren_map[p.value])
self.spec_parameters.calc_iren = iren_map[p.value] self.spec_parameters.calc_iren = iren_map[p.value]
LOGGER.info("Renormalization activated with \'{}\' method".format(p.value)) LOGGER.info("Renormalization activated with \'{}\' method".format(p.value))
except AssertionError: except AssertionError:

View File

@ -1,8 +1,9 @@
try: try:
Import('env') Import('env')
except: except:
SConscript(['../../../../SConstruct']) local_build = True
Export('local_build')
SConscript(['../../../SConstruct'])
finally: finally:
Import('env') Import('env')

View File

@ -2,18 +2,21 @@
try: try:
Import('env', 'conf') Import('env', 'conf')
except: except:
SConscript(['../../../../SConstruct']) local_build = True
Export('local_build')
SConscript(['../../../SConstruct'])
finally: finally:
Import('env', 'conf') Import('env', 'conf')
# Configuration: # Configuration:
env2 = env.Clone()
if conf.CheckPKG('lapack'): if conf.CheckPKG('lapack'):
env.ParseConfig("pkg-config lapack --libs") env2.ParseConfig("pkg-config lapack --libs")
conf.Finish() conf.Finish()
dir = Dir('.').get_abspath() dir = Dir('.').get_abspath()
env.Append(FORTRANFLAGS=['-I' + dir,'-J' + dir]) env2.Append(FORTRANFLAGS=['-I' + dir,'-J' + dir])
env.Append(F2PY_OPTS=['-I' + dir]) env2.Append(F2PY_OPTS=['-I' + dir])
# define sources # define sources
dim_mod = ['memalloc/dim_mod.f'] dim_mod = ['memalloc/dim_mod.f']
@ -21,19 +24,15 @@ memalloc = ['memalloc/modules.f', 'memalloc/allocation.f']
cluster_gen = Glob('cluster_gen/*.f') cluster_gen = Glob('cluster_gen/*.f')
common_sub = Glob('common_sub/*.f') common_sub = Glob('common_sub/*.f')
renormalization = Glob('renormalization/*.f') renormalization = Glob('renormalization/*.f')
phd_se_noso_nosp_nosym = env.FilteredGlob('phd_se_noso_nosp_nosym/*.f', omit=['main.f']) phd_se_noso_nosp_nosym = env2.FilteredGlob('phd_se_noso_nosp_nosym/*.f', omit=['main.f'])
phd_mi_noso_nosp_nosym = env.FilteredGlob('phd_mi_noso_nosp_nosym/*.f', omit=['main.f']) phd_mi_noso_nosp_nosym = env2.FilteredGlob('phd_mi_noso_nosp_nosym/*.f', omit=['main.f'])
eig_common = Glob('eig/common/*.f') eig_common = Glob('eig/common/*.f')
eig_mi = env.FilteredGlob('eig/mi/*.f', omit=['main.f']) eig_mi = env2.FilteredGlob('eig/mi/*.f', omit=['main.f'])
eig_pw = env.FilteredGlob('eig/pw/*.f', omit=['main.f']) eig_pw = env2.FilteredGlob('eig/pw/*.f', omit=['main.f'])
#for f in eig_mi: if 'lapack' in env2['LIBS']:
# print(f) env2.Append(F2PY_OPTS = "-llapack")
#exit()
if 'lapack' in env['LIBS']:
env.Append(F2PY_OPTS = "-llapack")
eig_mi = [f for f in eig_mi if str(f).find('lapack') == -1] eig_mi = [f for f in eig_mi if str(f).find('lapack') == -1]
phd_mi_noso_nosp_nosym = [f for f in phd_mi_noso_nosp_nosym if str(f).find('lapack') == -1] phd_mi_noso_nosp_nosym = [f for f in phd_mi_noso_nosp_nosym if str(f).find('lapack') == -1]
@ -41,37 +40,37 @@ sources = dim_mod + memalloc + cluster_gen + common_sub + renormalization + phd
sources += phd_mi_noso_nosp_nosym + eig_common + eig_pw + eig_mi sources += phd_mi_noso_nosp_nosym + eig_common + eig_pw + eig_mi
# define objects # define objects
dim_mod_obj = env.Object(dim_mod) dim_mod_obj = env2.Object(dim_mod)
memalloc_obj = env.Object(memalloc) memalloc_obj = env2.Object(memalloc)
cluster_gen_obj = env.Object(cluster_gen) cluster_gen_obj = env2.Object(cluster_gen)
common_sub_obj = env.Object(common_sub) common_sub_obj = env2.Object(common_sub)
renormalization_obj = env.Object(renormalization) renormalization_obj = env2.Object(renormalization)
phd_se_noso_nosp_nosym_obj = env.Object(phd_se_noso_nosp_nosym) phd_se_noso_nosp_nosym_obj = env2.Object(phd_se_noso_nosp_nosym)
phd_mi_noso_nosp_nosym_obj = env.Object(phd_mi_noso_nosp_nosym) phd_mi_noso_nosp_nosym_obj = env2.Object(phd_mi_noso_nosp_nosym)
eig_common_obj = env.Object(eig_common) eig_common_obj = env2.Object(eig_common)
eig_pw_obj = env.Object(eig_pw) eig_pw_obj = env2.Object(eig_pw)
eig_mi_obj = env.Object(eig_mi) eig_mi_obj = env2.Object(eig_mi)
Requires(memalloc_obj, dim_mod_obj) Requires(memalloc_obj, dim_mod_obj)
# define Python extensions # define Python extensions
common_deps = dim_mod_obj + memalloc_obj + cluster_gen_obj + common_sub_obj common_deps = dim_mod_obj + memalloc_obj + cluster_gen_obj + common_sub_obj
deps = common_deps + renormalization_obj + phd_se_noso_nosp_nosym_obj deps = common_deps + renormalization_obj + phd_se_noso_nosp_nosym_obj
phd_se_mod = env.F2PY('_phd_se_noso_nosp_nosym', ['phd_se_noso_nosp_nosym/main.f'] + deps) phd_se_mod = env2.F2PY('_phd_se_noso_nosp_nosym', ['phd_se_noso_nosp_nosym/main.f'] + deps)
Requires(phd_se_mod, deps) Requires(phd_se_mod, deps)
env.Alias('phd_se', phd_se_mod) env2.Alias('phd_se', phd_se_mod)
deps = common_deps + renormalization_obj + phd_mi_noso_nosp_nosym_obj deps = common_deps + renormalization_obj + phd_mi_noso_nosp_nosym_obj
phd_mi_mod = env.F2PY('_phd_mi_noso_nosp_nosym', ['phd_mi_noso_nosp_nosym/main.f'] + deps) phd_mi_mod = env2.F2PY('_phd_mi_noso_nosp_nosym', ['phd_mi_noso_nosp_nosym/main.f'] + deps)
Requires(phd_mi_mod, deps) Requires(phd_mi_mod, deps)
env.Alias('phd_mi', phd_mi_mod) env2.Alias('phd_mi', phd_mi_mod)
deps = common_deps + renormalization_obj + eig_common_obj + eig_mi_obj deps = common_deps + renormalization_obj + eig_common_obj + eig_mi_obj
eig_mi_mod = env.F2PY('_eig_mi', ['eig/mi/main.f'] + deps) eig_mi_mod = env2.F2PY('_eig_mi', ['eig/mi/main.f'] + deps)
Requires(eig_mi_mod, deps) Requires(eig_mi_mod, deps)
env.Alias('eig_mi', eig_mi_mod) env2.Alias('eig_mi', eig_mi_mod)
deps = common_deps + renormalization_obj + eig_common_obj + eig_pw_obj deps = common_deps + renormalization_obj + eig_common_obj + eig_pw_obj
eig_pw_mod = env.F2PY('_eig_pw', ['eig/pw/main.f'] + deps) eig_pw_mod = env2.F2PY('_eig_pw', ['eig/pw/main.f'] + deps)
Requires(eig_pw_mod, deps) Requires(eig_pw_mod, deps)
env.Alias('eig_pw', eig_pw_mod) env2.Alias('eig_pw', eig_pw_mod)

View File

@ -3,7 +3,6 @@
from setuptools_scm import get_version from setuptools_scm import get_version
from pkg_resources import parse_version, DistributionNotFound, get_distribution from pkg_resources import parse_version, DistributionNotFound, get_distribution
from msspec.misc import LOGGER
import os import os
# find the version number # find the version number
@ -27,5 +26,5 @@ except (LookupError, ImportError):
try: try:
__version__ = get_distribution(__name__.strip('.version')).version __version__ = get_distribution(__name__.strip('.version')).version
except DistributionNotFound: except DistributionNotFound:
LOGGER.error("Unable to get the version number!") print("Unable to get the version number!")

View File

@ -8,3 +8,4 @@ pycairo
coverage coverage
sphinx sphinx
setuptools_scm setuptools_scm
wxPython

View File

@ -1,15 +1,86 @@
# coding: utf-8 # coding: utf-8
# vim: set fdm=indent ts=4 sw=4 sts=4 et tw=80 ai cc=+0 mouse=a nu : # # vim: set fdm=indent ts=4 sw=4 sts=4 et tw=80 ai cc=+0 mouse=a nu :
from setuptools import setup, find_packages from setuptools import setup, Extension, find_packages
from msspec.version import __version__ from distutils.file_util import copy_file
from distutils.command.build import build as _build
from setuptools.command.build_ext import build_ext as _build_ext
from setuptools.command.install import install as _install
from distutils.command.clean import clean as _clean
import subprocess
import traceback
import os
import sys
sys.path.insert(0, "msspec")
from version import __version__
SETUP_REQUIRES = ['scons', 'setuptools_scm']
with open('requirements.txt', 'r') as fd: with open('requirements.txt', 'r') as fd:
requirements = fd.read().strip().split('\n') REQUIREMENTS = fd.read().strip().split('\n')
subprocess.call(["pip", "install"] + SETUP_REQUIRES)
class BuildExtCmd(_build_ext):
def run(self):
src_dir = "."
subprocess.call(['scons'])
for ext in self.extensions:
fullname = self.get_ext_fullname(ext.name)
filename = self.get_ext_filename(fullname)
print("building ", filename)
src_filename = filename
dest_filename = os.path.join(self.build_lib, filename)
os.makedirs(os.path.dirname(dest_filename), exist_ok=True)
copy_file(src_filename, dest_filename, verbose=self.verbose,
dry_run=self.dry_run)
class BuildCmd(_build):
def run(self):
print("build_lib ", self.build_lib)
self.run_command("build_ext")
_build.run(self)
class InstallCmd(_install):
def run(self):
self.run_command("build")
_install.run(self)
class CleanCmd(_clean):
def run(self):
subprocess.call(['scons', '-c'])
_clean.run(self)
if __name__ == "__main__":
module_phagen = Extension('msspec.phagen.fortran.libphagen',['msspec/phagen/fortran/main.f'])
module_spec_phd_mi = Extension('msspec.spec.fortran._phd_mi_noso_nosp_nosym',['msspec/spec/fortran/phd_mi_noso_nosp_nosym/main.f'])
module_spec_phd_se = Extension('msspec.spec.fortran._phd_se_noso_nosp_nosym',['msspec/spec/fortran/phd_se_noso_nosp_nosym/main.f'])
module_eig_mi = Extension('msspec.spec.fortran._eig_mi',['msspec/spec/fortran/eig/mi/main.f'])
module_eig_pw = Extension('msspec.spec.fortran._eig_pw',['msspec/spec/fortran/eig/pw/main.f'])
setup(name='msspec', setup(name='msspec',
setup_requires=['setuptools_scm'],
version=__version__, version=__version__,
include_package_data=True,
ext_modules=[module_phagen, module_spec_phd_mi, module_spec_phd_se, module_eig_mi, module_eig_pw],
cmdclass={'build' : BuildCmd,
'build_ext': BuildExtCmd,
'clean' : CleanCmd,
'install' : InstallCmd,
},
packages=find_packages(include='msspec.*'),
setup_requires=SETUP_REQUIRES,
install_requires=REQUIREMENTS,
author='Didier Sébilleau, Sylvain Tricot', author='Didier Sébilleau, Sylvain Tricot',
author_email='sylvain.tricot@univ-rennes1.fr', author_email='sylvain.tricot@univ-rennes1.fr',
maintainer='Sylvain Tricot', maintainer='Sylvain Tricot',
@ -46,8 +117,4 @@ setup(name='msspec',
], ],
keywords='spectroscopy atom electron photon multiple scattering', keywords='spectroscopy atom electron photon multiple scattering',
license='GPL', license='GPL',
include_package_data=True,
packages=find_packages(include='msspec.*'),
install_requires=requirements
) )