diff options
author | Joshua Branson <jbranso@fastmail.com> | 2018-11-27 10:54:21 -0500 |
---|---|---|
committer | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2019-10-13 19:19:46 +0200 |
commit | 9b6a1b003c56da3ef309316e7be80a6b449af3ab (patch) | |
tree | 196516d443354a1ece5b6dae8c639a77f8f81eb9 /open_issues | |
parent | 513fea5d9d40d11961cfee5c1e6347b6ba793fbc (diff) |
I am adding more information to the SMP page. I am mainly copying it from https://gitlab.com/snippets/1756024#solution
Diffstat (limited to 'open_issues')
-rw-r--r-- | open_issues/images/smp.svg | 11208 | ||||
-rw-r--r-- | open_issues/smp.mdwn | 296 |
2 files changed, 11486 insertions, 18 deletions
diff --git a/open_issues/images/smp.svg b/open_issues/images/smp.svg new file mode 100644 index 00000000..3b917bde --- /dev/null +++ b/open_issues/images/smp.svg @@ -0,0 +1,11208 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:osb="http://www.openswatchbook.org/uri/2009/osb" + 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" + id="svg3004" + version="1.1" + inkscape:version="0.48.1 r9760" + width="993.86743" + height="639.2627" + xml:space="preserve" + sodipodi:docname="SMP - Symmetric Multiprocessor System.svg"><metadata + id="metadata3010"><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><defs + id="defs3008"><linearGradient + id="linearGradient23576" + osb:paint="solid"><stop + style="stop-color:#000000;stop-opacity:1;" + offset="0" + id="stop23578" /></linearGradient><inkscape:path-effect + effect="spiro" + id="path-effect23402" + is_visible="true" /><linearGradient + id="linearGradient5729" + osb:paint="solid"><stop + style="stop-color:#ff0000;stop-opacity:1;" + offset="0" + id="stop5731" /></linearGradient><linearGradient + id="linearGradient5711" + osb:paint="solid"><stop + style="stop-color:#ff0000;stop-opacity:1;" + offset="0" + id="stop5713" /></linearGradient><linearGradient + id="linearGradient5705" + osb:paint="solid"><stop + style="stop-color:#ff0000;stop-opacity:1;" + offset="0" + id="stop5707" /></linearGradient><linearGradient + id="linearGradient4254" + osb:paint="solid"><stop + style="stop-color:#ff0000;stop-opacity:1;" + offset="0" + id="stop4256" /></linearGradient><linearGradient + id="linearGradient4248" + osb:paint="solid"><stop + style="stop-color:#ff0000;stop-opacity:1;" + offset="0" + id="stop4250" /></linearGradient><linearGradient + id="linearGradient4242" + osb:paint="solid"><stop + style="stop-color:#ff0000;stop-opacity:1;" + offset="0" + id="stop4244" /></linearGradient><linearGradient + id="linearGradient15272" + osb:paint="solid"><stop + style="stop-color:#fc0000;stop-opacity:1;" + offset="0" + id="stop15274" /></linearGradient><linearGradient + id="linearGradient13822" + osb:paint="solid"><stop + style="stop-color:#572382;stop-opacity:1;" + offset="0" + id="stop13824" /></linearGradient><inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 131.64062 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="626.21094 : 131.64062 : 1" + inkscape:persp3d-origin="313.10547 : 87.760417 : 1" + id="perspective12329" /><linearGradient + id="linearGradient6865" + osb:paint="solid"><stop + style="stop-color:#0f1800;stop-opacity:1;" + offset="0" + id="stop6867" /></linearGradient><linearGradient + id="linearGradient6859" + osb:paint="solid"><stop + style="stop-color:#0f1800;stop-opacity:1;" + offset="0" + id="stop6861" /></linearGradient><linearGradient + id="linearGradient33194" + osb:paint="solid"><stop + style="stop-color:#10110a;stop-opacity:1;" + offset="0" + id="stop33196" /></linearGradient><linearGradient + id="linearGradient33166" + osb:paint="solid"><stop + style="stop-color:#ff00f9;stop-opacity:1;" + offset="0" + id="stop33168" /></linearGradient><linearGradient + id="linearGradient29591" + osb:paint="gradient"><stop + style="stop-color:#000000;stop-opacity:1;" + offset="0" + id="stop29593" /><stop + style="stop-color:#000000;stop-opacity:0;" + offset="1" + id="stop29595" /></linearGradient><linearGradient + id="linearGradient29145" + osb:paint="solid"><stop + style="stop-color:#108000;stop-opacity:1;" + offset="0" + id="stop29147" /></linearGradient><marker + inkscape:stockid="Arrow2Lstart" + orient="auto" + refY="0" + refX="0" + id="Arrow2Lstart" + style="overflow:visible"><path + id="path4311" + style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="matrix(1.1,0,0,1.1,1.1,0)" + inkscape:connector-curvature="0" /></marker><marker + inkscape:stockid="Arrow1Lend" + orient="auto" + refY="0" + refX="0" + id="Arrow1Lend" + style="overflow:visible"><path + id="path4296" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 z" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none" + transform="matrix(-0.8,0,0,-0.8,-10,0)" + inkscape:connector-curvature="0" /></marker><marker + inkscape:stockid="Arrow1Lstart" + orient="auto" + refY="0" + refX="0" + id="Arrow1Lstart" + style="overflow:visible"><path + id="path4293" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 z" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none" + transform="matrix(0.8,0,0,0.8,10,0)" + inkscape:connector-curvature="0" /></marker><linearGradient + id="linearGradient5616" + osb:paint="solid"><stop + style="stop-color:#b8bbad;stop-opacity:0.93333334;" + offset="0" + id="stop5618" /></linearGradient><linearGradient + id="linearGradient5588" + osb:paint="solid"><stop + style="stop-color:#1d0403;stop-opacity:1;" + offset="0" + id="stop5590" /></linearGradient><linearGradient + id="linearGradient5564" + osb:paint="solid"><stop + style="stop-color:#300a70;stop-opacity:1;" + offset="0" + id="stop5566" /></linearGradient><linearGradient + id="linearGradient4102" + osb:paint="solid"><stop + style="stop-color:#000000;stop-opacity:1;" + offset="0" + id="stop4104" /></linearGradient><linearGradient + id="linearGradient4092" + osb:paint="solid"><stop + style="stop-color:#000000;stop-opacity:1;" + offset="0" + id="stop4094" /></linearGradient><linearGradient + id="linearGradient5397" + osb:paint="solid"><stop + style="stop-color:#000000;stop-opacity:1;" + offset="0" + id="stop5399" /></linearGradient><linearGradient + id="linearGradient5389" + osb:paint="solid"><stop + style="stop-color:#000000;stop-opacity:1;" + offset="0" + id="stop5391" /></linearGradient><linearGradient + id="linearGradient3947" + osb:paint="solid"><stop + style="stop-color:#000000;stop-opacity:1;" + offset="0" + id="stop3949" /></linearGradient><linearGradient + id="linearGradient3940" + osb:paint="solid"><stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop3942" /></linearGradient><linearGradient + id="linearGradient4074" + osb:paint="solid"><stop + style="stop-color:#000000;stop-opacity:1;" + offset="0" + id="stop4076" /></linearGradient><linearGradient + id="linearGradient5199" + osb:paint="solid"><stop + style="stop-color:#000000;stop-opacity:1;" + offset="0" + id="stop5201" /></linearGradient><marker + style="overflow:visible" + inkscape:stockid="InfiniteLineStart" + id="InfiniteLineStart" + refX="0" + refY="0" + orient="auto"><g + id="g4623" + transform="translate(-13,0)"><circle + d="M 3.8,0 C 3.8,0.44182781 3.4418278,0.80000001 3,0.80000001 2.5581722,0.80000001 2.2,0.44182781 2.2,0 c 0,-0.44182781 0.3581722,-0.80000001 0.8,-0.80000001 0.4418278,0 0.8,0.3581722 0.8,0.80000001 z" + id="circle4625" + r="0.80000001" + cy="0" + cx="3" + sodipodi:cx="3" + sodipodi:cy="0" + sodipodi:rx="0.80000001" + sodipodi:ry="0.80000001" /><circle + d="M 7.3,0 C 7.3,0.44182781 6.9418278,0.80000001 6.5,0.80000001 6.0581722,0.80000001 5.7,0.44182781 5.7,0 c 0,-0.44182781 0.3581722,-0.80000001 0.8,-0.80000001 0.4418278,0 0.8,0.3581722 0.8,0.80000001 z" + id="circle4627" + r="0.80000001" + cy="0" + cx="6.5" + sodipodi:cx="6.5" + sodipodi:cy="0" + sodipodi:rx="0.80000001" + sodipodi:ry="0.80000001" /><circle + d="M 10.8,0 C 10.8,0.44182781 10.441828,0.80000001 10,0.80000001 9.5581722,0.80000001 9.2,0.44182781 9.2,0 c 0,-0.44182781 0.3581722,-0.80000001 0.8,-0.80000001 0.441828,0 0.8,0.3581722 0.8,0.80000001 z" + id="circle4629" + r="0.80000001" + cy="0" + cx="10" + sodipodi:cx="10" + sodipodi:cy="0" + sodipodi:rx="0.80000001" + sodipodi:ry="0.80000001" /></g></marker><linearGradient + id="linearGradient6082" + osb:paint="solid"><stop + style="stop-color:#19001d;stop-opacity:1;" + offset="0" + id="stop6084" /></linearGradient><linearGradient + id="linearGradient4624" + osb:paint="gradient"><stop + style="stop-color:#000000;stop-opacity:1;" + offset="0" + id="stop4626" /><stop + style="stop-color:#000000;stop-opacity:0;" + offset="1" + id="stop4628" /></linearGradient><linearGradient + id="linearGradient3884" + osb:paint="solid"><stop + style="stop-color:#ff00ff;stop-opacity:0.80888891;" + offset="0" + id="stop3886" /></linearGradient><linearGradient + id="linearGradient3999" + osb:paint="solid"><stop + style="stop-color:#df0000;stop-opacity:1;" + offset="0" + id="stop4001" /></linearGradient><linearGradient + id="linearGradient3993" + osb:paint="solid"><stop + style="stop-color:#e81013;stop-opacity:1;" + offset="0" + id="stop3995" /></linearGradient><linearGradient + id="linearGradient3987" + osb:paint="solid"><stop + style="stop-color:#1100aa;stop-opacity:1;" + offset="0" + id="stop3989" /></linearGradient><clipPath + clipPathUnits="userSpaceOnUse" + id="clipPath3020"><path + d="m 0,0 595.27557,0 0,841.88977 L 0,841.88977 0,0 z" + id="path3022" + inkscape:connector-curvature="0" /></clipPath><linearGradient + x1="244.67969" + y1="91.625" + x2="282.85547" + y2="94.738281" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.8,0,0.30245,-0.740624,0,841.88977)" + spreadMethod="pad" + id="linearGradient3024"><stop + style="stop-opacity:1;stop-color:#ffffff" + offset="0" + id="stop3026" /><stop + style="stop-opacity:0;stop-color:#ffffff" + offset="1" + id="stop3028" /></linearGradient><mask + maskUnits="userSpaceOnUse" + x="0" + y="0" + width="1" + height="1" + id="mask3030"><g + id="g3032"><g + clip-path="url(#clipPath3020)" + id="g3034"><g + id="g3036"><path + d="m 0,0 595.27557,0 0,841.88977 L 0,841.88977 0,0 z" + style="fill:url(#linearGradient3024);fill-opacity:1;fill-rule:nonzero;stroke:none" + id="path3038" + inkscape:connector-curvature="0" /></g></g></g></mask><clipPath + clipPathUnits="userSpaceOnUse" + id="clipPath3044"><path + d="m 0,0 595.27557,0 0,841.88977 L 0,841.88977 0,0 z" + id="path3046" + inkscape:connector-curvature="0" /></clipPath><linearGradient + x1="244.67969" + y1="91.625" + x2="282.85547" + y2="94.738281" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.8,0,0.30245,-0.740624,0,841.88977)" + spreadMethod="pad" + id="linearGradient3048"><stop + style="stop-opacity:1;stop-color:#ffffff" + offset="0" + id="stop3050" /><stop + style="stop-opacity:1;stop-color:#ffffff" + offset="1" + id="stop3052" /></linearGradient> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient3925" + gradientUnits="userSpaceOnUse" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient3994" + gradientUnits="userSpaceOnUse" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient3215" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.5802469,0,0,1.5802469,-76.377829,-420.16955)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient3277" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.5802469,0,0,1.5802469,-76.377829,-420.16955)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient5571" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(205.04392,118.40148)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient5573" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(205.04392,118.40148)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient5846" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(205.04392,118.40148)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient5848" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(205.04392,118.40148)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient5984" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(205.04392,118.40148)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient5986" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(205.04392,118.40148)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient3223" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(205.91759,116.92956)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient3258" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(205.91759,116.92956)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient5397" + id="linearGradient5401" + x1="220.33125" + y1="842.125" + x2="647.23126" + y2="842.125" + gradientUnits="userSpaceOnUse" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient6110" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(205.91759,116.92956)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient6112" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(205.91759,116.92956)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient6230" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(192.69259,-171.17041)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient6232" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(192.69259,-171.17041)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient3242" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(192.81135,-171.26503)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient3278" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(192.81135,-171.26503)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient6968" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(192.81135,-171.26503)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient6983" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(192.81135,-171.26503)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /> + + + + + + + + + + + + + + + + + +<linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient3206" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(192.81135,-171.26503)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient3221" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(192.81135,-171.26503)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /> + + + + + + + + + + + + + + + + + +<linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient3208" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(192.81135,-171.26503)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient3224" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(192.81135,-171.26503)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient3237" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(192.81135,-171.26503)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient3239" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(192.81135,-171.26503)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient3395" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(192.81135,-171.26503)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient3397" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(192.81135,-171.26503)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient9966" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(192.81135,-171.26503)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient9985" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(192.81135,-171.26503)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient10030" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(192.81135,-171.26503)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient10041" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(192.81135,-171.26503)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient10068" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(192.81135,-171.26503)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient10087" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(192.81135,-171.26503)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient10132" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(192.81135,-171.26503)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient10143" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(192.81135,-171.26503)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient10789" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(186.01135,-187.66503)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient10791" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(186.01135,-187.66503)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient10793" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(186.01135,-187.66503)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient10795" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(186.01135,-187.66503)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient10797" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(186.01135,-187.66503)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient10799" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(186.01135,-187.66503)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient10801" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(186.01135,-187.66503)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient10803" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(186.01135,-187.66503)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient12409" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(192.81135,-171.26503)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient12411" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(192.81135,-171.26503)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient12413" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(192.81135,-171.26503)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient12415" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(192.81135,-171.26503)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient12417" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(192.81135,-171.26503)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient12419" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(192.81135,-171.26503)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient12421" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(192.81135,-171.26503)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient12423" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(192.81135,-171.26503)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient13457" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(186.01135,-187.66503)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient13459" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(186.01135,-187.66503)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient13461" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(186.01135,-187.66503)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient13463" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(186.01135,-187.66503)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient13465" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(186.01135,-187.66503)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient13467" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(186.01135,-187.66503)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient13469" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(186.01135,-187.66503)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient13471" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(186.01135,-187.66503)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient33404" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient33417" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient33454" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient33465" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient33486" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient33499" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient33536" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient33547" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient33567" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient33581" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient33617" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient33628" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient33650" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient33664" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient33701" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient33712" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient33735" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient33750" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient33787" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient33798" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient33821" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient33836" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient33873" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient33884" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient33906" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient33920" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient33957" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient33968" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient33990" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient34004" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient34041" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient34052" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient34075" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient34090" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient34127" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient34138" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient34161" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient34176" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient34213" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient34224" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient34246" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient34260" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient34297" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient34308" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient34330" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient34344" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient34381" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient34392" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient34415" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient34430" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient34467" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient34478" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient34501" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient34516" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient34553" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient34564" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient34586" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient34600" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient34637" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient34648" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient34670" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient34684" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient34721" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient34732" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient34752" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient34766" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient34802" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient34813" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient34835" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient34849" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient34886" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient34897" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient34917" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient34931" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient34967" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient34978" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient35000" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient35014" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient35051" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient35062" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient35085" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient35100" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient35137" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient35148" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient35171" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient35186" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient35223" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient35234" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient35256" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient35270" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient35307" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient35318" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient35340" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient35354" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient35391" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient35402" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient35425" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient35440" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient35477" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient35488" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient35511" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient35526" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient35563" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient35574" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient35596" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient35610" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient35647" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient35658" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient35680" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient35694" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient35731" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient35742" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient35765" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient35780" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient35817" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient35828" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient35851" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient35866" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient35903" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient35914" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient35936" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient35950" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient35987" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient35998" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient36020" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient36034" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient36071" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient36082" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(121.21135,-106.93097)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient6236" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient6249" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient6286" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient6297" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient6318" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient6331" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient6368" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient6379" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient6399" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient6413" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient6449" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient6460" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient6482" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient6496" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient6533" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient6544" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient6567" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient6582" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient6619" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient6630" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient6653" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient6668" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient6705" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient6716" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient6738" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient6752" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient6789" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient6800" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient6822" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient6836" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient6873" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient6884" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient6907" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient6922" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient6959" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient6970" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient6993" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient7008" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient7045" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient7056" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient7078" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient7092" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient7129" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient7140" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient7162" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient7176" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient7213" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient7224" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient7247" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient7262" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient7299" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient7310" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient7333" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient7348" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient7385" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient7396" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient7418" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient7432" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient7469" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient7480" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient7502" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient7516" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient7553" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient7564" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient7584" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient7598" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient7634" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient7645" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient7667" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient7681" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient7718" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient7729" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient7749" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient7763" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient7799" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient7810" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient7832" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient7846" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient7883" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient7894" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient7917" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient7932" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient7969" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient7980" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient8003" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient8018" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient8055" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient8066" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient8088" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient8102" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient8139" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient8150" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient8172" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient8186" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient8223" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient8234" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient8257" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient8272" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient8309" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient8320" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient8343" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient8358" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient8395" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient8406" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient8428" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient8442" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient8479" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient8490" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient8512" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient8526" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient8563" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient8574" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient8597" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient8612" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient8649" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient8660" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient8683" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient8698" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient8735" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient8746" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient8768" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient8782" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient8819" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient8830" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient8852" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient8866" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient8903" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient8914" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.86461,328.26889)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3999" + id="linearGradient7047" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.73127,327.86885)" + x1="275.05582" + y1="662.03979" + x2="433.45126" + y2="662.03979" /><linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3993" + id="linearGradient19060" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(245.71875,327.86029)" + x1="244.285" + y1="699.48529" + x2="280.11301" + y2="699.48529" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +</defs><sodipodi:namedview + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="1" + inkscape:pageshadow="2" + inkscape:window-width="1430" + inkscape:window-height="845" + id="namedview3006" + showgrid="false" + inkscape:zoom="1" + inkscape:cx="594.81919" + inkscape:cy="314.63564" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="0" + inkscape:current-layer="g3012" + inkscape:snap-grids="true" + fit-margin-top="0" + fit-margin-left="0" + fit-margin-right="0" + fit-margin-bottom="0" + showborder="true" + inkscape:showpageshadow="true" + showguides="true" + inkscape:guide-bbox="true" + inkscape:snap-global="false" + inkscape:snap-bbox="true" + inkscape:snap-midpoints="true" + inkscape:snap-to-guides="false"><inkscape:grid + type="xygrid" + id="grid3199" + empspacing="5" + visible="true" + enabled="true" + snapvisiblegridlinesonly="true" /></sodipodi:namedview><g + id="g3012" + inkscape:groupmode="layer" + inkscape:label="FAC" + transform="matrix(1.25,0,0,-1.25,-362.65613,1967.5048)" + style="display:inline"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<g + id="g3595"><rect + transform="scale(1,-1)" + y="-1573.2125" + x="290.92581" + height="509.8042" + width="793.49268" + id="rect4555" + style="fill:none;stroke:#000000;stroke-width:1.5999999;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><rect + style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.24000007;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + id="rect4409" + width="3.9061351" + height="31.520151" + x="520.16711" + y="-1213.8158" + transform="scale(1,-1)" /><rect + style="fill:#0000ff;fill-opacity:1;fill-rule:evenodd;stroke:#0000ff;stroke-width:0.24000007;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + id="rect4401" + width="3.9061351" + height="43.168903" + x="656.31409" + y="-1334.413" + transform="scale(1,-1)" /><rect + transform="scale(1,-1)" + y="-1334.413" + x="520.16711" + height="43.168903" + width="3.9061351" + id="rect4309" + style="fill:#0000ff;fill-opacity:1;fill-rule:evenodd;stroke:#0000ff;stroke-width:0.24000007;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><rect + transform="scale(1,-1)" + y="-1334.413" + x="824.08881" + height="43.168903" + width="3.9061351" + id="rect4403" + style="fill:#0000ff;fill-opacity:1;fill-rule:evenodd;stroke:#0000ff;stroke-width:0.24000007;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><rect + transform="scale(1,-1)" + y="-1232.4293" + x="563.03278" + height="13.361802" + width="14.281804" + id="rect4213" + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.24000001;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><rect + inkscape:transform-center-x="-1.0614676" + inkscape:transform-center-y="-4.5514651" + transform="matrix(0.74553647,-0.66646483,0,1,0,0)" + y="1736.2219" + x="769.74976" + height="62.666431" + width="4.5189481" + id="rect3404" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.27795643;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><rect + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.29507753;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + id="rect4211" + width="4.7647319" + height="105.52592" + x="-1847.5461" + y="-1958.416" + transform="matrix(0.74991829,-0.66153047,-1,0,0,0)" + inkscape:transform-center-y="1.0612804" + inkscape:transform-center-x="7.6443688" /><rect + transform="scale(1,-1)" + y="-1285.8766" + x="467.43427" + height="63.497108" + width="106.44215" + id="rect3398" + style="fill:#ffff00;fill-opacity:1;fill-rule:evenodd;stroke:#060000;stroke-width:0.24000001;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><rect + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.24000001;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + id="rect4239" + width="14.281804" + height="13.361802" + x="699.17926" + y="-1232.4293" + transform="scale(1,-1)" /><rect + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.27795643;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + id="rect4241" + width="4.5189481" + height="62.666431" + x="952.36511" + y="1857.9291" + transform="matrix(0.74553647,-0.66646483,0,1,0,0)" + inkscape:transform-center-y="-4.5517162" + inkscape:transform-center-x="-1.061456" /><rect + inkscape:transform-center-x="7.6440797" + inkscape:transform-center-y="1.0612804" + transform="matrix(0.74991829,-0.66153047,-1,0,0,0)" + y="-2094.5627" + x="-1847.5461" + height="105.52592" + width="4.7647319" + id="rect4243" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.29507753;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><rect + style="fill:#ffff00;fill-opacity:1;fill-rule:evenodd;stroke:#060000;stroke-width:0.24000001;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + id="rect4245" + width="106.44215" + height="63.497108" + x="603.58069" + y="-1285.8766" + transform="scale(1,-1)" /><rect + transform="scale(1,-1)" + y="-1231.0588" + x="869.15442" + height="13.361802" + width="14.281804" + id="rect4259" + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.24000001;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><rect + inkscape:transform-center-x="-1.0614356" + inkscape:transform-center-y="-4.5516985" + transform="matrix(0.74553647,-0.66646483,0,1,0,0)" + y="2008.506" + x="1180.3541" + height="62.666431" + width="4.5189481" + id="rect4261" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.27795643;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><rect + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.29507753;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + id="rect4263" + width="4.7647319" + height="105.52592" + x="-1845.4745" + y="-2262.9836" + transform="matrix(0.74991829,-0.66153047,-1,0,0,0)" + inkscape:transform-center-y="1.0611998" + inkscape:transform-center-x="7.6439322" /><rect + transform="scale(1,-1)" + y="-1284.5061" + x="773.55615" + height="63.497108" + width="106.44215" + id="rect4265" + style="fill:#ffff00;fill-opacity:1;fill-rule:evenodd;stroke:#060000;stroke-width:0.24000001;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><rect + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.24000001;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + id="rect4269" + width="14.281804" + height="13.361802" + x="562.30048" + y="-1123.4791" + transform="scale(1,-1)" /><rect + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.27795643;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + id="rect4271" + width="4.5189481" + height="62.666431" + x="768.76746" + y="1626.6176" + transform="matrix(0.74553647,-0.66646483,0,1,0,0)" + inkscape:transform-center-y="-4.5517903" + inkscape:transform-center-x="-1.0614992" /><rect + inkscape:transform-center-x="7.6443472" + inkscape:transform-center-y="1.0612278" + transform="matrix(0.74991829,-0.66153047,-1,0,0,0)" + y="-1834.1765" + x="-1682.8523" + height="105.52592" + width="4.7647319" + id="rect4273" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.29507753;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><rect + style="fill:#ff00ff;fill-opacity:1;fill-rule:evenodd;stroke:#060000;stroke-width:0.24000001;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + id="rect4275" + width="106.44215" + height="63.497108" + x="466.70187" + y="-1176.9263" + transform="scale(1,-1)" /><rect + transform="scale(1,-1)" + y="-1123.4791" + x="698.4469" + height="13.361802" + width="14.281804" + id="rect4279" + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.24000001;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><rect + inkscape:transform-center-x="-1.0614529" + inkscape:transform-center-y="-4.5517507" + transform="matrix(0.74553647,-0.66646483,0,1,0,0)" + y="1748.324" + x="951.38263" + height="62.666431" + width="4.5189481" + id="rect4281" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.27795643;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><rect + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.29507753;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + id="rect4283" + width="4.7647319" + height="105.52592" + x="-1682.8523" + y="-1970.323" + transform="matrix(0.74991829,-0.66153047,-1,0,0,0)" + inkscape:transform-center-y="1.0612278" + inkscape:transform-center-x="7.644363" /><rect + transform="scale(1,-1)" + y="-1176.9263" + x="602.84839" + height="63.497108" + width="106.44215" + id="rect4285" + style="fill:#ff00ff;fill-opacity:1;fill-rule:evenodd;stroke:#060000;stroke-width:0.24000001;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><rect + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.24000001;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + id="rect4289" + width="14.281804" + height="13.361802" + x="868.42206" + y="-1122.1088" + transform="scale(1,-1)" /><rect + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.27795643;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + id="rect4291" + width="4.5189481" + height="62.666431" + x="1179.3717" + y="1898.9011" + transform="matrix(0.74553647,-0.66646483,0,1,0,0)" + inkscape:transform-center-y="-4.5515741" + inkscape:transform-center-x="-1.0614391" /><rect + inkscape:transform-center-x="7.6441539" + inkscape:transform-center-y="1.0611978" + transform="matrix(0.74991829,-0.66153047,-1,0,0,0)" + y="-2138.7451" + x="-1680.7808" + height="105.52592" + width="4.7647319" + id="rect4293" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.29507753;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><rect + style="fill:#ff00ff;fill-opacity:1;fill-rule:evenodd;stroke:#060000;stroke-width:0.24000001;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + id="rect4295" + width="106.44215" + height="63.497108" + x="772.82373" + y="-1175.5558" + transform="scale(1,-1)" /><rect + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.24000001;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + id="rect4299" + width="14.281804" + height="13.361802" + x="759.31616" + y="-1416.7537" + transform="scale(1,-1)" /><rect + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.27795643;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + id="rect4301" + width="4.5189481" + height="62.666431" + x="1033.0277" + y="2096.0117" + transform="matrix(0.74553647,-0.66646483,0,1,0,0)" + inkscape:transform-center-y="-4.5513687" + inkscape:transform-center-x="-1.0615848" /><rect + inkscape:transform-center-x="7.6445137" + inkscape:transform-center-y="1.0610954" + transform="matrix(0.74991829,-0.66153047,-1,0,0,0)" + y="-2363.6514" + x="-2126.1794" + height="105.52592" + width="4.7647319" + id="rect4303" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.29507753;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><rect + style="fill:#00ffff;fill-opacity:1;fill-rule:evenodd;stroke:#060000;stroke-width:0.24000001;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + id="rect4305" + width="106.44215" + height="63.497108" + x="663.71747" + y="-1470.2007" + transform="scale(1,-1)" /><rect + transform="scale(1,-1)" + y="-1347.775" + x="443.26501" + height="5.6478796" + width="603.90399" + id="rect4307" + style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.24000007;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><rect + style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.24000007;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + id="rect4405" + width="3.9061351" + height="29.807098" + x="824.08881" + y="-1213.8158" + transform="scale(1,-1)" /><rect + transform="scale(1,-1)" + y="-1213.8158" + x="656.31409" + height="31.520151" + width="3.9061351" + id="rect4407" + style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.24000007;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><rect + style="fill:#0000ff;fill-opacity:1;fill-rule:evenodd;stroke:#0000ff;stroke-width:0.24000007;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + id="rect4399" + width="3.9061351" + height="43.168903" + x="716.77637" + y="-1397.4531" + transform="scale(1,-1)" /><path + style="fill:#f90000;fill-opacity:1;stroke:#ff0000;stroke-width:0.80000013px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 434.78142,1344.9108 c 17.05113,-6.9179 16.7232,-7.0718 16.7232,-7.0718 l -2.13136,6.7645 2.13136,7.2254 z" + id="path4397" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccc" /><path + sodipodi:nodetypes="ccccc" + inkscape:connector-curvature="0" + id="path4411" + d="m 1059.8206,1344.9108 c -17.0511,-6.9179 -16.7231,-7.0718 -16.7231,-7.0718 l 2.1314,6.7645 -2.1314,7.2254 z" + style="fill:#f90000;fill-opacity:1;stroke:#ff0000;stroke-width:0.80000013px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /><path + style="fill:#0000ff;fill-opacity:1;stroke:#0000ff;stroke-width:0.80000013px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 825.84815,1341.2369 c -4.37631,-9.6651 -4.47357,-9.479 -4.47357,-9.479 l 4.27909,1.208 4.57077,-1.208 z" + id="path4413" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccc" /><path + sodipodi:nodetypes="ccccc" + inkscape:connector-curvature="0" + id="path4415" + d="m 658.07127,1341.2369 c -4.37629,-9.6651 -4.47356,-9.479 -4.47356,-9.479 l 4.27911,1.208 4.57074,-1.208 z" + style="fill:#0000ff;fill-opacity:1;stroke:#0000ff;stroke-width:0.80000013px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /><path + style="fill:#0000ff;fill-opacity:1;stroke:#0000ff;stroke-width:0.80000013px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 521.92496,1341.2369 c -4.37633,-9.6651 -4.47358,-9.479 -4.47358,-9.479 l 4.27908,1.208 4.57077,-1.208 z" + id="path4417" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccc" /><path + sodipodi:nodetypes="ccccc" + inkscape:connector-curvature="0" + id="path4419" + d="m 521.92496,1287.9034 c -4.37633,9.665 -4.47358,9.479 -4.47358,9.479 l 4.27908,-1.208 4.57077,1.208 z" + style="fill:#0000ff;fill-opacity:1;stroke:#0000ff;stroke-width:0.80000013px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /><path + style="fill:#0000ff;fill-opacity:1;stroke:#0000ff;stroke-width:0.80000013px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 658.07127,1287.9034 c -4.37629,9.665 -4.47356,9.479 -4.47356,9.479 l 4.27911,-1.208 4.57074,1.208 z" + id="path4421" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccc" /><path + sodipodi:nodetypes="ccccc" + inkscape:connector-curvature="0" + id="path4423" + d="m 825.84815,1287.9034 c -4.37631,9.665 -4.47357,9.479 -4.47357,9.479 l 4.27909,-1.208 4.57077,1.208 z" + style="fill:#0000ff;fill-opacity:1;stroke:#0000ff;stroke-width:0.80000013px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /><path + style="fill:#f90000;fill-opacity:1;stroke:#ff0000;stroke-width:0.80000013px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 825.84815,1177.5829 c -4.37631,9.6648 -4.47357,9.479 -4.47357,9.479 l 4.27909,-1.2082 4.57077,1.2082 z" + id="path4425" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccc" /><path + sodipodi:nodetypes="ccccc" + inkscape:connector-curvature="0" + id="path4429" + d="m 658.07127,1178.2681 c -4.37629,9.6649 -4.47356,9.479 -4.47356,9.479 l 4.27911,-1.2082 4.57074,1.2082 z" + style="fill:#f90000;fill-opacity:1;stroke:#ff0000;stroke-width:0.80000013px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /><path + style="fill:#f90000;fill-opacity:1;stroke:#ff0000;stroke-width:0.80000013px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 521.92496,1178.2681 c -4.37633,9.6649 -4.47358,9.479 -4.47358,9.479 l 4.27908,-1.2082 4.57077,1.2082 z" + id="path4431" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccc" /><path + sodipodi:nodetypes="ccccc" + inkscape:connector-curvature="0" + id="path4433" + d="m 825.84815,1216.5264 c -4.37631,-9.6647 -4.47357,-9.4788 -4.47357,-9.4788 l 4.27909,1.2081 4.57077,-1.2081 z" + style="fill:#f90000;fill-opacity:1;stroke:#ff0000;stroke-width:0.80000013px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /><path + style="fill:#f90000;fill-opacity:1;stroke:#ff0000;stroke-width:0.80000013px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 658.3551,1217.9214 c -4.37631,-9.6651 -4.47357,-9.479 -4.47357,-9.479 l 4.27911,1.2079 4.57074,-1.2079 z" + id="path4435" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccc" /><path + sodipodi:nodetypes="ccccc" + inkscape:connector-curvature="0" + id="path4437" + d="m 521.92496,1217.2118 c -4.37633,-9.6651 -4.47358,-9.4788 -4.47358,-9.4788 l 4.27908,1.2078 4.57077,-1.2078 z" + style="fill:#f90000;fill-opacity:1;stroke:#ff0000;stroke-width:0.80000013px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /><path + style="fill:#0000ff;fill-opacity:1;stroke:#0000ff;stroke-width:0.80000013px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 718.57441,1401.8788 c -4.3763,-9.665 -4.47357,-9.479 -4.47357,-9.479 l 4.27909,1.208 4.57077,-1.208 z" + id="path4439" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccc" /><path + sodipodi:nodetypes="ccccc" + inkscape:connector-curvature="0" + id="path4441" + d="m 718.57441,1349.5732 c -4.3763,9.6649 -4.47357,9.4791 -4.47357,9.4791 l 4.27909,-1.2079 4.57077,1.2079 z" + style="fill:#0000ff;fill-opacity:1;stroke:#0000ff;stroke-width:0.80000013px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /><text + transform="scale(1.0338535,-0.96725508)" + sodipodi:linespacing="125%" + id="text4443" + y="-1572.6313" + x="355.07458" + style="font-size:25.50304031px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans Bold" + xml:space="preserve"><tspan + y="-1572.6313" + x="355.07458" + id="tspan4445" + sodipodi:role="line">SMP - Symmetric Multiprocessor System</tspan></text> +<text + transform="scale(1.0338535,-0.96725508)" + sodipodi:linespacing="125%" + id="text4447" + y="-1401.1943" + x="457.08701" + style="font-size:17.00202751px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans" + xml:space="preserve"><tspan + y="-1401.1943" + x="457.08701" + id="tspan4449" + sodipodi:role="line">System Bus</tspan></text> +<text + transform="scale(1.0338535,-0.96725508)" + sodipodi:linespacing="125%" + id="text4451" + y="-1289.2528" + x="476.4505" + style="font-size:17.00202751px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans" + xml:space="preserve"><tspan + y="-1289.2528" + x="476.4505" + id="tspan4453" + sodipodi:role="line">Cache</tspan></text> +<text + xml:space="preserve" + style="font-size:17.00202751px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans" + x="608.61133" + y="-1289.2528" + id="text4455" + sodipodi:linespacing="125%" + transform="scale(1.0338535,-0.96725508)"><tspan + sodipodi:role="line" + id="tspan4457" + x="608.61133" + y="-1289.2528">Cache</tspan></text> +<text + transform="scale(1.0338535,-0.96725508)" + sodipodi:linespacing="125%" + id="text4459" + y="-1289.7251" + x="772.30676" + style="font-size:17.00202751px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans" + xml:space="preserve"><tspan + y="-1289.7251" + x="772.30676" + id="tspan4461" + sodipodi:role="line">Cache</tspan></text> +<text + transform="scale(1.0338535,-0.96725508)" + sodipodi:linespacing="125%" + id="text4463" + y="-1182.5293" + x="503.3703" + style="font-size:17.00202751px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans" + xml:space="preserve"><tspan + y="-1182.5293" + x="503.3703" + id="tspan4465" + sodipodi:role="line">Processor</tspan><tspan + id="tspan4467" + y="-1161.2767" + x="503.3703" + sodipodi:role="line">1</tspan></text> +<text + xml:space="preserve" + style="font-size:17.00202751px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans" + x="635.05878" + y="-1182.5293" + id="text4469" + sodipodi:linespacing="125%" + transform="scale(1.0338535,-0.96725508)"><tspan + sodipodi:role="line" + id="tspan4471" + x="635.05878" + y="-1182.5293">Processor</tspan><tspan + sodipodi:role="line" + x="635.05878" + y="-1161.2767" + id="tspan4473">2</tspan></text> +<text + transform="scale(1.0338535,-0.96725508)" + sodipodi:linespacing="125%" + id="text4475" + y="-1182.5293" + x="799.22614" + style="font-size:17.00202751px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans" + xml:space="preserve"><tspan + y="-1182.5293" + x="799.22614" + id="tspan4477" + sodipodi:role="line">Processor</tspan><tspan + id="tspan4479" + y="-1161.2767" + x="799.22614" + sodipodi:role="line">n</tspan></text> +<text + transform="scale(1.0338535,-0.96725508)" + sodipodi:linespacing="125%" + id="text4481" + y="-1492.8164" + x="694.17078" + style="font-size:17.00202751px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans" + xml:space="preserve"><tspan + y="-1492.8164" + x="694.17078" + id="tspan4483" + sodipodi:role="line">Main</tspan><tspan + id="tspan4485" + y="-1471.5638" + x="694.17078" + sodipodi:role="line">Memory</tspan></text> +<path + sodipodi:end="6.274571" + sodipodi:start="0" + transform="matrix(1.1596337,0,0,-1.0849327,853.74868,1491.4046)" + d="m -104,271.33334 c 0,1.10457 -0.89543,2 -2,2 -1.10457,0 -2,-0.89543 -2,-2 0,-1.10457 0.89543,-2 2,-2 1.09785,0 1.99047,0.88497 1.99993,1.98278 L -106,271.33334 z" + sodipodi:ry="2" + sodipodi:rx="2" + sodipodi:cy="271.33334" + sodipodi:cx="-106" + id="path4487" + style="fill:#00000b;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.21396828;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + sodipodi:type="arc" /><path + sodipodi:type="arc" + style="fill:#00000b;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.21396828;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + id="path4509" + sodipodi:cx="-106" + sodipodi:cy="271.33334" + sodipodi:rx="2" + sodipodi:ry="2" + d="m -104,271.33334 c 0,1.10457 -0.89543,2 -2,2 -1.10457,0 -2,-0.89543 -2,-2 0,-1.10457 0.89543,-2 2,-2 1.09785,0 1.99047,0.88497 1.99993,1.98278 L -106,271.33334 z" + transform="matrix(1.1596337,0,0,-1.0849327,866.56669,1491.4046)" + sodipodi:start="0" + sodipodi:end="6.274571" /><path + sodipodi:end="6.274571" + sodipodi:start="0" + transform="matrix(1.1596337,0,0,-1.0849327,880.11509,1491.4046)" + d="m -104,271.33334 c 0,1.10457 -0.89543,2 -2,2 -1.10457,0 -2,-0.89543 -2,-2 0,-1.10457 0.89543,-2 2,-2 1.09785,0 1.99047,0.88497 1.99993,1.98278 L -106,271.33334 z" + sodipodi:ry="2" + sodipodi:rx="2" + sodipodi:cy="271.33334" + sodipodi:cx="-106" + id="path4511" + style="fill:#00000b;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.21396828;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + sodipodi:type="arc" /><path + sodipodi:type="arc" + style="fill:#00000b;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.21396828;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + id="path4523" + sodipodi:cx="-106" + sodipodi:cy="271.33334" + sodipodi:rx="2" + sodipodi:ry="2" + d="m -104,271.33334 c 0,1.10457 -0.89543,2 -2,2 -1.10457,0 -2,-0.89543 -2,-2 0,-1.10457 0.89543,-2 2,-2 1.09785,0 1.99047,0.88497 1.99993,1.98278 L -106,271.33334 z" + transform="matrix(1.1596337,0,0,-1.0849327,853.74868,1491.4046)" + sodipodi:start="0" + sodipodi:end="6.274571" /><path + sodipodi:end="6.274571" + sodipodi:start="0" + transform="matrix(1.1596337,0,0,-1.0849327,866.56669,1491.4046)" + d="m -104,271.33334 c 0,1.10457 -0.89543,2 -2,2 -1.10457,0 -2,-0.89543 -2,-2 0,-1.10457 0.89543,-2 2,-2 1.09785,0 1.99047,0.88497 1.99993,1.98278 L -106,271.33334 z" + sodipodi:ry="2" + sodipodi:rx="2" + sodipodi:cy="271.33334" + sodipodi:cx="-106" + id="path4525" + style="fill:#00000b;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.21396828;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + sodipodi:type="arc" /><path + sodipodi:type="arc" + style="fill:#00000b;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.21396828;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + id="path4527" + sodipodi:cx="-106" + sodipodi:cy="271.33334" + sodipodi:rx="2" + sodipodi:ry="2" + d="m -104,271.33334 c 0,1.10457 -0.89543,2 -2,2 -1.10457,0 -2,-0.89543 -2,-2 0,-1.10457 0.89543,-2 2,-2 1.09785,0 1.99047,0.88497 1.99993,1.98278 L -106,271.33334 z" + transform="matrix(1.1596337,0,0,-1.0849327,880.11509,1491.4046)" + sodipodi:start="0" + sodipodi:end="6.274571" /><text + transform="scale(1.0338535,-0.96725504)" + sodipodi:linespacing="125%" + id="text4557" + y="-1107.2344" + x="935.65778" + style="font-size:7.76896px;font-style:italic;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Times New Roman;-inkscape-font-specification:'Times New Roman, Bold Italic'" + xml:space="preserve"><tspan + y="-1107.2344" + x="935.65778" + id="tspan4559" + sodipodi:role="line">By Ferruccio Zulian - Milan.Italy</tspan></text> +<rect + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.24000001;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + id="rect3583" + width="14.281804" + height="13.361802" + x="419.48236" + y="-1324.2487" + transform="scale(1,-1)" /><rect + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.27795643;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + id="rect3585" + width="4.5189481" + height="62.666431" + x="577.20325" + y="1699.7162" + transform="matrix(0.74553647,-0.66646483,0,1,0,0)" + inkscape:transform-center-y="-4.5515247" + inkscape:transform-center-x="-1.0614411" /><rect + inkscape:transform-center-x="7.6442119" + inkscape:transform-center-y="1.0612094" + transform="matrix(0.74991829,-0.66153047,-1,0,0,0)" + y="-1918.9532" + x="-1986.3447" + height="105.52592" + width="4.7647319" + id="rect3587" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.29507753;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><rect + style="fill:#00ff00;fill-opacity:1;fill-rule:evenodd;stroke:#060000;stroke-width:0.24000001;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + id="rect3589" + width="106.44215" + height="63.497108" + x="323.88385" + y="-1377.696" + transform="scale(1,-1)" /><text + xml:space="preserve" + style="font-size:17.00202751px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans" + x="365.93723" + y="-1395.527" + id="text3591" + sodipodi:linespacing="125%" + transform="scale(1.0338535,-0.96725508)"><tspan + sodipodi:role="line" + id="tspan3593" + x="365.93723" + y="-1395.527">Bus</tspan><tspan + id="tspan3595" + sodipodi:role="line" + x="365.93723" + y="-1374.2744">Arbiter</tspan></text> +<rect + style="fill:#0000ff;fill-opacity:1;fill-rule:evenodd;stroke:#0000ff;stroke-width:0.24000007;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + id="rect3597" + width="3.9061351" + height="43.168903" + x="979.09229" + y="-1334.413" + transform="scale(1,-1)" /><rect + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.24000001;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + id="rect3599" + width="14.281804" + height="13.361802" + x="1024.1577" + y="-1231.0588" + transform="scale(1,-1)" /><rect + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.27795643;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + id="rect3601" + width="4.5189481" + height="62.666431" + x="1388.2655" + y="2147.0703" + transform="matrix(0.74553647,-0.66646483,0,1,0,0)" + inkscape:transform-center-y="-4.5518006" + inkscape:transform-center-x="-1.0615242" /><rect + inkscape:transform-center-x="7.6444516" + inkscape:transform-center-y="1.0611998" + transform="matrix(0.74991829,-0.66153047,-1,0,0,0)" + y="-2417.9919" + x="-1845.4745" + height="105.52592" + width="4.7647319" + id="rect3603" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.29507753;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /><rect + style="fill:#b3b3b3;fill-opacity:1;fill-rule:evenodd;stroke:#060000;stroke-width:0.24000001;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + id="rect3605" + width="106.44215" + height="63.497108" + x="928.55939" + y="-1284.5061" + transform="scale(1,-1)" /><path + sodipodi:nodetypes="ccccc" + inkscape:connector-curvature="0" + id="path3617" + d="m 980.85382,1341.2369 c -4.37635,-9.6651 -4.47362,-9.479 -4.47362,-9.479 l 4.27907,1.208 4.5708,-1.208 z" + style="fill:#0000ff;fill-opacity:1;stroke:#0000ff;stroke-width:0.80000013px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /><path + style="fill:#0000ff;fill-opacity:1;stroke:#0000ff;stroke-width:0.80000013px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 980.85382,1287.9034 c -4.37635,9.665 -4.47362,9.479 -4.47362,9.479 l 4.27907,-1.208 4.5708,1.208 z" + id="path3619" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccc" /><text + xml:space="preserve" + style="font-size:17.00202751px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#002b11;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans" + x="937.94635" + y="-1289.7251" + id="text3625" + sodipodi:linespacing="125%" + transform="scale(1.0338535,-0.96725508)"><tspan + sodipodi:role="line" + id="tspan3627" + x="937.94635" + y="-1289.7251">I/O</tspan></text> +</g> +</g></svg>
\ No newline at end of file diff --git a/open_issues/smp.mdwn b/open_issues/smp.mdwn index 89474d25..6496f388 100644 --- a/open_issues/smp.mdwn +++ b/open_issues/smp.mdwn @@ -12,36 +12,296 @@ License|/fdl]]."]]"""]] [[!tag open_issue_glibc open_issue_gnumach open_issue_hurd]] -See also the [[FAQ entry|faq/smp]]. +<!-- This paragraph is parapharisg the wikipedia page +https://en.wikipedia.org/wiki/Symmetric_multiprocessing#Advantages/Disadvantages +--> + +SMP stands for Symmetric multiprocessing, which is a computer that has numerous +identical processors connected to a single shared main memory. All processors +are controlled by one single operating system, and each processor can access all +devices. Operating systems with SMP can provide more performance, but it is not +trivial to do so. It is a little like having a packed board meeting. More +people in the room potentially means more can get done, but only one person can +speak at a time. Scheduling everyone to speak can be quite an involved task. + + + + NOTE: Many of the veteran Hurd developers consider this task too large for a Google summer of code project. + +<!-- +This svg is cc attribute +https://en.wikipedia.org/wiki/File:SMP_-_Symmetric_Multiprocessor_System.svg --> + +[[!img images/smp.svg size="700x"]] + +<!-- most of this page is taken from https://gitlab.com/snippets/1756024#solution --> + +# Current Status + + +The GNU Mach source code includes many special cases for multiprocessor, +controlled by #if NCPUS > 1 macro. + +But this support is very limited: + +- GNU Mach don't detect CPUs in runtime: The number of CPUs must be hardcoded in +compilation time. The number of cpus is set in `mach_ncpus` configuration +variable, set to 1 by default, in configfrag.ac file. This variable will +generate `NCPUS` macro, which is used by gnumach to control the special cases +for multiprocessor. If `NCPUS` > 1, then gnumach will enable multiprocessor +support, with the number of cpus set by the user in mach_ncpus +variable. Otherwise, SMP will be disabled. + +- The special cases to multicore in gnumach source code have never been tested, + so these can contain many errors. Furthermore, these special case are + incomplete: many functions, such as `cpu_number()` or `intel_startCPU()` aren't + written. + +- GNU Mach doesn't initialize the processor with the proper options for + multiprocessing. For this reason, the current support is only multithread and + not real multiprocessor support. + +- Many drivers included in Hurd aren't thread-safe, and these could crash in a + SMP environment. So, it's necessary to isolate this drivers, to avoid + concurrency problems. + + +### Solution + +To solve this, we need to implement some routines to detect the number of +processors, assign an identifier to each processor, and configure the lapic and +IPI support. These routines must be executed during Mach boot. + +> "Really, all the support you want to get from the hardware is just getting the +> number of processors, initializing them, and support for interprocessor +> interrupts (IPI) for signaling." - Samuel Thibault +> [link](https://lists.gnu.org/archive/html/bug-hurd/2018-08/msg00071.html) + +> "The process scheduler probably already has the support. What is missing is +the hardware driver for SMP: enumeration and initialization." - Samuel Thibault +[link](https://lists.gnu.org/archive/html/bug-hurd/2018-08/msg00083.html) + +The current necessary functions are `cpu_number()` (in kern/cpu_number.h) and +`intel_startCPU()`. Another non-critical function, is `cpu_control()` +[*Reference*](https://www.gnu.org/software/hurd/gnumach-doc/Processor-Control.html#Processor-Control) +Other interesting files are `pmap.c` and `sched_prim.c` We also +have to build an isolated environment to execute the non-thread-safe drivers. -# IRC, freenode, #hurd, 2012-09-30 +> "Yes, this is a real concern. For the Linux drivers, the long-term goal is to +> move them to userland anyway. For Mach drivers, quite often they are not +> performance-sensitive, so big locks would be enough." - Samuel Thibault +> [link](https://lists.gnu.org/archive/html/bug-hurd/2018-08/msg00073.html) - <braunr> i expect smp to be our next gsoc project +### Task list +1. Implement a routine to detect and identify the processors -## IRC, freenode, #hurd, 2013-01-02 + This routine must check the number of processors, initialize the lapic of BSP + (the master processor), and assign a kernel ID for each processor. This kernel + ID does not have to be equal to the APIC ID. The relation kernel/APIC can be + settled with an array, where the kernel ID is the index, and the APIC contains + the data. GNU Mach can derive the list of processors from memory, reading from + ACPI table, or from MP table. However, MP table is deprecated in most modern + CPUs, so it is preferable to use ACPI table for this. - <braunr> i'd like to mentor someone for adding smp to gnumach + The tasks to do for this are: + + - Detect the number of processors + + - Create a array indexed by kernel ID, which sets a relation with APIC ID. + + - Initialize the lapic of BSP + + - Initialize IOAPIC + This routine could be called from `i386at_init()` + (i386/i386at/model_dep.c). This function will call the functions which + initialize the lapic and the ioapic. + + **NOTE**: This routine must be executed before `intel_startCPU()` or other routines. + + - **How to find APIC table** + + To find APIC table, we can read + RSDT table [RSDT reference](http://www.uefi.org/sites/default/files/resources/ACPI%206_2_A_Sept29.pdf#G10.1358180). + To get the address of RSDT, we need to read RDSP table. We can get the + RSDP table by this [RDSP + reference](http://www.uefi.org/sites/default/files/resources/ACPI%206_2_A_Sept29.pdf#G10.1357698) + Once we have the RSDT table, we need to read *Entry* field, and search the pointer to + the APIC table in the array referenced in this field. + + We can find an example about reading ACPI table in X15 OS: + [Reference](https://github.com/richardbraun/x15/blob/0c0e2a02a42a8161e1b8dc1e1943fe5057ecb3a3/arch/x86/machine/acpi.c#L576) + + - We need to initialize the `machine_slot` of each processor (currently only initializes cpu0). + The `machine_slot` has this structure. [Reference](https://github.com/AlmuHS/GNUMach_SMP/blob/0d490ef21c156907f3f26a6cdc00842f462a877a/include/mach/machine.h#L68): + + > `struct machine_slot { /*boolean_t*/` <br/> + > `integer_t is_cpu;` <br/> + > `/* is there a cpu in this slot? */ ` <br/> + > `cpu_type_t cpu_type; /* type of cpu */` <br/> + > `cpu_subtype_t cpu_subtype; /* subtype of cpu */` <br/> + > `/*boolean_t*/ integer_t running; /* is cpu running */` <br/> + > `integer_t cpu_ticks[CPU_STATE_MAX]; integer_t` <br/> + > `clock_freq; /* clock interrupt frequency */ };` <br/> + + + We can find an example of initialization in this [link:](https://github.com/AlmuHS/GNUMach_SMP/blob/0d490ef21c156907f3f26a6cdc00842f462a877a/i386/i386at/model_dep.c#L612) + + This modification also involve the redefinition of `NCPUS`, which must be set + to the maximum **possible** number of processors. We can do this by modifying + `configfrag.ac`, with this: + + > `# Multiprocessor support is still broken.` <br/> + > `AH_TEMPLATE([MULTIPROCESSOR], [set things up for a uniprocessor])` <br/> + > `mach_ncpus=2` <br/> + > `AC_DEFINE_UNQUOTED([NCPUS], [$mach_ncpus], [number of CPUs])` </br> + > `[if [$mach_ncpus` > `-gt 1 ]; then]` <br/> + > `AC_DEFINE([MULTIPROCESSOR], [1], [set things up for a` > `multiprocessor])` + > `AC_DEFINE_UNQUOTED([NCPUS], [256], [number of CPUs]) ` <br/> + > `[fi]` <br/> + + - Interesting files and functions - `machine.c` + [Link](https://github.com/AlmuHS/GNUMach_SMP/blob/master/kern/machine.c) + - `c_boot_entry()` + [Link](https://github.com/AlmuHS/GNUMach_SMP/blob/0d490ef21c156907f3f26a6cdc00842f462a877a/i386/i386at/model_dep.c#L529) -## IRC, freenode, #hurd, 2013-03-14 + - Example, in X15 OS: + [Link](https://github.com/richardbraun/x15/blob/d6d90a3276a09da65690b019e985392bf77b53b0/arch/x86/machine/cpu.c#L1114) - <braunr> but i'm afraid we'll have to fight obscur smp-safety issues - <braunr> for one, drivers are much probably not smp safe and would require - a big kernel lock - <braunr> userspace (such as signal delivery in libc) might be affected too - <braunr> smp isn't that easy + 1.1. Implement a `cpu_number()` function. -## Richard, 2013-03-20 + This function must return the kernel ID of the processor which is executing the function. To + get this, we have to read the local apic memory space, which will show the + lapic of the current CPU. Reading the lapic, we can get its APIC ID. Once + we have the APIC ID of the current CPU, the function will search in the + Kernel/APIC array until it finds the same APIC ID. Then it will return the + index (Kernel ID) of this position. -This task actually looks too big for a GSoC project. +2. Implement a routine to initialize the processors -## IRC, freenode, #hurd, 2013-09-30 + This routine will initialize the lapic of each processor and other structures + needed to run the kernel. We can find an example of lapic initialization + here + [reference](https://github.com/mit-pdos/xv6-public/blob/b818915f793cd20c5d1e24f668534a9d690f3cc8/lapic.c#L55) + Also, we can get more information in Chapter 8.4 and 8.11 of Intel + Developer Guide, + Volume 3. [link](https://software.intel.com/sites/default/files/managed/a4/60/325384-sdm-vol-3abcd.pdf) + +3. Implement `intel_startCPU()` + + + This function will initialize the descriptor tables of the processor specified by the + parameter, and launch the startup IPI to this processor. This function will be + executed during the boot of the kernel (process 0). The task to do in this function + are: + + - Initialize the processor descriptor tables + - Launch Startup IPI to this processor + We have a current implementation of `intel_startCPU()` in this + [link](https://github.com/AlmuHS/GNUMach_SMP/blob/smp/i386/i386/mp_desc.c). + This implementation is based in XNU's `intel_startCPU()` + [function](https://github.com/nneonneo/osx-10.9-opensource/blob/f5a0b24e4d98574462c8f5e5dfcf0d37ef7e0764/xnu-2422.1.72/osfmk/i386/mp.c#L423) + + We can find explainations about how to raise an IPI in this pages: + [*Reference 1*](https://www.cs.usfca.edu/~cruse/cs630f08/lesson22.ppt), + [*Reference 2*](https://www.cheesecake.org/sac/smp.html), [*Reference + 3*](http://www.dis.uniroma1.it/pub/quaglia/AOSV-traps-interrupts.pdf) We can + get information about how to raise an IPI in Intel Developer Guide, Volume 3, + Chapter 10.6 + +4. Implement another routine to start the processors + + + This routine calls to `processor_start()` for each processor, which will start the + processor using this sequence of calls: [`processor_start(processor_t + processor)`](https://github.com/AlmuHS/GNUMach_SMP/blob/5d527f532dfba9f2da54555d5fbe585dd458579b/kern/processor.c#L447) + -> + [`cpu_start(processor->slot_num)`](https://github.com/AlmuHS/GNUMach_SMP/blob/5d527f532dfba9f2da54555d5fbe585dd458579b/i386/i386/mp_desc.c#L335) + -> + [`intel_startCPU(cpu)`](https://github.com/AlmuHS/GNUMach_SMP/blob/5d527f532dfba9f2da54555d5fbe585dd458579b/i386/i386/mp_desc.c#L180) + + These articles shows some annotations about how to do the AP Startup: + + - [Reference1](https://wiki.osdev.org/Symmetric_Multiprocessing#AP_startup), + - [Reference2](https://stackoverflow.com/a/16368043/7077301) (...) + + After implement IPI support, It's recommended reimplement `machine_idle()`, + `machine_relax ()`, `halt_cpu()` and `halt_all_cpus()` using IPI. + - [reference](https://github.com/AlmuHS/GNUMach_SMP/blob/0d490ef21c156907f3f26a6cdc00842f462a877a/i386/i386at/model_dep.c#L201) + - Also in `ast_check.c`, we have to implement both functions, using + IPI + [Reference](https://github.com/AlmuHS/GNUMach_SMP/blob/master/i386/i386/ast_check.c) + + + This functions must force the processors to check if there are any AST + signal, and we ought to keep in the mind the following irc chat: + + +> <AlmuHS> what is the use of AST in gnumach? <br/> +> <AlmuHS> this file what do? <br/> +> https://github.com/AlmuHS/GNUMach_SMP/blob/master/i386/i386/ast_check.c <br/> +> <youpi> I don't know <br/> +> <youpi> but look at what calls that <br/> +> <youpi> see e.g. the call in thread.c <br/> +> <AlmuHS> This <br/> +> function is called during the sequence of cpu_up(), in machine.c <br/> +> <AlmuHS> but only if NCPUS > 1 <br/> +> <youpi> it seems like it's to trigger an AST check on another <br/> +> processor <br/> +> <youpi> i.e. a processor tells another to run ast_check <br/> +> <youpi> (see the comment in thread.c) <br/> +> <AlmuHS> <br/> +> https://github.com/AlmuHS/GNUMach_SMP/blob/master/kern/machine.c <br/> +> <youpi> well, the initialization part is not necessarily what's +> important to <br/> +> think about at first <br/> +> <youpi> i.e. until you know what you'll have <br/> +> to do during execution, you don't know what you'll need to intialize at <br/> +> initialization <br/> +> <youpi> you might even not need to initialize anything <br/> +> <AlmuHS> then, this is the reason because all functions <br/> +> in ast_check.c are empty <br/> +> <youpi> cause_ast_check being empty is really probably a TODO <br/> +> <AlmuHS> but I'm not clear what I need to write in this functions <br/> +> <youpi> what the comment said: make another processor run ast_check() <br/> +> <youpi> which probably means raising an inter-processor interrupt <br/> +> <youpi> (aka IPI) <br/> +> <youpi> to get ast_check() called by the other processor <br/> +> <AlmuHS> then, this funcions must raise an IPI in the processor? <br/> +> <youpi> that's the idea <br/> +> <youpi> the IPI probably needs some setup <br/> + +We can use [XV6 source + code](https://pdos.csail.mit.edu/6.828/2018/xv6.html). as model to implements + the function and routines. Some interesting files are + [`lapic.c`](https://github.com/mit-pdos/xv6-public/blob/master/lapic.c), + [`proc.c`](https://github.com/mit-pdos/xv6-public/blob/master/proc.c) and + [`main.c`](https://github.com/mit-pdos/xv6-public/blob/master/main.c) + + +## References +- [Comments about the project bug-hurd +maillist](https://lists.gnu.org/archive/html/bug-hurd/2018-08/msg00048.html) +- [Initial thread in bug-hurd +maillist](https://lists.gnu.org/archive/html/bug-hurd/2018-06/msg00048.html) +- [SMP in GNU/Hurd FAQ](https://www.gnu.org/software/hurd/faq/smp.html) +- [GNU Mach git repository](http://git.savannah.gnu.org/cgit/hurd/gnumach.git) +- [GNU Mach reference manual](https://www.gnu.org/software/hurd/gnumach-doc/) +- [**MultiProcessor Specification**](https://pdos.csail.mit.edu/6.828/2011/readings/ia32/MPspec.pdf) +- [**ACPI Specification**](http://www.uefi.org/sites/default/files/resources/ACPI%206_2_A_Sept29.pdf) +- [Mach boot trace](https://www.gnu.org/software/hurd/microkernel/mach/gnumach/boot_trace.html) +- [SPL man page](https://man.openbsd.org/spl) +- [Book: The Mach System](http://codex.cs.yale.edu/avi/os-book/OS9/appendices-dir/b.pdf) +- [Book: Mach3 Mysteries](http://www.nv50.0fees.net/Doc/Mach3Mysteries.pdf) +- [X15 operating system](https://www.sceen.net/x15) +- [Symmetric Multiprocessing - OSDev Wiki](https://wiki.osdev.org/Symmetric_Multiprocessing) +- [**Intel® 64 and IA-32 Architectures Software Developer’s Manuals**](https://software.intel.com/sites/default/files/managed/39/c5/325462-sdm-vol-1-2abcd-3abcd.pdf) +- [**Intel Developer Guide, Volume 3: System Programming Guide**](https://software.intel.com/sites/default/files/managed/a4/60/325384-sdm-vol-3abcd.pdf) + + +See also the [[FAQ entry|faq/smp]]. - <braunr> also, while the problem with hurd is about I/O, it's actually a - lot more about caching, and even with more data cached in, the true - problem is contention, in which case having several processors would - actually slow things down even more |