diff options
Diffstat (limited to 'Samples/CrowIDE')
193 files changed, 14267 insertions, 0 deletions
diff --git a/Samples/CrowIDE/CrowIDE.csproj b/Samples/CrowIDE/CrowIDE.csproj new file mode 100644 index 00000000..6670a8ed --- /dev/null +++ b/Samples/CrowIDE/CrowIDE.csproj @@ -0,0 +1,47 @@ +<Project Sdk="Microsoft.NET.Sdk"> + <Import Project="$(SolutionDir)netfx.props" /> + <PropertyGroup> + <TargetFrameworks>net472</TargetFrameworks> + <TargetFramework>net472</TargetFramework> + <OutputType>Exe</OutputType> + <StartupObject>Crow.Coding.CrowIDE</StartupObject> + <OutputPath>$(SolutionDir)build\$(Configuration)\</OutputPath> + <IntermediateOutputPath>$(SolutionDir)build\obj\$(Configuration)</IntermediateOutputPath> + <EnableDefaultItems>false</EnableDefaultItems> + <EnableDefaultCompileItems>false</EnableDefaultCompileItems> + <ReleaseVersion>0.8.0</ReleaseVersion> + </PropertyGroup> + + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> + <DebugType>full</DebugType> + <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow> + <DefineConstants>TRACE;DEBUG</DefineConstants> + </PropertyGroup> + + <ItemGroup Condition="$(TargetFramework.StartsWith('net4'))"> + <Reference Include="System" /> + <PackageReference Include="CVKL" Version="0.1.5-beta" /> + <ProjectReference Include="..\..\Crow\Crow.csproj" /> + </ItemGroup> + + <ItemGroup> + <Compile Include="..\common\CrowWin.cs" /> + <Compile Include="src\**\*.cs" Exclude="src\ProjectTree\CSProjectFile.cs" /> + <EmbeddedResource Remove="icons\blank-file2.svg" /> + <EmbeddedResource Include="icons\*.*"> + <LogicalName>CrowIDE.icons.%(Filename)%(Extension)</LogicalName> + </EmbeddedResource> + <EmbeddedResource Include="ui\**\*.crow" /> + <EmbeddedResource Include="ui\**\*.itemp" /> + <EmbeddedResource Include="ui\**\*.template"> + <LogicalName>Crow.Coding.%(Filename).template</LogicalName> + </EmbeddedResource> + <EmbeddedResource Include="DefaultTemplateOverrides\*.*"> + <LogicalName>Crow.%(Filename).template</LogicalName> + </EmbeddedResource> + <EmbeddedResource Include="IDE.style" /> + </ItemGroup> + <ItemGroup Condition="$(TargetFramework.StartsWith('netstandard'))"> + <PackageReference Include="System.CodeDom" Version="4.5.0" /> + </ItemGroup> +</Project> diff --git a/Samples/CrowIDE/CrowIDE.userprefs b/Samples/CrowIDE/CrowIDE.userprefs new file mode 100644 index 00000000..0f4ab212 --- /dev/null +++ b/Samples/CrowIDE/CrowIDE.userprefs @@ -0,0 +1,19 @@ +<Properties StartupConfiguration="{B6D911CD-1D09-42FC-B300-9187190F2AE1}|Default"> + <MonoDevelop.Ide.Workbench /> + <MonoDevelop.Ide.Workspace ActiveConfiguration="Debug" /> + <MonoDevelop.Ide.DebuggingService.Breakpoints> + <BreakpointStore /> + </MonoDevelop.Ide.DebuggingService.Breakpoints> + <MonoDevelop.Ide.DebuggingService.PinnedWatches> + <Watch file="../src/GraphicObjects/Shape.cs" line="42" offsetX="508" offsetY="265" expression="c" liveUpdate="False" /> + <Watch file="../src/GraphicObjects/Shape.cs" line="48" offsetX="524" offsetY="319" expression="tmp" liveUpdate="False" /> + <Watch file="../src/GraphicObjects/Slider.cs" line="88" offsetX="534" offsetY="788" expression="value" liveUpdate="False" /> + <Watch file="src/SourceEditor/SourceEditor.cs" line="632" offsetX="703" offsetY="8806" expression="cl.Tokens [t]" liveUpdate="False" /> + <Watch file="src/SourceEditor/CSharpParser.cs" line="202" offsetX="590" offsetY="1493" expression="currentTok" liveUpdate="False" /> + <Watch file="src/SourceEditor/Parser.cs" line="258" offsetX="328" offsetY="3348" expression="tmp" liveUpdate="False" /> + <Watch file="src/SourceEditor/SourceEditor.cs" line="629" offsetX="835" offsetY="9513" expression="lineIndex" liveUpdate="False" /> + <Watch file="src/SourceEditor/BufferParser.cs" line="90" offsetX="544" offsetY="972" expression="SyntacticTreeMaxDepth" liveUpdate="False" /> + </MonoDevelop.Ide.DebuggingService.PinnedWatches> + <MultiItemStartupConfigurations /> + <MonoDevelop.Ide.ItemProperties.CrowIDE PreferredExecutionTarget="MonoDevelop.Default" /> +</Properties>
\ No newline at end of file diff --git a/Samples/CrowIDE/DefaultTemplateOverrides/ContextMenu.template b/Samples/CrowIDE/DefaultTemplateOverrides/ContextMenu.template new file mode 100644 index 00000000..38e6b7bf --- /dev/null +++ b/Samples/CrowIDE/DefaultTemplateOverrides/ContextMenu.template @@ -0,0 +1,42 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<MenuItem MinimumSize="20,20" Height="Fit" Width="160" Caption="Context Menu" Data="{ContextCommands}" Orientation="Vertical" + IsOpened ="true" Visible="{/IsOpened}" SelectionBackground="Transparent"> + <Template> + <Border Background="DimGrey" Foreground="Black" CornerRadius="2"> + <GenericStack Orientation="{./Orientation}" Name="ItemsContainer" Margin="2"/> + </Border> + </Template> + <ItemTemplate> + <MenuItem Command="{}" Width="150" PopWidth="120" SelectionBackground="Transparent" IsEnabled="{CanExecute}"> + <Template> + <Popper Font="{./Font}" Caption="{./Caption}" Background="{./Background}" PopDirection="{./PopDirection}" + Foreground = "{./Foreground}" CanPop="{./HasChildren}" MouseDown="./onMI_Click" + IsPopped="{²./IsOpened}" PopWidth="{./PopWidth}" PopHeight="{./PopHeight}"> + <Template> + <Border Name="border1" + CornerRadius="0" + MouseEnter="{Foreground=vgradient|0:White|0.2:Grey|0.9:Grey|1:Black}" + MouseLeave="{Foreground=Transparent}" + MouseDown="{Foreground=vgradient|0:Black|0.05:Grey|0.85:Grey|1:White}" + MouseUp="{Foreground=vgradient|0:White|0.2:Grey|0.9:Grey|1:Black}" + MinimumSize = "60,0" + Foreground="Transparent" + Background="{./Background}"> + <HorizontalStack Spacing="5"> + <Image Height="14" Width="14" Picture="{Icon}" /> + <Label Text="{./Caption}" + Foreground="{./Foreground}" + Margin="1" HorizontalAlignment="Left" + Font="{./Font}" /> + </HorizontalStack> + </Border> + </Template> + <Border Foreground="DimGrey" Width="{../PopWidth}" Height="{../PopHeight}" Background="DimGrey"> + <VerticalStack Name="ItemsContainer"/> + </Border> + </Popper> + </Template> + </MenuItem> + </ItemTemplate> +</MenuItem> + diff --git a/Samples/CrowIDE/DefaultTemplateOverrides/MenuItem.template b/Samples/CrowIDE/DefaultTemplateOverrides/MenuItem.template new file mode 100644 index 00000000..2ed8496a --- /dev/null +++ b/Samples/CrowIDE/DefaultTemplateOverrides/MenuItem.template @@ -0,0 +1,29 @@ +<?xml version="1.0"?> +<Popper Font="{./Font}" Caption="{./Caption}" Background="{./Background}" PopDirection="{./PopDirection}" + Foreground = "{./Foreground}" CanPop="{./HasChildren}" + IsPopped="{²./IsOpened}" PopWidth="{./PopWidth}" PopHeight="{./PopHeight}" IsEnabled="{./IsEnabled}"> + <Template> + <CheckBox IsChecked="{²./IsPopped}" Caption="{./Caption}" Background="{./Background}" Foreground="{./Foreground}"> + <Template> + <Border Name="border1" ForwardMouseEvents="true" + MouseEnter="{Foreground=vgradient|0:White|0.2:Grey|0.9:Grey|1:Black}" + MouseLeave="{Foreground=Transparent}" + MouseDown="{Foreground=vgradient|0:Black|0.05:Grey|0.85:Grey|1:White}" + MouseUp="{Foreground=vgradient|0:White|0.2:Grey|0.9:Grey|1:Black}" + MinimumSize = "40,0" + Foreground="Transparent" + Background="{./Background}"> + <HorizontalStack HorizontalAlignment="Left" Margin="1"> + <Image Width="10" Height="10" Picture="{../../../../../Icon}"/> + <Label Text="{./Caption}" + Foreground="{./Foreground}" + Font="{./Font}" /> + </HorizontalStack> + </Border> + </Template> + </CheckBox> + </Template> + <Border Foreground="DimGrey" Width="{../PopWidth}" Height="{../PopHeight}" Background="Jet"> + <VerticalStack Name="ItemsContainer"/> + </Border> +</Popper> diff --git a/Samples/CrowIDE/DefaultTemplateOverrides/TabItem.template b/Samples/CrowIDE/DefaultTemplateOverrides/TabItem.template new file mode 100644 index 00000000..c07119b8 --- /dev/null +++ b/Samples/CrowIDE/DefaultTemplateOverrides/TabItem.template @@ -0,0 +1,19 @@ +<?xml version="1.0"?> +<GenericStack Orientation="Vertical" Spacing="0" + MouseEnter="{caption.Foreground=White}" + MouseLeave="{caption.Foreground=Grey}"> + <HorizontalStack Margin="2" Left="{./TabOffset}" + Name="TabTitle" + HorizontalAlignment="Left" + Height="{./TabHeight}" + Width="{./TabWidth}"> + <Label Name="caption" Text="{./Caption}" Foreground="Grey" Width="Stretched"/> + <Border CornerRadius="5" BorderWidth="1" Foreground="Transparent" Height="12" Width="12" + MouseEnter="{Foreground=White}" MouseLeave="{Foreground=Transparent}"> + <Image Focusable="true" Name="Image" Margin="0" Width="Stretched" Height="Stretched" Path="#Crow.Icons.exit2.svg" + MouseClick="./butCloseTabClick"/> + </Border> + </HorizontalStack> + <Container Name="Content"/> +</GenericStack> + diff --git a/Samples/CrowIDE/IDE.style b/Samples/CrowIDE/IDE.style new file mode 100644 index 00000000..5b5054ab --- /dev/null +++ b/Samples/CrowIDE/IDE.style @@ -0,0 +1,64 @@ +Label { + Foreground="Black"; +} +icon { + Width="14"; + Height="14"; +} +MemberViewLabel { + Margin="1"; + Height="Fit"; + Width="50%"; + Background="White"; +} +MemberViewHStack { + Focusable="true"; + Height="Fit"; + Spacing="1"; + MouseEnter="{Background=SteelBlue}"; + MouseLeave="{Background=Transparent}"; +} + +IcoBut { + Template = "#Crow.Coding.IcoBut.template"; + MinimumSize = "10,10"; + Width = "8"; + Height = "14"; + Background = "Black"; +} + +WinSchema { + Template="#Crow.Coding.ui.DockWindows.WinSchemaItem.template"; + Focusable = "true"; + MinimumSize="150,50"; + Width = "Fit"; + Height = "Fit"; +} +TabItem { + AllowDrag="false"; + Background="Grey"; + SelectedBackground="0.9,0.9,0.91,1.0"; + Foreground="Black"; +} +TreeItemBorder { + CornerRadius="2"; + Margin="0"; + //Focusable="true"; + Height="Fit"; + Width="Stretched"; + Foreground="Transparent"; + MouseEnter="{Foreground=DimGrey}"; + MouseLeave="{Foreground=Transparent}"; +} +TreeIcon { + Margin="0"; + Width="14"; + Height="14"; +} +Splitter { + Thickness="1"; + Background="RoyalBlue"; +} +DockWindow { + Background="0.98,0.98,0.99,0.9"; +} diff --git a/Samples/CrowIDE/icons/basic_floppydisk.svg b/Samples/CrowIDE/icons/basic_floppydisk.svg new file mode 100644 index 00000000..55d901d4 --- /dev/null +++ b/Samples/CrowIDE/icons/basic_floppydisk.svg @@ -0,0 +1,15 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" + width="64px" height="64px" viewBox="0 0 64 64" enable-background="new 0 0 64 64" xml:space="preserve"> +<g> + <polygon fill="none" stroke="#000000" stroke-width="2" stroke-miterlimit="10" points="63,63 1,63 1,1 51,1 63,13 "/> +</g> +<rect x="7" y="31" fill="none" stroke="#000000" stroke-width="2" stroke-miterlimit="10" width="50" height="32"/> +<line fill="none" stroke="#000000" stroke-width="2" stroke-miterlimit="10" x1="14" y1="39" x2="50" y2="39"/> +<line fill="none" stroke="#000000" stroke-width="2" stroke-miterlimit="10" x1="14" y1="47" x2="50" y2="47"/> +<line fill="none" stroke="#000000" stroke-width="2" stroke-miterlimit="10" x1="14" y1="55" x2="50" y2="55"/> +<rect x="15" y="1" fill="none" stroke="#000000" stroke-width="2" stroke-miterlimit="10" width="34" height="19"/> +<rect x="38" y="5" fill="none" stroke="#000000" stroke-width="2" stroke-miterlimit="10" width="5" height="11"/> +</svg> diff --git a/Samples/CrowIDE/icons/binding.svg b/Samples/CrowIDE/icons/binding.svg new file mode 100644 index 00000000..04f669ec --- /dev/null +++ b/Samples/CrowIDE/icons/binding.svg @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"> +<path fill="#dddddd" d="M14.9 1.1c-1.4-1.4-3.7-1.4-5.1 0l-4.4 4.3c-1.4 1.5-1.4 3.7 0 5.2 0.1 0.1 0.3 0.2 0.4 0.3l1.5-1.5c-0.1-0.1-0.3-0.2-0.4-0.3-0.6-0.6-0.6-1.6 0-2.2l4.4-4.4c0.6-0.6 1.6-0.6 2.2 0s0.6 1.6 0 2.2l-1.3 1.3c0.4 0.8 0.5 1.7 0.4 2.5l2.3-2.3c1.5-1.4 1.5-3.7 0-5.1z"></path> +<path fill="#dddddd" d="M10.2 5.1l-1.5 1.5c0 0 0.3 0.2 0.4 0.3 0.6 0.6 0.6 1.6 0 2.2l-4.4 4.4c-0.6 0.6-1.6 0.6-2.2 0s-0.6-1.6 0-2.2l1.3-1.3c-0.4-0.8-0.1-1.3-0.4-2.5l-2.3 2.3c-1.4 1.4-1.4 3.7 0 5.1s3.7 1.4 5.1 0l4.4-4.4c1.4-1.4 1.4-3.7 0-5.1-0.2-0.1-0.4-0.3-0.4-0.3z"></path> +</svg> diff --git a/Samples/CrowIDE/icons/blank-file.svg b/Samples/CrowIDE/icons/blank-file.svg new file mode 100644 index 00000000..5880a3ab --- /dev/null +++ b/Samples/CrowIDE/icons/blank-file.svg @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"> +<path fill="#ffffff" d="M 10,0 H 2 V 16 H 14 V 4 Z"/> +<path fill="#444444" d="M10 0h-8v16h12v-12l-4-4zM9 5h4v10h-10v-14h6v4zM10 4v-3l3 3h-3z"/> +</svg> diff --git a/Samples/CrowIDE/icons/center-align.svg b/Samples/CrowIDE/icons/center-align.svg new file mode 100644 index 00000000..92e3fac8 --- /dev/null +++ b/Samples/CrowIDE/icons/center-align.svg @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"> +<path fill="#FFFFFF" d="M5 0h6v3h-6v-3z"></path> +<path fill="#FFFFFF" d="M1 4h14v3h-14v-3z"></path> +<path fill="#FFFFFF" d="M3 8h10v3h-10v-3z"></path> +<path fill="#FFFFFF" d="M0 12h16v3h-16v-3z"></path> +</svg> diff --git a/Samples/CrowIDE/icons/cogwheel.svg b/Samples/CrowIDE/icons/cogwheel.svg new file mode 100644 index 00000000..c104c470 --- /dev/null +++ b/Samples/CrowIDE/icons/cogwheel.svg @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"> +<path fill="#FFFFFF" d="M15.2 6l-1.1-0.2c-0.1-0.2-0.1-0.4-0.2-0.6l0.6-0.9 0.5-0.7-2.6-2.6-0.7 0.5-0.9 0.6c-0.2-0.1-0.4-0.1-0.6-0.2l-0.2-1.1-0.2-0.8h-3.6l-0.2 0.8-0.2 1.1c-0.2 0.1-0.4 0.1-0.6 0.2l-0.9-0.6-0.7-0.4-2.5 2.5 0.5 0.7 0.6 0.9c-0.2 0.2-0.2 0.4-0.3 0.6l-1.1 0.2-0.8 0.2v3.6l0.8 0.2 1.1 0.2c0.1 0.2 0.1 0.4 0.2 0.6l-0.6 0.9-0.5 0.7 2.6 2.6 0.7-0.5 0.9-0.6c0.2 0.1 0.4 0.1 0.6 0.2l0.2 1.1 0.2 0.8h3.6l0.2-0.8 0.2-1.1c0.2-0.1 0.4-0.1 0.6-0.2l0.9 0.6 0.7 0.5 2.6-2.6-0.5-0.7-0.6-0.9c0.1-0.2 0.2-0.4 0.2-0.6l1.1-0.2 0.8-0.2v-3.6l-0.8-0.2zM15 9l-1.7 0.3c-0.1 0.5-0.3 1-0.6 1.5l0.9 1.4-1.4 1.4-1.4-0.9c-0.5 0.3-1 0.5-1.5 0.6l-0.3 1.7h-2l-0.3-1.7c-0.5-0.1-1-0.3-1.5-0.6l-1.4 0.9-1.4-1.4 0.9-1.4c-0.3-0.5-0.5-1-0.6-1.5l-1.7-0.3v-2l1.7-0.3c0.1-0.5 0.3-1 0.6-1.5l-1-1.4 1.4-1.4 1.4 0.9c0.5-0.3 1-0.5 1.5-0.6l0.4-1.7h2l0.3 1.7c0.5 0.1 1 0.3 1.5 0.6l1.4-0.9 1.4 1.4-0.9 1.4c0.3 0.5 0.5 1 0.6 1.5l1.7 0.3v2z"></path> +<path fill="#FFFFFF" d="M8 4.5c-1.9 0-3.5 1.6-3.5 3.5s1.6 3.5 3.5 3.5 3.5-1.6 3.5-3.5c0-1.9-1.6-3.5-3.5-3.5zM8 10.5c-1.4 0-2.5-1.1-2.5-2.5s1.1-2.5 2.5-2.5 2.5 1.1 2.5 2.5c0 1.4-1.1 2.5-2.5 2.5z"></path> +</svg> diff --git a/Samples/CrowIDE/icons/compile.svg b/Samples/CrowIDE/icons/compile.svg new file mode 100644 index 00000000..c1a14e77 --- /dev/null +++ b/Samples/CrowIDE/icons/compile.svg @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"> +<path fill="#FFFFFF" d="M12 7v-2l-1.2-0.4c-0.1-0.3-0.2-0.7-0.4-1l0.6-1.2-1.5-1.3-1.1 0.5c-0.3-0.2-0.6-0.3-1-0.4l-0.4-1.2h-2l-0.4 1.2c-0.3 0.1-0.7 0.2-1 0.4l-1.1-0.5-1.4 1.4 0.6 1.2c-0.2 0.3-0.3 0.6-0.4 1l-1.3 0.3v2l1.2 0.4c0.1 0.3 0.2 0.7 0.4 1l-0.5 1.1 1.4 1.4 1.2-0.6c0.3 0.2 0.6 0.3 1 0.4l0.3 1.3h2l0.4-1.2c0.3-0.1 0.7-0.2 1-0.4l1.2 0.6 1.4-1.4-0.6-1.2c0.2-0.3 0.3-0.6 0.4-1l1.2-0.4zM3 6c0-1.7 1.3-3 3-3s3 1.3 3 3c0 1.7-1.3 3-3 3s-3-1.3-3-3z"></path> +<path fill="#FFFFFF" d="M7.5 6c0 0.828-0.672 1.5-1.5 1.5s-1.5-0.672-1.5-1.5c0-0.828 0.672-1.5 1.5-1.5s1.5 0.672 1.5 1.5z"></path> +<path fill="#FFFFFF" d="M16 3v-1h-0.6c0-0.2-0.1-0.4-0.2-0.5l0.4-0.4-0.7-0.7-0.4 0.4c-0.2-0.1-0.3-0.2-0.5-0.2v-0.6h-1v0.6c-0.2 0-0.4 0.1-0.5 0.2l-0.4-0.4-0.7 0.7 0.4 0.4c-0.1 0.2-0.2 0.3-0.2 0.5h-0.6v1h0.6c0 0.2 0.1 0.4 0.2 0.5l-0.4 0.4 0.7 0.7 0.4-0.4c0.2 0.1 0.3 0.2 0.5 0.2v0.6h1v-0.6c0.2 0 0.4-0.1 0.5-0.2l0.4 0.4 0.7-0.7-0.4-0.4c0.1-0.2 0.2-0.3 0.2-0.5h0.6zM13.5 3.5c-0.6 0-1-0.4-1-1s0.4-1 1-1 1 0.4 1 1c0 0.6-0.4 1-1 1z"></path> +<path fill="#FFFFFF" d="M15.4 11.8c-0.1-0.3-0.2-0.6-0.4-0.9l0.3-0.6-0.7-0.7-0.5 0.4c-0.3-0.2-0.6-0.3-0.9-0.4l-0.2-0.6h-1l-0.2 0.6c-0.3 0.1-0.6 0.2-0.9 0.4l-0.6-0.3-0.7 0.7 0.3 0.6c-0.2 0.3-0.3 0.6-0.4 0.9l-0.5 0.1v1l0.6 0.2c0.1 0.3 0.2 0.6 0.4 0.9l-0.3 0.6 0.7 0.7 0.6-0.3c0.3 0.2 0.6 0.3 0.9 0.4l0.1 0.5h1l0.2-0.6c0.3-0.1 0.6-0.2 0.9-0.4l0.6 0.3 0.7-0.7-0.4-0.5c0.2-0.3 0.3-0.6 0.4-0.9l0.6-0.2v-1l-0.6-0.2zM12.5 14c-0.8 0-1.5-0.7-1.5-1.5s0.7-1.5 1.5-1.5 1.5 0.7 1.5 1.5-0.7 1.5-1.5 1.5z"></path> +</svg> diff --git a/Samples/CrowIDE/icons/copy-file.svg b/Samples/CrowIDE/icons/copy-file.svg new file mode 100644 index 00000000..63c2dd37 --- /dev/null +++ b/Samples/CrowIDE/icons/copy-file.svg @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"> +<path fill="#FFFFFF" d="M13 3h-3l-3-3h-7v13h6v3h10v-10l-3-3zM7 1l2 2h-2v-2zM1 12v-11h5v3h3v8h-8zM15 15h-8v-2h3v-9h2v3h3v8zM13 6v-2l2 2h-2z"></path> +</svg> diff --git a/Samples/CrowIDE/icons/cs-file.svg b/Samples/CrowIDE/icons/cs-file.svg new file mode 100644 index 00000000..5ddb69a3 --- /dev/null +++ b/Samples/CrowIDE/icons/cs-file.svg @@ -0,0 +1,11 @@ +<?xml version="1.0"?> +<svg width="16" height="16" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg"> + + <g class="layer"> + <title>Layer 1</title> + <path d="m10,0l-8,0l0,16l12,0l0,-12l-4,-4z" fill="#ffffff" id="svg_1"/> + <path d="m10,0l-8,0l0,16l12,0l0,-12l-4,-4zm-1,5l4,0l0,10l-10,0l0,-14l6,0l0,4zm1,-1l0,-3l3,3l-3,0z" fill="#444444" id="svg_2"/> + <text fill="#007f00" font-family="Monospace" font-size="16" font-style="normal" font-weight="bold" id="svg_4" stroke="#000000" stroke-width="0" text-anchor="middle" transform="matrix(0.69828, 0, 0, 0.877654, 0.704781, 2.22646)" x="7.714503" xml:space="preserve" y="12.444685">c</text> + <text fill="#007f00" font-family="Monospace" font-size="7" font-style="normal" font-weight="bold" id="svg_5" stroke="#000000" stroke-width="0" text-anchor="middle" transform="matrix(0.999951, 0, 0, 0.975655, -2.14552, 0.0604767)" x="12.987902" xml:space="preserve" y="11.031572">#</text> + </g> +</svg>
\ No newline at end of file diff --git a/Samples/CrowIDE/icons/curly-brackets.svg b/Samples/CrowIDE/icons/curly-brackets.svg new file mode 100644 index 00000000..89ef798c --- /dev/null +++ b/Samples/CrowIDE/icons/curly-brackets.svg @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"> +<path fill="#dddddd" d="M2.1 3.1c0.2 1.3 0.4 1.6 0.4 2.9 0 0.8-1.5 1.5-1.5 1.5v1c0 0 1.5 0.7 1.5 1.5 0 1.3-0.2 1.6-0.4 2.9-0.3 2.1 0.8 3.1 1.8 3.1s2.1 0 2.1 0v-2c0 0-1.8 0.2-1.8-1 0-0.9 0.2-0.9 0.4-2.9 0.1-0.9-0.5-1.6-1.1-2.1 0.6-0.5 1.2-1.1 1.1-2-0.3-2-0.4-2-0.4-2.9 0-1.2 1.8-1.1 1.8-1.1v-2c0 0-1 0-2.1 0s-2.1 1-1.8 3.1z"></path> +<path fill="#dddddd" d="M13.9 3.1c-0.2 1.3-0.4 1.6-0.4 2.9 0 0.8 1.5 1.5 1.5 1.5v1c0 0-1.5 0.7-1.5 1.5 0 1.3 0.2 1.6 0.4 2.9 0.3 2.1-0.8 3.1-1.8 3.1s-2.1 0-2.1 0v-2c0 0 1.8 0.2 1.8-1 0-0.9-0.2-0.9-0.4-2.9-0.1-0.9 0.5-1.6 1.1-2.1-0.6-0.5-1.2-1.1-1.1-2 0.2-2 0.4-2 0.4-2.9 0-1.2-1.8-1.1-1.8-1.1v-2c0 0 1 0 2.1 0s2.1 1 1.8 3.1z"></path> +</svg> diff --git a/Samples/CrowIDE/icons/drawsvg.svg b/Samples/CrowIDE/icons/drawsvg.svg new file mode 100644 index 00000000..36ef290e --- /dev/null +++ b/Samples/CrowIDE/icons/drawsvg.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="1120px" height="670px" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 1120 670" preserveAspectRatio="xMidYMid meet" ><rect id="svgEditorBackground" x="0" y="0" width="1120" height="670" style="fill: none; stroke: none;"/><line id="e1_line" x1="432" y1="118" x2="291" y2="273" style="stroke:black;fill:none;stroke-width:1px;"/><line id="e2_line" x1="291" y1="270" x2="397" y2="402" style="stroke:black;fill:none;stroke-width:1px;"/><polyline style="stroke:black;fill:none;stroke-width:10px;stroke-linecap:round;stroke-linejoin:round;" id="e3_polyline" points="685,138 683,138 596,275 694,413"/></svg>
\ No newline at end of file diff --git a/Samples/CrowIDE/icons/edit.svg b/Samples/CrowIDE/icons/edit.svg new file mode 100644 index 00000000..73569d8d --- /dev/null +++ b/Samples/CrowIDE/icons/edit.svg @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"> +<path fill="#FFFFFF" d="M16 4c0 0 0-1-1-2s-1.9-1-1.9-1l-1.1 1.1v-2.1h-12v16h12v-8l4-4zM6.3 11.4l-0.6-0.6 0.3-1.1 1.5 1.5-1.2 0.2zM7.2 9.5l-0.6-0.6 5.2-5.2c0.2 0.1 0.4 0.3 0.6 0.5zM14.1 2.5l-0.9 1c-0.2-0.2-0.4-0.3-0.6-0.5l0.9-0.9c0.1 0.1 0.3 0.2 0.6 0.4zM11 15h-10v-14h10v2.1l-5.9 5.9-1.1 4.1 4.1-1.1 2.9-3v6z"></path> +</svg> diff --git a/Samples/CrowIDE/icons/eraser.svg b/Samples/CrowIDE/icons/eraser.svg new file mode 100644 index 00000000..5dd73bac --- /dev/null +++ b/Samples/CrowIDE/icons/eraser.svg @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"> +<path fill="#dddddd" d="M8.1 14l6.4-7.2c0.6-0.7 0.6-1.8-0.1-2.5l-2.7-2.7c-0.3-0.4-0.8-0.6-1.3-0.6h-1.8c-0.5 0-1 0.2-1.4 0.6l-6.7 7.6c-0.6 0.7-0.6 1.9 0.1 2.5l2.7 2.7c0.3 0.4 0.8 0.6 1.3 0.6h11.4v-1h-7.9zM6.8 13.9c0 0 0-0.1 0 0l-2.7-2.7c-0.4-0.4-0.4-0.9 0-1.3l3.4-3.9h-1l-3 3.3c-0.6 0.7-0.6 1.7 0.1 2.4l2.3 2.3h-1.3c-0.2 0-0.4-0.1-0.6-0.2l-2.8-2.8c-0.3-0.3-0.3-0.8 0-1.1l3.5-3.9h1.8l3.5-4h1l-3.5 4 3.1 3.7-3.5 4c-0.1 0.1-0.2 0.1-0.3 0.2z"></path> +</svg> diff --git a/Samples/CrowIDE/icons/expand-arrows-1.svg b/Samples/CrowIDE/icons/expand-arrows-1.svg new file mode 100644 index 00000000..5a77b1d1 --- /dev/null +++ b/Samples/CrowIDE/icons/expand-arrows-1.svg @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"> +<path fill="#dddddd" d="M5.3 6.7l1.4-1.4-3-3 1.3-1.3h-4v4l1.3-1.3z"></path> +<path fill="#dddddd" d="M6.7 10.7l-1.4-1.4-3 3-1.3-1.3v4h4l-1.3-1.3z"></path> +<path fill="#dddddd" d="M10.7 9.3l-1.4 1.4 3 3-1.3 1.3h4v-4l-1.3 1.3z"></path> +<path fill="#dddddd" d="M11 1l1.3 1.3-3 3 1.4 1.4 3-3 1.3 1.3v-4z"></path> +</svg> diff --git a/Samples/CrowIDE/icons/file-code.svg b/Samples/CrowIDE/icons/file-code.svg new file mode 100644 index 00000000..2dc00db0 --- /dev/null +++ b/Samples/CrowIDE/icons/file-code.svg @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"> +<path fill="#FFFFFF" d="M10 0h-8v16h12v-12l-4-4zM9 5h4v10h-10v-14h6v4zM10 4v-3l3 3h-3z"></path> +<path fill="#FFFFFF" d="M6.2 13h-0.7l-2-2.5 2-2.5h0.7l-2 2.5z"></path> +<path fill="#FFFFFF" d="M9.8 13h0.7l2-2.5-2-2.5h-0.7l2 2.5z"></path> +<path fill="#FFFFFF" d="M6.7 14h0.6l2.1-7h-0.8z"></path> +</svg> diff --git a/Samples/CrowIDE/icons/file.svg b/Samples/CrowIDE/icons/file.svg new file mode 100644 index 00000000..9d06b00b --- /dev/null +++ b/Samples/CrowIDE/icons/file.svg @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"> +<path fill="#dddddd" d="M9 5h5v11h-12v-16h7v5zM10 4v-4l4 4h-4z"></path> +</svg> diff --git a/Samples/CrowIDE/icons/font-file.svg b/Samples/CrowIDE/icons/font-file.svg new file mode 100644 index 00000000..20beac14 --- /dev/null +++ b/Samples/CrowIDE/icons/font-file.svg @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"> +<path fill="#FFFFFF" d="M10 0h-8v16h12v-12l-4-4zM9 5h4v10h-10v-14h6v4zM10 4v-3l3 3h-3z"></path> +<path fill="#FFFFFF" d="M5 7v2h2v5h2v-5h2v-2z"></path> +</svg> diff --git a/Samples/CrowIDE/icons/light-bulb.svg b/Samples/CrowIDE/icons/light-bulb.svg new file mode 100644 index 00000000..4193a750 --- /dev/null +++ b/Samples/CrowIDE/icons/light-bulb.svg @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"> +<path fill="#FFFFFF" d="M11.7 1.9c-1-1.2-2.6-1.9-4.2-1.9s-3.2 0.7-4.2 1.9c-1 1.1-1.4 2.6-1.2 4 0.2 1.5 0.8 2.6 2.1 3.7 0.5 0.4 0.7 0.8 0.9 1.2 0 0.1 0.1 0.2 0.1 0.3-0.1 0.1-0.2 0.2-0.2 0.4 0 0.3 0.2 0.5 0.5 0.5-0.3 0-0.5 0.2-0.5 0.5s0.2 0.5 0.5 0.5c-0.3 0-0.5 0.2-0.5 0.5s0.2 0.5 0.5 0.5c-0.3 0-0.5 0.2-0.5 0.5s0.2 0.5 0.5 0.5h0.5c0 0.5 0.7 1 1.5 1s1.5-0.5 1.5-1h0.5c0.3 0 0.5-0.2 0.5-0.5s-0.2-0.5-0.5-0.5c0.3 0 0.5-0.2 0.5-0.5s-0.2-0.5-0.5-0.5c0.3 0 0.5-0.2 0.5-0.5s-0.2-0.5-0.5-0.5c0.3 0 0.5-0.2 0.5-0.5 0-0.2-0.1-0.3-0.2-0.4 0-0.1 0.1-0.1 0.1-0.2 0.2-0.4 0.4-0.8 0.9-1.2 1.3-1.1 1.9-2.2 2.1-3.8 0.2-1.4-0.2-2.8-1.2-4zM12 5.8c-0.2 1.3-0.7 2.2-1.8 3.2-0.6 0.5-0.9 1-1.2 1.4-0.2 0.5-0.3 0.6-0.5 0.6h-2c-0.2 0-0.3-0.1-0.5-0.6-0.2-0.4-0.5-1-1.1-1.6-1.3-1.1-1.6-2-1.8-3-0.2-1.1 0.2-2.3 0.9-3.2 0.9-1 2.2-1.6 3.5-1.6s2.6 0.6 3.5 1.6c0.7 0.9 1.1 2.1 1 3.2z"></path> +<path fill="#FFFFFF" d="M11 5h-1c0-0.7-0.8-2-2-2v-1c1.8 0 3 1.8 3 3z"></path> +</svg> diff --git a/Samples/CrowIDE/icons/magic-wand.svg b/Samples/CrowIDE/icons/magic-wand.svg new file mode 100644 index 00000000..8b406918 --- /dev/null +++ b/Samples/CrowIDE/icons/magic-wand.svg @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"> +<path fill="#dddddd" d="M0 5h3v1h-3v-1z"></path> +<path fill="#dddddd" d="M5 0h1v3h-1v-3z"></path> +<path fill="#dddddd" d="M6 11h-1v-2.5l1 1z"></path> +<path fill="#dddddd" d="M11 6h-1.5l-1-1h2.5z"></path> +<path fill="#dddddd" d="M3.131 7.161l0.707 0.707-2.97 2.97-0.707-0.707 2.97-2.97z"></path> +<path fill="#dddddd" d="M10.131 0.161l0.707 0.707-2.97 2.97-0.707-0.707 2.97-2.97z"></path> +<path fill="#dddddd" d="M0.836 0.199l3.465 3.465-0.707 0.707-3.465-3.465 0.707-0.707z"></path> +<path fill="#dddddd" d="M6.1 4.1l-2.1 2 9.8 9.9 2.2-2.1-9.9-9.8zM6.1 5.5l2.4 2.5-0.6 0.6-2.5-2.5 0.7-0.6z"></path> +</svg> diff --git a/Samples/CrowIDE/icons/magnet.svg b/Samples/CrowIDE/icons/magnet.svg new file mode 100644 index 00000000..10335f69 --- /dev/null +++ b/Samples/CrowIDE/icons/magnet.svg @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"> +<path fill="#dddddd" d="M11 0h5v4h-5v-4z"></path> +<path fill="#dddddd" d="M11 5v3c0 1.6-1.4 3-3 3s-3-1.4-3-3v-3h-5v3c0 4.4 3.6 8 8 8s8-3.6 8-8v-3h-5z"></path> +<path fill="#dddddd" d="M0 0h5v4h-5v-4z"></path> +</svg> diff --git a/Samples/CrowIDE/icons/move-arrows.svg b/Samples/CrowIDE/icons/move-arrows.svg new file mode 100644 index 00000000..ecbb2f91 --- /dev/null +++ b/Samples/CrowIDE/icons/move-arrows.svg @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"> +<path fill="#dddddd" d="M16 8l-3-3v2h-4v-4h2l-3-3-3 3h2v4h-4v-2l-3 3 3 3v-2h4v4h-2l3 3 3-3h-2v-4h4v2z"></path> +</svg> diff --git a/Samples/CrowIDE/icons/open-folder-1.svg b/Samples/CrowIDE/icons/open-folder-1.svg new file mode 100644 index 00000000..90294692 --- /dev/null +++ b/Samples/CrowIDE/icons/open-folder-1.svg @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"> +<path fill="#dddddd" d="M14 6v-2h-7l-1-2h-4l-1 2h-1v11h14l2-9h-2zM14.9 7l-1.6 7-11.9-0.1 2.3-6.9h11.2zM1 5h0.6l1-2h2.6l1.2 2h6.6v1h-10l-2 5.9v-6.9z"></path> +</svg> diff --git a/Samples/CrowIDE/icons/open.svg b/Samples/CrowIDE/icons/open.svg new file mode 100644 index 00000000..bd8d7d9b --- /dev/null +++ b/Samples/CrowIDE/icons/open.svg @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"> +<path fill="#FFFFFF" d="M6 5v6h4v-6h2l-4-5-4 5z"></path> +<path fill="#FFFFFF" d="M13 2h-2l0.9 1h0.4l2.6 8h-3.9v2h-6v-2h-3.9l2.6-8h0.4l0.9-1h-2l-3 9v5h16v-5z"></path> +</svg> diff --git a/Samples/CrowIDE/icons/paint-brush.svg b/Samples/CrowIDE/icons/paint-brush.svg new file mode 100644 index 00000000..2bdd5bed --- /dev/null +++ b/Samples/CrowIDE/icons/paint-brush.svg @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"> +<path fill="#dddddd" d="M5.6 11.6l-1.2-1.2c-0.8-0.2-2-0.1-2.7 1-0.8 1.1-0.3 2.8-1.7 4.6 0 0 3.5 0 4.8-1.3 1.2-1.2 1.2-2.2 1-3l-0.2-0.1z"></path> +<path fill="#dddddd" d="M5.8 8.1c-0.2 0.3-0.5 0.7-0.7 1 0 0.2-0.1 0.3-0.2 0.4l1.5 1.5c0.1-0.1 0.3-0.2 0.4-0.3 0.3-0.2 0.7-0.4 1-0.7 0.4 0 0.6-0.2 0.8-0.4l-2.2-2.2c-0.2 0.2-0.4 0.4-0.6 0.7z"></path> +<path fill="#dddddd" d="M15.8 0.2c-0.3-0.3-0.7-0.3-1-0.1 0 0-3 2.5-5.9 5.1-0.4 0.4-0.7 0.7-1.1 1-0.2 0.2-0.4 0.4-0.6 0.5l2.1 2.1c0.2-0.2 0.4-0.4 0.5-0.7 0.3-0.4 0.6-0.7 0.9-1.1 2.5-3 5.1-5.9 5.1-5.9 0.3-0.2 0.3-0.6 0-0.9z"></path> +</svg> diff --git a/Samples/CrowIDE/icons/palette.svg b/Samples/CrowIDE/icons/palette.svg new file mode 100644 index 00000000..8e425f70 --- /dev/null +++ b/Samples/CrowIDE/icons/palette.svg @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"> +<path fill="#dddddd" d="M16 7.1c0-2.7-1.3-7.1-7.3-7.1s-8.5 7.4-7.5 9.9c0.8 1.9 2.5 0.1 3.1 1 1.8 2.5-2 3.8 0.1 4.7 2.5 1.1 11.6 0.4 11.6-8.5zM4.5 9c-0.9 0-1.5-0.7-1.5-1.5s0.6-1.5 1.5-1.5 1.5 0.7 1.5 1.5-0.7 1.5-1.5 1.5zM6 3.5c0-0.8 0.6-1.5 1.5-1.5s1.5 0.7 1.5 1.5-0.7 1.5-1.5 1.5-1.5-0.7-1.5-1.5zM8.5 14c-0.9 0-1.5-0.7-1.5-1.5s0.6-1.5 1.5-1.5 1.5 0.7 1.5 1.5-0.7 1.5-1.5 1.5zM11 4.5c0-0.8 0.6-1.5 1.5-1.5s1.5 0.7 1.5 1.5-0.7 1.5-1.5 1.5-1.5-0.7-1.5-1.5zM12.5 11c-0.8 0-1.5-0.7-1.5-1.5s0.6-1.5 1.5-1.5 1.5 0.7 1.5 1.5-0.7 1.5-1.5 1.5z"></path> +</svg> diff --git a/Samples/CrowIDE/icons/paragraph.svg b/Samples/CrowIDE/icons/paragraph.svg new file mode 100644 index 00000000..826aa63f --- /dev/null +++ b/Samples/CrowIDE/icons/paragraph.svg @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"> +<path fill="#FFFFFF" d="M5.5 0c-2.5 0-4.5 2-4.5 4.5s2 4.5 4.5 4.5h2.5v7h2v-14h1v14h2v-14h2v-2h-9.5z"></path> +</svg> diff --git a/Samples/CrowIDE/icons/paste-on-document.svg b/Samples/CrowIDE/icons/paste-on-document.svg new file mode 100644 index 00000000..b0a705ee --- /dev/null +++ b/Samples/CrowIDE/icons/paste-on-document.svg @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"> +<path fill="#FFFFFF" d="M13 4h-3v-4h-10v14h6v2h10v-9l-3-3zM3 1h4v1h-4v-1zM15 15h-8v-10h5v3h3v7zM13 7v-2l2 2h-2z"></path> +</svg> diff --git a/Samples/CrowIDE/icons/pin.svg b/Samples/CrowIDE/icons/pin.svg new file mode 100644 index 00000000..b36340b8 --- /dev/null +++ b/Samples/CrowIDE/icons/pin.svg @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"> +<path fill="#dddddd" d="M11 6.5v-5.5h1v-1h-8v1h1v5.5c0 0-2 1.5-2 3.5 0 0.5 1.9 0.7 4 0.7v2.2c0 0.7 0.2 1.4 0.5 2.1l0.5 1 0.5-1c0.3-0.6 0.5-1.3 0.5-2.1v-2.2c2.1 0 4-0.3 4-0.7 0-2-2-3.5-2-3.5zM7 6.6c0 0-0.5 0.3-1.6 1.4-1 1-1.5 1.9-1.5 1.9s0.1-1 0.8-1.9c0.9-1.1 1.3-1.4 1.3-1.4v-5.6h1v5.6z"></path> +</svg> diff --git a/Samples/CrowIDE/icons/previous.svg b/Samples/CrowIDE/icons/previous.svg new file mode 100644 index 00000000..566c8a3e --- /dev/null +++ b/Samples/CrowIDE/icons/previous.svg @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"> +<path fill="#FFFFFF" d="M0 7.9l6-4.9v3c0 0 1.1 0 2 0 8 0 8 8 8 8s-1-4-7.8-4c-1.1 0-1.8 0-2.2 0v2.9l-6-5z"></path> +</svg> diff --git a/Samples/CrowIDE/icons/question.svg b/Samples/CrowIDE/icons/question.svg new file mode 100644 index 00000000..fb8e3d3f --- /dev/null +++ b/Samples/CrowIDE/icons/question.svg @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"> +<path fill="#FFFFFF" d="M9 11h-3c0-3 1.6-4 2.7-4.6 0.4-0.2 0.7-0.4 0.9-0.6 0.5-0.5 0.3-1.2 0.2-1.4-0.3-0.7-1-1.4-2.3-1.4-2.1 0-2.5 1.9-2.5 2.3l-3-0.4c0.2-1.7 1.7-4.9 5.5-4.9 2.3 0 4.3 1.3 5.1 3.2 0.7 1.7 0.4 3.5-0.8 4.7-0.5 0.5-1.1 0.8-1.6 1.1-0.9 0.5-1.2 1-1.2 2z"></path> +<path fill="#FFFFFF" d="M9.5 14c0 1.105-0.895 2-2 2s-2-0.895-2-2c0-1.105 0.895-2 2-2s2 0.895 2 2z"></path> +</svg> diff --git a/Samples/CrowIDE/icons/redo.svg b/Samples/CrowIDE/icons/redo.svg new file mode 100644 index 00000000..59fcc904 --- /dev/null +++ b/Samples/CrowIDE/icons/redo.svg @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"> +<path fill="#dddddd" d="M16 7.9l-6-4.9v3c-0.5 0-1.1 0-2 0-8 0-8 8-8 8s1-4 7.8-4c1.1 0 1.8 0 2.2 0v2.9l6-5z"></path> +</svg> diff --git a/Samples/CrowIDE/icons/reply.svg b/Samples/CrowIDE/icons/reply.svg new file mode 100644 index 00000000..d008cb34 --- /dev/null +++ b/Samples/CrowIDE/icons/reply.svg @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"> +<path fill="#FFFFFF" d="M16 8c0-5-4.9-5-4.9-5h-5.1v-3l-6 6 6 6v-3h5.2c3.5 0 1.8 7 1.8 7s3-4.1 3-8z"></path> +</svg> diff --git a/Samples/CrowIDE/icons/save.svg b/Samples/CrowIDE/icons/save.svg new file mode 100644 index 00000000..6aa6714e --- /dev/null +++ b/Samples/CrowIDE/icons/save.svg @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"> +<path fill="#FFFFFF" d="M10 6v-6h-4v6h-2l4 5 4-5z"></path> +<path fill="#FFFFFF" d="M13 1h-2v1h1.3l2.6 8h-3.9v2h-6v-2h-3.9l2.6-8h1.3v-1h-2l-3 9v5h16v-5z"></path> +</svg> diff --git a/Samples/CrowIDE/icons/scissors.svg b/Samples/CrowIDE/icons/scissors.svg new file mode 100644 index 00000000..4b5a2255 --- /dev/null +++ b/Samples/CrowIDE/icons/scissors.svg @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"> +<path fill="#FFFFFF" d="M16 3.1c0 0-2.1-1.1-3.5-1-0.3 0-0.5 0.1-0.7 0.2l-4.3 3.4-1.8-1.5c0.1-0.3 0.2-0.6 0.3-1 0.1-1.8-1.4-3.4-3.3-3.2-1.2 0.1-2.3 1-2.6 2.2-0.3 1.3 0.2 2.5 1.2 3.2l3.3 2.6-3.3 2.6c-1 0.7-1.5 1.9-1.2 3.2 0.3 1.2 1.4 2 2.6 2.2 1.9 0.2 3.4-1.4 3.2-3.2 0-0.3-0.1-0.7-0.3-1l1.8-1.5 4.3 3.4c0.2 0.1 0.4 0.2 0.7 0.2 1.4 0.1 3.5-1 3.5-1l-5.7-4.9 5.8-4.9zM2.8 4.6c-0.9-0.1-1.6-0.9-1.5-1.8s0.9-1.6 1.8-1.5c0.9 0.1 1.6 0.9 1.5 1.8 0 0.9-0.9 1.6-1.8 1.5zM3.1 14.7c-0.9 0.1-1.7-0.6-1.8-1.5s0.6-1.7 1.5-1.8c0.9-0.1 1.7 0.6 1.8 1.5s-0.6 1.7-1.5 1.8zM12.4 3.2c0 0 0.1 0 0.2 0 0.4 0 0.9 0.1 1.4 0.2l-6.8 5.7-0.9-1.1 6.1-4.8zM14 12.6c-0.5 0.2-1 0.3-1.4 0.2-0.1 0-0.2 0-0.2 0l-4-3.2 1-0.9 4.6 3.9z"></path> +</svg> diff --git a/Samples/CrowIDE/icons/search.svg b/Samples/CrowIDE/icons/search.svg new file mode 100644 index 00000000..4a931b35 --- /dev/null +++ b/Samples/CrowIDE/icons/search.svg @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"> +<path fill="#FFFFFF" d="M15.7 14.3l-4.2-4.2c-0.2-0.2-0.5-0.3-0.8-0.3 0.8-1 1.3-2.4 1.3-3.8 0-3.3-2.7-6-6-6s-6 2.7-6 6 2.7 6 6 6c1.4 0 2.8-0.5 3.8-1.4 0 0.3 0 0.6 0.3 0.8l4.2 4.2c0.2 0.2 0.5 0.3 0.7 0.3s0.5-0.1 0.7-0.3c0.4-0.3 0.4-0.9 0-1.3zM6 10.5c-2.5 0-4.5-2-4.5-4.5s2-4.5 4.5-4.5 4.5 2 4.5 4.5-2 4.5-4.5 4.5z"></path> +</svg> diff --git a/Samples/CrowIDE/icons/share-arrow.svg b/Samples/CrowIDE/icons/share-arrow.svg new file mode 100644 index 00000000..e0eb2462 --- /dev/null +++ b/Samples/CrowIDE/icons/share-arrow.svg @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"> +<path fill="#FFFFFF" d="M10 3h-5.1c0 0-4.9 0-4.9 5 0 3.9 3 8 3 8s-1.7-7 1.8-7h5.2v3l6-6-6-6v3z"></path> +</svg> diff --git a/Samples/CrowIDE/icons/sign-out.svg b/Samples/CrowIDE/icons/sign-out.svg new file mode 100644 index 00000000..c5951fc0 --- /dev/null +++ b/Samples/CrowIDE/icons/sign-out.svg @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"> +<path fill="#FFFFFF" d="M9 4v-3h-9v14h9v-3h-1v2h-7v-12h7v2z"></path> +<path fill="#FFFFFF" d="M16 8l-5-4v2h-5v4h5v2z"></path> +</svg> diff --git a/Samples/CrowIDE/icons/text-file.svg b/Samples/CrowIDE/icons/text-file.svg new file mode 100644 index 00000000..eafca90c --- /dev/null +++ b/Samples/CrowIDE/icons/text-file.svg @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"> +<path fill="#FFFFFF" d="M10 0h-8v16h12v-12l-4-4zM9 5h4v10h-10v-14h6v4zM10 4v-3l3 3h-3z"></path> +<path fill="#FFFFFF" d="M4 7h8v1h-8v-1z"></path> +<path fill="#FFFFFF" d="M4 9h8v1h-8v-1z"></path> +<path fill="#FFFFFF" d="M4 11h8v1h-8v-1z"></path> +</svg> diff --git a/Samples/CrowIDE/icons/text-label.svg b/Samples/CrowIDE/icons/text-label.svg new file mode 100644 index 00000000..8fa91967 --- /dev/null +++ b/Samples/CrowIDE/icons/text-label.svg @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"> +<path fill="#FFFFFF" d="M12.5 4.9c-1.4 0-2.5 0.8-2.6 0.9l1.2 1.6c0 0 0.7-0.5 1.4-0.5 1.4 0 1.5 1.2 1.5 1.6-0.4-0.1-1.1-0.3-2-0.1-1.4 0.3-2.8 2-2.1 3.9 0.7 1.8 3.1 2.1 4.1 0.6v1h2v-5.3c0-2.7-1.9-3.7-3.5-3.7zM11.5 11.4c-0.1-1.9 1.5-1.9 2.5-1.8v1c0 1.2-2.3 2.3-2.5 0.8z"></path> +<path fill="#FFFFFF" d="M6.9 14h2.1l-3.2-12h-2.7l-3.1 12h2.1l1-4h2.7l1.1 4zM3.6 8l0.8-3.2 0.9 3.2h-1.7z"></path> +</svg> diff --git a/Samples/CrowIDE/icons/toolbox/Crow.Border.svg b/Samples/CrowIDE/icons/toolbox/Crow.Border.svg new file mode 100644 index 00000000..09eb7ac7 --- /dev/null +++ b/Samples/CrowIDE/icons/toolbox/Crow.Border.svg @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"> +<path fill="#dddddd" d="M14 2v-2h-14v14h2v2h14v-14h-2zM13 13h-12v-12h12v12z"></path> +</svg> diff --git a/Samples/CrowIDE/icons/toolbox/Crow.Button.svg b/Samples/CrowIDE/icons/toolbox/Crow.Button.svg new file mode 100644 index 00000000..01f5c6c3 --- /dev/null +++ b/Samples/CrowIDE/icons/toolbox/Crow.Button.svg @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"> +<path fill="#dddddd" d="M15.7 5.3l-1-1c-0.2-0.2-0.4-0.3-0.7-0.3h-13c-0.6 0-1 0.4-1 1v5c0 0.3 0.1 0.6 0.3 0.7l1 1c0.2 0.2 0.4 0.3 0.7 0.3h13c0.6 0 1-0.4 1-1v-5c0-0.3-0.1-0.5-0.3-0.7zM14 10h-13v-5h13v5z"></path> +</svg> diff --git a/Samples/CrowIDE/icons/toolbox/Crow.CheckBox.svg b/Samples/CrowIDE/icons/toolbox/Crow.CheckBox.svg new file mode 100644 index 00000000..2f0b0834 --- /dev/null +++ b/Samples/CrowIDE/icons/toolbox/Crow.CheckBox.svg @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"> +<path fill="#dddddd" d="M13 0.9l-1 1.1h-12v14h14v-10.5l1.7-2-2.7-2.6zM6.5 11.7l-4.2-4.2 1.4-1.4 2.7 2.7 6.6-6.6 1.4 1.4-7.9 8.1z"></path> +</svg> diff --git a/Samples/CrowIDE/icons/toolbox/Crow.ColorPicker.svg b/Samples/CrowIDE/icons/toolbox/Crow.ColorPicker.svg new file mode 100644 index 00000000..517a26a9 --- /dev/null +++ b/Samples/CrowIDE/icons/toolbox/Crow.ColorPicker.svg @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"> +<path fill="#dddddd" d="M15 1c-1.8-1.8-3.7-0.7-4.6 0.1-0.4 0.4-0.7 0.9-0.7 1.5v0c0 1.1-1.1 1.8-2.1 1.5l-0.1-0.1-0.7 0.8 0.7 0.7-6 6-0.8 2.3-0.7 0.7 1.5 1.5 0.8-0.8 2.3-0.8 6-6 0.7 0.7 0.7-0.6-0.1-0.2c-0.3-1 0.4-2.1 1.5-2.1v0c0.6 0 1.1-0.2 1.4-0.6 0.9-0.9 2-2.8 0.2-4.6zM3.9 13.6l-2 0.7-0.2 0.1 0.1-0.2 0.7-2 5.8-5.8 1.5 1.5-5.9 5.7z"></path> +</svg> diff --git a/Samples/CrowIDE/icons/toolbox/Crow.ComboBox.svg b/Samples/CrowIDE/icons/toolbox/Crow.ComboBox.svg new file mode 100644 index 00000000..1cb88fa2 --- /dev/null +++ b/Samples/CrowIDE/icons/toolbox/Crow.ComboBox.svg @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"> +<path fill="#dddddd" d="M15 4h-14c-0.6 0-1 0.4-1 1v6c0 0.6 0.4 1 1 1h14c0.6 0 1-0.4 1-1v-6c0-0.6-0.4-1-1-1zM10 11h-9v-6h9v6zM13 8.4l-2-1.4h4l-2 1.4z"></path> +<path fill="#dddddd" d="M2 6h1v4h-1v-4z"></path> +</svg> diff --git a/Samples/CrowIDE/icons/toolbox/Crow.Container.svg b/Samples/CrowIDE/icons/toolbox/Crow.Container.svg new file mode 100644 index 00000000..d7d1dc8a --- /dev/null +++ b/Samples/CrowIDE/icons/toolbox/Crow.Container.svg @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"> +<path fill="#dddddd" d="M15 1h-14v14h14v-14zM14 14h-12v-12h12v12z"></path> +</svg> diff --git a/Samples/CrowIDE/icons/toolbox/Crow.DirectoryView.svg b/Samples/CrowIDE/icons/toolbox/Crow.DirectoryView.svg new file mode 100644 index 00000000..90294692 --- /dev/null +++ b/Samples/CrowIDE/icons/toolbox/Crow.DirectoryView.svg @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"> +<path fill="#dddddd" d="M14 6v-2h-7l-1-2h-4l-1 2h-1v11h14l2-9h-2zM14.9 7l-1.6 7-11.9-0.1 2.3-6.9h11.2zM1 5h0.6l1-2h2.6l1.2 2h6.6v1h-10l-2 5.9v-6.9z"></path> +</svg> diff --git a/Samples/CrowIDE/icons/toolbox/Crow.Docker.svg b/Samples/CrowIDE/icons/toolbox/Crow.Docker.svg new file mode 100644 index 00000000..e38a283e --- /dev/null +++ b/Samples/CrowIDE/icons/toolbox/Crow.Docker.svg @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"> +<path fill="#dddddd" d="M0 2v13h15v-13h-15zM13 3h1v1h-1v-1zM7 14h-6v-9h6v9zM14 14h-6v-9h6v9z"></path> +</svg> diff --git a/Samples/CrowIDE/icons/toolbox/Crow.Expandable.svg b/Samples/CrowIDE/icons/toolbox/Crow.Expandable.svg new file mode 100644 index 00000000..1c56d56d --- /dev/null +++ b/Samples/CrowIDE/icons/toolbox/Crow.Expandable.svg @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"> +<path fill="#dddddd" d="M15 4h-14c-0.6 0-1 0.4-1 1v6c0 0.6 0.4 1 1 1h14c0.6 0 1-0.4 1-1v-6c0-0.6-0.4-1-1-1zM12 9l-2-2h4l-2 2z"></path> +</svg> diff --git a/Samples/CrowIDE/icons/toolbox/Crow.FileDialog.svg b/Samples/CrowIDE/icons/toolbox/Crow.FileDialog.svg new file mode 100644 index 00000000..25142ea0 --- /dev/null +++ b/Samples/CrowIDE/icons/toolbox/Crow.FileDialog.svg @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"> +<path fill="#dddddd" d="M11 2h-6v4h6v-4zM9 4h-2v-1h2v1z"></path> +<path fill="#dddddd" d="M3 0v16h2v-1h6v1h2v-16h-10zM12 14h-8v-6h8v6zM12 7h-8v-6h8v6z"></path> +<path fill="#dddddd" d="M11 9h-6v4h6v-4zM9 11h-2v-1h2v1z"></path> +</svg> diff --git a/Samples/CrowIDE/icons/toolbox/Crow.Grid.svg b/Samples/CrowIDE/icons/toolbox/Crow.Grid.svg new file mode 100644 index 00000000..6151f971 --- /dev/null +++ b/Samples/CrowIDE/icons/toolbox/Crow.Grid.svg @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"> +<path fill="#dddddd" d="M0 0v16h16v-16h-16zM5 15h-4v-4h4v4zM5 10h-4v-4h4v4zM5 5h-4v-4h4v4zM10 15h-4v-4h4v4zM10 10h-4v-4h4v4zM10 5h-4v-4h4v4zM15 15h-4v-4h4v4zM15 10h-4v-4h4v4zM15 5h-4v-4h4v4z"></path> +</svg> diff --git a/Samples/CrowIDE/icons/toolbox/Crow.Group.svg b/Samples/CrowIDE/icons/toolbox/Crow.Group.svg new file mode 100644 index 00000000..eae67f63 --- /dev/null +++ b/Samples/CrowIDE/icons/toolbox/Crow.Group.svg @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"> +<path fill="#dddddd" d="M0 7h7v-7h-7v7zM1 1h5v5h-5v-5z"></path> +<path fill="#dddddd" d="M9 0v7h7v-7h-7zM15 6h-5v-5h5v5z"></path> +<path fill="#dddddd" d="M0 16h7v-7h-7v7zM1 10h5v5h-5v-5z"></path> +<path fill="#dddddd" d="M9 16h7v-7h-7v7zM10 10h5v5h-5v-5z"></path> +</svg> diff --git a/Samples/CrowIDE/icons/toolbox/Crow.GroupBox.svg b/Samples/CrowIDE/icons/toolbox/Crow.GroupBox.svg new file mode 100644 index 00000000..e4697799 --- /dev/null +++ b/Samples/CrowIDE/icons/toolbox/Crow.GroupBox.svg @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"> +<path fill="#dddddd" d="M1 4h-1v-4h4v1h-3z"></path> +<path fill="#dddddd" d="M12 1v-1h4v4h-1v-3z"></path> +<path fill="#dddddd" d="M15 12h1v4h-4v-1h3z"></path> +<path fill="#dddddd" d="M4 15v1h-4v-4h1v3z"></path> +<path fill="#dddddd" d="M13 3v10h-10v-10h10zM14 2h-12v12h12v-12z"></path> +</svg> diff --git a/Samples/CrowIDE/icons/toolbox/Crow.HorizontalStack.svg b/Samples/CrowIDE/icons/toolbox/Crow.HorizontalStack.svg new file mode 100644 index 00000000..f8e70257 --- /dev/null +++ b/Samples/CrowIDE/icons/toolbox/Crow.HorizontalStack.svg @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"> +<path fill="#dddddd" d="M0 0v16h16v-16h-16zM5 15h-4v-14h4v14zM10 15h-4v-14h4v14zM15 15h-4v-14h4v14z"></path> +</svg> diff --git a/Samples/CrowIDE/icons/toolbox/Crow.IMLContainer.svg b/Samples/CrowIDE/icons/toolbox/Crow.IMLContainer.svg new file mode 100644 index 00000000..b5687bac --- /dev/null +++ b/Samples/CrowIDE/icons/toolbox/Crow.IMLContainer.svg @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"> +<path fill="#dddddd" d="M5.2 14l4.5-12h1.1l-4.5 12z"></path> +<path fill="#dddddd" d="M11.1 13h1.2l3.7-5-3.7-5h-1.3l3.8 5z"></path> +<path fill="#dddddd" d="M4.9 13h-1.2l-3.7-5 3.7-5h1.3l-3.8 5z"></path> +</svg> diff --git a/Samples/CrowIDE/icons/toolbox/Crow.Image.svg b/Samples/CrowIDE/icons/toolbox/Crow.Image.svg new file mode 100644 index 00000000..11356c0e --- /dev/null +++ b/Samples/CrowIDE/icons/toolbox/Crow.Image.svg @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"> +<path fill="#dddddd" d="M16 14h-16v-12h16v12zM1 13h14v-10h-14v10z"></path> +<path fill="#dddddd" d="M2 10v2h12v-1c0 0 0.2-1.7-2-2-1.9-0.3-2.2 0.6-3.8 0.6-1.1 0-0.9-1.6-3.2-1.6-1.7 0-3 2-3 2z"></path> +<path fill="#dddddd" d="M13 6c0 1.105-0.895 2-2 2s-2-0.895-2-2c0-1.105 0.895-2 2-2s2 0.895 2 2z"></path> +</svg> diff --git a/Samples/CrowIDE/icons/toolbox/Crow.Label.svg b/Samples/CrowIDE/icons/toolbox/Crow.Label.svg new file mode 100644 index 00000000..65bb85b7 --- /dev/null +++ b/Samples/CrowIDE/icons/toolbox/Crow.Label.svg @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"> +<path fill="#dddddd" d="M12.5 4.9c-1.4 0-2.5 0.8-2.6 0.9l1.2 1.6c0 0 0.7-0.5 1.4-0.5 1.4 0 1.5 1.2 1.5 1.6-0.4-0.1-1.1-0.3-2-0.1-1.4 0.3-2.8 2-2.1 3.9 0.7 1.8 3.1 2.1 4.1 0.6v1h2v-5.3c0-2.7-1.9-3.7-3.5-3.7zM11.5 11.4c-0.1-1.9 1.5-1.9 2.5-1.8v1c0 1.2-2.3 2.3-2.5 0.8z"></path> +<path fill="#dddddd" d="M6.9 14h2.1l-3.2-12h-2.7l-3.1 12h2.1l1-4h2.7l1.1 4zM3.6 8l0.8-3.2 0.9 3.2h-1.7z"></path> +</svg> diff --git a/Samples/CrowIDE/icons/toolbox/Crow.ListBox.svg b/Samples/CrowIDE/icons/toolbox/Crow.ListBox.svg new file mode 100644 index 00000000..40d16734 --- /dev/null +++ b/Samples/CrowIDE/icons/toolbox/Crow.ListBox.svg @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"> +<path fill="#dddddd" d="M0 1h3v3h-3v-3z"></path> +<path fill="#dddddd" d="M0 6h3v3h-3v-3z"></path> +<path fill="#dddddd" d="M0 11h3v3h-3v-3z"></path> +<path fill="#dddddd" d="M5 1h11v3h-11v-3z"></path> +<path fill="#dddddd" d="M5 6h11v3h-11v-3z"></path> +<path fill="#dddddd" d="M5 11h11v3h-11v-3z"></path> +</svg> diff --git a/Samples/CrowIDE/icons/toolbox/Crow.Menu.svg b/Samples/CrowIDE/icons/toolbox/Crow.Menu.svg new file mode 100644 index 00000000..b6b21119 --- /dev/null +++ b/Samples/CrowIDE/icons/toolbox/Crow.Menu.svg @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"> +<path fill="#dddddd" d="M15 2v2h-9v-2h9zM16 1h-11v4h11v-4z"></path> +<path fill="#dddddd" d="M0 1h4v4h-4v-4z"></path> +<path fill="#dddddd" d="M15 7v2h-9v-2h9zM16 6h-11v4h11v-4z"></path> +<path fill="#dddddd" d="M0 6h4v4h-4v-4z"></path> +<path fill="#dddddd" d="M15 12v2h-9v-2h9zM16 11h-11v4h11v-4z"></path> +<path fill="#dddddd" d="M0 11h4v4h-4v-4z"></path> +</svg> diff --git a/Samples/CrowIDE/icons/toolbox/Crow.MenuItem.svg b/Samples/CrowIDE/icons/toolbox/Crow.MenuItem.svg new file mode 100644 index 00000000..c8bd8470 --- /dev/null +++ b/Samples/CrowIDE/icons/toolbox/Crow.MenuItem.svg @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"> +<path fill="#dddddd" d="M15 7v2h-9v-2h9zM16 6h-11v4h11v-4z"></path> +<path fill="#dddddd" d="M0 6h4v4h-4v-4z"></path> +</svg> diff --git a/Samples/CrowIDE/icons/toolbox/Crow.MessageBox.svg b/Samples/CrowIDE/icons/toolbox/Crow.MessageBox.svg new file mode 100644 index 00000000..16ebd72c --- /dev/null +++ b/Samples/CrowIDE/icons/toolbox/Crow.MessageBox.svg @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"> +<path fill="#dddddd" d="M8 1c3.9 0 7 3.1 7 7s-3.1 7-7 7-7-3.1-7-7 3.1-7 7-7zM8 0c-4.4 0-8 3.6-8 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8v0z"></path> +<path fill="#dddddd" d="M7 6h2v7h-2v-7z"></path> +<path fill="#dddddd" d="M7 3h2v2h-2v-2z"></path> +</svg> diff --git a/Samples/CrowIDE/icons/toolbox/Crow.ProgressBar.svg b/Samples/CrowIDE/icons/toolbox/Crow.ProgressBar.svg new file mode 100644 index 00000000..884f1854 --- /dev/null +++ b/Samples/CrowIDE/icons/toolbox/Crow.ProgressBar.svg @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"> +<path fill="#dddddd" d="M0 5v6h16v-6h-16zM15 10h-14v-4h14v4z"></path> +<path fill="#dddddd" d="M2 7h7v2h-7v-2z"></path> +</svg> diff --git a/Samples/CrowIDE/icons/toolbox/Crow.RadioButton.svg b/Samples/CrowIDE/icons/toolbox/Crow.RadioButton.svg new file mode 100644 index 00000000..6c33e84b --- /dev/null +++ b/Samples/CrowIDE/icons/toolbox/Crow.RadioButton.svg @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"> +<path fill="#dddddd" d="M8 4c-2.2 0-4 1.8-4 4s1.8 4 4 4 4-1.8 4-4-1.8-4-4-4z"></path> +<path fill="#dddddd" d="M8 1c3.9 0 7 3.1 7 7s-3.1 7-7 7-7-3.1-7-7 3.1-7 7-7zM8 0c-4.4 0-8 3.6-8 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8v0z"></path> +</svg> diff --git a/Samples/CrowIDE/icons/toolbox/Crow.ScrollBar.svg b/Samples/CrowIDE/icons/toolbox/Crow.ScrollBar.svg new file mode 100644 index 00000000..91a1f847 --- /dev/null +++ b/Samples/CrowIDE/icons/toolbox/Crow.ScrollBar.svg @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"> +<path fill="#dddddd" d="M2 2h1v4h-1v-4z"></path> +<path fill="#dddddd" d="M1 0c-0.6 0-1 0.4-1 1v14c0 0.6 0.4 1 1 1h15v-16h-15zM13 15h-12v-14h12v14zM15 15v0h-1v-1h1v1zM15 13h-1v-10h1v10zM15 2h-1v-1h1v1z"></path> +</svg> diff --git a/Samples/CrowIDE/icons/toolbox/Crow.Scroller.svg b/Samples/CrowIDE/icons/toolbox/Crow.Scroller.svg new file mode 100644 index 00000000..bbc97197 --- /dev/null +++ b/Samples/CrowIDE/icons/toolbox/Crow.Scroller.svg @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"> +<path fill="#dddddd" d="M0 0v16h16v-16h-16zM15 15h-14v-6h3v1l3-2-3-2v1h-3v-6h6v3h-1l2 3 2-3h-1v-3h6v14z"></path> +</svg> diff --git a/Samples/CrowIDE/icons/toolbox/Crow.Shape.svg b/Samples/CrowIDE/icons/toolbox/Crow.Shape.svg new file mode 100644 index 00000000..de5dd372 --- /dev/null +++ b/Samples/CrowIDE/icons/toolbox/Crow.Shape.svg @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"> +<path fill="#dddddd" d="M8 0l-8 8 8 8 8-8-8-8zM2 8l6-6 6 6-6 6-6-6z"></path> +</svg> diff --git a/Samples/CrowIDE/icons/toolbox/Crow.Slider.svg b/Samples/CrowIDE/icons/toolbox/Crow.Slider.svg new file mode 100644 index 00000000..fe41c2ba --- /dev/null +++ b/Samples/CrowIDE/icons/toolbox/Crow.Slider.svg @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"> +<path fill="#dddddd" d="M16 6h-3.6c-0.7-1.2-2-2-3.4-2s-2.8 0.8-3.4 2h-5.6v4h5.6c0.7 1.2 2 2 3.4 2s2.8-0.8 3.4-2h3.6v-4zM1 9v-2h4.1c0 0.3-0.1 0.7-0.1 1s0.1 0.7 0.1 1h-4.1zM9 11c-1.7 0-3-1.3-3-3s1.3-3 3-3 3 1.3 3 3c0 1.7-1.3 3-3 3z"></path> +</svg> diff --git a/Samples/CrowIDE/icons/toolbox/Crow.Spinner.svg b/Samples/CrowIDE/icons/toolbox/Crow.Spinner.svg new file mode 100644 index 00000000..5fa848ac --- /dev/null +++ b/Samples/CrowIDE/icons/toolbox/Crow.Spinner.svg @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"> +<path fill="#dddddd" d="M11 7h-6l3-4z"></path> +<path fill="#dddddd" d="M5 9h6l-3 4z"></path> +</svg> diff --git a/Samples/CrowIDE/icons/toolbox/Crow.Splitter.svg b/Samples/CrowIDE/icons/toolbox/Crow.Splitter.svg new file mode 100644 index 00000000..9fcd9dd7 --- /dev/null +++ b/Samples/CrowIDE/icons/toolbox/Crow.Splitter.svg @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"> +<path fill="#dddddd" d="M7 0h2v16h-2v-16z"></path> +<path fill="#dddddd" d="M3 5l-3 3 3 3v-2h3v-2h-3z"></path> +<path fill="#dddddd" d="M16 8l-3-3v2h-3v2h3v2z"></path> +</svg> diff --git a/Samples/CrowIDE/icons/toolbox/Crow.TabItem.svg b/Samples/CrowIDE/icons/toolbox/Crow.TabItem.svg new file mode 100644 index 00000000..a9aaed33 --- /dev/null +++ b/Samples/CrowIDE/icons/toolbox/Crow.TabItem.svg @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"> +<path fill="#dddddd" d="M7 4l-1-2h-4l-1 2h-1v11h16v-11h-9zM15 14h-14v-9h0.6l1-2h2.6l1.2 2h8.6v9z"></path> +</svg> diff --git a/Samples/CrowIDE/icons/toolbox/Crow.TabView.svg b/Samples/CrowIDE/icons/toolbox/Crow.TabView.svg new file mode 100644 index 00000000..942358b4 --- /dev/null +++ b/Samples/CrowIDE/icons/toolbox/Crow.TabView.svg @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"> +<path fill="#dddddd" d="M14 4v-2h-14v13h16v-11h-2zM10 3h3v1h-3v-1zM6 3h3v1h-3v-1zM15 14h-14v-11h4v2h10v9z"></path> +</svg> diff --git a/Samples/CrowIDE/icons/toolbox/Crow.TemplatedContainer.svg b/Samples/CrowIDE/icons/toolbox/Crow.TemplatedContainer.svg new file mode 100644 index 00000000..34a0aa26 --- /dev/null +++ b/Samples/CrowIDE/icons/toolbox/Crow.TemplatedContainer.svg @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"> +<path fill="#dddddd" d="M8 0l-8 2v10l8 4 8-4v-10l-8-2zM14.4 2.6l-5.9 2.2-6.6-2.2 6.1-1.6 6.4 1.6zM1 11.4v-8.1l7 2.4v9.2l-7-3.5z"></path> +</svg> diff --git a/Samples/CrowIDE/icons/toolbox/Crow.TemplatedGroup.svg b/Samples/CrowIDE/icons/toolbox/Crow.TemplatedGroup.svg new file mode 100644 index 00000000..14ea6f37 --- /dev/null +++ b/Samples/CrowIDE/icons/toolbox/Crow.TemplatedGroup.svg @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"> +<path fill="#dddddd" d="M11 6.6v0-3.8l-4-1.8-4 1.8v4.2l-3 1.3v4.4l4 1.8 3.5-1.5 3.5 1.6 4-1.8v-4.5l-4-1.7zM7 2.1l2.8 1.2-2.7 1.1-2.6-1.2 2.5-1.1zM7 5v2.9l-3-1.3v-3l3 1.4zM4 13.5l-3-1.3v-3l3 1.4v2.9zM4 10l-2.6-1.2 2.6-1.1 2.8 1.2-2.8 1.1zM11 13.5l-3-1.3v-3l3 1.4v2.9zM11 10l-2.6-1.2 2.6-1.1 2.8 1.2-2.8 1.1z"></path> +</svg> diff --git a/Samples/CrowIDE/icons/toolbox/Crow.TextBox.svg b/Samples/CrowIDE/icons/toolbox/Crow.TextBox.svg new file mode 100644 index 00000000..c1fc2bb2 --- /dev/null +++ b/Samples/CrowIDE/icons/toolbox/Crow.TextBox.svg @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"> +<path fill="#dddddd" d="M16 5c0-0.6-0.4-1-1-1h-14c-0.6 0-1 0.4-1 1v6c0 0.6 0.4 1 1 1h14c0.6 0 1-0.4 1-1v-6zM15 11h-14v-6h14v6z"></path> +<path fill="#dddddd" d="M2 6h1v4h-1v-4z"></path> +</svg> diff --git a/Samples/CrowIDE/icons/toolbox/Crow.TreeView.svg b/Samples/CrowIDE/icons/toolbox/Crow.TreeView.svg new file mode 100644 index 00000000..b863291b --- /dev/null +++ b/Samples/CrowIDE/icons/toolbox/Crow.TreeView.svg @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"> +<path fill="#dddddd" d="M16 10v-4h-11v1h-2v-3h9v-4h-12v4h2v10h3v2h11v-4h-11v1h-2v-5h2v2z"></path> +</svg> diff --git a/Samples/CrowIDE/icons/toolbox/Crow.VerticalStack.svg b/Samples/CrowIDE/icons/toolbox/Crow.VerticalStack.svg new file mode 100644 index 00000000..c3c3ec9c --- /dev/null +++ b/Samples/CrowIDE/icons/toolbox/Crow.VerticalStack.svg @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"> +<path fill="#dddddd" d="M16 0h-16v16h16v-16zM1 5v-4h14v4h-14zM1 10v-4h14v4h-14zM1 15v-4h14v4h-14z"></path> +</svg> diff --git a/Samples/CrowIDE/icons/toolbox/Crow.Window.svg b/Samples/CrowIDE/icons/toolbox/Crow.Window.svg new file mode 100644 index 00000000..74b0a24b --- /dev/null +++ b/Samples/CrowIDE/icons/toolbox/Crow.Window.svg @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"> +<path fill="#dddddd" d="M0 4v11h16v-14h-16v3zM14 2h1v1h-1v-1zM1 4h14v10h-14v-10z"></path> +</svg> diff --git a/Samples/CrowIDE/icons/toolbox/Crow.Wrapper.svg b/Samples/CrowIDE/icons/toolbox/Crow.Wrapper.svg new file mode 100644 index 00000000..9e69e415 --- /dev/null +++ b/Samples/CrowIDE/icons/toolbox/Crow.Wrapper.svg @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"> +<path fill="#dddddd" d="M0 6h4v4h-4v-4z"></path> +<path fill="#dddddd" d="M6 6h4v4h-4v-4z"></path> +<path fill="#dddddd" d="M12 6h4v4h-4v-4z"></path> +</svg> diff --git a/Samples/CrowIDE/icons/toolbox/bar-chart.svg b/Samples/CrowIDE/icons/toolbox/bar-chart.svg new file mode 100644 index 00000000..ff86c961 --- /dev/null +++ b/Samples/CrowIDE/icons/toolbox/bar-chart.svg @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"> +<path fill="#dddddd" d="M0 15h15v1h-15v-1z"></path> +<path fill="#dddddd" d="M0 11h3v3h-3v-3z"></path> +<path fill="#dddddd" d="M4 9h3v5h-3v-5z"></path> +<path fill="#dddddd" d="M8 5h3v9h-3v-9z"></path> +<path fill="#dddddd" d="M12 0h3v14h-3v-14z"></path> +</svg> diff --git a/Samples/CrowIDE/icons/toolbox/bar-menu.svg b/Samples/CrowIDE/icons/toolbox/bar-menu.svg new file mode 100644 index 00000000..87ec0610 --- /dev/null +++ b/Samples/CrowIDE/icons/toolbox/bar-menu.svg @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"> +<path fill="#dddddd" d="M0 1h16v3h-16v-3z"></path> +<path fill="#dddddd" d="M0 6h16v3h-16v-3z"></path> +<path fill="#dddddd" d="M0 11h16v3h-16v-3z"></path> +</svg> diff --git a/Samples/CrowIDE/icons/toolbox/bullets.svg b/Samples/CrowIDE/icons/toolbox/bullets.svg new file mode 100644 index 00000000..81fb1f06 --- /dev/null +++ b/Samples/CrowIDE/icons/toolbox/bullets.svg @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"> +<path fill="#dddddd" d="M0 2.5v0c0 0.8 0.7 1.5 1.5 1.5v0c0.8 0 1.5-0.7 1.5-1.5v0c0-0.8-0.7-1.5-1.5-1.5v0c-0.8 0-1.5 0.7-1.5 1.5z"></path> +<path fill="#dddddd" d="M0 7.5v0c0 0.8 0.7 1.5 1.5 1.5v0c0.8 0 1.5-0.7 1.5-1.5v0c0-0.8-0.7-1.5-1.5-1.5v0c-0.8 0-1.5 0.7-1.5 1.5z"></path> +<path fill="#dddddd" d="M0 12.5v0c0 0.8 0.7 1.5 1.5 1.5v0c0.8 0 1.5-0.7 1.5-1.5v0c0-0.8-0.7-1.5-1.5-1.5v0c-0.8 0-1.5 0.7-1.5 1.5z"></path> +<path fill="#dddddd" d="M5 1h11v3h-11v-3z"></path> +<path fill="#dddddd" d="M5 6h11v3h-11v-3z"></path> +<path fill="#dddddd" d="M5 11h11v3h-11v-3z"></path> +</svg> diff --git a/Samples/CrowIDE/icons/toolbox/calendar.svg b/Samples/CrowIDE/icons/toolbox/calendar.svg new file mode 100644 index 00000000..9ceaa1ea --- /dev/null +++ b/Samples/CrowIDE/icons/toolbox/calendar.svg @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"> +<path fill="#dddddd" d="M14 1v3h-3v-3h-6v3h-3v-3h-2v15h16v-15h-2zM3 15h-2v-2h2v2zM3 12h-2v-2h2v2zM3 9h-2v-2h2v2zM6 15h-2v-2h2v2zM6 12h-2v-2h2v2zM6 9h-2v-2h2v2zM9 15h-2v-2h2v2zM9 12h-2v-2h2v2zM9 9h-2v-2h2v2zM12 15h-2v-2h2v2zM12 12h-2v-2h2v2zM12 9h-2v-2h2v2zM15 15h-2v-2h2v2zM15 12h-2v-2h2v2zM15 9h-2v-2h2v2z"></path> +<path fill="#dddddd" d="M3 0h1v3h-1v-3z"></path> +<path fill="#dddddd" d="M12 0h1v3h-1v-3z"></path> +</svg> diff --git a/Samples/CrowIDE/icons/toolbox/check-square-1.svg b/Samples/CrowIDE/icons/toolbox/check-square-1.svg new file mode 100644 index 00000000..e198007c --- /dev/null +++ b/Samples/CrowIDE/icons/toolbox/check-square-1.svg @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"> +<path fill="#dddddd" d="M14 6.2v7.8h-12v-12h10.5l1-1h-12.5v14h14v-9.8z"></path> +<path fill="#dddddd" d="M7.9 10.9l-4.2-4.2 1.5-1.4 2.7 2.8 6.7-6.7 1.4 1.4z"></path> +</svg> diff --git a/Samples/CrowIDE/icons/toolbox/database.svg b/Samples/CrowIDE/icons/toolbox/database.svg new file mode 100644 index 00000000..65a8f065 --- /dev/null +++ b/Samples/CrowIDE/icons/toolbox/database.svg @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"> +<path fill="#dddddd" d="M14 2.5c0 0.828-2.686 1.5-6 1.5s-6-0.672-6-1.5c0-0.828 2.686-1.5 6-1.5s6 0.672 6 1.5z"></path> +<path fill="#dddddd" d="M8 5c-3.3 0-6-0.7-6-1.5v3c0 0.8 2.7 1.5 6 1.5s6-0.7 6-1.5v-3c0 0.8-2.7 1.5-6 1.5z"></path> +<path fill="#dddddd" d="M8 9c-3.3 0-6-0.7-6-1.5v3c0 0.8 2.7 1.5 6 1.5s6-0.7 6-1.5v-3c0 0.8-2.7 1.5-6 1.5z"></path> +<path fill="#dddddd" d="M8 13c-3.3 0-6-0.7-6-1.5v3c0 0.8 2.7 1.5 6 1.5s6-0.7 6-1.5v-3c0 0.8-2.7 1.5-6 1.5z"></path> +</svg> diff --git a/Samples/CrowIDE/icons/toolbox/ellipsis.svg b/Samples/CrowIDE/icons/toolbox/ellipsis.svg new file mode 100644 index 00000000..cff94ccf --- /dev/null +++ b/Samples/CrowIDE/icons/toolbox/ellipsis.svg @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"> +<path fill="#dddddd" d="M6 0h4v4h-4v-4z"></path> +<path fill="#dddddd" d="M6 6h4v4h-4v-4z"></path> +<path fill="#dddddd" d="M6 12h4v4h-4v-4z"></path> +</svg> diff --git a/Samples/CrowIDE/icons/toolbox/exclamation-circle-1.svg b/Samples/CrowIDE/icons/toolbox/exclamation-circle-1.svg new file mode 100644 index 00000000..cc1b2689 --- /dev/null +++ b/Samples/CrowIDE/icons/toolbox/exclamation-circle-1.svg @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"> +<path fill="#dddddd" d="M8 1c3.9 0 7 3.1 7 7s-3.1 7-7 7-7-3.1-7-7 3.1-7 7-7zM8 0c-4.4 0-8 3.6-8 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8v0z"></path> +<path fill="#dddddd" d="M7 3h2v7h-2v-7z"></path> +<path fill="#dddddd" d="M7 11h2v2h-2v-2z"></path> +</svg> diff --git a/Samples/CrowIDE/icons/toolbox/exclamation-circle.svg b/Samples/CrowIDE/icons/toolbox/exclamation-circle.svg new file mode 100644 index 00000000..b140e7c8 --- /dev/null +++ b/Samples/CrowIDE/icons/toolbox/exclamation-circle.svg @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"> +<path fill="#dddddd" d="M8 0c-4.4 0-8 3.6-8 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8zM9 13h-2v-2h2v2zM9 10h-2v-7h2v7z"></path> +</svg> diff --git a/Samples/CrowIDE/icons/toolbox/file-code.svg b/Samples/CrowIDE/icons/toolbox/file-code.svg new file mode 100644 index 00000000..a2fd2d19 --- /dev/null +++ b/Samples/CrowIDE/icons/toolbox/file-code.svg @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"> +<path fill="#dddddd" d="M10 0h-8v16h12v-12l-4-4zM9 5h4v10h-10v-14h6v4zM10 4v-3l3 3h-3z"></path> +<path fill="#dddddd" d="M6.2 13h-0.7l-2-2.5 2-2.5h0.7l-2 2.5z"></path> +<path fill="#dddddd" d="M9.8 13h0.7l2-2.5-2-2.5h-0.7l2 2.5z"></path> +<path fill="#dddddd" d="M6.7 14h0.6l2.1-7h-0.8z"></path> +</svg> diff --git a/Samples/CrowIDE/icons/toolbox/grab.svg b/Samples/CrowIDE/icons/toolbox/grab.svg new file mode 100644 index 00000000..25bc5719 --- /dev/null +++ b/Samples/CrowIDE/icons/toolbox/grab.svg @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"> +<path fill="#dddddd" d="M12.6 4c-0.2 0-0.4 0-0.6 0 0-0.2-0.2-0.6-0.4-0.8s-0.5-0.4-1.1-0.4c-0.2 0-0.4 0-0.6 0.1-0.1-0.2-0.2-0.3-0.3-0.5-0.2-0.2-0.5-0.4-1.1-0.4-0.8 0-1.2 0.5-1.4 1-0.1 0-0.3-0.1-0.5-0.1-0.5 0-0.8 0.2-1.1 0.4-0.5 0.6-0.5 1.4-0.5 1.5v0.4c-0.6 0-1.1 0.2-1.4 0.5-0.6 0.7-0.6 1.6-0.6 2.8 0 0.2 0 0.5 0 0.7 0 1.4 0.7 2.1 1.4 2.8l0.3 0.4c1.3 1.2 2.5 1.6 5.1 1.6 2.9 0 4.2-1.6 4.2-5.1v-2.5c0-0.7-0.2-2.1-1.4-2.4zM10.5 3.8c0.4 0 0.5 0.4 0.5 0.6v0.8c0 0.3 0.2 0.5 0.4 0.5 0.3 0 0.5-0.1 0.5-0.4 0 0 0-0.4 0.4-0.3 0.6 0.2 0.7 1.1 0.7 1.3 0 0 0 0 0 0v2.6c0 3.4-1.3 4.1-3.2 4.1-2.4 0-3.3-0.3-4.3-1.3-0.1-0.1-0.2-0.2-0.4-0.4-0.7-0.7-1.1-1.1-1.1-2.1 0-0.2 0-0.3 0-0.6 0-1 0-1.8 0.3-2.1 0.1-0.2 0.4-0.3 0.7-0.3v0.8l-0.3 1.2c0 0.1 0 0.1 0.1 0.1 0.1 0.1 0.2 0 0.2 0l1-1.2c0 0 0-0.1 0-0.1v-2c0-0.1 0-0.6 0.2-0.8 0.1-0.1 0.2-0.2 0.4-0.2 0.3 0 0.4 0.2 0.4 0.4v0.4c0 0.2 0.2 0.5 0.5 0.5s0.5-0.3 0.5-0.5v-1.3c0-0.1 0-0.5 0.5-0.5 0.3 0 0.5 0.2 0.5 0.5v1.2c0 0.3 0.2 0.6 0.5 0.6s0.5-0.3 0.5-0.5v-0.5c0-0.3 0.2-0.5 0.5-0.5z"></path> +</svg> diff --git a/Samples/CrowIDE/icons/toolbox/hard-drive-1.svg b/Samples/CrowIDE/icons/toolbox/hard-drive-1.svg new file mode 100644 index 00000000..a71a5248 --- /dev/null +++ b/Samples/CrowIDE/icons/toolbox/hard-drive-1.svg @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"> +<path fill="#dddddd" d="M13 1h-10l-2.7 8h15.4z"></path> +<path fill="#dddddd" d="M0 10v5h16v-5h-16zM3 13h-1v-1h1v1zM7 13h-3v-1h3v1z"></path> +</svg> diff --git a/Samples/CrowIDE/icons/toolbox/hash.svg b/Samples/CrowIDE/icons/toolbox/hash.svg new file mode 100644 index 00000000..82196fbc --- /dev/null +++ b/Samples/CrowIDE/icons/toolbox/hash.svg @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"> +<path fill="#dddddd" d="M15 6v-2h-2.6l0.6-2.8-2-0.4-0.7 3.2h-3l0.7-2.8-2-0.4-0.7 3.2h-3.3v2h2.9l-0.9 4h-3v2h2.6l-0.6 2.8 2 0.4 0.7-3.2h3l-0.7 2.8 2 0.4 0.7-3.2h3.3v-2h-2.9l0.9-4h3zM9 10h-3l1-4h3l-1 4z"></path> +</svg> diff --git a/Samples/CrowIDE/icons/toolbox/info.svg b/Samples/CrowIDE/icons/toolbox/info.svg new file mode 100644 index 00000000..a8c90f4c --- /dev/null +++ b/Samples/CrowIDE/icons/toolbox/info.svg @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"> +<path fill="#dddddd" d="M7 5h3v11h-3v-11z"></path> +<path fill="#dddddd" d="M10.5 2c0 1.105-0.895 2-2 2s-2-0.895-2-2c0-1.105 0.895-2 2-2s2 0.895 2 2z"></path> +</svg> diff --git a/Samples/CrowIDE/icons/toolbox/layout.svg b/Samples/CrowIDE/icons/toolbox/layout.svg new file mode 100644 index 00000000..3d59d765 --- /dev/null +++ b/Samples/CrowIDE/icons/toolbox/layout.svg @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"> +<path fill="#dddddd" d="M0 0v16h16v-16h-16zM1 3h4v12h-4v-12zM15 15h-9v-12h9v12z"></path> +</svg> diff --git a/Samples/CrowIDE/icons/toolbox/line-list.svg b/Samples/CrowIDE/icons/toolbox/line-list.svg new file mode 100644 index 00000000..ec15f7b8 --- /dev/null +++ b/Samples/CrowIDE/icons/toolbox/line-list.svg @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"> +<path fill="#dddddd" d="M0 1h3v2h-3v-2z"></path> +<path fill="#dddddd" d="M0 5h3v2h-3v-2z"></path> +<path fill="#dddddd" d="M0 9h3v2h-3v-2z"></path> +<path fill="#dddddd" d="M0 13h3v2h-3v-2z"></path> +<path fill="#dddddd" d="M4 1h12v2h-12v-2z"></path> +<path fill="#dddddd" d="M4 5h12v2h-12v-2z"></path> +<path fill="#dddddd" d="M4 9h12v2h-12v-2z"></path> +<path fill="#dddddd" d="M4 13h12v2h-12v-2z"></path> +</svg> diff --git a/Samples/CrowIDE/icons/toolbox/list.svg b/Samples/CrowIDE/icons/toolbox/list.svg new file mode 100644 index 00000000..9aad88fa --- /dev/null +++ b/Samples/CrowIDE/icons/toolbox/list.svg @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"> +<path fill="#dddddd" d="M4 0h12v4h-12v-4z"></path> +<path fill="#dddddd" d="M4 6h12v4h-12v-4z"></path> +<path fill="#dddddd" d="M4 12h12v4h-12v-4z"></path> +<path fill="#dddddd" d="M1 0l-0.9 0.5 0.2 0.7 0.7-0.3v3.1h1v-4z"></path> +<path fill="#dddddd" d="M2.2 13.9c0.3-0.2 0.5-0.5 0.5-0.8 0-0.5-0.4-1-1.3-1-0.5 0-1 0.1-1.2 0.3h-0.1l0.2 0.8 0.1-0.1c0.1-0.1 0.4-0.2 0.7-0.2s0.4 0.1 0.4 0.3c0 0.4-0.5 0.4-0.6 0.4h-0.4v0.7h0.4c0.3 0 0.6 0.1 0.6 0.4 0 0.2-0.2 0.4-0.6 0.4s-0.7-0.2-0.8-0.2l-0.1-0.1v0.9h0.1c0.2 0.2 0.6 0.3 1.1 0.3 1 0 1.6-0.5 1.6-1.2 0-0.4-0.2-0.8-0.6-0.9z"></path> +<path fill="#dddddd" d="M0.1 6.4l0.3 1c0 0 0.7-0.6 1.2-0.3 1.1 0.8-1.6 2.4-1.6 2.4v0.5h3v-1h-1.2c0.6-0.5 1.2-1.2 1-1.9-0.5-1.9-2.7-0.7-2.7-0.7z"></path> +</svg> diff --git a/Samples/CrowIDE/icons/toolbox/modal-list.svg b/Samples/CrowIDE/icons/toolbox/modal-list.svg new file mode 100644 index 00000000..f1d8f70b --- /dev/null +++ b/Samples/CrowIDE/icons/toolbox/modal-list.svg @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"> +<path fill="#dddddd" d="M0 4v11h16v-14h-16v3zM14 2h1v1h-1v-1zM1 4h14v10h-14v-10z"></path> +<path fill="#dddddd" d="M3 6h2v1h-2v-1z"></path> +<path fill="#dddddd" d="M6 6h7v1h-7v-1z"></path> +<path fill="#dddddd" d="M3 8h2v1h-2v-1z"></path> +<path fill="#dddddd" d="M6 8h7v1h-7v-1z"></path> +<path fill="#dddddd" d="M3 10h2v1h-2v-1z"></path> +<path fill="#dddddd" d="M6 10h7v1h-7v-1z"></path> +</svg> diff --git a/Samples/CrowIDE/icons/toolbox/options.svg b/Samples/CrowIDE/icons/toolbox/options.svg new file mode 100644 index 00000000..a56f6bed --- /dev/null +++ b/Samples/CrowIDE/icons/toolbox/options.svg @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"> +<path fill="#dddddd" d="M5 3.5c0 0.828-0.672 1.5-1.5 1.5s-1.5-0.672-1.5-1.5c0-0.828 0.672-1.5 1.5-1.5s1.5 0.672 1.5 1.5z"></path> +<path fill="#dddddd" d="M3.5 0c-1.9 0-3.5 1.6-3.5 3.5s1.6 3.5 3.5 3.5 3.5-1.6 3.5-3.5-1.6-3.5-3.5-3.5zM3.5 6c-1.4 0-2.5-1.1-2.5-2.5s1.1-2.5 2.5-2.5 2.5 1.1 2.5 2.5c0 1.4-1.1 2.5-2.5 2.5z"></path> +<path fill="#dddddd" d="M3.5 8c-1.9 0-3.5 1.6-3.5 3.5s1.6 3.5 3.5 3.5 3.5-1.6 3.5-3.5c0-1.9-1.6-3.5-3.5-3.5zM3.5 14c-1.4 0-2.5-1.1-2.5-2.5s1.1-2.5 2.5-2.5 2.5 1.1 2.5 2.5c0 1.4-1.1 2.5-2.5 2.5z"></path> +<path fill="#dddddd" d="M8 2h8v3h-8v-3z"></path> +<path fill="#dddddd" d="M8 10h8v3h-8v-3z"></path> +</svg> diff --git a/Samples/CrowIDE/icons/toolbox/package.svg b/Samples/CrowIDE/icons/toolbox/package.svg new file mode 100644 index 00000000..07f8b37e --- /dev/null +++ b/Samples/CrowIDE/icons/toolbox/package.svg @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"> +<path fill="#dddddd" d="M8 0l-8 2v10l8 4 8-4v-10l-8-2zM8 1l2.1 0.5-5.9 1.9-2.3-0.8 6.1-1.6zM8 14.9l-7-3.5v-8.1l3 1v3.4l1 0.3v-3.3l3 1v9.2zM8.5 4.8l-2.7-0.9 6.2-1.9 2.4 0.6-5.9 2.2z"></path> +</svg> diff --git a/Samples/CrowIDE/icons/toolbox/padding.svg b/Samples/CrowIDE/icons/toolbox/padding.svg new file mode 100644 index 00000000..d93b2464 --- /dev/null +++ b/Samples/CrowIDE/icons/toolbox/padding.svg @@ -0,0 +1,47 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"> +<path fill="#dddddd" d="M0 0v16h16v-16h-16zM15 3h-1v1h1v1h-1v1h1v1h-1v1h1v1h-1v1h1v1h-1v1h1v1h-1v1h1v1h-1v-1h-1v1h-1v-1h-1v1h-1v-1h-1v1h-1v-1h-1v1h-1v-1h-1v1h-1v-1h-1v1h-1v-1h-1v-1h1v-1h-1v-1h1v-1h-1v-1h1v-1h-1v-1h1v-1h-1v-1h1v-1h-1v-1h1v-1h-1v-1h1v1h1v-1h1v1h1v-1h1v1h1v-1h1v1h1v-1h1v1h1v-1h1v1h1v-1h1v1h1v1z"></path> +<path fill="#dddddd" d="M3 2h1v1h-1v-1z"></path> +<path fill="#dddddd" d="M4 3h1v1h-1v-1z"></path> +<path fill="#dddddd" d="M6 3h1v1h-1v-1z"></path> +<path fill="#dddddd" d="M5 2h1v1h-1v-1z"></path> +<path fill="#dddddd" d="M7 2h1v1h-1v-1z"></path> +<path fill="#dddddd" d="M9 2h1v1h-1v-1z"></path> +<path fill="#dddddd" d="M8 3h1v1h-1v-1z"></path> +<path fill="#dddddd" d="M10 3h1v1h-1v-1z"></path> +<path fill="#dddddd" d="M12 3h1v1h-1v-1z"></path> +<path fill="#dddddd" d="M11 2h1v1h-1v-1z"></path> +<path fill="#dddddd" d="M13 2h1v1h-1v-1z"></path> +<path fill="#dddddd" d="M12 5h1v1h-1v-1z"></path> +<path fill="#dddddd" d="M13 4h1v1h-1v-1z"></path> +<path fill="#dddddd" d="M12 7h1v1h-1v-1z"></path> +<path fill="#dddddd" d="M13 6h1v1h-1v-1z"></path> +<path fill="#dddddd" d="M12 9h1v1h-1v-1z"></path> +<path fill="#dddddd" d="M13 8h1v1h-1v-1z"></path> +<path fill="#dddddd" d="M12 11h1v1h-1v-1z"></path> +<path fill="#dddddd" d="M13 10h1v1h-1v-1z"></path> +<path fill="#dddddd" d="M12 13h1v1h-1v-1z"></path> +<path fill="#dddddd" d="M13 12h1v1h-1v-1z"></path> +<path fill="#dddddd" d="M2 3h1v1h-1v-1z"></path> +<path fill="#dddddd" d="M3 4h1v1h-1v-1z"></path> +<path fill="#dddddd" d="M2 5h1v1h-1v-1z"></path> +<path fill="#dddddd" d="M3 6h1v1h-1v-1z"></path> +<path fill="#dddddd" d="M2 7h1v1h-1v-1z"></path> +<path fill="#dddddd" d="M3 8h1v1h-1v-1z"></path> +<path fill="#dddddd" d="M2 9h1v1h-1v-1z"></path> +<path fill="#dddddd" d="M3 10h1v1h-1v-1z"></path> +<path fill="#dddddd" d="M2 11h1v1h-1v-1z"></path> +<path fill="#dddddd" d="M2 13h1v1h-1v-1z"></path> +<path fill="#dddddd" d="M3 12h1v1h-1v-1z"></path> +<path fill="#dddddd" d="M4 11h1v1h-1v-1z"></path> +<path fill="#dddddd" d="M4 13h1v1h-1v-1z"></path> +<path fill="#dddddd" d="M5 12h1v1h-1v-1z"></path> +<path fill="#dddddd" d="M6 13h1v1h-1v-1z"></path> +<path fill="#dddddd" d="M7 12h1v1h-1v-1z"></path> +<path fill="#dddddd" d="M9 12h1v1h-1v-1z"></path> +<path fill="#dddddd" d="M8 13h1v1h-1v-1z"></path> +<path fill="#dddddd" d="M11 12h1v1h-1v-1z"></path> +<path fill="#dddddd" d="M10 13h1v1h-1v-1z"></path> +</svg> diff --git a/Samples/CrowIDE/icons/toolbox/picture-file.svg b/Samples/CrowIDE/icons/toolbox/picture-file.svg new file mode 100644 index 00000000..c45a6ad2 --- /dev/null +++ b/Samples/CrowIDE/icons/toolbox/picture-file.svg @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"> +<path fill="#dddddd" d="M10 0h-8v16h12v-12l-4-4zM9 5h4v10h-10v-14h6v4zM10 4v-3l3 3h-3z"></path> +<path fill="#dddddd" d="M4 11.5v2.5h8v-1.7c0 0 0.1-1.3-1.3-1.5-1.3-0.2-1.5 0.4-2.5 0.5-0.8 0-0.6-1.3-2.2-1.3-1.2 0-2 1.5-2 1.5z"></path> +<path fill="#dddddd" d="M12 8.5c0 0.828-0.672 1.5-1.5 1.5s-1.5-0.672-1.5-1.5c0-0.828 0.672-1.5 1.5-1.5s1.5 0.672 1.5 1.5z"></path> +</svg> diff --git a/Samples/CrowIDE/icons/toolbox/pointer.svg b/Samples/CrowIDE/icons/toolbox/pointer.svg new file mode 100644 index 00000000..605c0e28 --- /dev/null +++ b/Samples/CrowIDE/icons/toolbox/pointer.svg @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"> +<path fill="#dddddd" d="M11.6 5c-0.2 0-0.5 0-0.6 0 0-0.2-0.2-0.6-0.4-0.8s-0.6-0.4-1.1-0.4c-0.2 0-0.4 0-0.6 0.1-0.1-0.2-0.2-0.3-0.3-0.5-0.2-0.2-0.5-0.4-1.1-0.4-0.2 0-0.4 0-0.5 0.1v-1.7c0-0.6-0.4-1.4-1.4-1.4-0.4 0-0.8 0.2-1.1 0.4-0.5 0.6-0.5 1.4-0.5 1.4v4.3c-0.6 0.1-1.1 0.3-1.4 0.6-0.6 0.7-0.6 1.6-0.6 2.8 0 0.2 0 0.5 0 0.7 0 1.4 0.7 2.1 1.4 2.8l0.3 0.4c1.3 1.2 2.4 1.6 5.1 1.6 2.9 0 4.2-1.6 4.2-5.1v-2.5c0-0.7-0.2-2.1-1.4-2.4zM12 7.4v2.6c0 3.4-1.3 4.1-3.2 4.1-2.4 0-3.3-0.3-4.3-1.3-0.1-0.1-0.2-0.2-0.4-0.4-0.7-0.8-1.1-1.2-1.1-2.2 0-0.2 0-0.5 0-0.7 0-1 0-1.7 0.3-2.1 0.1-0.1 0.4-0.2 0.7-0.2v0.5l-0.3 1.5c0 0.1 0 0.1 0.1 0.2s0.2 0 0.2 0l1-1.2c0-0.1 0-0.2 0-0.2v-6.2c0-0.1 0-0.5 0.2-0.7 0.1 0 0.2-0.1 0.4-0.1 0.3 0 0.4 0.3 0.4 0.4v3.1c0 0 0 0 0 0v1.2c0 0.3 0.2 0.6 0.5 0.6s0.5-0.3 0.5-0.5v-1.3c0 0 0 0 0 0 0-0.1 0.1-0.5 0.5-0.5 0.3 0 0.5 0.1 0.5 0.4v1.3c0 0.3 0.2 0.6 0.5 0.6s0.5-0.3 0.5-0.5v-0.7c0-0.1 0.1-0.3 0.5-0.3 0.2 0 0.3 0.1 0.3 0.1 0.2 0.1 0.2 0.4 0.2 0.4v0.8c0 0.3 0.2 0.5 0.4 0.5 0.3 0 0.5-0.1 0.5-0.4 0-0.1 0.1-0.2 0.2-0.3 0 0 0.1 0 0.2 0 0.6 0.2 0.7 1.2 0.7 1.5 0-0.1 0-0.1 0 0z"></path> +</svg> diff --git a/Samples/CrowIDE/icons/toolbox/puzzle-piece.svg b/Samples/CrowIDE/icons/toolbox/puzzle-piece.svg new file mode 100644 index 00000000..b09c47e4 --- /dev/null +++ b/Samples/CrowIDE/icons/toolbox/puzzle-piece.svg @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"> +<path fill="#dddddd" d="M14.9 0.9c-1.1-1-2.5-1.3-3.1-0.4-0.7 1.1 0.5 1.7-0.3 2.5-0.5 0.6-2-0.8-2-0.8l-0.8-0.8-1.4 1.4c-0.6 0.7-2.1 1.5-2.6 1.1-0.7-0.6 0.1-1.8-0.5-2.6-0.7-1-2.1-0.8-3 0.3-1 1.1-1.4 2.4-0.5 3 1.1 0.7 1.9-0.3 2.7 0.5 0.4 0.4-0.2 1.7-0.5 2.1l-2.3 2.3 6.5 6.5 1.7-1.7c0.7-0.7 1.5-2 1.1-2.4-0.6-0.7-1.7 0.1-2.5-0.4-1-0.7-0.8-2 0.3-3s2.5-1.3 3.1-0.4c0.7 1.1-0.4 1.8 0.4 2.6 0.4 0.4 1.6-0.2 2-0.6l2.1-2.1-1.1-1.1c-0.6-0.6-1.9-2-1.4-2.5 0.6-0.7 1.7 0.2 2.5-0.4 0.9-0.8 0.6-2.1-0.4-3.1z"></path> +</svg> diff --git a/Samples/CrowIDE/icons/toolbox/refresh-file.svg b/Samples/CrowIDE/icons/toolbox/refresh-file.svg new file mode 100644 index 00000000..248e4203 --- /dev/null +++ b/Samples/CrowIDE/icons/toolbox/refresh-file.svg @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"> +<path fill="#dddddd" d="M10 0h-8v16h12v-12l-4-4zM13 15h-10v-14h6v4h4v10zM10 4v-3l3 3h-3z"></path> +<path fill="#dddddd" d="M4.7 7.7l-0.7-0.7v3h3l-1.2-1.2c0.4-0.8 1.3-1.3 2.2-1.3 1.4 0 2.5 1.1 2.5 2.5h1.5c0-2.2-1.8-4-4-4-1.3 0-2.5 0.7-3.3 1.7z"></path> +<path fill="#dddddd" d="M9.8 11.8c-0.5 0.5-1.1 0.8-1.8 0.7-1 0-1.9-0.6-2.3-1.5h-1.6c0.4 1.7 2 3 3.8 3 1.1 0 2.1-0.5 2.8-1.2l1.3 1.2v-3h-3l0.8 0.8z"></path> +</svg> diff --git a/Samples/CrowIDE/icons/toolbox/sliders.svg b/Samples/CrowIDE/icons/toolbox/sliders.svg new file mode 100644 index 00000000..81f72d18 --- /dev/null +++ b/Samples/CrowIDE/icons/toolbox/sliders.svg @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"> +<path fill="#dddddd" d="M7 0h2v3h-2v-3z"></path> +<path fill="#dddddd" d="M6 4v3h1v9h2v-9h1v-3z"></path> +<path fill="#dddddd" d="M2 0h2v8h-2v-8z"></path> +<path fill="#dddddd" d="M1 9v3h1v4h2v-4h1v-3z"></path> +<path fill="#dddddd" d="M12 0h2v10h-2v-10z"></path> +<path fill="#dddddd" d="M11 11v3h1v2h2v-2h1v-3z"></path> +</svg> diff --git a/Samples/CrowIDE/icons/toolbox/split-browser-1.svg b/Samples/CrowIDE/icons/toolbox/split-browser-1.svg new file mode 100644 index 00000000..4dfd93a3 --- /dev/null +++ b/Samples/CrowIDE/icons/toolbox/split-browser-1.svg @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"> +<path fill="#dddddd" d="M0 15h15v-13h-15v13zM13 3h1v1h-1v-1zM14 14h-13v-4h13v4zM14 9h-13v-4h13v4z"></path> +</svg> diff --git a/Samples/CrowIDE/icons/toolbox/table.svg b/Samples/CrowIDE/icons/toolbox/table.svg new file mode 100644 index 00000000..0b421224 --- /dev/null +++ b/Samples/CrowIDE/icons/toolbox/table.svg @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"> +<path fill="#dddddd" d="M0 1v15h16v-15h-16zM5 15h-4v-2h4v2zM5 12h-4v-2h4v2zM5 9h-4v-2h4v2zM5 6h-4v-2h4v2zM10 15h-4v-2h4v2zM10 12h-4v-2h4v2zM10 9h-4v-2h4v2zM10 6h-4v-2h4v2zM15 15h-4v-2h4v2zM15 12h-4v-2h4v2zM15 9h-4v-2h4v2zM15 6h-4v-2h4v2z"></path> +</svg> diff --git a/Samples/CrowIDE/icons/toolbox/tasks.svg b/Samples/CrowIDE/icons/toolbox/tasks.svg new file mode 100644 index 00000000..8793c884 --- /dev/null +++ b/Samples/CrowIDE/icons/toolbox/tasks.svg @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"> +<path fill="#dddddd" d="M6 0h10v4h-10v-4z"></path> +<path fill="#dddddd" d="M6 6h10v4h-10v-4z"></path> +<path fill="#dddddd" d="M6 12h10v4h-10v-4z"></path> +<path fill="#dddddd" d="M3 1v2h-2v-2h2zM4 0h-4v4h4v-4z"></path> +<path fill="#dddddd" d="M3 13v2h-2v-2h2zM4 12h-4v4h4v-4z"></path> +<path fill="#dddddd" d="M5.3 5.9l-0.6-0.8-0.9 0.9h-3.8v4h4v-2.8l1.3-1.3zM2.7 7l-0.7 0.7-0.8-0.7h1.5zM1 8.2l0.9 0.8h-0.9v-0.8zM3 9h-0.9l0.9-0.9v0.9z"></path> +</svg> diff --git a/Samples/CrowIDE/icons/toolbox/warning.svg b/Samples/CrowIDE/icons/toolbox/warning.svg new file mode 100644 index 00000000..f5a25735 --- /dev/null +++ b/Samples/CrowIDE/icons/toolbox/warning.svg @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"> +<path fill="#dddddd" d="M8 1l-8 14h16l-8-14zM8 13c-0.6 0-1-0.4-1-1s0.4-1 1-1 1 0.4 1 1c0 0.6-0.4 1-1 1zM7 10v-4h2v4h-2z"></path> +</svg> diff --git a/Samples/CrowIDE/icons/tools.svg b/Samples/CrowIDE/icons/tools.svg new file mode 100644 index 00000000..5326f199 --- /dev/null +++ b/Samples/CrowIDE/icons/tools.svg @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"> +<path fill="#FFFFFF" d="M10.3 8.2l-0.9 0.9 0.9 0.9-1.2 1.2 4.3 4.3c0.6 0.6 1.5 0.6 2.1 0s0.6-1.5 0-2.1l-5.2-5.2zM14.2 15c-0.4 0-0.8-0.3-0.8-0.8 0-0.4 0.3-0.8 0.8-0.8s0.8 0.3 0.8 0.8c0 0.5-0.3 0.8-0.8 0.8z"></path> +<path fill="#FFFFFF" d="M3.6 8l0.9-0.6 1.5-1.7 0.9 0.9 0.9-0.9-0.1-0.1c0.2-0.5 0.3-1 0.3-1.6 0-2.2-1.8-4-4-4-0.6 0-1.1 0.1-1.6 0.3l2.9 2.9-2.1 2.1-2.9-2.9c-0.2 0.5-0.3 1-0.3 1.6 0 2.1 1.6 3.7 3.6 4z"></path> +<path fill="#FFFFFF" d="M8 10.8l0.9-0.8-0.9-0.9 5.7-5.7 1.2-0.4 1.1-2.2-0.7-0.7-2.3 1-0.5 1.2-5.6 5.7-0.9-0.9-0.8 0.9c0 0 0.8 0.6-0.1 1.5-0.5 0.5-1.3-0.1-2.8 1.4-0.5 0.5-2.1 2.1-2.1 2.1s-0.6 1 0.6 2.2 2.2 0.6 2.2 0.6 1.6-1.6 2.1-2.1c1.4-1.4 0.9-2.3 1.3-2.7 0.9-0.9 1.6-0.2 1.6-0.2zM4.9 10.4l0.7 0.7-3.8 3.8-0.7-0.7z"></path> +</svg> diff --git a/Samples/CrowIDE/icons/trash.svg b/Samples/CrowIDE/icons/trash.svg new file mode 100644 index 00000000..e73a5e33 --- /dev/null +++ b/Samples/CrowIDE/icons/trash.svg @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"> +<path fill="#dddddd" d="M2 5v1h1v9c0 0 1.1 1 4.5 1s4.5-1 4.5-1v-9h1v-1h-11zM6 14h-1v-7h1v7zM8 14h-1v-7h1v7zM10 14h-1v-7h1v7z"></path> +<path fill="#dddddd" d="M12 3c0 0 0-0.5-2-0.8v-0.7c0-0.8-0.7-1.5-1.5-1.5h-2c-0.8 0-1.5 0.7-1.5 1.5v0.7c-1.6 0.3-2 0.8-2 0.8h-1v1h11v-1h-1zM6 1.5c0-0.3 0.2-0.5 0.5-0.5h2c0.2 0 0.5 0.2 0.5 0.5v0.6c0-0.1-0.9-0.1-1.5-0.1s-1.1 0-1.5 0.1v-0.6z"></path> +</svg> diff --git a/Samples/CrowIDE/icons/undo.svg b/Samples/CrowIDE/icons/undo.svg new file mode 100644 index 00000000..f78f1349 --- /dev/null +++ b/Samples/CrowIDE/icons/undo.svg @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"> +<path fill="#dddddd" d="M0 7.9l6-4.9v3c0 0 1.1 0 2 0 8 0 8 8 8 8s-1-4-7.8-4c-1.1 0-1.8 0-2.2 0v2.9l-6-5z"></path> +</svg> diff --git a/Samples/CrowIDE/icons/xml-file.svg b/Samples/CrowIDE/icons/xml-file.svg new file mode 100644 index 00000000..04204353 --- /dev/null +++ b/Samples/CrowIDE/icons/xml-file.svg @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"> +<path fill="#ffffff" d="M 10,0 H 2 V 16 H 14 V 4 Z"/> +<path fill="#444444" d="M10 0h-8v16h12v-12l-4-4zM9 5h4v10h-10v-14h6v4zM10 4v-3l3 3h-3z"/> +<text x="3" y="12" fill="darkorange" font-stretch="condensed" font-family="mono" font-size="6px" font-weight="bold"></></text> +</svg>
\ No newline at end of file diff --git a/Samples/CrowIDE/icons/zoom-in.svg b/Samples/CrowIDE/icons/zoom-in.svg new file mode 100644 index 00000000..60c41d14 --- /dev/null +++ b/Samples/CrowIDE/icons/zoom-in.svg @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"> +<path fill="#FFFFFF" d="M15.7 14.3l-4.2-4.2c-0.2-0.2-0.5-0.3-0.8-0.3 0.8-1 1.3-2.4 1.3-3.8 0-3.3-2.7-6-6-6s-6 2.7-6 6 2.7 6 6 6c1.4 0 2.8-0.5 3.8-1.4 0 0.3 0 0.6 0.3 0.8l4.2 4.2c0.2 0.2 0.5 0.3 0.7 0.3s0.5-0.1 0.7-0.3c0.4-0.3 0.4-0.9 0-1.3zM6 10.5c-2.5 0-4.5-2-4.5-4.5s2-4.5 4.5-4.5 4.5 2 4.5 4.5-2 4.5-4.5 4.5z"></path> +<path fill="#FFFFFF" d="M7 3h-2v2h-2v2h2v2h2v-2h2v-2h-2z"></path> +</svg> diff --git a/Samples/CrowIDE/icons/zoom-out.svg b/Samples/CrowIDE/icons/zoom-out.svg new file mode 100644 index 00000000..bd4eec3a --- /dev/null +++ b/Samples/CrowIDE/icons/zoom-out.svg @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16"> +<path fill="#FFFFFF" d="M15.7 14.3l-4.2-4.2c-0.2-0.2-0.5-0.3-0.8-0.3 0.8-1 1.3-2.4 1.3-3.8 0-3.3-2.7-6-6-6s-6 2.7-6 6 2.7 6 6 6c1.4 0 2.8-0.5 3.8-1.4 0 0.3 0 0.6 0.3 0.8l4.2 4.2c0.2 0.2 0.5 0.3 0.7 0.3s0.5-0.1 0.7-0.3c0.4-0.3 0.4-0.9 0-1.3zM6 10.5c-2.5 0-4.5-2-4.5-4.5s2-4.5 4.5-4.5 4.5 2 4.5 4.5-2 4.5-4.5 4.5z"></path> +<path fill="#FFFFFF" d="M3 5h6v2h-6v-2z"></path> +</svg> diff --git a/Samples/CrowIDE/images/save.svg b/Samples/CrowIDE/images/save.svg new file mode 100644 index 00000000..7bdc5518 --- /dev/null +++ b/Samples/CrowIDE/images/save.svg @@ -0,0 +1,3421 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> +<svg xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.0" width="128" height="128" id="svg2"> + <defs id="defs5"> + <linearGradient id="linearGradient28132"> + <stop id="stop28134" style="stop-color:#000000;stop-opacity:1" offset="0"/> + <stop id="stop28136" style="stop-color:#000000;stop-opacity:0" offset="1"/> + </linearGradient> + <linearGradient id="linearGradient28077"> + <stop id="stop28079" style="stop-color:#7a7a7a;stop-opacity:1" offset="0"/> + <stop id="stop28081" style="stop-color:#000000;stop-opacity:0.4909091" offset="1"/> + </linearGradient> + <linearGradient id="linearGradient28069"> + <stop id="stop28071" style="stop-color:#868385;stop-opacity:1" offset="0"/> + <stop id="stop28073" style="stop-color:#4a4949;stop-opacity:1" offset="1"/> + </linearGradient> + <linearGradient id="linearGradient28059"> + <stop id="stop28061" style="stop-color:#ffffff;stop-opacity:1" offset="0"/> + <stop id="stop28063" style="stop-color:#000000;stop-opacity:1" offset="1"/> + </linearGradient> + <linearGradient id="linearGradient28049"> + <stop id="stop28051" style="stop-color:#000000;stop-opacity:1" offset="0"/> + <stop id="stop28053" style="stop-color:#000000;stop-opacity:0" offset="1"/> + </linearGradient> + <linearGradient id="linearGradient27983"> + <stop id="stop27985" style="stop-color:#000000;stop-opacity:1" offset="0"/> + <stop id="stop27987" style="stop-color:#000000;stop-opacity:0" offset="1"/> + </linearGradient> + <linearGradient id="linearGradient27973"> + <stop id="stop27975" style="stop-color:#ffffff;stop-opacity:1" offset="0"/> + <stop id="stop27977" style="stop-color:#ffffff;stop-opacity:0" offset="1"/> + </linearGradient> + <linearGradient id="linearGradient27933"> + <stop id="stop27935" style="stop-color:#ffffff;stop-opacity:1" offset="0"/> + <stop id="stop27937" style="stop-color:#ffffff;stop-opacity:0" offset="1"/> + </linearGradient> + <linearGradient id="linearGradient17395"> + <stop id="stop17397" style="stop-color:#ffffff;stop-opacity:1" offset="0"/> + <stop id="stop17399" style="stop-color:#ffffff;stop-opacity:0.80000001" offset="1"/> + </linearGradient> + <linearGradient id="linearGradient17383"> + <stop id="stop17385" style="stop-color:#202020;stop-opacity:1" offset="0"/> + <stop id="stop17387" style="stop-color:#202020;stop-opacity:0.76363635" offset="1"/> + </linearGradient> + <linearGradient id="linearGradient3275"> + <stop id="stop3277" style="stop-color:#000000;stop-opacity:1" offset="0"/> + <stop id="stop3279" style="stop-color:#000000;stop-opacity:0" offset="1"/> + </linearGradient> + <linearGradient id="linearGradient3215"> + <stop id="stop3217" style="stop-color:#8a8a8a;stop-opacity:1" offset="0"/> + <stop id="stop3219" style="stop-color:#c6c6c6;stop-opacity:1" offset="1"/> + </linearGradient> + <linearGradient id="linearGradient3136"> + <stop id="stop3138" style="stop-color:#ffffff;stop-opacity:1" offset="0"/> + <stop id="stop3140" style="stop-color:#ffffff;stop-opacity:0" offset="1"/> + </linearGradient> + <linearGradient id="linearGradient3088"> + <stop id="stop3090" style="stop-color:#ffffff;stop-opacity:1" offset="0"/> + <stop id="stop3092" style="stop-color:#ffffff;stop-opacity:0" offset="1"/> + </linearGradient> + <linearGradient id="linearGradient3033"> + <stop id="stop3035" style="stop-color:#ffffff;stop-opacity:1" offset="0"/> + <stop id="stop3037" style="stop-color:#ffffff;stop-opacity:0" offset="1"/> + </linearGradient> + <linearGradient id="linearGradient3706"> + <stop id="stop3708" style="stop-color:#000000;stop-opacity:1" offset="0"/> + <stop id="stop3710" style="stop-color:#000000;stop-opacity:0" offset="1"/> + </linearGradient> + <linearGradient id="linearGradient3577"> + <stop id="stop3579" style="stop-color:#000000;stop-opacity:1" offset="0"/> + <stop id="stop3581" style="stop-color:#000000;stop-opacity:0" offset="1"/> + </linearGradient> + <linearGradient id="linearGradient3468"> + <stop id="stop3470" style="stop-color:#ffffff;stop-opacity:1" offset="0"/> + <stop id="stop3472" style="stop-color:#ffffff;stop-opacity:0" offset="1"/> + </linearGradient> + <linearGradient id="linearGradient3446"> + <stop id="stop3448" style="stop-color:#ffffff;stop-opacity:1" offset="0"/> + <stop id="stop3451" style="stop-color:#ffffff;stop-opacity:0" offset="1"/> + </linearGradient> + <linearGradient id="linearGradient3111"> + <stop id="stop3113" style="stop-color:#ffffff;stop-opacity:1" offset="0"/> + <stop id="stop3603" style="stop-color:#ffffff;stop-opacity:0.69818181" offset="0.5"/> + <stop id="stop3115" style="stop-color:#ffffff;stop-opacity:0" offset="1"/> + </linearGradient> + <linearGradient id="linearGradient3077"> + <stop id="stop3079" style="stop-color:#d0ced9;stop-opacity:1" offset="0"/> + <stop id="stop3087" style="stop-color:#ecf1f9;stop-opacity:1" offset="0.25"/> + <stop id="stop3085" style="stop-color:#ffffff;stop-opacity:1" offset="0.5"/> + <stop id="stop3081" style="stop-color:#c6d5e3;stop-opacity:1" offset="1"/> + </linearGradient> + <linearGradient id="linearGradient3317"> + <stop id="stop3319" style="stop-color:#000000;stop-opacity:1" offset="0"/> + <stop id="stop3321" style="stop-color:#000000;stop-opacity:0" offset="1"/> + </linearGradient> + <linearGradient id="linearGradient3174"> + <stop id="stop3176" style="stop-color:#2e2a2b;stop-opacity:1" offset="0"/> + <stop id="stop3182" style="stop-color:#4c494a;stop-opacity:1" offset="0.33497536"/> + <stop id="stop3214" style="stop-color:#5b595a;stop-opacity:1" offset="0.66748768"/> + <stop id="stop3178" style="stop-color:#6b696a;stop-opacity:1" offset="1"/> + </linearGradient> + <linearGradient x1="-97.742668" y1="1937.9885" x2="-97.742668" y2="1895.421" id="linearGradient3250" xlink:href="#linearGradient3174" gradientUnits="userSpaceOnUse" gradientTransform="matrix(2.5599786,0,0,2.5827101,317.24891,-4887.3657)"/> + <filter id="filter3444" height="2.5930088" y="-0.79650438" width="1.1419513" x="-0.070975639"> + <feGaussianBlur id="feGaussianBlur3446" stdDeviation="2.9868914" inkscape:collect="always"/> + </filter> + <clipPath id="clipPath3008"> + <rect width="78.12355" height="55.395592" rx="1.133948" ry="1.133948" x="24.680513" y="-68.245476" id="rect3010" style="opacity:0.265625;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.39999992;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + </clipPath> + <radialGradient cx="100.30548" cy="42.449028" r="38" fx="100.30548" fy="42.449028" id="radialGradient3083" xlink:href="#linearGradient3077" gradientUnits="userSpaceOnUse" gradientTransform="matrix(4.5705286,7.2649243e-7,-2.9846211e-7,1.8569392,-416.60853,-84.720552)"/> + <filter id="filter3105"> + <feGaussianBlur id="feGaussianBlur3107" stdDeviation="0.66759571" inkscape:collect="always"/> + </filter> + <radialGradient cx="64.801826" cy="63.781319" r="34.041004" fx="64.801826" fy="63.781319" id="radialGradient3117" xlink:href="#linearGradient3111" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1.1398365,0,0,1.0706638e-2,-9.061664,63.098436)"/> + <clipPath id="clipPath3215"> + <path d="M 11.375,-167.68125 C 8.4215521,-167.68125 8,-167.31718 8,-164.3375 L 8,-163.55625 C 8,-166.53593 8.4215521,-166.86875 11.375,-166.86875 L 116.625,-166.86875 C 119.57845,-166.86875 120,-166.53593 120,-163.55625 L 120,-164.3375 C 120,-167.31718 119.57845,-167.68125 116.625,-167.68125 L 11.375,-167.68125 z" id="path3217" style="opacity:1;fill:url(#linearGradient3219);fill-opacity:1;stroke:none;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.08779998;stroke-opacity:1"/> + </clipPath> + <linearGradient x1="-98.926186" y1="1892.9656" x2="-98.926186" y2="1897.0332" id="linearGradient3219" xlink:href="#linearGradient3317" gradientUnits="userSpaceOnUse" gradientTransform="matrix(2.5599786,0,0,2.5827101,317.24891,-5063.043)"/> + <filter height="1.4537807" y="-0.22689034" width="1.0142819" x="-0.0071409685" id="filter3371"> + <feGaussianBlur id="feGaussianBlur3373" stdDeviation="0.33324519" inkscape:collect="always"/> + </filter> + <filter id="filter3417"> + <feGaussianBlur id="feGaussianBlur3419" stdDeviation="0.11145486" inkscape:collect="always"/> + </filter> + <linearGradient x1="69.913269" y1="-96.5" x2="70.020454" y2="-67.843079" id="linearGradient3453" xlink:href="#linearGradient3446" gradientUnits="userSpaceOnUse" gradientTransform="translate(5.89968e-2,131.40729)"/> + <linearGradient x1="107.06239" y1="-26.262714" x2="107.06239" y2="134.55173" id="linearGradient3474" xlink:href="#linearGradient3468" gradientUnits="userSpaceOnUse" gradientTransform="translate(9.4,0.6)"/> + <filter height="1.3748291" y="-0.1874145" width="1.0467155" x="-0.023357728" id="filter3565"> + <feGaussianBlur id="feGaussianBlur3567" stdDeviation="1.0149838" inkscape:collect="always"/> + </filter> + <radialGradient cx="28.481363" cy="164.13387" r="52.144646" fx="28.481363" fy="164.13387" id="radialGradient3583" xlink:href="#linearGradient3577" gradientUnits="userSpaceOnUse" gradientTransform="matrix(5.4915792,-0.1150427,2.6103208e-3,0.1246041,-128.35474,104.82482)"/> + <filter height="1.2405112" y="-0.12025558" width="1.1380129" x="-0.069006473" id="filter3659"> + <feGaussianBlur id="feGaussianBlur3661" stdDeviation="1.9228365" inkscape:collect="always"/> + </filter> + <radialGradient cx="64.801826" cy="63.781319" r="34.041004" fx="64.801826" fy="63.781319" id="radialGradient3692" xlink:href="#linearGradient3111" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1.0552043,0,0,2.2032141e-2,0.5328457,76.944704)"/> + <radialGradient cx="84" cy="91.983192" r="32" fx="84" fy="91.983192" id="radialGradient3704" xlink:href="#linearGradient3468" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1,0,0,0.6210279,0,37.87587)"/> + <linearGradient x1="47.608696" y1="104.35009" x2="47.608696" y2="176.35008" id="linearGradient3712" xlink:href="#linearGradient3706" gradientUnits="userSpaceOnUse"/> + <filter height="2.2481999" y="-0.62409997" width="1.0121166" x="-0.0060582431" id="filter3726"> + <feGaussianBlur id="feGaussianBlur3728" stdDeviation="0.18955201" inkscape:collect="always"/> + </filter> + <radialGradient cx="118.16644" cy="9.119606" r="1.284445" fx="118.16644" fy="9.119606" id="radialGradient3039" xlink:href="#linearGradient3033" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1.2088257,0.9583181,-1.4021168,1.7686352,-11.9962,-120.41039)"/> + <filter id="filter3077"> + <feGaussianBlur id="feGaussianBlur3079" stdDeviation="0.10453397" inkscape:collect="always"/> + </filter> + <radialGradient cx="118.16644" cy="9.119606" r="1.284445" fx="118.16644" fy="9.119606" id="radialGradient3084" xlink:href="#linearGradient3033" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1.2088257,0.9583181,-1.4021168,1.7686352,-11.0962,-120.71039)"/> + <radialGradient cx="104.09375" cy="9" r="0.46875" fx="104.09375" fy="9" id="radialGradient3094" xlink:href="#linearGradient3088" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1,0,0,0.8,-0.4640388,1.9104855)"/> + <filter id="filter3120"> + <feGaussianBlur id="feGaussianBlur3122" stdDeviation="0.025961538" inkscape:collect="always"/> + </filter> + <radialGradient cx="104.09375" cy="9" r="0.46875" fx="104.09375" fy="9" id="radialGradient3126" xlink:href="#linearGradient3088" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1,0,0,0.8,-80.464039,1.9104855)"/> + <linearGradient x1="-37.195274" y1="42.336197" x2="-12.625" y2="106.7981" id="linearGradient3142" xlink:href="#linearGradient3136" gradientUnits="userSpaceOnUse" gradientTransform="translate(126.8,0)"/> + <filter id="filter3192"> + <feGaussianBlur id="feGaussianBlur3194" stdDeviation="0.0231875" inkscape:collect="always"/> + </filter> + <clipPath id="clipPath3199"> + <path d="M 18.189713,132.42089 C 16.770505,132.42089 15.627213,133.56419 15.627213,134.98339 L 15.627213,172.16667 L 87.627215,172.16667 L 87.627215,134.98339 C 87.627215,133.56419 86.483925,132.42089 85.064715,132.42089 L 18.189713,132.42089 z" id="path3201" style="fill:#000000;fill-opacity:0.12831858;stroke:none;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + </clipPath> + <linearGradient x1="64" y1="120.0697" x2="56" y2="96.315643" id="linearGradient3221" xlink:href="#linearGradient3215" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1,0,0,1.0103538,0,-1.3128784)"/> + <filter height="1.1857692" y="-0.092884615" width="1.2476923" x="-0.12384615" id="filter3271"> + <feGaussianBlur id="feGaussianBlur3273" stdDeviation="1.2384615" inkscape:collect="always"/> + </filter> + <linearGradient x1="68" y1="120" x2="36" y2="84" id="linearGradient3281" xlink:href="#linearGradient3275" gradientUnits="userSpaceOnUse"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient17389" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-206.04831,98.650809)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient17391" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-212.86565,81.869097)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient17393" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-242.65627,76.131701)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient17401" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-218.35341,75.348463)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient17403" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-188.98917,83.339266)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient17405" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-239.98299,64.593236)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient17927" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-169.06714,86.432831)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient17929" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-217.83916,54.919294)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient17931" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-229.88342,62.800233)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient17933" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-256.71623,79.165529)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient17935" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-212.84517,54.21146)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient17937" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-187.53241,97.806917)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient17939" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-200.24534,81.048567)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient17941" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-178.70361,55.279303)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient17943" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-185.6284,97.067631)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient17945" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-199.34854,61.711899)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient17947" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-210.66265,52.483914)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient17949" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-248.59014,59.510188)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient17951" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-194.46624,60.173404)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient17953" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-174.87629,58.336657)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient17955" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-246.58009,67.154481)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient17957" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-234.73496,62.400106)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient17959" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-233.35161,73.551175)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient17961" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-199.89594,66.58864)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient17963" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-204.13384,84.814934)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient17965" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-181.91271,77.941165)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient17967" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-226.20449,51.17675)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient17969" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-253.06524,69.064619)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient17971" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-224.52359,92.856996)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient17973" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-225.43503,94.662593)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient17975" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-229.85757,64.997276)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient17977" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-201.75931,67.251671)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient17979" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-216.65593,78.369252)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient17981" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-235.62706,51.493137)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient17983" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-219.93824,68.322369)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient17985" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-245.53268,55.235233)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient17987" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-218.21066,71.47352)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient17989" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-230.5919,56.467526)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient17991" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-243.71564,74.930868)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient17993" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-179.4736,53.559868)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient17995" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-195.55832,61.067038)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient17997" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-243.31207,66.681291)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient17999" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-179.10403,67.750684)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient18001" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-181.33468,72.447586)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient18003" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-194.26012,87.91266)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient18005" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-236.40056,82.048109)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient18007" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-250.0213,62.520599)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient18009" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-180.36835,56.244802)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient18011" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-191.08718,57.926553)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient18013" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-223.79114,57.080862)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient18015" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-190.03918,48.584498)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient18017" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-192.6183,63.700535)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient18019" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-197.93757,95.476082)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient18021" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-205.02547,77.574321)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient18023" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-206.21364,48.418007)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient18025" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-240.70823,82.23261)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient18027" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-204.15255,92.772183)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient18029" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-183.65169,79.498937)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient18031" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-189.49456,78.16038)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient18033" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-237.67608,84.861682)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient18035" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-232.26899,52.027937)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient18037" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-253.45628,86.592803)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient18039" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-224.00836,90.316584)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient18041" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-171.89546,82.204785)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient18043" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-181.56485,49.076767)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient18045" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-230.43699,83.788635)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient18047" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-235.40557,82.936981)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient18049" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-217.93802,93.778176)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient18051" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-228.19068,89.201266)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient18053" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-199.13798,52.027419)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient18055" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-205.45937,84.129612)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient18057" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-249.56245,48.654412)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient18059" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-231.63529,65.193646)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient18061" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-219.98125,77.181558)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient18063" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-240.69936,101.45983)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient18065" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-199.28009,95.000749)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient18067" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-184.7688,89.934128)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient18069" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-184.73667,49.776232)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient18071" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-207.71492,87.099601)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient18073" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-182.40761,55.73509)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient18075" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-193.59256,76.129457)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient18077" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-231.50428,70.646216)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient18079" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-195.1711,87.719524)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient18081" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-180.57429,74.288249)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient18083" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-206.27965,65.898402)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient18085" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-227.29621,93.400413)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient18087" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-230.27056,70.316108)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient18089" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-195.20777,48.563152)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient18091" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-254.39529,83.572253)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient18093" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-211.81164,57.257035)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient18095" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-208.89446,53.860035)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient18097" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-193.88926,94.901194)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient18099" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-252.34424,94.619712)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient18101" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-252.08388,70.672254)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient18103" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-212.9536,55.272771)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient18105" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-239.64822,51.584368)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient18107" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-196.34619,56.086318)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient18109" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-193.27079,87.813541)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient18111" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-222.02855,64.950753)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient18113" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-212.72777,47.537589)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient18115" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-175.50256,86.101458)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient18117" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-252.31555,49.887473)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient18119" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-259.22916,94.031526)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient18121" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-180.47311,67.000704)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient18123" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-185.55203,62.073911)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient18125" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-247.18659,61.00993)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient18127" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-175.54179,61.764079)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient18129" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-211.42695,88.75579)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient18131" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-228.73423,88.006441)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient18133" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-216.64361,58.908237)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient18135" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-254.96634,55.970755)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient18137" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-249.50462,92.061954)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient18139" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-184.43236,57.658044)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient18141" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-234.54487,89.80346)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient18143" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-226.63109,94.239208)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient18145" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-204.39712,73.965174)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient18147" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-236.64656,71.246105)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient18149" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-194.26639,58.537091)"/> + <clipPath id="clipPath25065"> + <path d="M -283.36245,66.003757 C -284.5397,66.003757 -285.48745,66.951507 -285.48745,68.128757 L -285.48745,105.94751 L -230.0812,105.94751 L -230.0812,68.128757 C -230.0812,66.951507 -231.02895,66.003757 -232.2062,66.003757 L -283.36245,66.003757 z M -277.1437,69.347507 L -263.0187,69.347507 C -262.49915,69.347507 -262.0812,69.765457 -262.0812,70.285007 L -262.0812,96.410007 C -262.0812,96.929557 -262.49915,97.347507 -263.0187,97.347507 L -277.1437,97.347507 C -277.66325,97.347507 -278.0812,96.929557 -278.0812,96.410007 L -278.0812,70.285007 C -278.0812,69.76546 -277.66325,69.347507 -277.1437,69.347507 z" id="path25067" style="opacity:1;fill:url(#linearGradient25069);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + </clipPath> + <linearGradient x1="52" y1="112" x2="52" y2="80" id="linearGradient25069" xlink:href="#linearGradient3215" gradientUnits="userSpaceOnUse" gradientTransform="translate(-318.0812,-14.652496)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25071" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-229.38211,96.058611)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25073" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-187.17339,68.78127)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25075" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-196.16644,100.32021)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25077" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-192.0724,74.753533)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25079" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-222.8528,53.860792)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25081" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-180.06483,97.785398)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25083" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-197.80022,50.494008)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25085" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-243.04164,84.576711)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25087" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-225.52819,76.538651)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25089" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-205.65959,57.539347)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25091" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-245.86203,66.719957)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25093" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-219.8179,50.386062)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25095" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-185.05855,74.425415)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25097" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-220.12915,42.23811)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25099" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-249.66068,93.444381)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25101" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-201.70143,51.859788)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25103" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-211.98631,53.268073)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25105" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-255.37167,89.887836)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25107" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-193.74685,64.326802)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25109" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-193.8959,81.54662)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25111" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-204.29278,47.198913)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25113" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-183.711,91.667267)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25115" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-247.69501,98.782896)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25117" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-236.34776,95.10665)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25119" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-226.74429,53.915931)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25121" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-226.55698,53.16276)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25123" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-220.95662,47.486179)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25125" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-247.35779,58.642553)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25127" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-177.23431,45.441149)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25129" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-229.86474,74.954131)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25131" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-209.10867,97.34097)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25133" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-236.25958,46.78729)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25135" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-205.81379,94.9744)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25137" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-187.94383,78.792993)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25139" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-214.57868,84.007476)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25141" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-230.90486,92.071216)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25143" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-238.00999,71.757639)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25145" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-243.61023,87.451829)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25147" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-224.28284,81.593319)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25149" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-179.0861,90.515961)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25151" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-221.78528,75.738299)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25153" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-255.05801,67.184614)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25155" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-213.88883,54.629747)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25157" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-254.78443,79.523126)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25159" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-243.08719,80.115126)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25161" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-253.49501,50.253965)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25163" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-202.25412,62.696544)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25165" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-232.45523,79.406263)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25167" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-199.41942,54.610361)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25169" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-177.5503,80.159362)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25171" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-223.74779,82.303681)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25173" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-216.25995,94.08089)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25175" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-222.0894,95.830634)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25177" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-255.55239,43.484478)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25179" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-255.02703,76.389395)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25181" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-245.01949,89.014582)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25183" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-176.5417,72.608952)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25185" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-226.02746,79.641932)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25187" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-245.10405,89.937584)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25189" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-223.01422,68.861646)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25191" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-250.34232,64.508541)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25193" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-238.1797,58.959427)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25195" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-194.06036,98.049416)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25197" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-229.04789,60.240488)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25199" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-179.66368,52.21739)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25201" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-249.81342,73.677919)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25203" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-258.27374,88.937138)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25205" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-235.28503,78.626899)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25207" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-216.77725,94.296605)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25209" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-252.03812,59.050813)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25211" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-227.04593,71.103629)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25213" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-177.33961,87.338103)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25215" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-203.90676,91.613815)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25217" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-226.58716,82.306123)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25219" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-249.97587,82.888964)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25221" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-218.63853,48.592378)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25223" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-223.17805,82.032511)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25225" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-244.34891,75.185611)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25227" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-178.37818,58.417957)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25229" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-243.67765,55.742352)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25231" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-187.4097,62.833675)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25233" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-234.35607,79.408455)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25235" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-209.7447,68.787837)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25237" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-195.94661,55.287673)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25239" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-178.17737,55.539508)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25241" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-244.80814,74.829959)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25243" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-173.23561,52.533322)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25245" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-225.80864,97.942226)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25247" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-226.04119,65.636136)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25249" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-214.16068,85.874483)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25251" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-195.2966,78.103089)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25253" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-210.2253,63.940556)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25255" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-248.24862,54.096019)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25257" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-183.54865,65.626587)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25259" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-226.0947,48.525423)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25261" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-242.75331,51.284339)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25263" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-230.13564,72.571239)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25265" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-227.09768,73.231703)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25267" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-179.70515,102.75344)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25269" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-187.38314,101.07037)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25271" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-211.05661,63.96836)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25273" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-220.94209,72.979553)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25275" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-222.86084,73.351613)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25277" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-220.08696,78.669612)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25279" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-216.46218,61.658045)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25281" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-190.01556,70.609094)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25283" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-175.60137,85.269477)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25285" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-182.85815,87.158859)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25287" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-223.93834,73.09266)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25289" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-247.51219,76.968198)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25291" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-235.62389,53.714891)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25293" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-187.81095,65.65574)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25295" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-191.1174,79.920498)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25297" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-222.31182,94.22334)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25299" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-212.82608,79.603251)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25301" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-194.74465,86.802406)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25303" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-248.19678,55.049012)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25305" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-182.27319,62.663747)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25307" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-230.00246,99.797565)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25309" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-245.49681,62.469135)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25311" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-218.01015,67.065542)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25313" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-219.2218,88.255847)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25315" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-238.62659,100.49906)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25317" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-221.88673,89.25093)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25319" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-228.76579,78.929875)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25321" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-196.1367,69.744078)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25323" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-229.16539,96.80496)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25325" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-194.50604,95.25611)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25327" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-187.0547,101.92665)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25329" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-249.95849,84.566088)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25331" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-178.91109,56.112126)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25333" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-235.89562,74.202974)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25335" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-230.53845,92.086584)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25337" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-200.9649,56.388537)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25339" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-222.0286,75.756506)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25341" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-245.89374,87.521709)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25343" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-180.8761,68.273979)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25345" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-258.26228,47.180868)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25347" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-179.91805,83.030339)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25349" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-253.90486,89.074686)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25351" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-198.74266,61.23647)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25353" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-195.07618,77.989104)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25355" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-219.99922,82.379721)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25357" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-209.25102,78.974994)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25359" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-229.92593,66.582197)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25361" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-191.87488,90.973141)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25363" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-192.14427,53.878791)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25365" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-238.63365,51.02227)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25367" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-200.63774,97.263187)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25369" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-222.66009,78.261234)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25371" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-243.12648,63.541393)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25373" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-231.44656,90.883629)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25375" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-174.10606,66.63253)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25377" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-207.24541,89.879804)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25379" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-219.75451,73.741383)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25381" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-201.04198,85.944877)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25383" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-247.59922,93.062511)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25385" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-239.33442,48.916147)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25387" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-216.42778,87.747819)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25389" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-211.87795,46.102846)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25391" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-241.76042,57.778219)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25393" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-182.28711,55.089283)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25395" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-186.00493,80.55014)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25397" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-250.76301,84.467965)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25399" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-240.09758,65.661454)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25401" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-189.60272,91.234744)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25403" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-179.19726,69.665254)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25405" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-243.48891,52.819633)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25407" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-192.66919,94.582064)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25409" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-181.80325,85.619929)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25411" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-186.57968,57.069825)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25413" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-225.58682,65.503385)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25415" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-202.14174,48.577251)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25417" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-186.67014,82.861539)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25419" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-189.77739,87.621414)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25421" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-194.58356,90.808782)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25423" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-226.22748,49.22511)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25425" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-179.88045,89.331479)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25427" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-200.08206,73.679835)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25429" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-191.92333,98.779166)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25431" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-215.80519,81.754991)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25433" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-186.48779,69.946426)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25435" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-223.6343,67.002042)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25437" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-182.36223,86.555487)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25439" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-194.98491,53.461282)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25441" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-188.63347,60.740732)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25443" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-237.49112,93.886238)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25445" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-218.0295,46.463347)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25447" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-174.39578,80.802235)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25449" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-187.25661,74.119006)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25451" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-244.82125,56.065217)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25453" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-249.21644,57.806455)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25455" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-250.1716,43.752105)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25457" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-192.03293,67.790618)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25459" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-232.11879,70.91176)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25461" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-191.04165,79.077835)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25463" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-199.39124,76.195736)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25465" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-208.90693,79.587908)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25467" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-208.22061,47.99961)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25469" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-199.39882,62.582495)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25471" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-223.67782,102.12202)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25473" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-179.47238,73.923449)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25475" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-215.9026,64.745496)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25477" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-217.81868,77.281724)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25479" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-208.12565,63.352013)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25481" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-248.33163,97.086604)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25483" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-204.76353,85.066104)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25485" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-189.89508,54.203911)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25487" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-208.54305,67.199939)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25489" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-258.27681,72.403163)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25491" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-201.02385,88.069533)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25493" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-197.76838,88.78592)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25495" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-175.32961,56.208973)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25497" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-184.37873,88.863579)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25499" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-198.97817,91.731797)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25501" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-199.47633,50.134554)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25503" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-254.90923,69.227596)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25505" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-182.88412,67.106252)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25507" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-245.40947,74.939971)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25509" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-184.4478,57.634612)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25511" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-182.51182,92.809539)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25513" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-176.80362,50.410836)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25515" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-221.02572,65.891626)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25517" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-221.66411,84.453632)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25519" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-180.32685,59.734527)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25521" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-233.87078,59.219945)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25523" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-183.10721,59.642293)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25525" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-218.87107,95.50353)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25527" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-196.33115,96.648737)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25529" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-241.96561,51.859787)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25531" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-174.44773,78.310106)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25533" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-256.55415,72.470695)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25535" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-250.81771,87.843085)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25537" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-233.59479,45.717249)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25539" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-203.54047,71.618169)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25541" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-187.89265,55.938324)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25543" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-221.50631,73.919704)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25545" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-220.76911,49.792033)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25547" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-220.2194,64.311435)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25549" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-222.45637,61.709902)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25551" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-251.49561,43.100523)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25553" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-222.64006,66.916448)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25555" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-215.83152,80.672031)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25557" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-219.79432,71.297676)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25559" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-239.925,100.26332)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25561" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-204.38018,63.48345)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25563" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-179.42613,90.671813)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25565" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-212.09766,43.021663)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25567" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-202.71879,94.060061)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25569" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-204.43313,100.4486)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25571" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-176.93287,84.710556)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25573" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-211.02746,65.316537)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25575" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-211.81323,83.133066)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25577" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-204.82007,62.36345)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25579" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-201.39029,94.105045)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25581" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-209.13426,58.170705)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25583" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-233.18474,75.349434)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25585" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-245.20203,48.845529)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25587" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-235.03562,55.758101)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25589" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-189.29811,52.259728)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25591" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-170.6151,77.618141)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25593" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-194.05919,91.908055)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25595" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-221.60563,78.470723)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25597" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-192.903,89.769672)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25599" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-192.24145,45.861223)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25601" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-178.53475,43.795964)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25603" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-173.77556,48.95078)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25605" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-187.2318,87.681518)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25607" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-212.58276,55.747252)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25609" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-207.78469,79.944157)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25611" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-231.86844,50.278288)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25613" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-196.91709,47.248874)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25615" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-177.95266,76.765426)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25617" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-249.94025,78.21498)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25619" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-203.68773,56.303855)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25621" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-179.42025,72.239281)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25623" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-194.77142,70.608768)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25625" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-227.62663,85.751899)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25627" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-186.42123,91.671771)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25629" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-186.10816,83.461099)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25631" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-225.671,50.936341)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25633" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-212.8437,76.600442)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25635" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-186.54453,86.838596)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25637" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-244.60334,44.432277)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25639" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-228.19863,77.925457)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25641" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-251.81916,94.114099)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25643" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-194.90901,62.531869)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25645" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-178.70763,73.774118)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25647" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-187.46635,77.168898)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25649" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-240.52156,69.213722)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25651" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-194.16458,66.538678)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25653" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-236.12069,62.394789)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25655" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-204.52721,90.396189)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25657" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-226.04492,54.904169)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25659" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-230.45617,81.829262)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25661" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-185.64673,71.55417)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25663" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-250.44925,62.441034)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25665" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-256.12965,56.246736)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25667" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-211.92528,53.299937)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25669" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-185.2057,95.742977)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25671" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-247.29121,86.984918)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25673" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-214.07831,65.831275)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25675" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-222.34249,98.138056)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25677" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-190.4937,75.046925)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25679" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-220.1355,90.678068)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25681" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-194.25941,94.504639)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25683" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-182.67862,58.096074)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25685" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-193.17987,88.526706)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25687" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-195.87076,85.072027)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25689" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-253.44615,99.129507)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25691" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-200.03251,52.847877)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25693" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-190.31058,78.926478)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25695" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-224.38729,76.478332)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25697" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-221.77608,48.930248)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25699" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-179.78137,65.224321)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25701" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-241.75188,76.831363)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25703" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-213.11667,99.752269)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25705" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-257.04074,83.076253)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25707" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-180.40607,61.643761)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25709" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-239.68623,81.637039)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25711" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-244.6966,82.312204)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25713" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-230.87099,85.200996)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25715" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-211.14815,80.964882)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25717" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-170.25356,56.87887)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25719" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-238.98002,90.303091)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25721" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-252.64409,62.66442)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25723" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-170.07904,58.945199)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25725" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-232.74295,74.927436)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25727" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-222.72421,60.663158)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25729" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-235.21981,74.741939)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25731" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-255.31423,69.448412)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25733" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-213.84608,68.815406)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25735" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-244.18009,72.228015)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25737" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-239.34991,69.38326)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25739" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-235.3173,94.625498)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25741" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-239.62702,57.437192)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25743" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-259.44646,93.781072)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25745" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-199.76175,81.46759)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25747" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-202.78404,49.42172)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25749" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-190.81022,99.158159)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25751" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-218.52567,99.957901)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25753" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-238.57132,57.231352)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25755" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-247.75051,83.271844)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25757" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-194.11784,89.955784)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25759" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-228.2487,58.800202)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25761" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-237.694,60.709343)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25763" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-208.11199,96.768099)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25765" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-173.40943,62.401395)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25767" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-243.45206,78.631553)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25769" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-245.26711,66.539263)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25771" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-251.70911,70.352217)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25773" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-205.40295,95.35491)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25775" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-191.94716,50.093518)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25777" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-203.64272,72.150133)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25779" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-245.62647,81.143023)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25781" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-194.14228,54.86069)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25783" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-240.29509,58.719807)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25785" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-199.30549,66.017408)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25787" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-176.31534,83.536696)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25789" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-231.74634,54.54358)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25791" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-189.81598,71.036429)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25793" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-192.37822,50.882072)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25795" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-244.54397,95.704671)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25797" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-215.10988,80.137108)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25799" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-210.12294,94.958668)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25801" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-222.14566,48.90426)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25803" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-242.47119,69.295949)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25805" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-197.10648,68.840038)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25807" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-228.91314,91.117042)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25809" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-251.0356,46.698952)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25811" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-255.94624,73.379187)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25813" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-229.57653,93.149875)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25815" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-222.55881,53.111903)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25817" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-193.09461,51.13869)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25819" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-250.26013,97.389846)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25821" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-212.54159,74.940044)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25823" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-178.07562,92.952027)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25825" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-223.89693,60.272946)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25827" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-178.98046,78.793425)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25829" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-239.86916,51.559013)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25831" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-216.32905,85.452556)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25833" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-252.54228,90.635746)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25835" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-211.44461,57.766641)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25837" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-233.24108,68.261244)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25839" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-220.16236,61.104509)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25841" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-199.34105,58.960917)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25843" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-250.2905,83.175482)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25845" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-240.15465,75.135647)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25847" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-253.9938,55.97573)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25849" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-176.90553,96.057791)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25851" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-217.96328,66.21203)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25853" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-182.76821,93.599068)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25855" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-226.95708,55.921228)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25857" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-245.1816,60.903275)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25859" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-190.30553,80.478416)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25861" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-184.10752,50.516123)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25863" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-239.50403,78.72218)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25865" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-245.70184,79.141059)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25867" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-177.8086,77.286836)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25869" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-238.89896,54.508566)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25871" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-244.13152,96.866027)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25873" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-249.73149,77.585866)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25875" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-250.52509,44.701208)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25877" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-203.61234,70.479666)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25879" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-210.8115,63.378045)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25881" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-251.42213,58.729505)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25883" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-225.04973,100.68876)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25885" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-251.26572,51.814988)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25887" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-211.19359,93.559083)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25889" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-212.29907,41.550704)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25891" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-201.34885,49.193737)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25893" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-220.37881,67.984252)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25895" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-242.28267,59.49831)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25897" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-242.05311,53.805192)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25899" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-221.5602,81.313378)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25901" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-179.9489,83.375827)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25903" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-257.45863,89.337988)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25905" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-237.30777,89.488645)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25907" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-241.26991,68.026294)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25909" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-256.197,44.08644)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25911" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-230.57626,59.327194)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25913" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-254.05568,56.498296)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25915" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-216.83245,75.470348)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25917" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-199.85895,100.97328)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25919" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-179.25345,68.350558)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25921" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-220.79683,55.060749)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25923" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-214.63195,50.962423)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25925" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-183.29248,92.765928)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25927" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-181.70545,69.466989)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25929" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-205.15384,88.371961)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25931" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-207.74113,95.148243)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25933" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-208.89802,91.894132)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25935" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-199.17488,61.734911)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25937" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-178.98542,55.171014)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25939" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-232.40944,81.128571)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25941" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-231.77183,67.275714)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25943" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-234.54992,51.391434)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25945" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-195.84487,57.530592)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25947" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-195.32101,72.460262)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25949" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-195.13057,89.796131)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25951" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-195.63146,66.984367)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25953" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-197.47995,98.363352)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25955" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-179.85622,95.006691)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25957" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-258.62809,70.570403)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25959" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-206.29674,82.688109)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25961" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-189.9558,59.196439)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25963" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-250.90801,84.960554)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25965" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-223.0659,80.248099)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25967" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-217.02201,56.40529)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25969" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-253.47597,59.319721)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25971" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-182.91338,81.832351)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25973" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-207.67642,97.511173)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25975" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-198.77997,66.826761)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25977" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-231.21696,55.204814)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25979" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-224.28156,99.194668)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25981" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-246.16497,91.936968)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25983" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-215.96732,57.902306)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25985" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-189.66966,94.451773)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25987" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-217.86723,80.633635)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient25989" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-190.87851,84.513313)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient25991" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-221.09357,60.622522)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient25993" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-186.42322,60.924173)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient25995" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-193.51572,47.316547)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient25997" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-178.41057,59.199964)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient25999" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-237.64963,47.837809)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26001" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-232.77568,100.63515)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26003" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-177.58237,45.460225)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26005" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-258.36492,92.067389)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26007" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-258.75397,54.890055)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26009" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-184.15973,82.806109)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26011" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-256.91485,69.195625)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26013" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-191.89556,98.504519)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26015" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-219.19639,89.863388)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26017" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-233.32418,81.88167)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26019" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-227.20665,97.838212)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26021" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-230.94344,90.752694)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26023" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-234.16996,82.180245)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26025" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-189.31052,57.231976)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26027" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-223.94962,51.183241)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26029" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-193.42874,66.896446)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26031" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-258.65024,96.875921)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26033" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-224.308,55.386706)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26035" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-168.67373,60.753257)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26037" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-198.50822,51.075751)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26039" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-241.52894,58.762284)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26041" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-217.94959,91.684887)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26043" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-203.26789,84.877056)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26045" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-234.05805,94.476969)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26047" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-232.56355,86.41264)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26049" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-196.13517,77.175513)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26051" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-175.02597,58.035693)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26053" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-194.14971,93.175794)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26055" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-253.25824,88.410331)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26057" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-209.79815,59.03502)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26059" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-195.94424,100.56856)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26061" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-219.38437,47.090204)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26063" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-254.70144,67.344287)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26065" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-217.50104,73.092261)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26067" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-247.91998,71.783425)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26069" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-250.65277,74.03124)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26071" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-188.11602,99.243278)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26073" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-211.81905,83.115296)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26075" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-243.53041,58.04325)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26077" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-227.71379,53.569638)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26079" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-209.73995,56.014834)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26081" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-212.52662,45.024141)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26083" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-246.19677,82.692683)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26085" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-188.8594,73.102465)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26087" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-182.59595,65.436866)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26089" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-253.99607,60.382145)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26091" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-195.61424,94.167518)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26093" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-190.99055,58.222766)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26095" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-221.75284,57.913561)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26097" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-203.88775,81.060687)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26099" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-234.3816,64.33263)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26101" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-188.89851,53.909031)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26103" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-206.17448,62.102049)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26105" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-195.73853,57.030866)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26107" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-219.17331,73.768629)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26109" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-198.11883,81.414662)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26111" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-188.68982,64.458518)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26113" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-248.10479,96.180089)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26115" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-206.91423,82.147877)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26117" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-238.78875,74.985805)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26119" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-187.62906,96.421111)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26121" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-248.61017,90.04855)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26123" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-249.21485,44.978928)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26125" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-185.57813,77.832142)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26127" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-250.49023,74.683485)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26129" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-195.73713,47.320861)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26131" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-195.16616,84.789256)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26133" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-244.12103,100.13712)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26135" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-189.46258,85.337301)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26137" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-211.95687,96.57967)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26139" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-234.89762,43.598589)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26141" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-200.00975,52.562994)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26143" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-185.29583,89.579706)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26145" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-217.03831,46.741795)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26147" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-256.03618,89.022991)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26149" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-197.58455,96.869575)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26151" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-237.40275,53.81825)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26153" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-181.89983,65.779625)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26155" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-188.54855,79.720058)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26157" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-217.66431,70.024915)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26159" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-249.40935,72.453765)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26161" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-209.64538,74.917475)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26163" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-194.72972,48.706565)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26165" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-175.94438,74.846626)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26167" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-257.21313,101.54873)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26169" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-241.98842,76.692321)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26171" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-229.2709,100.69639)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26173" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-187.9594,72.450047)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26175" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-253.20383,59.035082)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26177" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-223.12744,53.794548)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26179" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-202.98869,53.142207)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26181" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-250.13628,98.100518)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26183" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-234.56781,94.919393)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26185" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-231.12461,95.97926)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26187" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-217.35399,55.220506)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26189" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-224.62563,82.907266)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26191" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-169.49627,98.714929)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26193" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-180.96478,58.525976)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26195" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-210.45519,97.424779)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26197" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-240.98701,92.818729)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26199" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-252.83196,91.179346)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26201" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-184.12249,56.157795)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26203" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-244.78724,61.715517)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26205" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-243.17592,66.548739)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26207" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-179.60827,71.560403)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26209" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-179.63961,99.402208)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26211" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-216.02711,87.232951)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26213" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-191.98141,75.110907)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26215" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-201.72915,90.927929)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26217" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-198.92879,97.252538)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26219" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-211.72492,56.317052)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26221" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-175.6908,88.473853)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26223" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-231.04456,69.276317)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26225" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-255.42003,78.754986)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26227" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-243.48178,71.059478)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26229" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-208.4398,89.404901)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26231" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-223.08727,100.23941)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26233" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-169.81385,88.623736)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26235" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-241.35265,81.097498)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26237" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-226.49542,80.736363)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26239" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-174.82391,102.62995)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26241" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-228.68584,69.035616)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26243" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-176.8909,91.25955)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26245" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-245.51204,43.292758)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26247" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-234.58826,92.533231)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26249" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-179.91765,93.825399)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26251" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-257.18391,67.189922)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26253" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-255.23566,61.001922)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26255" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-249.59135,67.428878)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26257" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-198.32576,85.901619)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26259" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-189.88665,79.910358)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26261" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-241.29826,52.507608)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26263" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-234.91739,98.245721)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26265" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-208.86528,73.586258)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26267" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-245.69827,64.588411)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26269" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-204.77836,48.821272)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26271" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-249.31001,52.850576)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26273" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-237.32314,53.194791)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26275" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-187.31448,58.892835)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26277" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-204.85686,93.462001)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26279" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-202.9758,86.814968)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26281" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-170.48695,94.50283)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26283" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-205.77448,73.905739)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26285" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-218.11146,91.445987)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26287" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-196.43543,88.270935)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26289" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-194.26511,63.034765)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26291" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-192.87736,49.880397)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26293" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-174.32143,91.272568)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26295" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-199.90065,86.616652)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26297" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-220.60436,53.461688)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26299" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-176.43582,70.048052)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26301" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-253.39886,49.361679)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26303" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-207.75499,81.637997)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26305" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-220.69395,77.737543)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26307" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-228.90078,68.517067)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26309" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-239.238,65.742941)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26311" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-250.82817,74.89994)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26313" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-209.96281,90.303768)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26315" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-177.94621,83.816846)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26317" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-245.09277,92.359799)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26319" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-214.04693,42.296234)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26321" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-188.81511,95.382853)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26323" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-182.35982,68.031212)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26325" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-213.57305,65.633167)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26327" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-235.72023,78.376137)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26329" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-194.71531,95.386817)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26331" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-192.76606,70.613992)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26333" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-192.92549,77.294246)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26335" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-258.3949,93.826772)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26337" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-196.56505,76.919073)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26339" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-246.36489,89.107953)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26341" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-221.96918,73.353203)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26343" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-212.50662,49.932981)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26345" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-228.85232,43.463212)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26347" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-189.80296,61.002647)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26349" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-190.45749,54.539732)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26351" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-183.19833,61.363868)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26353" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-184.89152,67.193431)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26355" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-203.23817,56.717644)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26357" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-183.69815,65.891141)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26359" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-229.42673,47.889739)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26361" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-236.37493,80.774838)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26363" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-212.5567,71.713477)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26365" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-195.46176,58.968814)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26367" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-257.09506,75.675963)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26369" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-239.77836,88.047292)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26371" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-194.58104,72.677987)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26373" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-193.40127,56.120337)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26375" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-228.88109,99.349973)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26377" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-218.90521,76.321763)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26379" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-255.77391,73.143969)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26381" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-174.45078,68.894473)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26383" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-250.34401,73.508028)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26385" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-233.01549,98.843449)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26387" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-208.45871,54.292015)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26389" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-236.02899,63.064932)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26391" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-191.96409,49.99785)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26393" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-195.13609,59.196361)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26395" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-239.09141,102.17008)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26397" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-221.26954,70.133057)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26399" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-194.73524,96.505891)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26401" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-194.41006,68.527705)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26403" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-233.60542,60.727199)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26405" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-235.43104,53.430483)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26407" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-170.32042,92.259938)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26409" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-228.6568,68.338744)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26411" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-209.66507,53.368637)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26413" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-251.15419,84.625236)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26415" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-197.35996,85.892578)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26417" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-223.95352,73.071673)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26419" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-171.59911,52.768718)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26421" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-245.04709,68.472085)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26423" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-236.73392,95.242565)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26425" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-233.91053,53.860252)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26427" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-228.961,94.592686)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26429" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-252.02644,95.825107)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26431" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-199.84879,59.021262)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26433" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-199.29974,64.380676)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26435" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-190.59404,97.507151)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26437" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-217.12866,71.287185)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26439" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-238.69166,91.939584)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26441" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-211.92339,44.953255)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26443" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-185.56343,52.22804)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26445" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-246.63368,48.017753)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26447" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-251.02668,62.411475)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26449" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-171.42675,58.566706)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26451" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-218.33318,46.059348)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26453" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-211.13567,58.757321)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26455" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-230.57474,100.96913)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26457" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-218.97263,46.082625)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26459" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-185.32669,67.279158)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26461" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-182.76226,59.46013)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26463" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-226.45756,71.652658)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26465" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-238.58738,67.526028)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26467" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-255.47772,96.355565)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26469" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-237.16172,62.355435)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26471" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-176.98759,49.311847)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26473" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-221.58199,67.883424)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26475" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-242.25718,51.466042)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26477" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-186.80047,42.984038)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26479" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-213.26636,52.927194)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26481" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-183.5903,87.902473)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26483" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-246.57186,74.960311)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26485" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-242.46051,84.348265)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26487" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-202.88495,91.390387)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26489" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-214.04437,49.478819)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26491" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-207.50689,56.699134)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26493" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-209.49716,54.758095)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26495" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-224.2186,63.383976)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26497" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-227.99597,64.615185)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26499" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-188.72593,54.306593)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26501" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-236.6354,82.192618)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26503" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-238.72677,55.965991)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26505" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-187.74684,93.348705)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26507" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-221.11095,98.355157)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26509" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-196.41642,58.129447)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26511" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-188.81562,60.402738)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26513" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-256.48888,67.582417)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26515" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-252.11081,52.39427)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26517" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-235.87595,73.453053)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26519" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-182.74565,94.623539)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26521" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-184.46457,73.105186)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26523" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-180.20061,75.219563)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26525" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-244.39882,83.93047)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26527" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-184.23296,85.458922)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26529" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-186.18903,54.684773)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26531" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-204.29115,65.385264)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26533" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-222.01924,57.108653)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26535" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-244.23811,93.415943)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26537" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-243.82636,92.995696)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26539" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-244.68705,51.525738)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26541" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-178.45861,61.014299)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26543" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-211.82901,51.479338)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26545" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-183.42642,61.330648)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26547" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-201.6842,73.453246)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26549" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-211.58525,66.465893)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26551" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-174.65937,68.581665)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26553" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-250.65553,87.989401)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26555" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-229.63622,51.559167)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26557" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-224.38301,92.658321)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26559" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-248.06131,89.702831)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26561" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-253.07053,52.322113)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26563" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-197.23187,71.007622)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26565" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-252.67469,80.249936)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26567" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-178.02737,96.164018)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26569" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-244.42304,93.151821)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26571" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-226.55154,48.490688)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26573" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-183.11645,54.391145)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26575" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-238.3394,80.019154)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26577" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-245.89769,96.314695)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26579" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-175.88531,49.529028)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26581" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-233.85806,86.512638)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26583" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-214.36352,70.500382)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26585" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-208.76024,70.321758)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26587" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-202.00964,53.501083)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26589" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-229.02392,69.637928)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26591" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-253.42011,62.360143)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26593" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-252.54394,65.259638)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26595" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-189.69392,86.017179)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26597" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-174.56186,64.985879)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26599" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-229.64496,56.82673)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26601" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-213.66833,86.746129)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26603" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-209.78226,85.95013)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26605" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-183.24824,72.365237)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26607" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-185.15693,63.896508)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26609" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-247.30288,80.624838)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26611" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-206.02397,72.263928)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26613" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-254.03842,70.252906)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26615" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-249.67534,93.586753)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26617" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-255.23822,59.113575)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26619" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-218.84416,89.554328)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26621" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-225.00951,84.592508)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26623" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-175.61788,91.38449)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26625" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-236.41408,97.937064)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26627" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-252.74698,97.735057)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26629" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-251.89324,94.469438)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26631" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-256.50418,58.701932)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26633" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-249.8596,44.794286)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26635" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-244.66711,51.755713)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26637" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-221.39911,73.751137)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26639" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-256.57062,50.664985)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26641" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-200.99916,69.832004)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26643" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-196.80681,94.021697)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26645" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-254.11165,94.957536)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26647" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-228.13101,67.590716)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26649" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-214.16655,58.136705)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26651" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-255.66747,82.325226)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26653" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-189.04692,48.675928)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26655" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-197.0267,46.756689)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26657" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-187.44269,56.526845)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26659" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-247.75759,93.703667)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26661" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-204.15057,64.973857)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26663" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-252.12993,47.849245)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26665" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-194.40412,74.531046)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26667" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-257.29494,77.499106)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26669" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-233.01155,79.499492)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26671" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-228.8569,48.353139)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26673" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-236.29418,60.754963)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26675" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-220.91676,52.290803)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26677" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-252.59185,67.100203)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26679" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-206.50241,48.87804)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26681" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-206.60132,60.533927)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26683" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-244.53892,94.433567)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26685" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-224.09794,48.828103)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26687" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-242.57013,82.682983)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26689" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-226.76597,83.949033)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26691" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-243.41993,88.546402)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26693" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-250.13572,41.787681)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26695" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-203.2046,93.907054)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26697" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-211.39272,97.495864)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26699" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-226.13122,82.505099)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26701" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-183.19993,78.552961)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26703" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-180.72661,92.537514)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26705" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-230.13729,85.11606)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26707" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-171.9277,84.964934)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26709" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-186.50066,62.492006)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26711" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-194.73891,99.746001)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26713" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-251.2192,85.015978)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26715" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-184.28973,54.49741)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26717" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-254.89829,91.53533)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26719" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-199.52714,88.219852)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26721" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-251.127,72.901326)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26723" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-250.7262,77.373646)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26725" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-180.36687,57.304014)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26727" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-229.3269,89.768624)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26729" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-186.96267,95.156223)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26731" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-192.8186,59.507254)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26733" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-242.42245,76.670179)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26735" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-226.3597,74.818794)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26737" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-173.16566,83.292056)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26739" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-243.41349,62.868961)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26741" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-245.53911,76.582523)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26743" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-239.07409,78.455391)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26745" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-182.44513,72.724965)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26747" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-254.32481,80.052048)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26749" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-171.17019,93.569393)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26751" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-246.13774,79.803506)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26753" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-235.25357,58.474889)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26755" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-173.63833,61.961568)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26757" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-260.13253,96.203313)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26759" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-185.19565,54.751181)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26761" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-199.63476,52.889621)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26763" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-237.37497,62.196116)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26765" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-186.98695,42.068143)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26767" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-235.13319,58.588144)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26769" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-206.82398,98.448223)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26771" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-210.34805,45.208615)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26773" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-193.40748,48.825207)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26775" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-239.32017,48.215713)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26777" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-210.64056,47.270949)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26779" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-208.57535,55.331806)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26781" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-220.82305,83.233524)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26783" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-213.73142,91.108762)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26785" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-226.90855,74.865231)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26787" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-238.05043,84.496449)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26789" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-177.58459,61.751464)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26791" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-189.14596,54.424693)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26793" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-210.72812,74.904465)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26795" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-248.33155,100.14082)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26797" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-206.97193,89.39845)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26799" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-235.54809,98.186606)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26801" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-191.13964,82.361444)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26803" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-176.26848,72.117728)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26805" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-183.62859,99.526146)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26807" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-181.59623,53.871792)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26809" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-253.80598,69.166711)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26811" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-215.62474,48.787047)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26813" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-193.75345,54.240746)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26815" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-256.98752,67.876902)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26817" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-249.87876,99.123473)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26819" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-208.61416,49.531959)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26821" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-169.16456,75.169359)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26823" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-256.23696,94.313255)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26825" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-223.84062,82.983714)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26827" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-191.01685,52.493784)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26829" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-197.27146,65.60472)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26831" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-209.88539,78.432125)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26833" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-170.0056,55.437687)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26835" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-203.09645,96.57678)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26837" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-179.28814,83.132852)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26839" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-246.92543,100.63432)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26841" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-237.75459,93.615295)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26843" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-201.81267,76.598283)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26845" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-201.97243,65.554836)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26847" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-215.11098,78.060595)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26849" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-252.16023,50.367691)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26851" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-221.09602,47.509494)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26853" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-190.83567,48.407023)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26855" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-192.9713,90.760856)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26857" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-239.79418,74.074289)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26859" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-241.43577,43.332912)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26861" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-190.81327,79.099323)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26863" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-182.00449,94.083539)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26865" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-195.72126,53.408845)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26867" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-250.91972,50.59402)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26869" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-248.55979,61.669974)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26871" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-231.4726,78.824903)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26873" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-178.59763,53.619283)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26875" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-195.49684,51.026235)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26877" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-231.85444,49.641287)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26879" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-222.88381,46.625689)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26881" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-198.59828,48.962924)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26883" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-240.23879,89.017315)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26885" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-237.23683,73.082304)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26887" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-191.78688,97.803018)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26889" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-221.30024,72.56641)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26891" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-194.45358,67.925848)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26893" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-248.11391,49.244629)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26895" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-259.59331,54.91602)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26897" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-187.98258,93.006514)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26899" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-227.0406,73.285834)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26901" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-197.68471,55.729024)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26903" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-176.25009,62.909781)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26905" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-177.96538,51.964452)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26907" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-255.40219,48.541983)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26909" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-223.79974,49.135089)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26911" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-216.42489,55.403287)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26913" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-231.85561,98.609587)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26915" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-174.64675,95.536323)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26917" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-171.88588,66.792578)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26919" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-190.20914,43.457729)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26921" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-200.7775,59.436448)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26923" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-250.42544,67.928941)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26925" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-221.39275,56.094044)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26927" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-255.32934,47.507026)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26929" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-233.96646,52.423282)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26931" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-254.21976,74.8022)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26933" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-233.88266,41.815936)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26935" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-175.24918,78.518997)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26937" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-182.39568,89.980882)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26939" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-256.42916,94.635184)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26941" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-197.71388,88.271429)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26943" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-242.32837,88.617969)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26945" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-185.36292,61.565947)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26947" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-208.03473,80.857534)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26949" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-221.02853,59.90518)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26951" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-185.85935,46.662372)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26953" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-239.90877,86.371204)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26955" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-233.34812,58.661015)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26957" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-208.15893,64.234779)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26959" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-210.59054,92.636764)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26961" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-186.40673,81.751939)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26963" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-256.53017,98.088555)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26965" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-220.48704,62.034599)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26967" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-224.83137,51.828938)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26969" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-194.006,73.061615)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26971" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-228.07541,75.576698)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26973" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-254.65465,58.645614)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26975" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-232.86415,95.785422)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26977" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-199.88074,52.043047)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26979" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-220.30588,68.913181)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26981" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-224.2829,73.774293)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26983" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-253.80454,68.145279)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26985" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-182.17494,67.113967)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26987" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-191.66985,54.392166)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient26989" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-195.88847,93.637588)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient26991" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-230.03066,73.675414)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient26993" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-207.06557,55.925664)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient26995" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-189.5447,83.559618)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient26997" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-241.71731,50.554901)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient26999" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-196.07803,65.559852)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27001" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-176.45447,90.161169)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27003" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-179.7531,48.033577)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27005" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-196.16031,47.967923)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27007" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-223.53537,53.997638)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27009" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-182.47562,89.229685)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27011" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-221.26156,83.952679)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27013" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-199.68998,56.521744)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27015" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-210.86286,69.171286)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27017" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-215.54466,89.382028)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27019" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-249.08195,46.87524)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27021" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-246.0621,87.935662)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27023" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-236.3626,52.442573)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27025" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-214.42473,76.507755)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27027" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-214.53228,72.686821)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27029" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-184.29684,96.025376)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27031" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-168.88852,72.260417)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27033" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-184.49294,81.663317)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27035" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-178.70952,82.014123)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27037" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-207.67126,94.803721)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27039" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-229.63545,67.542586)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27041" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-200.92638,95.414083)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27043" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-214.70623,91.7262)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27045" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-216.37697,79.695679)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27047" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-228.20392,93.233867)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27049" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-198.71903,60.287723)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27051" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-190.02161,76.867306)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27053" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-220.42568,55.353147)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27055" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-196.92188,63.576552)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27057" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-238.9187,92.942361)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27059" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-256.39752,51.243918)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27061" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-247.69192,59.804687)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27063" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-191.51508,65.169586)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27065" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-200.25668,71.859799)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27067" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-179.18018,47.753546)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27069" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-256.48528,86.274435)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27071" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-214.60975,90.283974)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27073" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-180.0405,47.926017)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27075" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-182.33325,65.496812)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27077" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-250.81389,56.478834)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27079" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-240.49509,92.598888)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27081" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-238.13202,75.764768)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27083" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-250.65004,53.119399)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27085" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-168.30515,71.365268)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27087" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-240.84295,96.176021)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27089" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-243.09341,43.681222)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27091" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-244.76605,102.45759)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27093" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-209.26758,59.881431)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27095" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-209.13229,99.369038)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27097" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-234.98228,83.05717)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27099" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-249.51677,73.080526)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27101" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-205.83872,53.045346)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27103" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-251.76763,93.592923)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27105" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-181.85753,47.641127)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27107" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-213.58626,50.668684)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27109" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-191.4069,81.262723)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27111" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-213.24921,79.5565)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27113" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-229.24494,71.067549)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27115" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-202.75189,50.231633)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27117" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-247.24434,67.14382)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27119" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-255.39405,69.786388)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27121" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-252.87732,88.400952)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27123" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-206.01247,45.337134)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27125" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-201.39061,93.604926)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27127" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-197.48454,50.217383)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27129" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-214.39395,51.765841)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27131" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-232.25533,56.205039)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27133" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-240.47816,62.048213)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27135" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-203.50064,52.310424)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27137" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-225.06861,81.446812)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27139" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-194.44734,90.179264)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27141" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-228.19114,56.493832)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27143" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-229.63145,73.571373)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27145" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-221.76286,73.427755)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27147" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-255.35129,69.495692)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27149" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-205.69785,71.126726)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27151" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-249.1162,78.513566)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27153" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-226.80517,67.452178)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27155" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-216.05264,98.221228)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27157" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-186.33798,52.073688)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27159" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-252.4885,49.09578)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27161" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-186.91622,66.613438)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27163" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-198.55953,62.212819)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27165" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-185.40228,58.703143)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27167" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-179.44557,61.922664)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27169" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-246.75543,55.062425)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27171" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-197.79794,56.817966)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27173" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-223.80249,46.383038)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27175" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-203.45649,79.39155)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27177" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-203.65817,98.525973)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27179" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-180.49252,86.65376)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27181" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-190.03005,63.616941)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27183" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-224.60675,86.836585)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27185" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-200.46391,61.275552)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27187" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-208.40339,103.07046)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27189" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-230.53363,47.761835)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27191" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-178.0782,91.999649)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27193" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-223.75617,57.089151)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27195" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-186.69444,79.661631)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27197" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-197.30338,49.239175)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27199" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-186.8518,65.758393)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27201" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-259.25918,65.382044)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27203" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-207.32333,56.70231)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27205" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-234.91028,75.726513)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27207" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-245.59383,70.351584)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27209" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-206.1034,54.435877)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27211" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-211.51601,95.192673)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27213" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-237.43965,80.028121)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27215" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-204.59322,76.343647)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27217" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-259.18344,47.610142)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27219" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-221.39095,43.639795)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27221" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-202.92671,68.771652)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27223" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-202.21166,92.648675)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27225" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-239.17735,71.794053)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27227" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-194.63236,47.52766)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27229" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-231.16081,44.41662)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27231" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-192.00261,90.128253)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27233" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-249.92227,43.55991)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27235" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-182.32533,49.972242)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27237" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-243.10997,89.14704)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27239" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-195.30227,60.285538)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27241" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-233.76842,77.390421)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27243" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-220.6665,62.558809)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27245" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-234.38184,82.872731)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27247" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-203.61765,96.52765)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27249" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-189.72541,51.47113)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27251" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-210.54138,53.545465)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27253" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-202.86173,52.774178)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27255" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-189.71077,43.880661)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27257" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-196.09393,89.496547)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27259" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-212.06203,66.59722)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27261" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-246.48757,91.970496)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27263" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-185.06744,64.277019)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27265" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-244.99988,52.392496)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27267" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-184.04893,50.604921)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27269" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-182.65616,73.939693)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27271" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-201.01359,69.767063)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27273" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-257.78541,97.601017)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27275" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-192.97623,59.497332)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27277" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-197.62014,72.269821)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27279" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-249.66247,76.179903)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27281" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-216.49072,44.982129)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27283" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-175.04212,91.48411)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27285" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-244.30554,82.579974)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27287" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-184.03744,54.986725)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27289" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-228.36851,70.543028)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27291" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-234.97446,50.204559)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27293" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-243.93491,65.972144)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27295" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-171.37111,77.804346)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27297" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-259.81671,69.086974)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27299" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-188.38225,78.498775)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27301" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-234.91362,60.616454)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27303" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-196.66797,46.953719)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27305" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-200.55395,70.518223)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27307" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-182.07622,83.963307)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27309" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-227.87336,58.408898)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27311" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-208.1624,69.371136)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27313" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-174.19766,61.537071)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27315" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-190.24193,92.054032)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27317" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-182.57792,85.804146)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27319" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-207.91185,72.680429)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27321" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-251.21114,54.390718)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27323" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-215.425,58.312746)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27325" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-174.75555,54.81788)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27327" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-255.02179,89.657359)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27329" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-204.34862,76.778873)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27331" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-169.69843,96.395674)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27333" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-231.41247,98.459073)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27335" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-205.64167,99.407929)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27337" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-248.55057,71.155806)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27339" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-186.99484,42.637907)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27341" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-256.28505,55.87091)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27343" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-200.59065,90.220947)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27345" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-258.80267,84.26335)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27347" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-180.0481,69.504368)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27349" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-227.70248,70.584924)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27351" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-247.60597,71.929613)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27353" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-245.26451,61.650553)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27355" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-197.07096,61.27863)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27357" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-233.51102,59.166309)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27359" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-232.7622,71.153328)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27361" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-209.03042,69.238498)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27363" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-249.0127,72.966632)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27365" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-178.16327,93.601756)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27367" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-186.65317,86.450568)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27369" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-200.63188,88.665087)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27371" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-182.79384,53.28071)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27373" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-172.74532,63.571401)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27375" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-228.36995,98.386192)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27377" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-181.87674,71.675146)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27379" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-177.63154,56.464275)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27381" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-226.30959,100.32155)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27383" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-236.89624,76.824878)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27385" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-186.89333,59.036414)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27387" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-214.15441,79.028562)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27389" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-217.17175,82.356747)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27391" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-255.40338,71.852443)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27393" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-247.32571,78.574712)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27395" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-236.27469,82.10326)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27397" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-219.74472,92.858382)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27399" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-178.39287,43.722363)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27401" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-240.91341,58.102918)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27403" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-223.0014,102.05417)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27405" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-218.70591,86.082562)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27407" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-209.67988,73.064213)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27409" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-216.69945,93.694066)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27411" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-236.81662,92.427571)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27413" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-196.6518,97.097598)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27415" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-185.17079,99.725263)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27417" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-191.32322,57.339996)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27419" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-186.08888,90.37825)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27421" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-200.81039,97.796346)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27423" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-238.75166,49.166841)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27425" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-212.59494,76.576066)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27427" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-257.15051,97.084599)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27429" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-259.48403,101.42318)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27431" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-222.43478,67.779459)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27433" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-197.22419,53.68767)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27435" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-200.39505,77.294326)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27437" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-242.41919,63.575869)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27439" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-242.78438,100.27467)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27441" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-188.61177,77.533893)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27443" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-248.64022,70.853269)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27445" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-194.55297,95.290354)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27447" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-249.07855,79.238468)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27449" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-252.65079,77.687797)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27451" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-217.02062,95.590901)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27453" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-254.96278,49.586168)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27455" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-210.76927,45.050973)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27457" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-211.51603,60.583904)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27459" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-187.6906,62.896975)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27461" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-254.38112,93.672405)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27463" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-188.79225,91.745447)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27465" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-231.44269,51.903418)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27467" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-241.81928,67.525668)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27469" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-233.72833,73.448474)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27471" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-231.40508,60.974073)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27473" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-182.05455,87.628991)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27475" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-214.93588,99.420661)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27477" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-246.88648,81.120501)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27479" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-187.86504,86.770173)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27481" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-199.13681,93.182029)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27483" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-182.73521,43.869682)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27485" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-236.0881,84.61171)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27487" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-203.46233,54.843602)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27489" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-231.6321,73.541725)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27491" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-228.32357,55.670436)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27493" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-235.91557,46.204655)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27495" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-232.9719,91.231164)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27497" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-184.69165,59.134301)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27499" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-204.46456,65.903504)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27501" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-230.46929,90.501004)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27503" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-197.24033,81.588013)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27505" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-210.82874,79.876219)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27507" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-180.42978,93.090415)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27509" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-191.61435,90.058372)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27511" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-198.98492,100.36541)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27513" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-245.9321,48.867215)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27515" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-221.90345,55.127806)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27517" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-257.50047,56.752685)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27519" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-190.57486,42.693569)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27521" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-230.24764,56.266412)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27523" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-233.66904,75.110959)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27525" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-229.52155,62.944166)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27527" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-230.6552,81.070833)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27529" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-254.68383,61.281742)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27531" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-197.22425,49.58798)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27533" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-224.5244,86.671087)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27535" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-257.15446,47.974507)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27537" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-179.76731,79.287042)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27539" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-239.15219,46.775348)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27541" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-170.08445,95.691504)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27543" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-249.70082,55.18296)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27545" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-235.3063,79.701222)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27547" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-173.49142,61.200645)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27549" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-245.76269,63.163291)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27551" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-184.04973,55.765566)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27553" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-225.38488,76.892807)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27555" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-192.26932,93.768386)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27557" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-206.22819,47.398248)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27559" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-245.57728,63.124516)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27561" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-190.63133,50.924622)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27563" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-181.13129,45.932102)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27565" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-182.04168,82.928417)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27567" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-224.8057,74.82315)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27569" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-210.39228,70.354617)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27571" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-252.13287,61.835684)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27573" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-212.60438,69.14573)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27575" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-222.81305,49.90574)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27577" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-203.21594,91.217105)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27579" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-197.19728,84.062432)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27581" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-187.9291,92.821144)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27583" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-174.03933,58.077371)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27585" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-259.60605,49.964956)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27587" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-216.38271,65.26114)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27589" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-215.78933,53.963431)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27591" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-222.30792,89.913488)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27593" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-224.44719,64.11581)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27595" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-195.51248,92.923726)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27597" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-196.3718,63.91343)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27599" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-254.42852,92.383231)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27601" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-197.76597,73.805175)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27603" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-255.96429,98.739247)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27605" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-217.5644,67.666933)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27607" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-219.17004,83.93924)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27609" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-253.16036,64.890456)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27611" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-231.18946,50.145956)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27613" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-191.60101,93.847542)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27615" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-231.13068,83.539022)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27617" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-237.16829,96.832506)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27619" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-209.0358,102.55861)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27621" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-187.50379,92.037363)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27623" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-211.71694,50.290692)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27625" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-224.47726,61.12236)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27627" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-220.67564,85.75803)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27629" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-225.99966,93.434097)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27631" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-190.09472,77.736566)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27633" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-185.51741,86.140447)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27635" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-255.83897,90.975822)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27637" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-224.21035,74.418667)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27639" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-244.86655,42.609709)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27641" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-253.6819,88.413202)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27643" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-218.87855,53.0696)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27645" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-209.77414,100.67582)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27647" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-246.3602,81.96574)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27649" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-228.09159,47.566903)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27651" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-244.68274,79.474551)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27653" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-234.48495,94.626364)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27655" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-230.37711,46.555566)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27657" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-207.8809,69.086841)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27659" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-239.6635,60.352803)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27661" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-199.95466,72.099926)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27663" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-233.21111,88.011876)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27665" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-228.83231,53.316376)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27667" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-251.84369,65.005735)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27669" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-217.9989,84.981571)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27671" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-203.58639,90.28221)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27673" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-183.47176,73.80615)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27675" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-227.75774,91.16306)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27677" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-238.16251,77.140677)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27679" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-227.52545,61.924834)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27681" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-178.0902,47.953693)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27683" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-224.93112,65.923658)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27685" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-182.70327,50.510667)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27687" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-258.52473,96.774009)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27689" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-242.08273,85.522736)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27691" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-254.53941,71.551229)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27693" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-185.45404,70.624355)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27695" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-219.9827,86.295303)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27697" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-188.54892,92.148972)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27699" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-223.9395,55.93824)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27701" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-243.46854,45.740705)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27703" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-185.59022,53.978766)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27705" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-203.99056,75.23682)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27707" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-195.6356,50.811083)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27709" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-240.03312,97.129739)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27711" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-229.53792,97.993185)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27713" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-201.83949,92.077517)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27715" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-175.1949,48.230903)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27717" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-243.80275,63.060718)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27719" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-236.97292,71.188488)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27721" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-211.14657,68.359108)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27723" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-252.42977,50.332265)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27725" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-178.24824,73.086246)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27727" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-225.76036,51.632528)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27729" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-210.27915,51.806225)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27731" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-246.78673,89.143551)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27733" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-246.85919,71.873986)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27735" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-249.70566,42.473075)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27737" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-223.34795,53.497344)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27739" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-231.79936,49.45235)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27741" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-218.00608,48.228358)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27743" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-180.05346,52.476784)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27745" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-188.12808,54.081591)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27747" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-198.12163,60.597171)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27749" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-241.42381,59.130803)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27751" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-245.10873,63.050103)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27753" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-212.32857,55.884135)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27755" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-227.70162,54.331071)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27757" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-233.56882,84.0983)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27759" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-213.36178,46.74517)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27761" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-245.78346,50.453108)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27763" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-198.92705,87.02696)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27765" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-250.25513,53.96114)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27767" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-238.08563,91.112785)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27769" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-250.58453,74.274969)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27771" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-231.62858,65.665589)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27773" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-178.65329,79.940039)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27775" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-242.76626,77.12677)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27777" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-203.29766,67.797527)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27779" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-196.80633,45.766603)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27781" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-234.01509,96.010002)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27783" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-256.83557,56.520808)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27785" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-231.34907,95.535144)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27787" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-234.79617,96.412337)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27789" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-243.46954,66.478543)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27791" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-239.44943,89.33075)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27793" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-210.67063,68.294369)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27795" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-196.01207,61.20943)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27797" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-183.73846,87.445554)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27799" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-198.91904,70.247864)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27801" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-253.48082,99.563156)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27803" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-229.4407,45.611464)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27805" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-175.85378,66.384985)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27807" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-203.52721,46.698474)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27809" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-231.80022,47.896807)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27811" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-258.80727,102.88663)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27813" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-193.76038,73.863831)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27815" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-211.93098,47.204356)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27817" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-184.6804,65.256119)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27819" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-200.22945,55.767241)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27821" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-187.54617,48.169583)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27823" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-184.51632,77.705709)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27825" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-203.52519,80.579242)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27827" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-191.0888,93.519977)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27829" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-227.76835,93.562585)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27831" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-189.36747,60.812258)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27833" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-240.29986,51.075908)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27835" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-225.85083,56.279579)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27837" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-186.33677,64.543745)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27839" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-218.11549,62.724424)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27841" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-171.11813,68.243802)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27843" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-229.9637,81.829271)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27845" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-249.71646,80.73381)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27847" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-216.97031,59.434907)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27849" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-215.03427,47.761811)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27851" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-241.2947,83.727191)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27853" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-218.08309,98.542115)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27855" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-202.91882,68.097545)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27857" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-216.72297,62.6757)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27859" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-257.77392,49.448992)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27861" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-202.44367,88.139277)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27863" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-247.07915,68.960728)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27865" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-249.11148,71.847331)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27867" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-211.72353,74.3722)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27869" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-209.20403,73.58001)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27871" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-241.05235,102.50404)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27873" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-212.43746,85.588314)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27875" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-208.6801,69.436624)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27877" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-238.46415,55.915574)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27879" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-213.24972,91.450947)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27881" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-232.67721,79.344433)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27883" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-169.30184,50.246818)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27885" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-190.80369,91.46636)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27887" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-191.87594,52.952389)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27889" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-178.79273,64.86767)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27891" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-186.33654,86.19453)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27893" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-249.07836,54.07525)"/> + <linearGradient x1="-287.55518" y1="52.066509" x2="-224.06104" y2="52.066509" id="linearGradient27895" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-216.99045,71.632159)"/> + <linearGradient x1="-281.29733" y1="56.950672" x2="-165.60368" y2="56.950672" id="linearGradient27897" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-213.6111,98.159425)"/> + <linearGradient x1="-303.8866" y1="63.208508" x2="-188.19296" y2="63.208508" id="linearGradient27899" xlink:href="#linearGradient17383" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-185.45905,77.759546)"/> + <linearGradient x1="-287.55518" y1="71.908424" x2="-224.06104" y2="71.908424" id="linearGradient27901" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-203.7514,72.150342)"/> + <linearGradient x1="-281.29733" y1="76.792587" x2="-165.60368" y2="76.792587" id="linearGradient27903" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-208.73003,67.384443)"/> + <linearGradient x1="-303.8866" y1="83.050423" x2="-188.19296" y2="83.050423" id="linearGradient27905" xlink:href="#linearGradient17395" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.1674014,0,0,0.1674014,-225.42247,74.315027)"/> + <filter id="filter27927"> + <feGaussianBlur id="feGaussianBlur27929" stdDeviation="0.071512502" inkscape:collect="always"/> + </filter> + <radialGradient cx="59.983643" cy="120.82638" r="29.457615" fx="59.983643" fy="120.82638" id="radialGradient27939" xlink:href="#linearGradient27933" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1.8793038,-5.0037745e-7,5.9254638e-8,0.2083586,-52.74385,95.651194)"/> + <filter height="2.1329556" y="-0.56647772" width="1.1115345" x="-0.055767238" id="filter27965"> + <feGaussianBlur id="feGaussianBlur27967" stdDeviation="1.3689748" inkscape:collect="always"/> + </filter> + <linearGradient x1="-80.095642" y1="78.43882" x2="-89.987785" y2="115.78114" id="linearGradient27979" xlink:href="#linearGradient27973" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1,0,0,1.0103538,0,-1.3128784)"/> + <linearGradient x1="86.693916" y1="100.83184" x2="90.051781" y2="100.83184" id="linearGradient27989" xlink:href="#linearGradient27983" gradientUnits="userSpaceOnUse" gradientTransform="translate(1,0)"/> + <filter height="1.0452234" y="-0.022611663" width="1.5097902" x="-0.25489509" id="filter28003"> + <feGaussianBlur id="feGaussianBlur28005" stdDeviation="0.35662617" inkscape:collect="always"/> + </filter> + <filter height="1.203077" y="-0.10153846" width="1.2933333" x="-0.14666668" id="filter28031"> + <feGaussianBlur id="feGaussianBlur28033" stdDeviation="0.55" inkscape:collect="always"/> + </filter> + <clipPath id="clipPath28041"> + <rect width="8" height="12" rx="1.079258" ry="1.079258" x="12" y="12" id="rect28043" style="opacity:0.18359375;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + </clipPath> + <clipPath id="clipPath28045"> + <rect width="8" height="12" rx="1.079258" ry="1.079258" x="12" y="12" id="rect28047" style="opacity:0.18359375;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + </clipPath> + <filter id="filter28101"> + <feGaussianBlur id="feGaussianBlur28103" stdDeviation="0.04177847" inkscape:collect="always"/> + </filter> + <radialGradient cx="16" cy="18" r="4" fx="16" fy="18" id="radialGradient28110" xlink:href="#linearGradient28077" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1,0,0,1.5,0,-9)"/> + <linearGradient x1="16" y1="1.5952783" x2="16" y2="18.75548" id="linearGradient28112" xlink:href="#linearGradient28049" gradientUnits="userSpaceOnUse"/> + <radialGradient cx="14" cy="19.699831" r="2.1500001" fx="14" fy="18.836424" id="radialGradient28114" xlink:href="#linearGradient28069" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1.1062878,0,0,1.1062878,0.547091,-2.2994329)"/> + <linearGradient x1="11.917725" y1="17.560907" x2="11.917725" y2="20.038458" id="linearGradient28116" xlink:href="#linearGradient28059" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1.1062878,0,0,1.1062878,0.547091,-2.2994329)"/> + <linearGradient x1="60.25" y1="122.00736" x2="60.25" y2="118.5" id="linearGradient28138" xlink:href="#linearGradient28132" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1,0,0,1.0103538,0,-1.3128784)"/> + <linearGradient id="linearGradient3207"> + <stop id="stop3209" style="stop-color:#ffffff;stop-opacity:1" offset="0"/> + <stop id="stop3211" style="stop-color:#ffffff;stop-opacity:0" offset="1"/> + </linearGradient> + <linearGradient id="linearGradient5433"> + <stop id="stop5435" style="stop-color:#ea3838;stop-opacity:1" offset="0"/> + <stop id="stop5437" style="stop-color:#c40000;stop-opacity:1" offset="1"/> + </linearGradient> + <linearGradient id="linearGradient2922"> + <stop id="stop2924" style="stop-color:#000000;stop-opacity:1" offset="0"/> + <stop id="stop2926" style="stop-color:#515151;stop-opacity:1" offset="1"/> + </linearGradient> + <linearGradient id="linearGradient3325"> + <stop id="stop3327" style="stop-color:#ffffff;stop-opacity:1" offset="0"/> + <stop id="stop3329" style="stop-color:#ffffff;stop-opacity:0" offset="1"/> + </linearGradient> + <linearGradient id="linearGradient3623"> + <stop id="stop3625" style="stop-color:#ffffff;stop-opacity:0.68345326" offset="0"/> + <stop id="stop3627" style="stop-color:#ffffff;stop-opacity:0" offset="1"/> + </linearGradient> + <linearGradient id="linearGradient5826"> + <stop id="stop5828" style="stop-color:#980000;stop-opacity:1" offset="0"/> + <stop id="stop5830" style="stop-color:#db5c5c;stop-opacity:1" offset="1"/> + </linearGradient> + <linearGradient id="linearGradient3058"> + <stop id="stop3060" style="stop-color:#9a7600;stop-opacity:1" offset="0"/> + <stop id="stop3066" style="stop-color:#e3ad00;stop-opacity:1" offset="0.09292036"/> + <stop id="stop3070" style="stop-color:#ffcd2c;stop-opacity:1" offset="0.5043171"/> + <stop id="stop3068" style="stop-color:#e3ad00;stop-opacity:1" offset="0.91571385"/> + <stop id="stop3062" style="stop-color:#b98d00;stop-opacity:1" offset="1"/> + </linearGradient> + <linearGradient id="linearGradient7364"> + <stop id="stop7366" style="stop-color:#d4a100;stop-opacity:0.97647059" offset="0"/> + <stop id="stop7368" style="stop-color:#ffc712;stop-opacity:1" offset="1"/> + </linearGradient> + <linearGradient id="linearGradient2598"> + <stop id="stop2600" style="stop-color:#252525;stop-opacity:1" offset="0"/> + <stop id="stop2606" style="stop-color:#252525;stop-opacity:1" offset="0.29354507"/> + <stop id="stop2608" style="stop-color:#252525;stop-opacity:1" offset="0.45366704"/> + <stop id="stop2602" style="stop-color:#000000;stop-opacity:1" offset="1"/> + </linearGradient> + <linearGradient id="linearGradient2257"> + <stop id="stop2259" style="stop-color:#b4942a;stop-opacity:1" offset="0"/> + <stop id="stop2261" style="stop-color:#e4dcc9;stop-opacity:1" offset="1"/> + </linearGradient> + <radialGradient cx="305.02731" cy="-349" r="34.178398" id="path2489_1_" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1.1658,0,0,-1,-353.77589,-376.98677)"> + <stop id="stop44" style="stop-color:#4b73ad;stop-opacity:1" offset="0"/> + <stop id="stop46" style="stop-color:#80b3ff;stop-opacity:1" offset="1"/> + </radialGradient> + <radialGradient cx="354.85159" cy="-426" r="34.1791" id="path4248_1_" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1,0,0,-1,-359.20739,-378.98677)"> + <stop id="stop38" style="stop-color:#538bcf;stop-opacity:1" offset="0"/> + <stop id="stop40" style="stop-color:#80b3ff;stop-opacity:1" offset="1"/> + </radialGradient> + <radialGradient cx="354.85159" cy="-426" r="34.1791" id="path2471_1_" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1,0,0,-1,-359.20739,-376.98677)"> + <stop id="stop32" style="stop-color:#538bcf;stop-opacity:1" offset="0"/> + <stop id="stop34" style="stop-color:#80b3ff;stop-opacity:1" offset="1"/> + </radialGradient> + <linearGradient x1="354.68549" y1="-601.27588" x2="354.68549" y2="-503.146" id="front_1_" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1,0,0,-0.6522,-359.42609,-340.63827)"> + <stop id="stop20" style="stop-color:#b3d9ff;stop-opacity:1" offset="0"/> + <stop id="stop22" style="stop-color:#71a8f5;stop-opacity:1" offset="0.48629999"/> + <stop id="stop24" style="stop-color:#2c72c7;stop-opacity:1" offset="0.79879999"/> + <stop id="stop26" style="stop-color:#2c72c7;stop-opacity:1" offset="0.98000002"/> + <stop id="stop28" style="stop-color:#deebff;stop-opacity:1" offset="1"/> + </linearGradient> + <linearGradient x1="63.4995" y1="-79.239304" x2="63.4995" y2="9.3268995" id="XMLID_1_" gradientUnits="userSpaceOnUse" gradientTransform="translate(-68.240592,44.013228)"> + <stop id="stop6" style="stop-color:#73a3e7;stop-opacity:1" offset="0"/> + <stop id="stop8" style="stop-color:#83b1f5;stop-opacity:1" offset="0.13940001"/> + <stop id="stop10" style="stop-color:#bcd6fc;stop-opacity:1" offset="0.3689"/> + <stop id="stop12" style="stop-color:#659fee;stop-opacity:1" offset="0.5007"/> + <stop id="stop14" style="stop-color:#0066ff;stop-opacity:1" offset="1"/> + </linearGradient> + <linearGradient x1="305.35327" y1="-33.695843" x2="273.56915" y2="122.91273" id="linearGradient3377" xlink:href="#linearGradient3303" gradientUnits="userSpaceOnUse"/> + <clipPath id="clipPath3367"> + <path d="M 240.04888,9 C 237.09544,9 234.6888,11.347166 234.6888,14.32684 L 234.6888,111.25905 L 245.32884,121.91273 L 341.32804,121.91273 C 344.28149,121.91273 346.68786,119.56556 346.68786,116.58615 L 346.68786,14.32684 C 346.68786,11.347166 344.28149,9 341.32804,9 L 240.04888,9 z" id="path3369" style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.08779998;stroke-opacity:1"/> + </clipPath> + <linearGradient x1="-97.742668" y1="1937.9885" x2="-97.742668" y2="1895.421" id="linearGradient3359" xlink:href="#linearGradient3174" gradientUnits="userSpaceOnUse" gradientTransform="matrix(2.5599786,0,0,2.5827101,158.24797,-4821.2784)"/> + <linearGradient x1="-44.117901" y1="127.91319" x2="-43.770939" y2="119.03187" id="linearGradient3323" xlink:href="#linearGradient3317" gradientUnits="userSpaceOnUse"/> + <linearGradient x1="-44.802357" y1="71.894066" x2="-44.802357" y2="130.6806" id="linearGradient3309" xlink:href="#linearGradient3303" gradientUnits="userSpaceOnUse"/> + <linearGradient x1="92.574883" y1="122.13094" x2="53.747078" y2="76.315697" id="linearGradient3293" xlink:href="#linearGradient3270" gradientUnits="userSpaceOnUse" gradientTransform="translate(-106.875,0)"/> + <clipPath id="clipPath3289"> + <path d="M -69.78125,80 C -70.381154,80 -70.875,80.470333 -70.875,81.0625 L -70.875,122.9375 C -70.875,123.52967 -70.381154,124 -69.78125,124 L -9.09375,124 C -8.493846,124 -8.000004,123.52967 -8,122.9375 L -8,81.0625 C -8,80.470333 -8.493846,80 -9.09375,80 L -69.78125,80 z" id="path3291" style="opacity:1;fill:url(#linearGradient3293);fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.08779998;stroke-opacity:1"/> + </clipPath> + <linearGradient x1="92.574883" y1="122.13094" x2="53.747078" y2="76.315697" id="linearGradient3285" xlink:href="#linearGradient3270" gradientUnits="userSpaceOnUse" gradientTransform="translate(-106.875,0)"/> + <linearGradient x1="92.574883" y1="122.13094" x2="53.747078" y2="76.315697" id="linearGradient3276" xlink:href="#linearGradient3270" gradientUnits="userSpaceOnUse"/> + <linearGradient x1="-97.742668" y1="1937.9885" x2="-97.742668" y2="1895.421" id="linearGradient5823" xlink:href="#linearGradient3174" gradientUnits="userSpaceOnUse" gradientTransform="matrix(2.5599786,0,0,2.5827101,325.24891,-4887.3657)"/> + <linearGradient id="linearGradient3163"> + <stop id="stop3165" style="stop-color:#6b696a;stop-opacity:1" offset="0"/> + <stop id="stop3167" style="stop-color:#6b696a;stop-opacity:1" offset="1"/> + </linearGradient> + <linearGradient id="linearGradient5810"> + <stop id="stop5812" style="stop-color:#2e2a2b;stop-opacity:1" offset="0"/> + <stop id="stop5814" style="stop-color:#4c494a;stop-opacity:1" offset="0.33497536"/> + <stop id="stop5816" style="stop-color:#5b595a;stop-opacity:1" offset="0.66748768"/> + <stop id="stop5818" style="stop-color:#6b696a;stop-opacity:1" offset="1"/> + </linearGradient> + <linearGradient id="linearGradient3206"> + <stop id="stop3208" style="stop-color:#e3e2e6;stop-opacity:1" offset="0"/> + <stop id="stop3216" style="stop-color:#000000;stop-opacity:0.5411765" offset="0.5"/> + <stop id="stop3210" style="stop-color:#000000;stop-opacity:0" offset="1"/> + </linearGradient> + <linearGradient id="linearGradient3270"> + <stop id="stop3272" style="stop-color:#a0a1a5;stop-opacity:1" offset="0"/> + <stop id="stop3274" style="stop-color:#ffffff;stop-opacity:1" offset="1"/> + </linearGradient> + <linearGradient id="linearGradient3303"> + <stop id="stop3305" style="stop-color:#ffffff;stop-opacity:1" offset="0"/> + <stop id="stop3307" style="stop-color:#ffffff;stop-opacity:0" offset="1"/> + </linearGradient> + <linearGradient id="linearGradient3448"> + <stop id="stop3450" style="stop-color:#cac7dc;stop-opacity:1" offset="0"/> + <stop id="stop3452" style="stop-color:#cac7dc;stop-opacity:0" offset="1"/> + </linearGradient> + </defs> + <rect width="58.91523" height="5.7999449" rx="0.72191608" ry="0.28855881" x="30.526026" y="117.92641" transform="matrix(1,0,0,1.0103538,0,-1.3128784)" id="rect27931" style="opacity:1;fill:url(#radialGradient27939);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1;filter:url(#filter27965)"/> + <path d="M 16,121 L 30,121 L 30,120 L 88.2,120 L 88.2,121 L 116,121 L 116,117 L 12.710706,110.00228 L 16,121 z" id="path3507" style="fill:url(#radialGradient3583);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter3565)"/> + <path d="M 16,121 L 30,121 L 30,120 L 90,120 L 90,121 L 119,121 L 119,117 L 12.710706,116.00228 L 16,121 z" id="path3390" style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter3444)"/> + <path d="M 11.361024,8 C 9.552302,8 8,9.625443 8.00094,11.32684 L 8.00094,110.25905 L 18.640979,120.91273 L 116.64018,120.91273 C 119.59363,120.91273 120,120.56556 120,117.58615 L 120,11.32684 C 120,9.513864 118.44194,8 116.64018,8 L 11.361024,8 z" id="rect2169" style="opacity:1;fill:url(#linearGradient3250);fill-opacity:1;stroke:none;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.08779998;stroke-opacity:1"/> + <path d="M 24.693828,-69.480939 L 24.693828,-12.824689 L 102.79383,-12.824689 L 102.79383,-69.480939 L 24.693828,-69.480939 z" transform="translate(0.3,76.483371)" clip-path="url(#clipPath3008)" id="rect2379" style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.69999999;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.08779998;stroke-opacity:1;filter:url(#filter3105)"/> + <rect width="76" height="54" rx="1.2345035" ry="1.2345035" x="26" y="8" id="rect3325" style="opacity:1;fill:url(#radialGradient3083);fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.08779998;stroke-opacity:1"/> + <rect width="3.8491483" height="53.921757" rx="0.92457408" ry="0.92457408" x="26.150852" y="8" id="rect3490" style="opacity:0.61328125;fill:#cfdce7;fill-opacity:1;stroke:none;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="3.7944784" height="53.467316" rx="0.89723921" ry="0.92457408" x="98" y="8.5" id="rect3488" style="opacity:0.546875;fill:#cfdce7;fill-opacity:1;stroke:none;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="75.091873" height="0.7289294" x="26.018856" y="63.416855" id="rect3109" style="opacity:1;fill:url(#radialGradient3117);fill-opacity:1;stroke:none;stroke-width:0.69999999;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1;filter:url(#filter3726)"/> + <path d="M 12.375,-168.28125 C 9.4215521,-168.28125 8,-167.91718 8,-164.9375 L 8,-164.15625 C 8,-167.13593 9.4215521,-167.46875 12.375,-167.46875 L 115.625,-167.46875 C 118.57845,-167.46875 120,-167.13593 120,-164.15625 L 120,-164.9375 C 120,-167.91718 118.57845,-168.28125 115.625,-168.28125 L 12.375,-168.28125 z" transform="translate(0,176.85148)" clip-path="url(#clipPath3215)" id="path3209" style="opacity:1;fill:#000000;fill-opacity:0.35840705;stroke:none;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.08779998;stroke-opacity:1;filter:url(#filter3371)"/> + <path d="M 11.375,8.600468 C 9.318588,8.707659 8,9.305748 8,11.912968 L 8,12.506718 C 8,9.527038 9.421552,9.194218 12.375,9.194218 L 115.625,9.194218 C 118.57845,9.194218 120,9.527038 120,12.506718 L 120,11.912968 C 120,8.933288 118.57845,8.600468 115.625,8.600468 L 12.375,8.600468 C 12.005819,8.600468 11.668773,8.585159 11.375,8.600468 z" id="path3381" style="opacity:1;fill:#ffffff;fill-opacity:0.46902651;stroke:none;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.08779998;stroke-opacity:1;filter:url(#filter3417)"/> + <path d="M 104.309,8.626039 C 104.20787,8.626039 104.12054,8.662959 104.02775,8.688539 C 103.92346,8.717289 103.83617,8.757269 103.7465,8.813539 C 103.66099,8.867209 103.59613,8.926839 103.52775,9.001039 C 103.49917,9.032049 103.45912,9.060729 103.434,9.094789 C 103.4003,9.135389 103.36852,9.175429 103.34025,9.219789 C 103.24682,9.388799 103.184,9.576909 103.184,9.782289 L 103.184,61.157289 L 103.59025,61.157289 L 103.59025,9.782289 C 103.59025,9.570869 103.67915,9.392209 103.77775,9.219789 L 115.68399,9.219789 C 118.63744,9.219789 120.05899,9.552609 120.05899,12.532289 L 120.05899,11.938539 C 120.05899,9.331319 118.74326,8.761729 116.68399,8.657289 L 104.559,8.657289 C 104.61259,8.649219 104.65932,8.626039 104.71525,8.626039 L 104.309,8.626039 z M 11.090247,8.657289 C 9.465055,8.810999 8.128281,9.431649 8.090247,11.532289 C 8.211314,9.472429 9.849731,9.219789 12.433997,9.219789 L 24.433997,9.219789 C 24.540585,9.397089 24.590247,9.593059 24.590247,9.813539 L 24.590247,61.188539 L 24.996497,61.188539 L 24.996497,9.813539 C 24.996497,9.593059 24.946836,9.397089 24.840247,9.219789 C 24.794983,9.144499 24.744424,9.063799 24.683997,9.001039 C 24.59027,8.895459 24.46525,8.810179 24.340247,8.751039 C 24.223908,8.695989 24.105809,8.657289 23.965247,8.657289 L 23.465247,8.657289 L 11.090247,8.657289 z M 8.090247,11.532289 C 8.087808,11.667029 8.058997,11.791209 8.058997,11.938539 L 8.058997,12.532289 C 8.058997,12.159829 8.072952,11.826559 8.090247,11.532289 z" id="path3423" style="opacity:0.26953125;fill:url(#linearGradient3453);fill-opacity:1;stroke:none;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.08779998;stroke-opacity:1;filter:url(#filter3417)"/> + <path d="M 115.43114,8.6 C 118.38459,8.6 119.20614,8.932826 119.20614,11.9125 L 119.20614,115.19375 C 119.20614,118.17316 116.38459,120.50625 113.43114,120.50625 L 114.14989,120.50625 C 117.10334,120.50625 119.49364,118.17316 119.49364,115.19375 L 119.49364,11.9125 C 119.49364,8.932826 119.10334,8.6 116.14989,8.6 L 115.43114,8.6 z" id="path3455" style="opacity:1;fill:url(#linearGradient3474);fill-opacity:1;stroke:none;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.08779998;stroke-opacity:1"/> + <path d="M 32,16.122507 L 32,20.076133 L 96,20.076133 L 96,16.122507 L 32,16.122507 z" id="path3476" style="opacity:0.56521738;fill:#b2c6d9;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"/> + <path d="M 32.031703,32.228578 L 32.031703,36.118982 L 96.0317,36.118982 L 96.0317,32.228578 L 32.031703,32.228578 z" id="path3478" style="opacity:0.56521738;fill:#b2c6d9;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"/> + <path d="M 32,48.202135 L 32,52.202135 L 96,52.202135 L 96,48.202135 L 32,48.202135 z" id="path3480" style="opacity:0.56521738;fill:#b2c6d9;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"/> + <path d="M 101.42263,8 L 101.42263,61.80625 C 101.60563,61.704641 101.71697,61.555253 101.82888,61.40625 L 101.82888,8 L 101.42263,8 z" id="rect3492" style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <path d="M 26.108963,8 L 26.12263,61.300619 C 26.225712,61.500509 26.375099,61.638659 26.52888,61.770949 L 26.515213,8 L 26.108963,8 z" id="path3497" style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <path d="M 16.78125,130.4375 C 15.2983,130.4375 14.125,131.64205 14.125,133.125 L 14.125,175.15625 C 14.125,176.6392 15.298301,177.8125 16.78125,177.8125 L 16.9375,177.8125 C 16.529729,177.36613 16.25,176.78074 16.25,176.125 L 16.25,136.15625 C 16.25,134.76494 17.362011,133.625 18.75,133.625 L 84.34375,133.625 C 85.731742,133.625 86.84375,134.76494 86.84375,136.15625 L 86.84375,176.125 C 86.843752,176.78074 86.595271,177.36613 86.1875,177.8125 L 86.3125,177.8125 C 87.79545,177.8125 89.000002,176.6392 89,175.15625 L 89,133.125 C 89,131.64205 87.795451,130.4375 86.3125,130.4375 L 16.78125,130.4375 z" transform="translate(16.391305,-52.350088)" clip-path="url(#clipPath3199)" id="rect3626" style="fill:url(#linearGradient3712);fill-opacity:1;stroke:none;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1;filter:url(#filter3659)"/> + <path d="M 34.53781,80.00784 C 33.118602,80.00784 31.97531,81.15113 31.97531,82.57034 L 32,119.71658 L 104,119.71658 L 103.97531,82.57034 C 103.97531,81.15113 102.83202,80.00784 101.41281,80.00784 L 34.53781,80.00784 z" id="path3680" style="opacity:1;fill:#000000;fill-opacity:0.12831858;stroke:none;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <path d="M 34.581018,80.0708 C 33.16181,80.0708 32.018518,81.2141 32.018518,82.6333 L 32.018518,119.81658 L 104,119.7 L 104,82.51672 C 104,81.09752 102.85671,79.95422 101.4375,79.95422 L 34.581018,80.0708 z" id="path3694" style="opacity:0.07421875;fill:url(#radialGradient3704);fill-opacity:1;stroke:none;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <path d="M 52.9375,84 C 52.41795,84 52,84.417953 52,84.9375 L 52,108 L 40.9375,108 C 40.41795,108 40,108.41795 40,108.9375 L 40,115.0625 C 40,115.58205 40.417949,116 40.9375,116 L 52.9375,116 L 63.0625,116 C 63.58205,116 64,115.58205 64,115.0625 L 64,108.9375 L 64,84.9375 C 64,84.41795 63.582051,84 63.0625,84 L 52.9375,84 z" transform="matrix(1,0,0,1.0103538,0,-1.3128784)" id="rect3226" style="opacity:1;fill:url(#linearGradient3281);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1;filter:url(#filter3271)"/> + <rect width="69.516342" height="1.4999924" x="33.008656" y="77.600006" id="rect3669" style="opacity:0.37771738;fill:url(#radialGradient3692);fill-opacity:1;stroke:none;stroke-width:0.69999999;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <path d="M 103.91096,8.735486 L 103.16096,9.422986 L 104.09846,9.485486 L 103.91096,8.735486 z" id="path3086" style="fill:url(#radialGradient3094);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter3120)"/> + <path d="M 23.91096,8.7354857 L 23.16096,9.4229857 L 24.09846,9.4854857 L 23.91096,8.7354857 z" transform="matrix(-1,0,0,1,48.05942,0)" id="path3124" style="fill:url(#radialGradient3126);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter3120)"/> + <path d="M 112.08125,97.375 L 112.08125,104.09375 L 110.8625,104.09375 L 109.83125,104.09375 L 114.175,111.625 L 118.51875,104.09375 L 117.4875,104.09375 L 116.26875,104.09375 L 116.26875,97.375 L 114.175,97.375 L 112.08125,97.375 z" transform="matrix(0.9875769,0,0,1,0.716891,0.2)" id="path3128" style="opacity:0.453125;fill:url(#linearGradient3142);fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter3192)"/> + <rect width="3.3578629" height="37.852272" x="87.693916" y="81.905701" transform="matrix(1,0,0,1.0103538,0,-1.3128784)" id="rect27981" style="opacity:0.296875;fill:url(#linearGradient27989);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1;filter:url(#filter28003)"/> + <path d="M 34.541973,80.321631 C 33.364723,80.321631 32.416973,81.279193 32.416973,82.468632 L 32.59375,120.53579 L 88,120.53579 L 88,82.325479 C 88,81.136039 87.17725,80.321631 86,80.321631 L 34.541973,80.321631 z M 40.9375,88.353886 L 55.0625,88.353886 C 55.582051,88.353886 56,88.776164 56,89.301092 L 56,110.89955 C 56,111.42448 55.58205,111.84676 55.0625,111.84676 L 40.9375,111.84676 C 40.417949,111.84676 40,111.42448 40,110.89955 L 40,89.301092 C 40,88.776166 40.41795,88.353886 40.9375,88.353886 z" id="rect3196" style="opacity:1;fill:url(#linearGradient3221);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <g transform="matrix(1,0,0,1.0103538,313.92339,17.714654)" clip-path="url(#clipPath25065)" id="g23527" style="opacity:0.18359375;filter:url(#filter27927)"> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-290.79343" y="84.707176" id="rect17371" style="opacity:0.1875;fill:url(#linearGradient17393);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-259.9552" y="91.262184" id="rect17373" style="opacity:0.1875;fill:url(#linearGradient17391);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-256.91937" y="109.06592" id="rect17375" style="opacity:0.1875;fill:url(#linearGradient17389);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-288.12012" y="76.49028" id="rect17377" style="opacity:0.46875;fill:url(#linearGradient17405);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-236.07872" y="96.053925" id="rect17379" style="opacity:0.46875;fill:url(#linearGradient17403);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-269.22446" y="89.085144" id="rect17381" style="opacity:0.46875;fill:url(#linearGradient17401);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-242.40353" y="67.112572" id="rect17407" style="opacity:0.1875;fill:url(#linearGradient18149);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-283.73615" y="80.639206" id="rect17409" style="opacity:0.1875;fill:url(#linearGradient18147);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-255.26816" y="84.380295" id="rect17411" style="opacity:0.1875;fill:url(#linearGradient18145);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-274.76822" y="106.13625" id="rect17413" style="opacity:0.46875;fill:url(#linearGradient18143);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-281.63443" y="102.51813" id="rect17415" style="opacity:0.46875;fill:url(#linearGradient18141);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-235.30339" y="71.39473" id="rect17417" style="opacity:0.46875;fill:url(#linearGradient18139);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-297.64175" y="100.63744" id="rect17419" style="opacity:0.1875;fill:url(#linearGradient18137);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-302.05591" y="65.363846" id="rect17421" style="opacity:0.1875;fill:url(#linearGradient18135);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-267.51465" y="69.323357" id="rect17423" style="opacity:0.1875;fill:url(#linearGradient18133);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-276.87137" y="99.903488" id="rect17425" style="opacity:0.46875;fill:url(#linearGradient18131);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-258.51654" y="101.47046" id="rect17427" style="opacity:0.46875;fill:url(#linearGradient18129);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-226.41283" y="75.500755" id="rect17429" style="opacity:0.46875;fill:url(#linearGradient18127);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-295.32373" y="69.585419" id="rect17431" style="opacity:0.1875;fill:url(#linearGradient18125);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-232.6416" y="71.46701" id="rect17433" style="opacity:0.1875;fill:url(#linearGradient18123);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-231.34415" y="77.415817" id="rect17435" style="opacity:0.1875;fill:url(#linearGradient18121);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-307.36627" y="105.92856" id="rect17437" style="opacity:0.46875;fill:url(#linearGradient18119);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-299.40512" y="62.602127" id="rect17439" style="opacity:0.46875;fill:url(#linearGradient18117);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-226.37361" y="99.838142" id="rect17441" style="opacity:0.46875;fill:url(#linearGradient18115);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-260.8649" y="56.113068" id="rect17443" style="opacity:0.1875;fill:url(#linearGradient18113);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-269.1181" y="74.343849" id="rect17445" style="opacity:0.1875;fill:url(#linearGradient18111);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-244.14183" y="98.228653" id="rect17447" style="opacity:0.1875;fill:url(#linearGradient18109);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-244.48334" y="67.98336" id="rect17449" style="opacity:0.46875;fill:url(#linearGradient18107);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-286.73779" y="64.299034" id="rect17451" style="opacity:0.46875;fill:url(#linearGradient18105);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-263.82462" y="69.00946" id="rect17453" style="opacity:0.46875;fill:url(#linearGradient18103);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-300.22101" y="79.247726" id="rect17455" style="opacity:0.1875;fill:url(#linearGradient18101);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-299.43381" y="104.01281" id="rect17457" style="opacity:0.1875;fill:url(#linearGradient18099);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-244.76028" y="105.31631" id="rect17459" style="opacity:0.1875;fill:url(#linearGradient18097);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-257.03159" y="65.75708" id="rect17461" style="opacity:0.46875;fill:url(#linearGradient18095);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-258.90118" y="69.971687" id="rect17463" style="opacity:0.46875;fill:url(#linearGradient18093);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-305.26633" y="97.308929" id="rect17465" style="opacity:0.46875;fill:url(#linearGradient18091);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-243.34489" y="57.138626" id="rect17467" style="opacity:0.1875;fill:url(#linearGradient18089);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-277.36011" y="79.709198" id="rect17469" style="opacity:0.1875;fill:url(#linearGradient18087);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-278.16724" y="103.81553" id="rect17471" style="opacity:0.1875;fill:url(#linearGradient18085);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-254.41679" y="77.795441" id="rect17473" style="opacity:0.46875;fill:url(#linearGradient18083);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-227.66385" y="87.002907" id="rect17475" style="opacity:0.46875;fill:url(#linearGradient18081);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-246.04214" y="101.45621" id="rect17477" style="opacity:0.46875;fill:url(#linearGradient18079);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-279.64142" y="79.221695" id="rect17479" style="opacity:0.1875;fill:url(#linearGradient18077);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-240.68213" y="85.522552" id="rect17481" style="opacity:0.1875;fill:url(#linearGradient18075);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-233.27867" y="66.150208" id="rect17483" style="opacity:0.1875;fill:url(#linearGradient18073);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-255.85204" y="98.996635" id="rect17485" style="opacity:0.46875;fill:url(#linearGradient18071);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-231.82623" y="62.490906" id="rect17487" style="opacity:0.46875;fill:url(#linearGradient18069);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-235.63985" y="103.67081" id="rect17489" style="opacity:0.46875;fill:url(#linearGradient18067);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-247.41724" y="103.57622" id="rect17491" style="opacity:0.1875;fill:url(#linearGradient18065);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-287.78891" y="110.85292" id="rect17493" style="opacity:0.1875;fill:url(#linearGradient18063);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-270.85229" y="87.596672" id="rect17495" style="opacity:0.1875;fill:url(#linearGradient18061);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-279.77243" y="77.090691" id="rect17497" style="opacity:0.46875;fill:url(#linearGradient18059);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-296.65201" y="61.369072" id="rect17499" style="opacity:0.46875;fill:url(#linearGradient18057);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-256.33041" y="97.866295" id="rect17501" style="opacity:0.46875;fill:url(#linearGradient18055);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-247.27512" y="60.602905" id="rect17503" style="opacity:0.1875;fill:url(#linearGradient18053);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-275.28024" y="98.59436" id="rect17505" style="opacity:0.1875;fill:url(#linearGradient18051);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-268.80908" y="104.19329" id="rect17507" style="opacity:0.1875;fill:url(#linearGradient18049);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-283.54272" y="94.834015" id="rect17509" style="opacity:0.46875;fill:url(#linearGradient18047);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-277.52655" y="96.503296" id="rect17511" style="opacity:0.46875;fill:url(#linearGradient18045);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-232.43588" y="62.813446" id="rect17513" style="opacity:0.46875;fill:url(#linearGradient18043);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-220.03261" y="90.780258" id="rect17515" style="opacity:0.1875;fill:url(#linearGradient18041);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-271.0979" y="99.709679" id="rect17517" style="opacity:0.1875;fill:url(#linearGradient18039);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-304.3273" y="97.007927" id="rect17519" style="opacity:0.1875;fill:url(#linearGradient18037);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-280.40613" y="63.924969" id="rect17521" style="opacity:0.46875;fill:url(#linearGradient18035);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-284.76562" y="97.57634" id="rect17523" style="opacity:0.46875;fill:url(#linearGradient18033);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-240.3656" y="91.897057" id="rect17525" style="opacity:0.46875;fill:url(#linearGradient18031);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-231.78883" y="88.074402" id="rect17527" style="opacity:0.1875;fill:url(#linearGradient18029);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-251.24213" y="102.16527" id="rect17529" style="opacity:0.1875;fill:url(#linearGradient18027);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-291.57928" y="92.647728" id="rect17531" style="opacity:0.1875;fill:url(#linearGradient18025);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-254.35078" y="60.315037" id="rect17533" style="opacity:0.46875;fill:url(#linearGradient18023);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-252.11502" y="90.288979" id="rect17535" style="opacity:0.46875;fill:url(#linearGradient18021);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-248.80861" y="109.21276" id="rect17537" style="opacity:0.46875;fill:url(#linearGradient18019);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-240.75543" y="72.276009" id="rect17539" style="opacity:0.1875;fill:url(#linearGradient18017);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-237.12875" y="57.977592" id="rect17541" style="opacity:0.1875;fill:url(#linearGradient18015);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-274.66217" y="67.495979" id="rect17543" style="opacity:0.1875;fill:url(#linearGradient18013);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-239.2243" y="69.823593" id="rect17545" style="opacity:0.46875;fill:url(#linearGradient18011);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-227.45792" y="68.959457" id="rect17547" style="opacity:0.46875;fill:url(#linearGradient18009);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-300.89233" y="76.257271" id="rect17549" style="opacity:0.46875;fill:url(#linearGradient18007);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-284.53769" y="90.623589" id="rect17551" style="opacity:0.1875;fill:url(#linearGradient18005);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-241.34969" y="97.305748" id="rect17553" style="opacity:0.1875;fill:url(#linearGradient18003);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-232.20572" y="82.862694" id="rect17555" style="opacity:0.1875;fill:url(#linearGradient18001);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-227.24118" y="79.64772" id="rect17557" style="opacity:0.46875;fill:url(#linearGradient17999);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-290.40161" y="79.395935" id="rect17559" style="opacity:0.46875;fill:url(#linearGradient17997);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-246.42935" y="74.803711" id="rect17561" style="opacity:0.46875;fill:url(#linearGradient17995);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-227.61072" y="62.135342" id="rect17563" style="opacity:0.1875;fill:url(#linearGradient17993);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-290.80521" y="84.323967" id="rect17565" style="opacity:0.1875;fill:url(#linearGradient17991);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-281.46295" y="66.882637" id="rect17567" style="opacity:0.1875;fill:url(#linearGradient17989);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-266.34781" y="83.370567" id="rect17569" style="opacity:0.46875;fill:url(#linearGradient17987);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-292.62222" y="67.94989" id="rect17571" style="opacity:0.46875;fill:url(#linearGradient17985);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-270.8093" y="82.059044" id="rect17573" style="opacity:0.46875;fill:url(#linearGradient17983);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-283.76419" y="60.068611" id="rect17575" style="opacity:0.1875;fill:url(#linearGradient17981);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-263.74551" y="87.762344" id="rect17577" style="opacity:0.1875;fill:url(#linearGradient17979);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-252.63034" y="77.666779" id="rect17579" style="opacity:0.1875;fill:url(#linearGradient17977);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-277.99472" y="76.894325" id="rect17581" style="opacity:0.46875;fill:url(#linearGradient17975);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-272.5246" y="107.37724" id="rect17583" style="opacity:0.46875;fill:url(#linearGradient17973);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-275.39462" y="106.59368" id="rect17585" style="opacity:0.46875;fill:url(#linearGradient17971);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-301.20239" y="77.640099" id="rect17587" style="opacity:0.1875;fill:url(#linearGradient17969);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-273.29407" y="60.569847" id="rect17589" style="opacity:0.1875;fill:url(#linearGradient17967);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-232.78375" y="88.356277" id="rect17591" style="opacity:0.1875;fill:url(#linearGradient17965);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-252.27098" y="96.711983" id="rect17593" style="opacity:0.46875;fill:url(#linearGradient17963);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-246.9855" y="79.303299" id="rect17595" style="opacity:0.46875;fill:url(#linearGradient17961);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-284.22263" y="87.287857" id="rect17597" style="opacity:0.46875;fill:url(#linearGradient17959);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-282.8721" y="70.975586" id="rect17599" style="opacity:0.1875;fill:url(#linearGradient17957);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-293.66968" y="76.547577" id="rect17601" style="opacity:0.1875;fill:url(#linearGradient17955);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-225.74731" y="68.751762" id="rect17603" style="opacity:0.1875;fill:url(#linearGradient17953);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-242.60339" y="72.070457" id="rect17605" style="opacity:0.46875;fill:url(#linearGradient17951);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-295.67972" y="72.224846" id="rect17607" style="opacity:0.46875;fill:url(#linearGradient17949);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-261.53369" y="66.220589" id="rect17609" style="opacity:0.46875;fill:url(#linearGradient17947);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-247.48569" y="70.287376" id="rect17611" style="opacity:0.1875;fill:url(#linearGradient17945);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-232.71796" y="106.46072" id="rect17613" style="opacity:0.1875;fill:url(#linearGradient17943);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-229.57463" y="65.69442" id="rect17615" style="opacity:0.1875;fill:url(#linearGradient17941);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-248.38248" y="92.94561" id="rect17617" style="opacity:0.46875;fill:url(#linearGradient17939);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-234.62196" y="110.52157" id="rect17619" style="opacity:0.46875;fill:url(#linearGradient17937);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-263.71622" y="67.948135" id="rect17621" style="opacity:0.46875;fill:url(#linearGradient17935);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-304.85336" y="87.741013" id="rect17623" style="opacity:0.1875;fill:url(#linearGradient17933);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-276.97302" y="72.193329" id="rect17625" style="opacity:0.1875;fill:url(#linearGradient17931);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-268.71017" y="65.334404" id="rect17627" style="opacity:0.1875;fill:url(#linearGradient17929);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-217.20427" y="98.32988" id="rect17629" style="opacity:0.46875;fill:url(#linearGradient17927);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-276.47168" y="108.77326" id="rect17631" style="opacity:0.46875;fill:url(#linearGradient25071);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-238.04443" y="82.517944" id="rect17633" style="opacity:0.46875;fill:url(#linearGradient25073);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-244.30357" y="108.89568" id="rect17635" style="opacity:0.1875;fill:url(#linearGradient25075);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-239.16194" y="84.146629" id="rect17637" style="opacity:0.1875;fill:url(#linearGradient25077);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-273.72382" y="64.275902" id="rect17639" style="opacity:0.1875;fill:url(#linearGradient25079);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-228.20195" y="109.68244" id="rect17641" style="opacity:0.46875;fill:url(#linearGradient25081);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-244.8898" y="63.208668" id="rect17643" style="opacity:0.46875;fill:url(#linearGradient25083);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-293.91269" y="98.313393" id="rect17645" style="opacity:0.46875;fill:url(#linearGradient25085);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-273.66534" y="85.114136" id="rect17647" style="opacity:0.1875;fill:url(#linearGradient25087);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-252.74916" y="66.932426" id="rect17649" style="opacity:0.1875;fill:url(#linearGradient25089);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-296.73309" y="77.135086" id="rect17651" style="opacity:0.1875;fill:url(#linearGradient25091);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-267.95505" y="62.283104" id="rect17653" style="opacity:0.46875;fill:url(#linearGradient25093);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-232.14812" y="87.140076" id="rect17655" style="opacity:0.46875;fill:url(#linearGradient25095);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-271.00018" y="55.974785" id="rect17657" style="opacity:0.46875;fill:url(#linearGradient25097);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-297.79782" y="102.01984" id="rect17659" style="opacity:0.1875;fill:url(#linearGradient25099);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-248.791" y="61.252872" id="rect17661" style="opacity:0.1875;fill:url(#linearGradient25101);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-262.85733" y="63.683193" id="rect17663" style="opacity:0.1875;fill:url(#linearGradient25103);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-303.50882" y="101.78488" id="rect17665" style="opacity:0.46875;fill:url(#linearGradient25105);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-240.83641" y="77.041458" id="rect17667" style="opacity:0.46875;fill:url(#linearGradient25107);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-244.76694" y="95.283287" id="rect17669" style="opacity:0.46875;fill:url(#linearGradient25109);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-252.42992" y="55.774399" id="rect17671" style="opacity:0.1875;fill:url(#linearGradient25111);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-230.80057" y="101.06035" id="rect17673" style="opacity:0.1875;fill:url(#linearGradient25113);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-298.56604" y="109.198" id="rect17675" style="opacity:0.1875;fill:url(#linearGradient25115);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-284.48489" y="107.00368" id="rect17677" style="opacity:0.46875;fill:url(#linearGradient25117);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-273.83386" y="66.630585" id="rect17679" style="opacity:0.46875;fill:url(#linearGradient25119);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-277.42801" y="66.899437" id="rect17681" style="opacity:0.46875;fill:url(#linearGradient25121);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-269.09375" y="56.061657" id="rect17683" style="opacity:0.1875;fill:url(#linearGradient25123);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-294.44736" y="68.035645" id="rect17685" style="opacity:0.1875;fill:url(#linearGradient25125);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-228.10535" y="55.856274" id="rect17687" style="opacity:0.1875;fill:url(#linearGradient25127);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-278.00189" y="86.851196" id="rect17689" style="opacity:0.46875;fill:url(#linearGradient25129);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-256.19824" y="110.05563" id="rect17691" style="opacity:0.46875;fill:url(#linearGradient25131);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-287.13065" y="60.523964" id="rect17693" style="opacity:0.46875;fill:url(#linearGradient25133);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-253.95091" y="103.54987" id="rect17695" style="opacity:0.1875;fill:url(#linearGradient25135);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-235.0334" y="88.186096" id="rect17697" style="opacity:0.1875;fill:url(#linearGradient25137);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-265.44974" y="94.422592" id="rect17699" style="opacity:0.1875;fill:url(#linearGradient25139);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-279.04202" y="103.96825" id="rect17701" style="opacity:0.46875;fill:url(#linearGradient25141);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-285.09955" y="84.472305" id="rect17703" style="opacity:0.46875;fill:url(#linearGradient25143);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-294.48126" y="101.18851" id="rect17705" style="opacity:0.46875;fill:url(#linearGradient25145);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-272.41995" y="90.168793" id="rect17707" style="opacity:0.1875;fill:url(#linearGradient25147);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-226.17566" y="99.90905" id="rect17709" style="opacity:0.1875;fill:url(#linearGradient25149);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-272.65631" y="86.153412" id="rect17711" style="opacity:0.1875;fill:url(#linearGradient25151);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-303.19516" y="79.081665" id="rect17713" style="opacity:0.46875;fill:url(#linearGradient25153);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-260.97839" y="67.344398" id="rect17715" style="opacity:0.46875;fill:url(#linearGradient25155);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-305.65546" y="93.259796" id="rect17717" style="opacity:0.46875;fill:url(#linearGradient25157);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-291.2243" y="88.690613" id="rect17719" style="opacity:0.1875;fill:url(#linearGradient25159);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-300.58456" y="59.647064" id="rect17721" style="opacity:0.1875;fill:url(#linearGradient25161);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-253.12515" y="73.111664" id="rect17723" style="opacity:0.1875;fill:url(#linearGradient25163);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-280.59235" y="91.303307" id="rect17725" style="opacity:0.46875;fill:url(#linearGradient25165);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-246.509" y="67.325012" id="rect17727" style="opacity:0.46875;fill:url(#linearGradient25167);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-228.42133" y="93.896034" id="rect17729" style="opacity:0.46875;fill:url(#linearGradient25169);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-271.88492" y="90.879166" id="rect17731" style="opacity:0.1875;fill:url(#linearGradient25171);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-263.34952" y="103.47399" id="rect17733" style="opacity:0.1875;fill:url(#linearGradient25173);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-272.96045" y="106.24575" id="rect17735" style="opacity:0.1875;fill:url(#linearGradient25175);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-303.68954" y="55.381527" id="rect17737" style="opacity:0.46875;fill:url(#linearGradient25177);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-302.11661" y="89.104057" id="rect17739" style="opacity:0.46875;fill:url(#linearGradient25179);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-295.8905" y="102.75126" id="rect17741" style="opacity:0.46875;fill:url(#linearGradient25181);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-224.67885" y="81.184441" id="rect17743" style="opacity:0.1875;fill:url(#linearGradient25183);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-273.11703" y="89.035004" id="rect17745" style="opacity:0.1875;fill:url(#linearGradient25185);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-295.9751" y="100.35271" id="rect17747" style="opacity:0.1875;fill:url(#linearGradient25187);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-271.15137" y="80.75869" id="rect17749" style="opacity:0.46875;fill:url(#linearGradient25189);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-297.43188" y="77.223198" id="rect17751" style="opacity:0.46875;fill:url(#linearGradient25191);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-289.05075" y="72.696106" id="rect17753" style="opacity:0.46875;fill:url(#linearGradient25193);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-242.19749" y="106.62489" id="rect17755" style="opacity:0.1875;fill:url(#linearGradient25195);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-276.13745" y="69.633575" id="rect17757" style="opacity:0.1875;fill:url(#linearGradient25197);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-230.53471" y="62.632496" id="rect17759" style="opacity:0.1875;fill:url(#linearGradient25199);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-297.95056" y="85.574959" id="rect17761" style="opacity:0.46875;fill:url(#linearGradient25201);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-305.36328" y="101.6518" id="rect17763" style="opacity:0.46875;fill:url(#linearGradient25203);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-286.15607" y="92.363571" id="rect17765" style="opacity:0.46875;fill:url(#linearGradient25205);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-264.91437" y="102.87209" id="rect17767" style="opacity:0.1875;fill:url(#linearGradient25207);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-299.12769" y="68.443901" id="rect17769" style="opacity:0.1875;fill:url(#linearGradient25209);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-277.91699" y="81.518745" id="rect17771" style="opacity:0.1875;fill:url(#linearGradient25211);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-225.47676" y="99.235146" id="rect17773" style="opacity:0.46875;fill:url(#linearGradient25213);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-250.99631" y="104.32848" id="rect17775" style="opacity:0.46875;fill:url(#linearGradient25215);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-277.45819" y="96.042809" id="rect17777" style="opacity:0.46875;fill:url(#linearGradient25217);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-298.11304" y="91.464439" id="rect18151" style="opacity:0.1875;fill:url(#linearGradient25219);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-265.72809" y="57.985466" id="rect18153" style="opacity:0.1875;fill:url(#linearGradient25221);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-274.04907" y="92.447624" id="rect18155" style="opacity:0.1875;fill:url(#linearGradient25223);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-292.48605" y="87.082649" id="rect18157" style="opacity:0.46875;fill:url(#linearGradient25225);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-225.46774" y="71.132614" id="rect18159" style="opacity:0.46875;fill:url(#linearGradient25227);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-294.54868" y="69.479034" id="rect18161" style="opacity:0.46875;fill:url(#linearGradient25229);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-235.54684" y="71.409157" id="rect18163" style="opacity:0.1875;fill:url(#linearGradient25231);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-281.44562" y="88.801552" id="rect18165" style="opacity:0.1875;fill:url(#linearGradient25233);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-260.61575" y="79.20295" id="rect18167" style="opacity:0.1875;fill:url(#linearGradient25235);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-244.08376" y="67.184708" id="rect18169" style="opacity:0.46875;fill:url(#linearGradient25237);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-225.26695" y="68.254173" id="rect18171" style="opacity:0.46875;fill:url(#linearGradient25239);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-295.67917" y="88.566643" id="rect18173" style="opacity:0.46875;fill:url(#linearGradient25241);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-221.37273" y="61.108807" id="rect18175" style="opacity:0.1875;fill:url(#linearGradient25243);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-272.89822" y="107.33531" id="rect18177" style="opacity:0.1875;fill:url(#linearGradient25245);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-276.91226" y="76.051247" id="rect18179" style="opacity:0.1875;fill:url(#linearGradient25247);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-262.29782" y="97.771523" id="rect18181" style="opacity:0.46875;fill:url(#linearGradient25249);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-242.38615" y="90.817757" id="rect18183" style="opacity:0.46875;fill:url(#linearGradient25251);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-261.09634" y="77.677231" id="rect18185" style="opacity:0.46875;fill:url(#linearGradient25253);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-296.38574" y="62.671509" id="rect18187" style="opacity:0.1875;fill:url(#linearGradient25255);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-230.63821" y="75.019676" id="rect18189" style="opacity:0.1875;fill:url(#linearGradient25257);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-276.96573" y="58.94054" id="rect18191" style="opacity:0.1875;fill:url(#linearGradient25259);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-290.89044" y="63.18137" id="rect18193" style="opacity:0.46875;fill:url(#linearGradient25261);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-277.22519" y="85.285896" id="rect18195" style="opacity:0.46875;fill:url(#linearGradient25263);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-277.96872" y="86.968376" id="rect18197" style="opacity:0.46875;fill:url(#linearGradient25265);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-227.8423" y="111.32892" id="rect18199" style="opacity:0.1875;fill:url(#linearGradient25267);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-234.47272" y="110.46347" id="rect18201" style="opacity:0.1875;fill:url(#linearGradient25269);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-261.92764" y="74.383469" id="rect18203" style="opacity:0.1875;fill:url(#linearGradient25271);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-269.07919" y="84.876595" id="rect18205" style="opacity:0.46875;fill:url(#linearGradient25273);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-269.95041" y="86.066269" id="rect18207" style="opacity:0.46875;fill:url(#linearGradient25275);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-270.95801" y="92.406303" id="rect18209" style="opacity:0.46875;fill:url(#linearGradient25277);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-264.59933" y="70.233521" id="rect18211" style="opacity:0.1875;fill:url(#linearGradient25279);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-237.10513" y="80.002182" id="rect18213" style="opacity:0.1875;fill:url(#linearGradient25281);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-226.47241" y="95.684586" id="rect18215" style="opacity:0.1875;fill:url(#linearGradient25283);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-230.99527" y="99.055901" id="rect18217" style="opacity:0.46875;fill:url(#linearGradient25285);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-271.02789" y="85.807312" id="rect18219" style="opacity:0.46875;fill:url(#linearGradient25287);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-298.38324" y="90.704887" id="rect18221" style="opacity:0.46875;fill:url(#linearGradient25289);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-283.76099" y="62.290359" id="rect18223" style="opacity:0.1875;fill:url(#linearGradient25291);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-234.90051" y="75.048828" id="rect18225" style="opacity:0.1875;fill:url(#linearGradient25293);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-241.98842" y="90.335617" id="rect18227" style="opacity:0.1875;fill:url(#linearGradient25295);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-270.44897" y="106.12038" id="rect18229" style="opacity:0.46875;fill:url(#linearGradient25297);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-259.91562" y="92.317909" id="rect18231" style="opacity:0.46875;fill:url(#linearGradient25299);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-245.61569" y="100.5391" id="rect18233" style="opacity:0.46875;fill:url(#linearGradient25301);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-296.33392" y="63.624489" id="rect18235" style="opacity:0.1875;fill:url(#linearGradient25303);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-229.36273" y="72.056847" id="rect18237" style="opacity:0.1875;fill:url(#linearGradient25305);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-280.8735" y="110.21268" id="rect18239" style="opacity:0.1875;fill:url(#linearGradient25307);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-293.63394" y="74.366173" id="rect18241" style="opacity:0.46875;fill:url(#linearGradient25309);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-265.0997" y="79.780212" id="rect18243" style="opacity:0.46875;fill:url(#linearGradient25311);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-270.09283" y="101.99254" id="rect18245" style="opacity:0.46875;fill:url(#linearGradient25313);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-286.76373" y="109.07452" id="rect18247" style="opacity:0.1875;fill:url(#linearGradient25315);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-268.97629" y="98.64402" id="rect18249" style="opacity:0.1875;fill:url(#linearGradient25317);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-279.63684" y="89.344994" id="rect18251" style="opacity:0.1875;fill:url(#linearGradient25319);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-244.27385" y="81.641121" id="rect18253" style="opacity:0.46875;fill:url(#linearGradient25321);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-276.25494" y="109.51963" id="rect18255" style="opacity:0.46875;fill:url(#linearGradient25323);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-245.37708" y="108.9928" id="rect18257" style="opacity:0.46875;fill:url(#linearGradient25325);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-235.19186" y="110.50214" id="rect18259" style="opacity:0.1875;fill:url(#linearGradient25327);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-297.0481" y="93.95919" id="rect18261" style="opacity:0.1875;fill:url(#linearGradient25329);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-229.78215" y="66.527237" id="rect18263" style="opacity:0.1875;fill:url(#linearGradient25331);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-284.03275" y="86.100006" id="rect18265" style="opacity:0.46875;fill:url(#linearGradient25333);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-277.62799" y="104.80125" id="rect18267" style="opacity:0.46875;fill:url(#linearGradient25335);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-251.83594" y="70.125221" id="rect18269" style="opacity:0.46875;fill:url(#linearGradient25337);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-270.16574" y="84.331985" id="rect18271" style="opacity:0.1875;fill:url(#linearGradient25339);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-292.98331" y="96.91481" id="rect18273" style="opacity:0.1875;fill:url(#linearGradient25341);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-231.74715" y="78.689095" id="rect18275" style="opacity:0.1875;fill:url(#linearGradient25343);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-306.39941" y="59.077904" id="rect18277" style="opacity:0.46875;fill:url(#linearGradient25345);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-227.0076" y="95.745003" id="rect18279" style="opacity:0.46875;fill:url(#linearGradient25347);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-304.77591" y="102.81136" id="rect18281" style="opacity:0.46875;fill:url(#linearGradient25349);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-246.87979" y="69.811943" id="rect18283" style="opacity:0.1875;fill:url(#linearGradient25351);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-242.16574" y="87.382187" id="rect18285" style="opacity:0.1875;fill:url(#linearGradient25353);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-270.87027" y="92.79483" id="rect18287" style="opacity:0.1875;fill:url(#linearGradient25355);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-257.38815" y="90.872025" id="rect18289" style="opacity:0.46875;fill:url(#linearGradient25357);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-277.0155" y="79.296844" id="rect18291" style="opacity:0.46875;fill:url(#linearGradient25359);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-242.74591" y="104.70981" id="rect18293" style="opacity:0.46875;fill:url(#linearGradient25361);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-240.28142" y="62.454266" id="rect18295" style="opacity:0.1875;fill:url(#linearGradient25363);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-285.72321" y="60.415363" id="rect18297" style="opacity:0.1875;fill:url(#linearGradient25365);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-251.50877" y="107.67831" id="rect18299" style="opacity:0.1875;fill:url(#linearGradient25367);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-270.79721" y="90.158287" id="rect18301" style="opacity:0.46875;fill:url(#linearGradient25369);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-290.21603" y="76.256042" id="rect18303" style="opacity:0.46875;fill:url(#linearGradient25371);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-282.3176" y="104.62031" id="rect18305" style="opacity:0.46875;fill:url(#linearGradient25373);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-222.24321" y="75.208" id="rect18307" style="opacity:0.1875;fill:url(#linearGradient25375);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-254.33498" y="99.272896" id="rect18309" style="opacity:0.1875;fill:url(#linearGradient25377);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-270.62555" y="84.156494" id="rect18311" style="opacity:0.1875;fill:url(#linearGradient25379);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-249.17912" y="97.841927" id="rect18313" style="opacity:0.46875;fill:url(#linearGradient25381);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-294.68881" y="105.77716" id="rect18315" style="opacity:0.46875;fill:url(#linearGradient25383);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-290.20544" y="62.652821" id="rect18317" style="opacity:0.46875;fill:url(#linearGradient25385);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-264.56491" y="96.323288" id="rect18319" style="opacity:0.1875;fill:url(#linearGradient25387);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-258.96753" y="55.495941" id="rect18321" style="opacity:0.1875;fill:url(#linearGradient25389);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-292.63147" y="68.193329" id="rect18323" style="opacity:0.1875;fill:url(#linearGradient25391);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-230.42424" y="66.986328" id="rect18325" style="opacity:0.46875;fill:url(#linearGradient25393);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-233.0945" y="93.264801" id="rect18327" style="opacity:0.46875;fill:url(#linearGradient25395);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-301.63403" y="98.204636" id="rect18329" style="opacity:0.46875;fill:url(#linearGradient25397);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-288.23471" y="74.236923" id="rect18331" style="opacity:0.1875;fill:url(#linearGradient25399);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-236.69228" y="100.62784" id="rect18333" style="opacity:0.1875;fill:url(#linearGradient25401);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-230.0683" y="80.08036" id="rect18335" style="opacity:0.1875;fill:url(#linearGradient25403);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-291.62607" y="64.716675" id="rect18337" style="opacity:0.46875;fill:url(#linearGradient25405);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-239.75874" y="107.29673" id="rect18339" style="opacity:0.46875;fill:url(#linearGradient25407);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-232.67427" y="99.356606" id="rect18341" style="opacity:0.46875;fill:url(#linearGradient25409);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-234.71683" y="65.645309" id="rect18343" style="opacity:0.1875;fill:url(#linearGradient25411);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-272.67639" y="74.896492" id="rect18345" style="opacity:0.1875;fill:url(#linearGradient25413);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-253.01279" y="58.992363" id="rect18347" style="opacity:0.1875;fill:url(#linearGradient25415);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-234.80728" y="94.758575" id="rect18349" style="opacity:0.46875;fill:url(#linearGradient25417);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-236.86696" y="100.33606" id="rect18351" style="opacity:0.46875;fill:url(#linearGradient25419);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-245.45459" y="104.54546" id="rect18353" style="opacity:0.46875;fill:url(#linearGradient25421);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-274.36459" y="57.800591" id="rect18355" style="opacity:0.1875;fill:url(#linearGradient25423);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-226.97002" y="98.724579" id="rect18357" style="opacity:0.1875;fill:url(#linearGradient25425);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-250.95309" y="84.094955" id="rect18359" style="opacity:0.1875;fill:url(#linearGradient25427);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-240.06047" y="110.67622" id="rect18361" style="opacity:0.46875;fill:url(#linearGradient25429);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-262.89478" y="94.46965" id="rect18363" style="opacity:0.46875;fill:url(#linearGradient25431);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-237.35883" y="83.683098" id="rect18365" style="opacity:0.46875;fill:url(#linearGradient25433);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-271.77145" y="75.577515" id="rect18367" style="opacity:0.1875;fill:url(#linearGradient25435);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-229.45178" y="95.948578" id="rect18369" style="opacity:0.1875;fill:url(#linearGradient25437);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-245.85594" y="63.876396" id="rect18371" style="opacity:0.1875;fill:url(#linearGradient25439);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-236.77063" y="72.637779" id="rect18373" style="opacity:0.46875;fill:url(#linearGradient25441);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-284.58069" y="106.60091" id="rect18375" style="opacity:0.46875;fill:url(#linearGradient25443);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-268.90054" y="60.200027" id="rect18377" style="opacity:0.46875;fill:url(#linearGradient25445);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-222.53291" y="89.377716" id="rect18379" style="opacity:0.1875;fill:url(#linearGradient25447);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-234.34618" y="83.512108" id="rect18381" style="opacity:0.1875;fill:url(#linearGradient25449);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-295.69232" y="66.480316" id="rect18383" style="opacity:0.1875;fill:url(#linearGradient25451);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-297.35358" y="69.703491" id="rect18385" style="opacity:0.46875;fill:url(#linearGradient25453);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-297.26117" y="56.466759" id="rect18387" style="opacity:0.46875;fill:url(#linearGradient25455);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-242.90395" y="81.527306" id="rect18389" style="opacity:0.46875;fill:url(#linearGradient25457);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-280.25595" y="79.487236" id="rect18391" style="opacity:0.1875;fill:url(#linearGradient25459);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-238.13121" y="88.470932" id="rect18393" style="opacity:0.1875;fill:url(#linearGradient25461);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-250.26227" y="86.610855" id="rect18395" style="opacity:0.1875;fill:url(#linearGradient25463);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-257.04407" y="91.484947" id="rect18397" style="opacity:0.46875;fill:url(#linearGradient25465);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-255.31018" y="60.714272" id="rect18399" style="opacity:0.46875;fill:url(#linearGradient25467);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-250.26987" y="76.319176" id="rect18401" style="opacity:0.46875;fill:url(#linearGradient25469);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-271.81497" y="110.69751" id="rect18403" style="opacity:0.1875;fill:url(#linearGradient25471);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-226.56194" y="83.316528" id="rect18405" style="opacity:0.1875;fill:url(#linearGradient25473);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-266.77362" y="75.160622" id="rect18407" style="opacity:0.1875;fill:url(#linearGradient25475);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-265.95584" y="89.178764" id="rect18409" style="opacity:0.46875;fill:url(#linearGradient25477);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-255.21521" y="76.066673" id="rect18411" style="opacity:0.46875;fill:url(#linearGradient25479);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-299.20267" y="110.82329" id="rect18413" style="opacity:0.46875;fill:url(#linearGradient25481);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-252.90068" y="93.641579" id="rect18415" style="opacity:0.1875;fill:url(#linearGradient25483);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-236.98462" y="63.597" id="rect18417" style="opacity:0.1875;fill:url(#linearGradient25485);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-259.41406" y="77.615059" id="rect18419" style="opacity:0.1875;fill:url(#linearGradient25487);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-306.41394" y="84.300209" id="rect18421" style="opacity:0.46875;fill:url(#linearGradient25489);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-248.11342" y="100.78419" id="rect18423" style="opacity:0.46875;fill:url(#linearGradient25491);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-248.6394" y="102.52259" id="rect18425" style="opacity:0.46875;fill:url(#linearGradient25493);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-223.46675" y="64.784454" id="rect18427" style="opacity:0.1875;fill:url(#linearGradient25495);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-231.46829" y="98.256683" id="rect18429" style="opacity:0.1875;fill:url(#linearGradient25497);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-249.84923" y="102.14691" id="rect18431" style="opacity:0.1875;fill:url(#linearGradient25499);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-247.61346" y="62.031593" id="rect18433" style="opacity:0.46875;fill:url(#linearGradient25501);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-301.99881" y="81.942253" id="rect18435" style="opacity:0.46875;fill:url(#linearGradient25503);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-233.75516" y="80.842926" id="rect18437" style="opacity:0.46875;fill:url(#linearGradient25505);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-293.5466" y="83.51545" id="rect18439" style="opacity:0.1875;fill:url(#linearGradient25507);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-231.53737" y="67.027702" id="rect18441" style="opacity:0.1875;fill:url(#linearGradient25509);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-233.38284" y="103.22467" id="rect18443" style="opacity:0.1875;fill:url(#linearGradient25511);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-224.94073" y="62.307873" id="rect18445" style="opacity:0.46875;fill:url(#linearGradient25513);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-268.1153" y="78.606285" id="rect18447" style="opacity:0.46875;fill:url(#linearGradient25515);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-272.53516" y="98.190308" id="rect18449" style="opacity:0.46875;fill:url(#linearGradient25517);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-228.46397" y="68.309998" id="rect18451" style="opacity:0.1875;fill:url(#linearGradient25519);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-280.96036" y="68.613037" id="rect18453" style="opacity:0.1875;fill:url(#linearGradient25521);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-233.97824" y="70.057411" id="rect18455" style="opacity:0.1875;fill:url(#linearGradient25523);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-267.00824" y="107.40057" id="rect18457" style="opacity:0.46875;fill:url(#linearGradient25525);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-243.42072" y="109.3634" id="rect18459" style="opacity:0.46875;fill:url(#linearGradient25527);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-292.83664" y="65.596466" id="rect18461" style="opacity:0.46875;fill:url(#linearGradient25529);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-222.58488" y="86.885582" id="rect18463" style="opacity:0.1875;fill:url(#linearGradient25531);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-303.64371" y="81.863777" id="rect18465" style="opacity:0.1875;fill:url(#linearGradient25533);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-301.68872" y="98.258194" id="rect18467" style="opacity:0.1875;fill:url(#linearGradient25535);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-281.73193" y="57.614296" id="rect18469" style="opacity:0.46875;fill:url(#linearGradient25537);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-250.63004" y="84.332832" id="rect18471" style="opacity:0.46875;fill:url(#linearGradient25539);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-238.7637" y="69.674995" id="rect18473" style="opacity:0.46875;fill:url(#linearGradient25541);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-269.64343" y="82.495186" id="rect18475" style="opacity:0.1875;fill:url(#linearGradient25543);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-267.85864" y="59.185127" id="rect18477" style="opacity:0.1875;fill:url(#linearGradient25545);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-271.09042" y="74.726555" id="rect18479" style="opacity:0.1875;fill:url(#linearGradient25547);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-270.59351" y="73.606941" id="rect18481" style="opacity:0.46875;fill:url(#linearGradient25549);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-298.58517" y="55.815166" id="rect18483" style="opacity:0.46875;fill:url(#linearGradient25551);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-273.51108" y="80.653122" id="rect18485" style="opacity:0.46875;fill:url(#linearGradient25553);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-263.96866" y="89.247513" id="rect18487" style="opacity:0.1875;fill:url(#linearGradient25555);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-266.88388" y="80.690773" id="rect18489" style="opacity:0.1875;fill:url(#linearGradient25557);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-290.79605" y="110.67844" id="rect18491" style="opacity:0.1875;fill:url(#linearGradient25559);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-252.51732" y="75.380501" id="rect18493" style="opacity:0.46875;fill:url(#linearGradient25561);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-226.51567" y="103.38647" id="rect18495" style="opacity:0.46875;fill:url(#linearGradient25563);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-262.96869" y="56.758343" id="rect18497" style="opacity:0.46875;fill:url(#linearGradient25565);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-250.85594" y="102.63554" id="rect18499" style="opacity:0.1875;fill:url(#linearGradient25567);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-251.52267" y="109.84169" id="rect18501" style="opacity:0.1875;fill:url(#linearGradient25569);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-227.80392" y="95.125671" id="rect18503" style="opacity:0.1875;fill:url(#linearGradient25571);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-259.16461" y="77.213577" id="rect18505" style="opacity:0.46875;fill:url(#linearGradient25573);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-258.90277" y="95.847725" id="rect18507" style="opacity:0.46875;fill:url(#linearGradient25575);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-255.6911" y="76.100128" id="rect18509" style="opacity:0.46875;fill:url(#linearGradient25577);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-249.52742" y="102.68053" id="rect18511" style="opacity:0.1875;fill:url(#linearGradient25579);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-256.22385" y="67.563797" id="rect18513" style="opacity:0.1875;fill:url(#linearGradient25581);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-284.05579" y="85.764542" id="rect18515" style="opacity:0.1875;fill:url(#linearGradient25583);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-293.3392" y="60.742577" id="rect18517" style="opacity:0.46875;fill:url(#linearGradient25585);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-282.12518" y="68.472763" id="rect18519" style="opacity:0.46875;fill:url(#linearGradient25587);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-240.16914" y="65.996407" id="rect18521" style="opacity:0.46875;fill:url(#linearGradient25589);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-218.75221" y="86.193619" id="rect18523" style="opacity:0.1875;fill:url(#linearGradient25591);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-241.14877" y="101.30114" id="rect18525" style="opacity:0.1875;fill:url(#linearGradient25593);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-272.47665" y="88.885841" id="rect18527" style="opacity:0.1875;fill:url(#linearGradient25595);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-241.04015" y="101.66671" id="rect18529" style="opacity:0.46875;fill:url(#linearGradient25597);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-239.33102" y="58.575886" id="rect18531" style="opacity:0.46875;fill:url(#linearGradient25599);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-229.40578" y="57.532642" id="rect18533" style="opacity:0.46875;fill:url(#linearGradient25601);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-221.9127" y="57.526257" id="rect18919" style="opacity:0.1875;fill:url(#linearGradient25603);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-234.32135" y="97.074615" id="rect18921" style="opacity:0.1875;fill:url(#linearGradient25605);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-263.4538" y="66.162369" id="rect18923" style="opacity:0.1875;fill:url(#linearGradient25607);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-255.92183" y="91.841202" id="rect18925" style="opacity:0.46875;fill:url(#linearGradient25609);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-278.95801" y="62.992939" id="rect18927" style="opacity:0.46875;fill:url(#linearGradient25611);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-247.78813" y="60.985554" id="rect18929" style="opacity:0.46875;fill:url(#linearGradient25613);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-226.08983" y="85.340904" id="rect18931" style="opacity:0.1875;fill:url(#linearGradient25615);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-297.02982" y="87.608078" id="rect18933" style="opacity:0.1875;fill:url(#linearGradient25617);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-254.55878" y="66.718971" id="rect18935" style="opacity:0.1875;fill:url(#linearGradient25619);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-227.55739" y="84.136307" id="rect18937" style="opacity:0.46875;fill:url(#linearGradient25621);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-241.86101" y="83.323425" id="rect18939" style="opacity:0.46875;fill:url(#linearGradient25623);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-278.49765" y="99.488594" id="rect18941" style="opacity:0.46875;fill:url(#linearGradient25625);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-234.55836" y="100.24726" id="rect18943" style="opacity:0.1875;fill:url(#linearGradient25627);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-233.19774" y="92.854179" id="rect18945" style="opacity:0.1875;fill:url(#linearGradient25629);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-276.54205" y="61.351452" id="rect18947" style="opacity:0.1875;fill:url(#linearGradient25631);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-260.98083" y="88.497482" id="rect18949" style="opacity:0.46875;fill:url(#linearGradient25633);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-233.63409" y="99.553261" id="rect18951" style="opacity:0.46875;fill:url(#linearGradient25635);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-295.47437" y="58.168949" id="rect18953" style="opacity:0.46875;fill:url(#linearGradient25637);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-276.33575" y="86.500946" id="rect18955" style="opacity:0.1875;fill:url(#linearGradient25639);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-298.90872" y="103.5072" id="rect18957" style="opacity:0.1875;fill:url(#linearGradient25641);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-245.78004" y="72.946983" id="rect18959" style="opacity:0.1875;fill:url(#linearGradient25643);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-226.84477" y="85.671165" id="rect18961" style="opacity:0.46875;fill:url(#linearGradient25645);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-234.55591" y="89.883553" id="rect18963" style="opacity:0.46875;fill:url(#linearGradient25647);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-291.39258" y="82.950401" id="rect18965" style="opacity:0.46875;fill:url(#linearGradient25649);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-242.30173" y="75.114151" id="rect18967" style="opacity:0.1875;fill:url(#linearGradient25651);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-283.21027" y="71.787895" id="rect18969" style="opacity:0.1875;fill:url(#linearGradient25653);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-255.39825" y="100.81129" id="rect18971" style="opacity:0.1875;fill:url(#linearGradient25655);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-274.18207" y="66.801216" id="rect18973" style="opacity:0.46875;fill:url(#linearGradient25657);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-277.54575" y="94.54393" id="rect18975" style="opacity:0.46875;fill:url(#linearGradient25659);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-236.51776" y="85.290855" id="rect18977" style="opacity:0.46875;fill:url(#linearGradient25661);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-298.5864" y="71.016502" id="rect18979" style="opacity:0.1875;fill:url(#linearGradient25663);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-303.21921" y="65.639832" id="rect18981" style="opacity:0.1875;fill:url(#linearGradient25665);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-262.79636" y="63.71505" id="rect18983" style="opacity:0.1875;fill:url(#linearGradient25667);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-233.34283" y="107.64001" id="rect18985" style="opacity:0.46875;fill:url(#linearGradient25669);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-294.38077" y="99.69957" id="rect18987" style="opacity:0.46875;fill:url(#linearGradient25671);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-264.94934" y="79.567955" id="rect18989" style="opacity:0.46875;fill:url(#linearGradient25673);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-270.47961" y="106.71353" id="rect18991" style="opacity:0.1875;fill:url(#linearGradient25675);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-237.58325" y="84.44001" id="rect18993" style="opacity:0.1875;fill:url(#linearGradient25677);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-271.00653" y="101.09319" id="rect18995" style="opacity:0.1875;fill:url(#linearGradient25679);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-242.39656" y="106.40167" id="rect18997" style="opacity:0.46875;fill:url(#linearGradient25681);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-229.76819" y="70.810738" id="rect18999" style="opacity:0.46875;fill:url(#linearGradient25683);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-244.0509" y="102.26338" id="rect19001" style="opacity:0.46875;fill:url(#linearGradient25685);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-244.00787" y="93.647499" id="rect19003" style="opacity:0.1875;fill:url(#linearGradient25687);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-300.53571" y="108.52261" id="rect19005" style="opacity:0.1875;fill:url(#linearGradient25689);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-250.90356" y="63.263" id="rect19007" style="opacity:0.1875;fill:url(#linearGradient25691);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-238.44772" y="90.823517" id="rect19009" style="opacity:0.46875;fill:url(#linearGradient25693);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-271.47687" y="89.193001" id="rect19011" style="opacity:0.46875;fill:url(#linearGradient25695);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-272.64713" y="62.666931" id="rect19013" style="opacity:0.46875;fill:url(#linearGradient25697);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-227.9185" y="73.799789" id="rect19015" style="opacity:0.1875;fill:url(#linearGradient25699);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-288.84146" y="86.224449" id="rect19017" style="opacity:0.1875;fill:url(#linearGradient25701);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-263.98773" y="110.16738" id="rect19019" style="opacity:0.1875;fill:url(#linearGradient25703);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-305.17789" y="94.973297" id="rect19021" style="opacity:0.46875;fill:url(#linearGradient25705);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-227.49565" y="74.358421" id="rect19023" style="opacity:0.46875;fill:url(#linearGradient25707);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-290.55728" y="95.373718" id="rect19025" style="opacity:0.46875;fill:url(#linearGradient25709);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-292.83374" y="90.887688" id="rect19027" style="opacity:0.1875;fill:url(#linearGradient25711);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-277.96057" y="94.594093" id="rect19029" style="opacity:0.1875;fill:url(#linearGradient25713);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-262.0192" y="91.37999" id="rect19031" style="opacity:0.1875;fill:url(#linearGradient25715);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-218.39069" y="68.775909" id="rect19033" style="opacity:0.46875;fill:url(#linearGradient25717);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-286.06958" y="103.01775" id="rect19035" style="opacity:0.46875;fill:url(#linearGradient25719);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-303.51514" y="76.4011" id="rect19037" style="opacity:0.46875;fill:url(#linearGradient25721);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-218.21619" y="67.520676" id="rect19039" style="opacity:0.1875;fill:url(#linearGradient25723);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-279.83255" y="84.320534" id="rect19041" style="opacity:0.1875;fill:url(#linearGradient25725);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-273.59525" y="71.078278" id="rect19043" style="opacity:0.1875;fill:url(#linearGradient25727);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-283.35696" y="86.638985" id="rect19045" style="opacity:0.46875;fill:url(#linearGradient25729);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-302.40378" y="82.163078" id="rect19047" style="opacity:0.46875;fill:url(#linearGradient25731);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-264.71713" y="82.552078" id="rect19049" style="opacity:0.46875;fill:url(#linearGradient25733);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-292.31723" y="80.803482" id="rect19051" style="opacity:0.1875;fill:url(#linearGradient25735);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-286.43948" y="78.776352" id="rect19053" style="opacity:0.1875;fill:url(#linearGradient25737);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-286.18832" y="105.04062" id="rect19055" style="opacity:0.1875;fill:url(#linearGradient25739);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-287.76416" y="69.334221" id="rect19057" style="opacity:0.46875;fill:url(#linearGradient25741);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-306.53604" y="106.49574" id="rect19059" style="opacity:0.46875;fill:url(#linearGradient25743);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-250.6328" y="95.204269" id="rect19061" style="opacity:0.46875;fill:url(#linearGradient25745);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-250.92119" y="57.997192" id="rect19063" style="opacity:0.1875;fill:url(#linearGradient25747);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-237.89978" y="108.55125" id="rect19065" style="opacity:0.1875;fill:url(#linearGradient25749);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-269.3967" y="110.37301" id="rect19067" style="opacity:0.1875;fill:url(#linearGradient25751);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-286.70844" y="69.12841" id="rect19069" style="opacity:0.46875;fill:url(#linearGradient25753);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-294.84006" y="95.986496" id="rect19071" style="opacity:0.46875;fill:url(#linearGradient25755);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-244.98888" y="103.69247" id="rect19073" style="opacity:0.46875;fill:url(#linearGradient25757);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-276.38586" y="67.375679" id="rect19075" style="opacity:0.1875;fill:url(#linearGradient25759);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-284.78357" y="70.102432" id="rect19077" style="opacity:0.1875;fill:url(#linearGradient25761);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-258.98303" y="107.18321" id="rect19079" style="opacity:0.1875;fill:url(#linearGradient25763);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-221.54657" y="74.298431" id="rect19081" style="opacity:0.46875;fill:url(#linearGradient25765);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-290.54166" y="91.346199" id="rect19083" style="opacity:0.46875;fill:url(#linearGradient25767);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-296.13815" y="80.275932" id="rect19085" style="opacity:0.46875;fill:url(#linearGradient25769);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-299.84622" y="78.927689" id="rect19087" style="opacity:0.1875;fill:url(#linearGradient25771);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-252.49251" y="104.74801" id="rect19089" style="opacity:0.1875;fill:url(#linearGradient25773);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-242.81819" y="60.508629" id="rect19091" style="opacity:0.1875;fill:url(#linearGradient25775);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-251.77986" y="84.047173" id="rect19093" style="opacity:0.46875;fill:url(#linearGradient25777);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-292.71603" y="93.857674" id="rect19095" style="opacity:0.46875;fill:url(#linearGradient25779);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-245.01331" y="68.597374" id="rect19097" style="opacity:0.46875;fill:url(#linearGradient25781);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-288.43222" y="67.29528" id="rect19099" style="opacity:0.1875;fill:url(#linearGradient25783);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-246.39505" y="75.4105" id="rect19101" style="opacity:0.1875;fill:url(#linearGradient25785);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-227.18639" y="93.951813" id="rect19103" style="opacity:0.1875;fill:url(#linearGradient25787);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-279.88348" y="66.440628" id="rect19105" style="opacity:0.46875;fill:url(#linearGradient25789);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-236.90556" y="83.751076" id="rect19107" style="opacity:0.46875;fill:url(#linearGradient25791);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-243.24927" y="64.618744" id="rect19109" style="opacity:0.46875;fill:url(#linearGradient25793);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-292.68109" y="104.28016" id="rect19111" style="opacity:0.1875;fill:url(#linearGradient25795);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-262.19943" y="89.530205" id="rect19113" style="opacity:0.1875;fill:url(#linearGradient25797);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-260.99399" y="105.37378" id="rect19115" style="opacity:0.1875;fill:url(#linearGradient25799);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-270.28281" y="60.801304" id="rect19117" style="opacity:0.46875;fill:url(#linearGradient25801);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-289.56076" y="82.010605" id="rect19119" style="opacity:0.46875;fill:url(#linearGradient25803);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-247.97751" y="82.576714" id="rect19121" style="opacity:0.46875;fill:url(#linearGradient25805);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-277.05029" y="99.69252" id="rect19123" style="opacity:0.1875;fill:url(#linearGradient25807);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-298.12518" y="56.092049" id="rect19125" style="opacity:0.1875;fill:url(#linearGradient25809);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-306.81729" y="83.794304" id="rect19127" style="opacity:0.1875;fill:url(#linearGradient25811);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-277.71368" y="105.04692" id="rect19129" style="opacity:0.46875;fill:url(#linearGradient25813);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-269.64838" y="65.826553" id="rect19131" style="opacity:0.46875;fill:url(#linearGradient25815);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-243.96567" y="64.875366" id="rect19133" style="opacity:0.46875;fill:url(#linearGradient25817);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-298.39728" y="105.96532" id="rect19135" style="opacity:0.1875;fill:url(#linearGradient25819);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-259.63116" y="84.33313" id="rect19137" style="opacity:0.1875;fill:url(#linearGradient25821);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-228.94666" y="103.36714" id="rect19139" style="opacity:0.1875;fill:url(#linearGradient25823);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-272.03406" y="72.169991" id="rect19141" style="opacity:0.46875;fill:url(#linearGradient25825);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-226.07004" y="91.508087" id="rect19143" style="opacity:0.46875;fill:url(#linearGradient25827);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-290.74023" y="65.295685" id="rect19145" style="opacity:0.46875;fill:url(#linearGradient25829);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-264.46622" y="94.028046" id="rect19147" style="opacity:0.1875;fill:url(#linearGradient25831);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-299.63184" y="100.02885" id="rect19149" style="opacity:0.1875;fill:url(#linearGradient25833);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-262.31564" y="68.181747" id="rect19151" style="opacity:0.1875;fill:url(#linearGradient25835);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-281.37823" y="80.158287" id="rect19153" style="opacity:0.46875;fill:url(#linearGradient25837);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-267.25195" y="73.81916" id="rect19155" style="opacity:0.46875;fill:url(#linearGradient25839);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-250.21211" y="72.697601" id="rect19157" style="opacity:0.46875;fill:url(#linearGradient25841);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-298.42764" y="91.750961" id="rect19159" style="opacity:0.1875;fill:url(#linearGradient25843);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-287.2442" y="84.52874" id="rect19161" style="opacity:0.1875;fill:url(#linearGradient25845);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-304.86484" y="66.390846" id="rect19163" style="opacity:0.1875;fill:url(#linearGradient25847);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-225.04269" y="107.95484" id="rect19165" style="opacity:0.46875;fill:url(#linearGradient25849);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-265.05286" y="78.926689" id="rect19167" style="opacity:0.46875;fill:url(#linearGradient25851);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-233.63925" y="107.33574" id="rect19169" style="opacity:0.46875;fill:url(#linearGradient25853);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-275.09424" y="64.496719" id="rect19171" style="opacity:0.1875;fill:url(#linearGradient25855);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-292.27118" y="70.296356" id="rect19173" style="opacity:0.1875;fill:url(#linearGradient25857);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-241.17659" y="90.893532" id="rect19175" style="opacity:0.1875;fill:url(#linearGradient25859);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-232.24466" y="62.413158" id="rect19177" style="opacity:0.46875;fill:url(#linearGradient25861);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-286.59363" y="91.436836" id="rect19179" style="opacity:0.46875;fill:url(#linearGradient25863);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-296.57291" y="92.877731" id="rect19181" style="opacity:0.46875;fill:url(#linearGradient25865);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-225.94574" y="85.862312" id="rect19183" style="opacity:0.1875;fill:url(#linearGradient25867);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-285.98853" y="63.901665" id="rect19185" style="opacity:0.1875;fill:url(#linearGradient25869);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-295.00256" y="107.28114" id="rect19187" style="opacity:0.1875;fill:url(#linearGradient25871);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-297.86865" y="89.48291" id="rect19189" style="opacity:0.46875;fill:url(#linearGradient25873);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-297.61465" y="57.415867" id="rect19191" style="opacity:0.46875;fill:url(#linearGradient25875);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-254.48337" y="84.216339" id="rect19193" style="opacity:0.46875;fill:url(#linearGradient25877);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-258.94864" y="71.953529" id="rect19195" style="opacity:0.1875;fill:url(#linearGradient25879);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-298.51169" y="68.122597" id="rect19197" style="opacity:0.1875;fill:url(#linearGradient25881);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-275.92078" y="111.10387" id="rect19199" style="opacity:0.1875;fill:url(#linearGradient25883);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-299.40286" y="63.712029" id="rect19201" style="opacity:0.46875;fill:url(#linearGradient25885);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-258.28314" y="106.27374" id="rect19203" style="opacity:0.46875;fill:url(#linearGradient25887);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-263.1701" y="55.287373" id="rect19205" style="opacity:0.46875;fill:url(#linearGradient25889);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-249.48601" y="57.769218" id="rect19207" style="opacity:0.1875;fill:url(#linearGradient25891);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-267.46838" y="77.377342" id="rect19209" style="opacity:0.1875;fill:url(#linearGradient25893);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-293.15372" y="69.913437" id="rect19211" style="opacity:0.1875;fill:url(#linearGradient25895);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-290.19022" y="65.70224" id="rect19213" style="opacity:0.46875;fill:url(#linearGradient25897);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-268.64978" y="94.028038" id="rect19215" style="opacity:0.46875;fill:url(#linearGradient25899);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-230.81993" y="97.112503" id="rect19217" style="opacity:0.46875;fill:url(#linearGradient25901);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-305.59576" y="97.91346" id="rect19219" style="opacity:0.1875;fill:url(#linearGradient25903);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-284.39734" y="98.881744" id="rect19221" style="opacity:0.1875;fill:url(#linearGradient25905);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-292.14093" y="78.441406" id="rect19223" style="opacity:0.1875;fill:url(#linearGradient25907);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-304.33417" y="55.983482" id="rect19225" style="opacity:0.46875;fill:url(#linearGradient25909);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-277.66583" y="72.041855" id="rect19227" style="opacity:0.46875;fill:url(#linearGradient25911);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-304.92673" y="70.234978" id="rect19229" style="opacity:0.46875;fill:url(#linearGradient25913);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-264.9696" y="84.045815" id="rect19231" style="opacity:0.1875;fill:url(#linearGradient25915);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-246.9485" y="110.36636" id="rect19233" style="opacity:0.1875;fill:url(#linearGradient25917);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-230.12448" y="78.765671" id="rect19235" style="opacity:0.1875;fill:url(#linearGradient25919);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-268.93396" y="66.957794" id="rect19237" style="opacity:0.46875;fill:url(#linearGradient25921);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-261.72153" y="63.677078" id="rect19239" style="opacity:0.46875;fill:url(#linearGradient25923);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-234.16353" y="106.5026" id="rect19241" style="opacity:0.46875;fill:url(#linearGradient25925);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-229.84259" y="78.04248" id="rect19243" style="opacity:0.1875;fill:url(#linearGradient25927);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-252.24341" y="97.765053" id="rect19245" style="opacity:0.1875;fill:url(#linearGradient25929);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-258.61215" y="105.56336" id="rect19247" style="opacity:0.1875;fill:url(#linearGradient25931);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-257.03516" y="103.79118" id="rect19249" style="opacity:0.46875;fill:url(#linearGradient25933);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-246.26445" y="74.449562" id="rect19251" style="opacity:0.46875;fill:url(#linearGradient25935);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-229.85646" y="68.907692" id="rect19253" style="opacity:0.46875;fill:url(#linearGradient25937);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-280.54657" y="89.704041" id="rect19255" style="opacity:0.1875;fill:url(#linearGradient25939);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-278.86136" y="76.668816" id="rect19257" style="opacity:0.1875;fill:url(#linearGradient25941);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-285.42096" y="61.806561" id="rect19259" style="opacity:0.1875;fill:url(#linearGradient25943);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-243.98203" y="69.427635" id="rect19261" style="opacity:0.46875;fill:url(#linearGradient25945);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-242.41055" y="85.174919" id="rect19263" style="opacity:0.46875;fill:url(#linearGradient25947);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-246.0016" y="103.53281" id="rect19265" style="opacity:0.46875;fill:url(#linearGradient25949);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-243.7686" y="75.559853" id="rect19267" style="opacity:0.1875;fill:url(#linearGradient25951);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-244.5695" y="107.75644" id="rect19269" style="opacity:0.1875;fill:url(#linearGradient25953);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-230.72728" y="105.42181" id="rect19271" style="opacity:0.1875;fill:url(#linearGradient25955);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-306.7652" y="82.467445" id="rect19273" style="opacity:0.46875;fill:url(#linearGradient25957);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-253.38632" y="95.402771" id="rect19275" style="opacity:0.46875;fill:url(#linearGradient25959);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-240.82684" y="72.933113" id="rect19277" style="opacity:0.46875;fill:url(#linearGradient25961);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-299.04517" y="93.536026" id="rect19279" style="opacity:0.1875;fill:url(#linearGradient25963);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-270.15546" y="89.64119" id="rect19281" style="opacity:0.1875;fill:url(#linearGradient25965);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-267.89304" y="66.820396" id="rect19283" style="opacity:0.1875;fill:url(#linearGradient25967);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-301.6131" y="71.216759" id="rect19285" style="opacity:0.46875;fill:url(#linearGradient25969);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-230.00293" y="94.547012" id="rect19287" style="opacity:0.46875;fill:url(#linearGradient25971);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-258.54749" y="111.24785" id="rect19289" style="opacity:0.46875;fill:url(#linearGradient25973);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-246.9171" y="75.402245" id="rect19291" style="opacity:0.1875;fill:url(#linearGradient25975);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-278.30652" y="64.5979" id="rect19293" style="opacity:0.1875;fill:url(#linearGradient25977);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-275.15259" y="109.60979" id="rect19295" style="opacity:0.1875;fill:url(#linearGradient25979);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-294.30212" y="103.83401" id="rect19297" style="opacity:0.46875;fill:url(#linearGradient25981);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-263.05688" y="70.616966" id="rect19299" style="opacity:0.46875;fill:url(#linearGradient25983);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-240.5407" y="108.18846" id="rect19301" style="opacity:0.46875;fill:url(#linearGradient25985);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-266.00439" y="89.209114" id="rect19687" style="opacity:0.1875;fill:url(#linearGradient25987);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-237.96806" y="93.906403" id="rect19689" style="opacity:0.1875;fill:url(#linearGradient25989);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-271.9646" y="71.037643" id="rect19691" style="opacity:0.1875;fill:url(#linearGradient25991);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-234.56036" y="72.821198" id="rect19693" style="opacity:0.46875;fill:url(#linearGradient25993);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-240.60529" y="60.0312" id="rect19695" style="opacity:0.46875;fill:url(#linearGradient25995);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-229.2816" y="72.936653" id="rect19697" style="opacity:0.46875;fill:url(#linearGradient25997);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-285.78677" y="56.41328" id="rect19699" style="opacity:0.1875;fill:url(#linearGradient25999);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-279.86523" y="110.02824" id="rect19701" style="opacity:0.1875;fill:url(#linearGradient26001);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-228.45341" y="55.875343" id="rect19703" style="opacity:0.1875;fill:url(#linearGradient26003);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-306.50208" y="103.96443" id="rect19705" style="opacity:0.46875;fill:url(#linearGradient26005);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-305.84354" y="67.604721" id="rect19707" style="opacity:0.46875;fill:url(#linearGradient26007);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-235.03075" y="96.542793" id="rect19709" style="opacity:0.46875;fill:url(#linearGradient26009);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-305.05197" y="77.771103" id="rect19711" style="opacity:0.1875;fill:url(#linearGradient26011);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-238.98514" y="107.89761" id="rect19713" style="opacity:0.1875;fill:url(#linearGradient26013);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-270.06744" y="100.2785" id="rect19715" style="opacity:0.1875;fill:url(#linearGradient26015);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-281.4613" y="93.778717" id="rect19717" style="opacity:0.46875;fill:url(#linearGradient26017);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-274.2962" y="110.55288" id="rect19719" style="opacity:0.46875;fill:url(#linearGradient26019);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-281.81448" y="104.48936" id="rect19721" style="opacity:0.46875;fill:url(#linearGradient26021);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-282.3071" y="90.755722" id="rect19723" style="opacity:0.1875;fill:url(#linearGradient26023);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-236.40009" y="66.625076" id="rect19725" style="opacity:0.1875;fill:url(#linearGradient26025);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-274.82065" y="61.598354" id="rect19727" style="opacity:0.1875;fill:url(#linearGradient26027);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-241.56587" y="78.79348" id="rect19729" style="opacity:0.46875;fill:url(#linearGradient26029);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-305.73978" y="109.59057" id="rect19731" style="opacity:0.46875;fill:url(#linearGradient26031);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-275.17905" y="69.12339" id="rect19733" style="opacity:0.46875;fill:url(#linearGradient26033);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-216.81087" y="69.328728" id="rect19735" style="opacity:0.1875;fill:url(#linearGradient26035);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-245.59779" y="60.468842" id="rect19737" style="opacity:0.1875;fill:url(#linearGradient26037);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-292.39996" y="69.177399" id="rect19739" style="opacity:0.1875;fill:url(#linearGradient26039);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-266.0867" y="103.58194" id="rect19741" style="opacity:0.46875;fill:url(#linearGradient26041);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-250.35747" y="97.591721" id="rect19743" style="opacity:0.46875;fill:url(#linearGradient26043);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-284.92908" y="108.21365" id="rect19745" style="opacity:0.46875;fill:url(#linearGradient26045);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-280.70068" y="94.988106" id="rect19747" style="opacity:0.1875;fill:url(#linearGradient26047);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-243.22475" y="86.568611" id="rect19749" style="opacity:0.1875;fill:url(#linearGradient26049);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-225.897" y="68.450813" id="rect19751" style="opacity:0.1875;fill:url(#linearGradient26051);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-242.28683" y="105.07285" id="rect19753" style="opacity:0.46875;fill:url(#linearGradient26053);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-300.34781" y="101.12499" id="rect19755" style="opacity:0.46875;fill:url(#linearGradient26055);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-260.66919" y="72.771706" id="rect19757" style="opacity:0.46875;fill:url(#linearGradient26057);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-244.08136" y="109.14403" id="rect19759" style="opacity:0.1875;fill:url(#linearGradient26059);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-266.47391" y="56.483292" id="rect19761" style="opacity:0.1875;fill:url(#linearGradient26061);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-305.57245" y="77.759392" id="rect19763" style="opacity:0.1875;fill:url(#linearGradient26063);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-265.63818" y="84.989304" id="rect19765" style="opacity:0.46875;fill:url(#linearGradient26065);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-295.00952" y="84.498077" id="rect19767" style="opacity:0.46875;fill:url(#linearGradient26067);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-301.5238" y="87.767929" id="rect19769" style="opacity:0.46875;fill:url(#linearGradient26069);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-236.25314" y="107.81876" id="rect19771" style="opacity:0.1875;fill:url(#linearGradient26071);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-258.9086" y="92.5084" id="rect19773" style="opacity:0.1875;fill:url(#linearGradient26073);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-294.40143" y="68.458366" id="rect19775" style="opacity:0.1875;fill:url(#linearGradient26075);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-275.85092" y="65.466675" id="rect19777" style="opacity:0.46875;fill:url(#linearGradient26077);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-256.8295" y="68.729492" id="rect19779" style="opacity:0.46875;fill:url(#linearGradient26079);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-263.39764" y="58.76083" id="rect19781" style="opacity:0.46875;fill:url(#linearGradient26081);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-294.33389" y="91.26815" id="rect19783" style="opacity:0.1875;fill:url(#linearGradient26083);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-235.94896" y="82.49556" id="rect19785" style="opacity:0.1875;fill:url(#linearGradient26085);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-233.46701" y="75.851974" id="rect19787" style="opacity:0.1875;fill:url(#linearGradient26087);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-302.13321" y="72.279182" id="rect19789" style="opacity:0.46875;fill:url(#linearGradient26089);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-242.7038" y="106.88218" id="rect19791" style="opacity:0.46875;fill:url(#linearGradient26091);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-241.86159" y="71.95945" id="rect19793" style="opacity:0.46875;fill:url(#linearGradient26093);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-269.88998" y="66.489037" id="rect19795" style="opacity:0.1875;fill:url(#linearGradient26095);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-250.97731" y="90.453789" id="rect19797" style="opacity:0.1875;fill:url(#linearGradient26097);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-285.25266" y="74.747742" id="rect19799" style="opacity:0.1875;fill:url(#linearGradient26099);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-237.03563" y="65.806068" id="rect19801" style="opacity:0.46875;fill:url(#linearGradient26101);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-253.26402" y="74.816711" id="rect19803" style="opacity:0.46875;fill:url(#linearGradient26103);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-246.60954" y="70.76754" id="rect19805" style="opacity:0.46875;fill:url(#linearGradient26105);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-267.31042" y="82.344101" id="rect19807" style="opacity:0.1875;fill:url(#linearGradient26107);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-245.2084" y="90.807762" id="rect19809" style="opacity:0.1875;fill:url(#linearGradient26109);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-239.56085" y="74.873642" id="rect19811" style="opacity:0.1875;fill:url(#linearGradient26111);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-296.24194" y="108.07713" id="rect19813" style="opacity:0.46875;fill:url(#linearGradient26113);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-254.00378" y="94.862534" id="rect19815" style="opacity:0.46875;fill:url(#linearGradient26115);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-289.65979" y="88.722481" id="rect19817" style="opacity:0.46875;fill:url(#linearGradient26117);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-235.76619" y="104.99657" id="rect19819" style="opacity:0.1875;fill:url(#linearGradient26119);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-295.69971" y="99.441635" id="rect19821" style="opacity:0.1875;fill:url(#linearGradient26121);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-300.08588" y="55.394043" id="rect19823" style="opacity:0.1875;fill:url(#linearGradient26123);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-233.71527" y="89.729172" id="rect19825" style="opacity:0.46875;fill:url(#linearGradient26125);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-297.57977" y="87.39814" id="rect19827" style="opacity:0.46875;fill:url(#linearGradient26127);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-246.60815" y="61.057537" id="rect19829" style="opacity:0.46875;fill:url(#linearGradient26129);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-243.3033" y="93.364738" id="rect19831" style="opacity:0.1875;fill:url(#linearGradient26131);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-291.2106" y="109.53021" id="rect19833" style="opacity:0.1875;fill:url(#linearGradient26133);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-240.3336" y="95.752419" id="rect19835" style="opacity:0.1875;fill:url(#linearGradient26135);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-260.09399" y="108.47672" id="rect19837" style="opacity:0.46875;fill:url(#linearGradient26137);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-281.98718" y="56.313244" id="rect19839" style="opacity:0.46875;fill:url(#linearGradient26139);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-250.88078" y="66.299667" id="rect19841" style="opacity:0.46875;fill:url(#linearGradient26141);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-233.43297" y="98.155182" id="rect19843" style="opacity:0.1875;fill:url(#linearGradient26143);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-264.12787" y="56.134888" id="rect19845" style="opacity:0.1875;fill:url(#linearGradient26145);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-306.90723" y="99.438095" id="rect19847" style="opacity:0.1875;fill:url(#linearGradient26147);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-245.72171" y="108.76661" id="rect19849" style="opacity:0.46875;fill:url(#linearGradient26149);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-284.49231" y="66.532898" id="rect19851" style="opacity:0.46875;fill:url(#linearGradient26151);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-232.77087" y="79.516312" id="rect19853" style="opacity:0.46875;fill:url(#linearGradient26153);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-236.68567" y="88.295525" id="rect19855" style="opacity:0.1875;fill:url(#linearGradient26155);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-264.75388" y="79.418007" id="rect19857" style="opacity:0.1875;fill:url(#linearGradient26157);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-300.2804" y="82.868881" id="rect19859" style="opacity:0.1875;fill:url(#linearGradient26159);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-257.78253" y="86.814514" id="rect19861" style="opacity:0.46875;fill:url(#linearGradient26161);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-241.81927" y="61.421219" id="rect19863" style="opacity:0.46875;fill:url(#linearGradient26163);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-226.81541" y="88.583298" id="rect19865" style="opacity:0.46875;fill:url(#linearGradient26165);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-305.35025" y="110.12419" id="rect19867" style="opacity:0.1875;fill:url(#linearGradient26167);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-289.07797" y="86.085411" id="rect19869" style="opacity:0.1875;fill:url(#linearGradient26169);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-280.14191" y="111.1115" id="rect19871" style="opacity:0.1875;fill:url(#linearGradient26171);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-236.09656" y="84.347092" id="rect19873" style="opacity:0.46875;fill:url(#linearGradient26173);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-300.2934" y="71.749733" id="rect19875" style="opacity:0.46875;fill:url(#linearGradient26175);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-273.99847" y="67.531227" id="rect19877" style="opacity:0.46875;fill:url(#linearGradient26177);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-251.12584" y="61.71769" id="rect19879" style="opacity:0.1875;fill:url(#linearGradient26179);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-297.22586" y="107.49362" id="rect19881" style="opacity:0.1875;fill:url(#linearGradient26181);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-285.43884" y="105.33451" id="rect19883" style="opacity:0.1875;fill:url(#linearGradient26183);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-279.26175" y="107.8763" id="rect19885" style="opacity:0.46875;fill:url(#linearGradient26185);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-264.44354" y="67.935165" id="rect19887" style="opacity:0.46875;fill:url(#linearGradient26187);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-275.49667" y="96.643944" id="rect19889" style="opacity:0.46875;fill:url(#linearGradient26189);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-217.63341" y="107.29041" id="rect19891" style="opacity:0.1875;fill:url(#linearGradient26191);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-228.05434" y="67.919067" id="rect19893" style="opacity:0.1875;fill:url(#linearGradient26193);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-261.32623" y="107.8399" id="rect19895" style="opacity:0.1875;fill:url(#linearGradient26195);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-289.12415" y="104.71578" id="rect19897" style="opacity:0.46875;fill:url(#linearGradient26197);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-299.92154" y="103.894" id="rect19899" style="opacity:0.46875;fill:url(#linearGradient26199);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-234.99353" y="69.89447" id="rect19901" style="opacity:0.46875;fill:url(#linearGradient26201);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-292.92441" y="70.290993" id="rect19903" style="opacity:0.1875;fill:url(#linearGradient26203);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-290.26547" y="75.941833" id="rect19905" style="opacity:0.1875;fill:url(#linearGradient26205);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-230.47929" y="81.975525" id="rect19907" style="opacity:0.1875;fill:url(#linearGradient26207);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-227.77673" y="111.29926" id="rect19909" style="opacity:0.46875;fill:url(#linearGradient26209);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-263.11667" y="99.947609" id="rect19911" style="opacity:0.46875;fill:url(#linearGradient26211);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-242.85245" y="88.847588" id="rect19913" style="opacity:0.46875;fill:url(#linearGradient26213);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-249.8663" y="99.503418" id="rect19915" style="opacity:0.1875;fill:url(#linearGradient26215);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-246.01836" y="106.64564" id="rect19917" style="opacity:0.1875;fill:url(#linearGradient26217);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-262.59598" y="66.732162" id="rect19919" style="opacity:0.1875;fill:url(#linearGradient26219);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-223.82793" y="100.37089" id="rect19921" style="opacity:0.46875;fill:url(#linearGradient26221);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-278.13416" y="81.990974" id="rect19923" style="opacity:0.46875;fill:url(#linearGradient26223);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-306.29108" y="92.491669" id="rect19925" style="opacity:0.46875;fill:url(#linearGradient26225);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-291.61893" y="79.634949" id="rect19927" style="opacity:0.1875;fill:url(#linearGradient26227);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-255.52936" y="98.797989" id="rect19929" style="opacity:0.1875;fill:url(#linearGradient26229);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-273.95828" y="110.65452" id="rect19931" style="opacity:0.1875;fill:url(#linearGradient26231);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-217.95099" y="100.52077" id="rect19933" style="opacity:0.46875;fill:url(#linearGradient26233);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-288.4422" y="93.812157" id="rect19935" style="opacity:0.46875;fill:url(#linearGradient26235);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-277.36646" y="94.473045" id="rect19937" style="opacity:0.46875;fill:url(#linearGradient26237);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-222.96104" y="111.20544" id="rect19939" style="opacity:0.1875;fill:url(#linearGradient26239);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-275.77539" y="78.428696" id="rect19941" style="opacity:0.1875;fill:url(#linearGradient26241);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-227.76193" y="101.67466" id="rect19943" style="opacity:0.1875;fill:url(#linearGradient26243);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-293.64917" y="55.1898" id="rect19945" style="opacity:0.46875;fill:url(#linearGradient26245);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-281.67783" y="105.24789" id="rect19947" style="opacity:0.46875;fill:url(#linearGradient26247);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-230.7887" y="107.56207" id="rect19949" style="opacity:0.46875;fill:url(#linearGradient26249);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-305.32104" y="75.765396" id="rect19951" style="opacity:0.1875;fill:url(#linearGradient26251);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-302.3252" y="70.395012" id="rect19953" style="opacity:0.1875;fill:url(#linearGradient26253);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-300.4624" y="77.843994" id="rect19955" style="opacity:0.1875;fill:url(#linearGradient26255);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-246.46291" y="97.798653" id="rect19957" style="opacity:0.46875;fill:url(#linearGradient26257);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-236.97621" y="92.625015" id="rect19959" style="opacity:0.46875;fill:url(#linearGradient26259);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-292.16928" y="66.244278" id="rect19961" style="opacity:0.46875;fill:url(#linearGradient26261);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-283.05453" y="106.82121" id="rect19963" style="opacity:0.1875;fill:url(#linearGradient26263);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-255.95485" y="82.979355" id="rect19965" style="opacity:0.1875;fill:url(#linearGradient26265);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-296.56934" y="75.003525" id="rect19967" style="opacity:0.1875;fill:url(#linearGradient26267);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-252.9155" y="60.718307" id="rect19969" style="opacity:0.46875;fill:url(#linearGradient26269);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-296.39957" y="65.565224" id="rect19971" style="opacity:0.46875;fill:url(#linearGradient26271);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-288.19415" y="66.931465" id="rect19973" style="opacity:0.46875;fill:url(#linearGradient26273);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-235.45161" y="67.468315" id="rect19975" style="opacity:0.1875;fill:url(#linearGradient26275);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-251.94643" y="102.85509" id="rect19977" style="opacity:0.1875;fill:url(#linearGradient26277);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-253.84683" y="97.23008" id="rect19979" style="opacity:0.1875;fill:url(#linearGradient26279);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-218.62408" y="106.39987" id="rect19981" style="opacity:0.46875;fill:url(#linearGradient26281);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-252.86404" y="86.620399" id="rect19983" style="opacity:0.46875;fill:url(#linearGradient26283);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-268.98251" y="105.18267" id="rect19985" style="opacity:0.46875;fill:url(#linearGradient26285);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-244.57259" y="96.846413" id="rect19987" style="opacity:0.1875;fill:url(#linearGradient26287);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-241.35466" y="72.427864" id="rect19989" style="opacity:0.1875;fill:url(#linearGradient26289);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-243.7484" y="60.295509" id="rect19991" style="opacity:0.1875;fill:url(#linearGradient26291);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-222.45859" y="103.16962" id="rect19993" style="opacity:0.46875;fill:url(#linearGradient26293);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-246.9902" y="99.331314" id="rect19995" style="opacity:0.46875;fill:url(#linearGradient26295);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-271.4754" y="67.198364" id="rect19997" style="opacity:0.46875;fill:url(#linearGradient26297);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-224.57295" y="78.623528" id="rect19999" style="opacity:0.1875;fill:url(#linearGradient26299);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-300.48843" y="58.754765" id="rect20001" style="opacity:0.1875;fill:url(#linearGradient26301);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-258.62601" y="92.053108" id="rect20003" style="opacity:0.1875;fill:url(#linearGradient26303);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-268.83109" y="89.63459" id="rect20005" style="opacity:0.46875;fill:url(#linearGradient26305);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-275.99036" y="81.23172" id="rect20007" style="opacity:0.46875;fill:url(#linearGradient26307);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-290.10904" y="79.479607" id="rect20009" style="opacity:0.46875;fill:url(#linearGradient26309);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-298.9653" y="83.475426" id="rect20011" style="opacity:0.1875;fill:url(#linearGradient26311);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-257.05237" y="99.696861" id="rect20013" style="opacity:0.1875;fill:url(#linearGradient26313);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-228.81726" y="94.231972" id="rect20015" style="opacity:0.1875;fill:url(#linearGradient26315);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-293.22989" y="104.25684" id="rect20017" style="opacity:0.46875;fill:url(#linearGradient26317);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-261.13651" y="55.010883" id="rect20019" style="opacity:0.46875;fill:url(#linearGradient26319);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-239.68616" y="109.11954" id="rect20021" style="opacity:0.46875;fill:url(#linearGradient26321);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-230.49696" y="76.606689" id="rect20023" style="opacity:0.1875;fill:url(#linearGradient26323);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-260.6626" y="75.026268" id="rect20025" style="opacity:0.1875;fill:url(#linearGradient26325);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-286.59128" y="88.79126" id="rect20027" style="opacity:0.1875;fill:url(#linearGradient26327);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-242.85246" y="107.28387" id="rect20029" style="opacity:0.46875;fill:url(#linearGradient26329);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-239.85561" y="83.328651" id="rect20031" style="opacity:0.46875;fill:url(#linearGradient26331);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-243.79652" y="91.03093" id="rect20033" style="opacity:0.46875;fill:url(#linearGradient26333);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-306.53204" y="102.40226" id="rect20035" style="opacity:0.1875;fill:url(#linearGradient26335);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-243.65462" y="86.312164" id="rect20037" style="opacity:0.1875;fill:url(#linearGradient26337);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-297.23593" y="99.523064" id="rect20039" style="opacity:0.1875;fill:url(#linearGradient26339);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-270.10629" y="85.250237" id="rect20041" style="opacity:0.46875;fill:url(#linearGradient26341);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-259.59616" y="62.64764" id="rect20043" style="opacity:0.46875;fill:url(#linearGradient26343);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-279.72336" y="57.199894" id="rect20045" style="opacity:0.46875;fill:url(#linearGradient26345);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-237.94009" y="69.578125" id="rect20047" style="opacity:0.1875;fill:url(#linearGradient26347);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-237.54706" y="63.932827" id="rect20049" style="opacity:0.1875;fill:url(#linearGradient26349);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-234.06938" y="71.778969" id="rect20051" style="opacity:0.1875;fill:url(#linearGradient26351);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-233.02867" y="79.090485" id="rect20053" style="opacity:0.46875;fill:url(#linearGradient26353);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-250.32771" y="69.432304" id="rect20055" style="opacity:0.46875;fill:url(#linearGradient26355);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-234.56918" y="79.627808" id="rect20057" style="opacity:0.46875;fill:url(#linearGradient26357);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-277.56387" y="56.465225" id="rect20059" style="opacity:0.1875;fill:url(#linearGradient26359);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-283.46451" y="90.167923" id="rect20061" style="opacity:0.1875;fill:url(#linearGradient26361);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-263.4277" y="82.128593" id="rect20063" style="opacity:0.1875;fill:url(#linearGradient26363);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-243.59889" y="70.86586" id="rect20065" style="opacity:0.46875;fill:url(#linearGradient26365);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-304.18463" y="88.390617" id="rect20067" style="opacity:0.46875;fill:url(#linearGradient26367);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-290.64938" y="101.78397" id="rect20069" style="opacity:0.46875;fill:url(#linearGradient26369);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-242.71817" y="81.253448" id="rect20455" style="opacity:0.1875;fill:url(#linearGradient26371);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-240.49081" y="65.51342" id="rect20457" style="opacity:0.1875;fill:url(#linearGradient26373);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-279.75214" y="109.76508" id="rect20459" style="opacity:0.1875;fill:url(#linearGradient26375);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-267.04233" y="88.218803" id="rect20461" style="opacity:0.46875;fill:url(#linearGradient26377);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-302.86346" y="85.858627" id="rect20463" style="opacity:0.46875;fill:url(#linearGradient26379);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-225.32182" y="82.631157" id="rect20465" style="opacity:0.46875;fill:url(#linearGradient26381);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-298.48117" y="82.083504" id="rect20467" style="opacity:0.1875;fill:url(#linearGradient26383);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-280.10507" y="108.23654" id="rect20469" style="opacity:0.1875;fill:url(#linearGradient26385);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-259.32974" y="64.70713" id="rect20471" style="opacity:0.1875;fill:url(#linearGradient26387);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-284.16614" y="74.961967" id="rect20473" style="opacity:0.46875;fill:url(#linearGradient26389);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-239.05365" y="62.712513" id="rect20475" style="opacity:0.46875;fill:url(#linearGradient26391);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-246.00711" y="72.933044" id="rect20477" style="opacity:0.46875;fill:url(#linearGradient26393);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-287.22855" y="110.74557" id="rect20479" style="opacity:0.1875;fill:url(#linearGradient26395);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-268.3591" y="79.526146" id="rect20481" style="opacity:0.1875;fill:url(#linearGradient26397);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-245.60628" y="106.92101" id="rect20483" style="opacity:0.1875;fill:url(#linearGradient26399);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-242.54721" y="80.424744" id="rect20485" style="opacity:0.46875;fill:url(#linearGradient26401);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-280.69498" y="73.441864" id="rect20487" style="opacity:0.46875;fill:url(#linearGradient26403);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-286.30206" y="67.167152" id="rect20489" style="opacity:0.46875;fill:url(#linearGradient26405);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-218.45755" y="100.83543" id="rect20491" style="opacity:0.1875;fill:url(#linearGradient26407);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-275.74637" y="77.731842" id="rect20493" style="opacity:0.1875;fill:url(#linearGradient26409);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-260.5361" y="63.783749" id="rect20495" style="opacity:0.1875;fill:url(#linearGradient26411);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-299.29132" y="96.522278" id="rect20497" style="opacity:0.46875;fill:url(#linearGradient26413);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-244.44952" y="98.607231" id="rect20499" style="opacity:0.46875;fill:url(#linearGradient26415);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-274.82455" y="86.80835" id="rect20501" style="opacity:0.46875;fill:url(#linearGradient26417);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-219.73625" y="61.344193" id="rect20503" style="opacity:0.1875;fill:url(#linearGradient26419);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-292.13663" y="77.865173" id="rect20505" style="opacity:0.1875;fill:url(#linearGradient26421);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-287.60495" y="105.65768" id="rect20507" style="opacity:0.1875;fill:url(#linearGradient26423);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-282.04767" y="65.757294" id="rect20509" style="opacity:0.46875;fill:url(#linearGradient26425);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-276.05054" y="107.30734" id="rect20511" style="opacity:0.46875;fill:url(#linearGradient26427);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-302.89746" y="109.56179" id="rect20513" style="opacity:0.46875;fill:url(#linearGradient26429);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-247.98593" y="67.596725" id="rect20515" style="opacity:0.1875;fill:url(#linearGradient26431);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-246.38931" y="73.773773" id="rect20517" style="opacity:0.1875;fill:url(#linearGradient26433);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-241.46507" y="107.92227" id="rect20519" style="opacity:0.1875;fill:url(#linearGradient26435);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-265.26581" y="83.184235" id="rect20521" style="opacity:0.46875;fill:url(#linearGradient26437);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-285.78122" y="104.65424" id="rect20523" style="opacity:0.46875;fill:url(#linearGradient26439);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-262.79443" y="58.689938" id="rect20525" style="opacity:0.46875;fill:url(#linearGradient26441);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-233.70056" y="60.803516" id="rect20527" style="opacity:0.1875;fill:url(#linearGradient26443);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-293.72324" y="57.410843" id="rect20529" style="opacity:0.1875;fill:url(#linearGradient26445);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-301.89771" y="72.826591" id="rect20531" style="opacity:0.1875;fill:url(#linearGradient26447);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-219.5639" y="70.463745" id="rect20533" style="opacity:0.46875;fill:url(#linearGradient26449);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-265.42273" y="58.774006" id="rect20535" style="opacity:0.46875;fill:url(#linearGradient26451);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-262.00671" y="72.494003" id="rect20537" style="opacity:0.46875;fill:url(#linearGradient26453);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-278.71185" y="109.54459" id="rect20539" style="opacity:0.1875;fill:url(#linearGradient26455);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-266.06219" y="55.475723" id="rect20541" style="opacity:0.1875;fill:url(#linearGradient26457);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-236.19772" y="77.694275" id="rect20543" style="opacity:0.1875;fill:url(#linearGradient26459);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-230.89938" y="71.35717" id="rect20545" style="opacity:0.46875;fill:url(#linearGradient26461);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-273.54712" y="84.367325" id="rect20547" style="opacity:0.46875;fill:url(#linearGradient26463);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-289.45844" y="81.262711" id="rect20549" style="opacity:0.46875;fill:url(#linearGradient26465);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-303.61487" y="104.93104" id="rect20551" style="opacity:0.1875;fill:url(#linearGradient26467);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-284.25128" y="71.748528" id="rect20553" style="opacity:0.1875;fill:url(#linearGradient26469);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-227.85863" y="59.726963" id="rect20555" style="opacity:0.1875;fill:url(#linearGradient26471);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-269.71912" y="79.780472" id="rect20557" style="opacity:0.46875;fill:url(#linearGradient26473);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-289.34674" y="64.180695" id="rect20559" style="opacity:0.46875;fill:url(#linearGradient26475);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-237.67152" y="56.720722" id="rect20561" style="opacity:0.46875;fill:url(#linearGradient26477);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-261.4035" y="61.502678" id="rect20563" style="opacity:0.1875;fill:url(#linearGradient26479);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-230.67986" y="97.29557" id="rect20565" style="opacity:0.1875;fill:url(#linearGradient26481);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-297.44293" y="85.375412" id="rect20567" style="opacity:0.1875;fill:url(#linearGradient26483);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-290.59766" y="96.2453" id="rect20569" style="opacity:0.46875;fill:url(#linearGradient26485);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-249.9745" y="104.10505" id="rect20571" style="opacity:0.46875;fill:url(#linearGradient26487);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-264.91541" y="63.215496" id="rect20573" style="opacity:0.46875;fill:url(#linearGradient26489);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-255.64404" y="65.274605" id="rect20575" style="opacity:0.1875;fill:url(#linearGradient26491);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-256.5867" y="64.151192" id="rect20577" style="opacity:0.1875;fill:url(#linearGradient26493);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-275.08963" y="73.799103" id="rect20579" style="opacity:0.1875;fill:url(#linearGradient26495);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-276.13312" y="76.512222" id="rect20581" style="opacity:0.46875;fill:url(#linearGradient26497);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-235.81549" y="67.021263" id="rect20583" style="opacity:0.46875;fill:url(#linearGradient26499);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-287.50644" y="95.929291" id="rect20585" style="opacity:0.46875;fill:url(#linearGradient26501);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-286.86389" y="64.541458" id="rect20587" style="opacity:0.1875;fill:url(#linearGradient26503);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-234.83641" y="102.7418" id="rect20589" style="opacity:0.1875;fill:url(#linearGradient26505);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-271.98199" y="108.77027" id="rect20591" style="opacity:0.1875;fill:url(#linearGradient26507);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-244.55357" y="70.026482" id="rect20593" style="opacity:0.46875;fill:url(#linearGradient26509);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-235.90517" y="73.117393" id="rect20595" style="opacity:0.46875;fill:url(#linearGradient26511);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-307.35992" y="81.319099" id="rect20597" style="opacity:0.46875;fill:url(#linearGradient26513);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-300.24792" y="60.969742" id="rect20599" style="opacity:0.1875;fill:url(#linearGradient26515);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-282.96555" y="82.846146" id="rect20601" style="opacity:0.1875;fill:url(#linearGradient26517);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-233.6167" y="105.03866" id="rect20603" style="opacity:0.1875;fill:url(#linearGradient26519);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-232.6017" y="85.002228" id="rect20605" style="opacity:0.46875;fill:url(#linearGradient26521);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-227.29018" y="87.934219" id="rect20607" style="opacity:0.46875;fill:url(#linearGradient26523);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-295.26987" y="97.667152" id="rect20609" style="opacity:0.46875;fill:url(#linearGradient26525);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-232.37012" y="94.034401" id="rect20611" style="opacity:0.1875;fill:url(#linearGradient26527);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-233.27859" y="64.077866" id="rect20613" style="opacity:0.1875;fill:url(#linearGradient26529);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-255.16219" y="75.800377" id="rect20615" style="opacity:0.1875;fill:url(#linearGradient26531);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-270.15637" y="69.005692" id="rect20617" style="opacity:0.46875;fill:url(#linearGradient26533);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-291.32767" y="106.1306" id="rect20619" style="opacity:0.46875;fill:url(#linearGradient26535);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-294.69739" y="106.73238" id="rect20621" style="opacity:0.46875;fill:url(#linearGradient26537);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-292.82419" y="60.101208" id="rect20623" style="opacity:0.1875;fill:url(#linearGradient26539);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-225.54817" y="70.407402" id="rect20625" style="opacity:0.1875;fill:url(#linearGradient26541);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-262.70004" y="61.894451" id="rect20627" style="opacity:0.1875;fill:url(#linearGradient26543);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-231.56357" y="73.227684" id="rect20629" style="opacity:0.46875;fill:url(#linearGradient26545);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-248.77377" y="86.167908" id="rect20631" style="opacity:0.46875;fill:url(#linearGradient26547);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-262.4563" y="80.202568" id="rect20633" style="opacity:0.46875;fill:url(#linearGradient26549);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-222.79651" y="77.157135" id="rect20635" style="opacity:0.1875;fill:url(#linearGradient26551);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-297.74509" y="97.382492" id="rect20637" style="opacity:0.1875;fill:url(#linearGradient26553);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-280.50726" y="61.974281" id="rect20639" style="opacity:0.1875;fill:url(#linearGradient26555);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-272.52014" y="104.55537" id="rect20641" style="opacity:0.46875;fill:url(#linearGradient26557);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-295.15088" y="102.41749" id="rect20643" style="opacity:0.46875;fill:url(#linearGradient26559);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-303.94156" y="66.058792" id="rect20645" style="opacity:0.46875;fill:url(#linearGradient26561);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-245.36902" y="79.583107" id="rect20647" style="opacity:0.1875;fill:url(#linearGradient26563);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-299.76428" y="89.643036" id="rect20649" style="opacity:0.1875;fill:url(#linearGradient26565);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-228.89841" y="106.57912" id="rect20651" style="opacity:0.1875;fill:url(#linearGradient26567);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-292.56018" y="105.04887" id="rect20653" style="opacity:0.46875;fill:url(#linearGradient26569);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-273.64111" y="61.205338" id="rect20655" style="opacity:0.46875;fill:url(#linearGradient26571);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-233.98749" y="68.127831" id="rect20657" style="opacity:0.46875;fill:url(#linearGradient26573);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-286.47653" y="88.594643" id="rect20659" style="opacity:0.1875;fill:url(#linearGradient26575);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-292.98727" y="105.70779" id="rect20661" style="opacity:0.1875;fill:url(#linearGradient26577);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-226.75633" y="59.944138" id="rect20663" style="opacity:0.1875;fill:url(#linearGradient26579);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-281.99521" y="98.409698" id="rect20665" style="opacity:0.46875;fill:url(#linearGradient26581);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-261.45309" y="83.215034" id="rect20667" style="opacity:0.46875;fill:url(#linearGradient26583);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-259.63129" y="84.058441" id="rect20669" style="opacity:0.46875;fill:url(#linearGradient26585);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-250.14677" y="62.076561" id="rect20671" style="opacity:0.1875;fill:url(#linearGradient26587);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-276.11346" y="79.031021" id="rect20673" style="opacity:0.1875;fill:url(#linearGradient26589);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-304.29114" y="72.775261" id="rect20675" style="opacity:0.1875;fill:url(#linearGradient26591);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-300.68109" y="77.156677" id="rect20677" style="opacity:0.46875;fill:url(#linearGradient26593);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-236.78348" y="98.731834" id="rect20679" style="opacity:0.46875;fill:url(#linearGradient26595);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-225.43291" y="78.722549" id="rect20681" style="opacity:0.46875;fill:url(#linearGradient26597);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-277.78207" y="65.402222" id="rect20683" style="opacity:0.1875;fill:url(#linearGradient26599);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-260.7579" y="96.139221" id="rect20685" style="opacity:0.1875;fill:url(#linearGradient26601);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-260.65329" y="96.36525" id="rect20687" style="opacity:0.1875;fill:url(#linearGradient26603);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-231.38538" y="84.262276" id="rect20689" style="opacity:0.46875;fill:url(#linearGradient26605);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-232.24651" y="76.61116" id="rect20691" style="opacity:0.46875;fill:url(#linearGradient26607);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-298.17392" y="94.361511" id="rect20693" style="opacity:0.46875;fill:url(#linearGradient26609);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-254.1611" y="80.839401" id="rect20695" style="opacity:0.1875;fill:url(#linearGradient26611);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-301.12796" y="79.646004" id="rect20697" style="opacity:0.1875;fill:url(#linearGradient26613);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-300.54639" y="104.00186" id="rect20699" style="opacity:0.1875;fill:url(#linearGradient26615);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-303.37537" y="71.01062" id="rect20701" style="opacity:0.46875;fill:url(#linearGradient26617);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-265.93375" y="102.269" id="rect20703" style="opacity:0.46875;fill:url(#linearGradient26619);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-275.88052" y="98.329185" id="rect20705" style="opacity:0.46875;fill:url(#linearGradient26621);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-223.75504" y="99.959984" id="rect20707" style="opacity:0.1875;fill:url(#linearGradient26623);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-283.50363" y="107.33015" id="rect20709" style="opacity:0.1875;fill:url(#linearGradient26625);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-303.61804" y="108.15018" id="rect20711" style="opacity:0.1875;fill:url(#linearGradient26627);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-300.03036" y="106.36648" id="rect20713" style="opacity:0.46875;fill:url(#linearGradient26629);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-303.59375" y="71.416595" id="rect20715" style="opacity:0.46875;fill:url(#linearGradient26631);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-300.73062" y="58.53096" id="rect20717" style="opacity:0.46875;fill:url(#linearGradient26633);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-292.80426" y="60.331181" id="rect20719" style="opacity:0.1875;fill:url(#linearGradient26635);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-268.48868" y="83.144234" id="rect20721" style="opacity:0.1875;fill:url(#linearGradient26637);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-307.44165" y="61.080101" id="rect20723" style="opacity:0.1875;fill:url(#linearGradient26639);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-249.13631" y="81.72905" id="rect20725" style="opacity:0.46875;fill:url(#linearGradient26641);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-243.89638" y="106.73634" id="rect20727" style="opacity:0.46875;fill:url(#linearGradient26643);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-304.9827" y="108.69421" id="rect20729" style="opacity:0.46875;fill:url(#linearGradient26645);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-276.26816" y="76.166199" id="rect20731" style="opacity:0.1875;fill:url(#linearGradient26647);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-261.2561" y="67.529793" id="rect20733" style="opacity:0.1875;fill:url(#linearGradient26649);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-306.53851" y="92.740334" id="rect20735" style="opacity:0.1875;fill:url(#linearGradient26651);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-237.18407" y="60.572968" id="rect20737" style="opacity:0.46875;fill:url(#linearGradient26653);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-244.11626" y="59.471355" id="rect20739" style="opacity:0.46875;fill:url(#linearGradient26655);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-238.31374" y="70.263519" id="rect20741" style="opacity:0.46875;fill:url(#linearGradient26657);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-295.89474" y="102.27914" id="rect20743" style="opacity:0.1875;fill:url(#linearGradient26659);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-251.24013" y="74.366951" id="rect20745" style="opacity:0.1875;fill:url(#linearGradient26661);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-303.00098" y="58.264374" id="rect20747" style="opacity:0.1875;fill:url(#linearGradient26663);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-242.54126" y="86.428101" id="rect20749" style="opacity:0.46875;fill:url(#linearGradient26665);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-304.38449" y="90.213768" id="rect20751" style="opacity:0.46875;fill:url(#linearGradient26667);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-283.8826" y="93.236168" id="rect20753" style="opacity:0.46875;fill:url(#linearGradient26669);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-276.99405" y="56.928612" id="rect20755" style="opacity:0.1875;fill:url(#linearGradient26671);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-283.38376" y="70.148064" id="rect20757" style="opacity:0.1875;fill:url(#linearGradient26673);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-271.78781" y="62.705917" id="rect20759" style="opacity:0.1875;fill:url(#linearGradient26675);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-300.72897" y="78.997246" id="rect20761" style="opacity:0.46875;fill:url(#linearGradient26677);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-253.59196" y="61.592701" id="rect20763" style="opacity:0.46875;fill:url(#linearGradient26679);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-257.47235" y="74.270607" id="rect20765" style="opacity:0.46875;fill:url(#linearGradient26681);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-292.67603" y="103.00905" id="rect20767" style="opacity:0.1875;fill:url(#linearGradient26683);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-271.1875" y="58.221188" id="rect20769" style="opacity:0.1875;fill:url(#linearGradient26685);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-293.44116" y="93.098091" id="rect20771" style="opacity:0.1875;fill:url(#linearGradient26687);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-274.90311" y="95.846085" id="rect20773" style="opacity:0.46875;fill:url(#linearGradient26689);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-290.50949" y="101.26105" id="rect20775" style="opacity:0.46875;fill:url(#linearGradient26691);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-301.00677" y="55.524345" id="rect20777" style="opacity:0.46875;fill:url(#linearGradient26693);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-251.34172" y="102.48254" id="rect20779" style="opacity:0.1875;fill:url(#linearGradient26695);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-258.48227" y="106.88896" id="rect20781" style="opacity:0.1875;fill:url(#linearGradient26697);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-277.00226" y="92.920219" id="rect20783" style="opacity:0.1875;fill:url(#linearGradient26699);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-231.33708" y="90.449989" id="rect20785" style="opacity:0.46875;fill:url(#linearGradient26701);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-227.81618" y="105.25217" id="rect20787" style="opacity:0.46875;fill:url(#linearGradient26703);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-281.00833" y="98.852737" id="rect20789" style="opacity:0.46875;fill:url(#linearGradient26705);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-220.06483" y="93.540413" id="rect20791" style="opacity:0.1875;fill:url(#linearGradient26707);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-233.59024" y="71.885101" id="rect20793" style="opacity:0.1875;fill:url(#linearGradient26709);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-245.60995" y="110.16111" id="rect20795" style="opacity:0.1875;fill:url(#linearGradient26711);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-299.35635" y="96.913025" id="rect20797" style="opacity:0.46875;fill:url(#linearGradient26713);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-231.3793" y="67.212074" id="rect20799" style="opacity:0.46875;fill:url(#linearGradient26715);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-305.76932" y="105.27201" id="rect20801" style="opacity:0.46875;fill:url(#linearGradient26717);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-247.66428" y="96.795341" id="rect20803" style="opacity:0.1875;fill:url(#linearGradient26719);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-298.21658" y="82.294411" id="rect20805" style="opacity:0.1875;fill:url(#linearGradient26721);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-301.59726" y="87.788773" id="rect20807" style="opacity:0.1875;fill:url(#linearGradient26723);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-228.504" y="69.20105" id="rect20809" style="opacity:0.46875;fill:url(#linearGradient26725);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-276.41647" y="102.48328" id="rect20811" style="opacity:0.46875;fill:url(#linearGradient26727);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-237.83372" y="108.8929" id="rect20813" style="opacity:0.46875;fill:url(#linearGradient26729);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-240.95575" y="68.082726" id="rect20815" style="opacity:0.1875;fill:url(#linearGradient26731);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-289.51202" y="86.063263" id="rect20817" style="opacity:0.1875;fill:url(#linearGradient26733);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-277.23071" y="85.233902" id="rect20819" style="opacity:0.1875;fill:url(#linearGradient26735);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-221.3028" y="95.189102" id="rect20821" style="opacity:0.46875;fill:url(#linearGradient26737);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-290.50308" y="75.583626" id="rect20823" style="opacity:0.46875;fill:url(#linearGradient26739);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-296.41016" y="90.319199" id="rect20825" style="opacity:0.46875;fill:url(#linearGradient26741);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-287.21121" y="87.030853" id="rect20827" style="opacity:0.1875;fill:url(#linearGradient26743);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-229.5347" y="82.118057" id="rect20829" style="opacity:0.1875;fill:url(#linearGradient26745);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-305.19586" y="90.467171" id="rect20831" style="opacity:0.1875;fill:url(#linearGradient26747);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-219.30733" y="105.46643" id="rect20833" style="opacity:0.46875;fill:url(#linearGradient26749);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-293.22729" y="92.518166" id="rect20835" style="opacity:0.46875;fill:url(#linearGradient26751);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-286.12463" y="72.211571" id="rect20837" style="opacity:0.46875;fill:url(#linearGradient26753);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-221.77547" y="70.537048" id="rect20839" style="opacity:0.1875;fill:url(#linearGradient26755);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-307.22208" y="105.5964" id="rect20841" style="opacity:0.1875;fill:url(#linearGradient26757);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-236.0667" y="65.166298" id="rect20843" style="opacity:0.1875;fill:url(#linearGradient26759);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-247.77191" y="64.786659" id="rect20845" style="opacity:0.46875;fill:url(#linearGradient26761);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-284.46454" y="74.910774" id="rect20847" style="opacity:0.46875;fill:url(#linearGradient26763);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-237.85799" y="55.804825" id="rect20849" style="opacity:0.46875;fill:url(#linearGradient26765);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-283.27036" y="67.163628" id="rect20851" style="opacity:0.1875;fill:url(#linearGradient26767);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-253.91354" y="107.84132" id="rect20853" style="opacity:0.1875;fill:url(#linearGradient26769);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-261.21909" y="55.62373" id="rect20855" style="opacity:0.1875;fill:url(#linearGradient26771);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-241.54463" y="60.722244" id="rect20857" style="opacity:0.46875;fill:url(#linearGradient26773);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-286.40973" y="60.930378" id="rect20859" style="opacity:0.46875;fill:url(#linearGradient26775);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-261.5116" y="61.007633" id="rect20861" style="opacity:0.46875;fill:url(#linearGradient26777);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-256.71246" y="63.907291" id="rect20863" style="opacity:0.1875;fill:url(#linearGradient26779);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-267.91263" y="92.62661" id="rect20865" style="opacity:0.1875;fill:url(#linearGradient26781);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-264.60248" y="101.52387" id="rect20867" style="opacity:0.1875;fill:url(#linearGradient26783);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-275.04568" y="86.762276" id="rect20869" style="opacity:0.46875;fill:url(#linearGradient26785);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-285.13998" y="97.211113" id="rect20871" style="opacity:0.46875;fill:url(#linearGradient26787);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-228.45563" y="75.488144" id="rect20873" style="opacity:0.46875;fill:url(#linearGradient26789);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-237.2831" y="63.000179" id="rect20875" style="opacity:0.1875;fill:url(#linearGradient26791);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-257.81769" y="84.297562" id="rect20877" style="opacity:0.1875;fill:url(#linearGradient26793);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-299.20258" y="110.55594" id="rect20879" style="opacity:0.1875;fill:url(#linearGradient26795);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-255.10905" y="101.29549" id="rect20881" style="opacity:0.46875;fill:url(#linearGradient26797);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-282.63766" y="110.90127" id="rect20883" style="opacity:0.46875;fill:url(#linearGradient26799);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-242.0107" y="96.098122" id="rect20885" style="opacity:0.46875;fill:url(#linearGradient26801);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-224.40564" y="80.693207" id="rect20887" style="opacity:0.1875;fill:url(#linearGradient26803);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-230.71815" y="108.91924" id="rect20889" style="opacity:0.1875;fill:url(#linearGradient26805);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-232.46727" y="64.286911" id="rect20891" style="opacity:0.1875;fill:url(#linearGradient26807);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-301.94312" y="81.063759" id="rect20893" style="opacity:0.46875;fill:url(#linearGradient26809);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-262.71429" y="61.501709" id="rect20895" style="opacity:0.46875;fill:url(#linearGradient26811);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-244.6245" y="67.977432" id="rect20897" style="opacity:0.46875;fill:url(#linearGradient26813);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-305.12466" y="76.452377" id="rect20899" style="opacity:0.1875;fill:url(#linearGradient26815);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-296.96835" y="108.51657" id="rect20901" style="opacity:0.1875;fill:url(#linearGradient26817);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-259.4852" y="59.947071" id="rect20903" style="opacity:0.1875;fill:url(#linearGradient26819);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-217.3017" y="87.066414" id="rect20905" style="opacity:0.46875;fill:url(#linearGradient26821);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-303.32651" y="107.02791" id="rect20907" style="opacity:0.46875;fill:url(#linearGradient26823);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-274.71164" y="96.72039" id="rect20909" style="opacity:0.46875;fill:url(#linearGradient26825);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-239.15398" y="61.069256" id="rect20911" style="opacity:0.1875;fill:url(#linearGradient26827);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-244.36102" y="74.99781" id="rect20913" style="opacity:0.1875;fill:url(#linearGradient26829);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-260.75641" y="88.847244" id="rect20915" style="opacity:0.1875;fill:url(#linearGradient26831);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-218.14275" y="67.334724" id="rect20917" style="opacity:0.46875;fill:url(#linearGradient26833);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-250.18599" y="109.29144" id="rect20919" style="opacity:0.46875;fill:url(#linearGradient26835);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-230.15916" y="96.86953" id="rect20921" style="opacity:0.46875;fill:url(#linearGradient26837);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-295.06256" y="109.20979" id="rect20923" style="opacity:0.1875;fill:url(#linearGradient26839);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-284.84415" y="103.0084" id="rect20925" style="opacity:0.1875;fill:url(#linearGradient26841);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-252.68372" y="87.013405" id="rect20927" style="opacity:0.1875;fill:url(#linearGradient26843);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-250.10957" y="77.451866" id="rect20929" style="opacity:0.46875;fill:url(#linearGradient26845);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-262.20053" y="90.775269" id="rect20931" style="opacity:0.46875;fill:url(#linearGradient26847);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-303.03128" y="64.104378" id="rect20933" style="opacity:0.46875;fill:url(#linearGradient26849);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-269.23318" y="56.084965" id="rect20935" style="opacity:0.1875;fill:url(#linearGradient26851);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-237.92523" y="57.800106" id="rect20937" style="opacity:0.1875;fill:url(#linearGradient26853);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-243.84235" y="101.17597" id="rect20939" style="opacity:0.1875;fill:url(#linearGradient26855);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-287.93134" y="85.971329" id="rect20941" style="opacity:0.46875;fill:url(#linearGradient26857);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-288.52533" y="56.047573" id="rect20943" style="opacity:0.46875;fill:url(#linearGradient26859);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-241.68431" y="92.835999" id="rect20945" style="opacity:0.46875;fill:url(#linearGradient26861);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-230.14163" y="102.65902" id="rect20947" style="opacity:0.1875;fill:url(#linearGradient26863);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-242.81085" y="62.801945" id="rect20949" style="opacity:0.1875;fill:url(#linearGradient26865);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-301.79077" y="61.009129" id="rect20951" style="opacity:0.1875;fill:url(#linearGradient26867);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-296.69693" y="73.567009" id="rect20953" style="opacity:0.46875;fill:url(#linearGradient26869);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-278.56216" y="91.539566" id="rect20955" style="opacity:0.46875;fill:url(#linearGradient26871);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-229.46866" y="67.355965" id="rect20957" style="opacity:0.46875;fill:url(#linearGradient26873);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-243.63399" y="59.601711" id="rect20959" style="opacity:0.1875;fill:url(#linearGradient26875);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-278.94403" y="59.034389" id="rect20961" style="opacity:0.1875;fill:url(#linearGradient26877);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-273.75485" y="57.040806" id="rect20963" style="opacity:0.1875;fill:url(#linearGradient26879);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-246.73541" y="60.859955" id="rect20965" style="opacity:0.46875;fill:url(#linearGradient26881);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-287.32837" y="101.73196" id="rect20967" style="opacity:0.46875;fill:url(#linearGradient26883);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-288.10788" y="86.818977" id="rect20969" style="opacity:0.46875;fill:url(#linearGradient26885);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-239.92403" y="106.37849" id="rect20971" style="opacity:0.1875;fill:url(#linearGradient26887);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-268.3898" y="81.959496" id="rect20973" style="opacity:0.1875;fill:url(#linearGradient26889);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-245.32462" y="78.340958" id="rect20975" style="opacity:0.1875;fill:url(#linearGradient26891);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-296.25104" y="61.141666" id="rect20977" style="opacity:0.46875;fill:url(#linearGradient26893);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-306.68286" y="67.630676" id="rect20979" style="opacity:0.46875;fill:url(#linearGradient26895);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-238.85361" y="106.74319" id="rect20981" style="opacity:0.46875;fill:url(#linearGradient26897);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-275.17776" y="81.861305" id="rect20983" style="opacity:0.1875;fill:url(#linearGradient26899);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-244.77428" y="65.122116" id="rect20985" style="opacity:0.1875;fill:url(#linearGradient26901);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-227.12112" y="73.324898" id="rect20987" style="opacity:0.1875;fill:url(#linearGradient26903);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-226.10251" y="63.861496" id="rect20989" style="opacity:0.46875;fill:url(#linearGradient26905);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-302.49176" y="61.256626" id="rect20991" style="opacity:0.46875;fill:url(#linearGradient26907);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-274.67081" y="62.871773" id="rect20993" style="opacity:0.46875;fill:url(#linearGradient26909);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-264.56204" y="63.978767" id="rect20995" style="opacity:0.1875;fill:url(#linearGradient26911);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-278.94516" y="108.00268" id="rect20997" style="opacity:0.1875;fill:url(#linearGradient26913);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-225.51779" y="105.95143" id="rect20999" style="opacity:0.1875;fill:url(#linearGradient26915);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-220.02303" y="78.689621" id="rect21001" style="opacity:0.46875;fill:url(#linearGradient26917);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-237.29872" y="56.172379" id="rect21003" style="opacity:0.46875;fill:url(#linearGradient26919);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-251.64853" y="73.173126" id="rect21005" style="opacity:0.46875;fill:url(#linearGradient26921);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-298.56259" y="76.504417" id="rect21007" style="opacity:0.1875;fill:url(#linearGradient26923);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-268.48233" y="65.487144" id="rect21009" style="opacity:0.1875;fill:url(#linearGradient26925);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-306.20041" y="57.922138" id="rect21011" style="opacity:0.1875;fill:url(#linearGradient26927);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-282.10361" y="64.32032" id="rect21013" style="opacity:0.46875;fill:url(#linearGradient26929);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-301.30933" y="87.516853" id="rect21015" style="opacity:0.46875;fill:url(#linearGradient26931);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-284.75369" y="55.552612" id="rect21017" style="opacity:0.46875;fill:url(#linearGradient26933);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-223.38631" y="87.094467" id="rect21019" style="opacity:0.1875;fill:url(#linearGradient26935);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-229.48524" y="99.373978" id="rect21021" style="opacity:0.1875;fill:url(#linearGradient26937);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-307.3002" y="105.05029" id="rect21023" style="opacity:0.1875;fill:url(#linearGradient26939);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-245.85101" y="100.16848" id="rect21025" style="opacity:0.46875;fill:url(#linearGradient26941);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-289.41794" y="101.33263" id="rect21027" style="opacity:0.46875;fill:url(#linearGradient26943);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-236.23395" y="75.302628" id="rect21029" style="opacity:0.46875;fill:url(#linearGradient26945);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-256.17188" y="89.433014" id="rect21031" style="opacity:0.1875;fill:url(#linearGradient26947);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-268.1181" y="69.298286" id="rect21033" style="opacity:0.1875;fill:url(#linearGradient26949);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-236.73039" y="57.077488" id="rect21035" style="opacity:0.1875;fill:url(#linearGradient26951);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-288.0459" y="98.268242" id="rect21037" style="opacity:0.46875;fill:url(#linearGradient26953);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-280.43768" y="71.375671" id="rect21039" style="opacity:0.46875;fill:url(#linearGradient26955);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-259.02997" y="77.971458" id="rect21041" style="opacity:0.46875;fill:url(#linearGradient26957);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-258.72766" y="101.21225" id="rect21043" style="opacity:0.1875;fill:url(#linearGradient26959);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-233.49631" y="91.145035" id="rect21045" style="opacity:0.1875;fill:url(#linearGradient26961);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-307.40121" y="108.50367" id="rect21047" style="opacity:0.1875;fill:url(#linearGradient26963);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-268.62418" y="73.931641" id="rect21049" style="opacity:0.46875;fill:url(#linearGradient26965);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-271.92096" y="64.543587" id="rect21051" style="opacity:0.46875;fill:url(#linearGradient26967);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-244.87704" y="86.798286" id="rect21053" style="opacity:0.46875;fill:url(#linearGradient26969);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-276.21255" y="84.152184" id="rect21055" style="opacity:0.1875;fill:url(#linearGradient26971);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-301.7442" y="68.038704" id="rect21057" style="opacity:0.1875;fill:url(#linearGradient26973);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-283.7352" y="106.20054" id="rect21059" style="opacity:0.1875;fill:url(#linearGradient26975);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-248.01788" y="63.94009" id="rect21061" style="opacity:0.46875;fill:url(#linearGradient26977);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-267.39545" y="81.627846" id="rect21063" style="opacity:0.46875;fill:url(#linearGradient26979);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-275.15396" y="87.510963" id="rect21065" style="opacity:0.46875;fill:url(#linearGradient26981);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-301.94168" y="76.720764" id="rect21067" style="opacity:0.1875;fill:url(#linearGradient26983);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-229.2645" y="76.507072" id="rect21069" style="opacity:0.1875;fill:url(#linearGradient26985);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-242.54091" y="64.807266" id="rect21071" style="opacity:0.1875;fill:url(#linearGradient26987);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-244.0256" y="105.53462" id="rect21073" style="opacity:0.46875;fill:url(#linearGradient26989);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-277.12021" y="86.390068" id="rect21075" style="opacity:0.46875;fill:url(#linearGradient26991);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-257.93661" y="69.662346" id="rect21077" style="opacity:0.46875;fill:url(#linearGradient26993);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-237.68182" y="92.135094" id="rect21079" style="opacity:0.1875;fill:url(#linearGradient26995);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-288.80685" y="59.947994" id="rect21081" style="opacity:0.1875;fill:url(#linearGradient26997);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-246.94907" y="75.974976" id="rect21083" style="opacity:0.1875;fill:url(#linearGradient26999);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-224.59161" y="102.0582" id="rect21085" style="opacity:0.46875;fill:url(#linearGradient27001);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-226.84268" y="60.748241" id="rect21087" style="opacity:0.46875;fill:url(#linearGradient27003);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-247.03136" y="61.704609" id="rect21089" style="opacity:0.46875;fill:url(#linearGradient27005);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-271.67252" y="62.573116" id="rect21091" style="opacity:0.1875;fill:url(#linearGradient27007);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-229.56517" y="98.622765" id="rect21093" style="opacity:0.1875;fill:url(#linearGradient27009);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-272.1326" y="94.367805" id="rect21095" style="opacity:0.1875;fill:url(#linearGradient27011);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-247.82713" y="68.418785" id="rect21097" style="opacity:0.46875;fill:url(#linearGradient27013);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-257.95242" y="81.885948" id="rect21099" style="opacity:0.46875;fill:url(#linearGradient27015);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-266.41571" y="103.11871" id="rect21101" style="opacity:0.46875;fill:url(#linearGradient27017);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-297.21912" y="55.450714" id="rect21103" style="opacity:0.1875;fill:url(#linearGradient27019);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-293.15164" y="97.328751" id="rect21105" style="opacity:0.1875;fill:url(#linearGradient27021);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-287.23364" y="62.857697" id="rect21107" style="opacity:0.1875;fill:url(#linearGradient27023);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-262.56189" y="88.4048" id="rect21109" style="opacity:0.46875;fill:url(#linearGradient27025);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-261.62183" y="85.401474" id="rect21111" style="opacity:0.46875;fill:url(#linearGradient27027);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-235.16788" y="109.76205" id="rect21113" style="opacity:0.46875;fill:url(#linearGradient27029);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-217.02565" y="80.835899" id="rect21115" style="opacity:0.1875;fill:url(#linearGradient27031);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-231.5825" y="91.056412" id="rect21117" style="opacity:0.1875;fill:url(#linearGradient27033);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-229.58057" y="92.429237" id="rect21119" style="opacity:0.1875;fill:url(#linearGradient27035);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-255.8084" y="106.70076" id="rect21121" style="opacity:0.46875;fill:url(#linearGradient27037);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-276.72501" y="80.25724" id="rect21123" style="opacity:0.46875;fill:url(#linearGradient27039);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-251.79741" y="109.15076" id="rect21125" style="opacity:0.46875;fill:url(#linearGradient27041);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-262.84338" y="100.30168" id="rect21127" style="opacity:0.1875;fill:url(#linearGradient27043);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-263.46655" y="89.088768" id="rect21129" style="opacity:0.1875;fill:url(#linearGradient27045);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-279.07495" y="103.64899" id="rect21131" style="opacity:0.1875;fill:url(#linearGradient27047);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-246.85617" y="72.184769" id="rect21133" style="opacity:0.46875;fill:url(#linearGradient27049);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-237.11118" y="89.581963" id="rect21135" style="opacity:0.46875;fill:url(#linearGradient27051);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-271.29672" y="69.089821" id="rect21137" style="opacity:0.46875;fill:url(#linearGradient27053);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-245.05901" y="72.152023" id="rect21139" style="opacity:0.1875;fill:url(#linearGradient27055);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-286.00827" y="102.33545" id="rect21141" style="opacity:0.1875;fill:url(#linearGradient27057);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-307.26855" y="61.659031" id="rect21143" style="opacity:0.1875;fill:url(#linearGradient27059);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-295.82904" y="71.701729" id="rect21145" style="opacity:0.46875;fill:url(#linearGradient27061);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-238.60464" y="77.884239" id="rect21147" style="opacity:0.46875;fill:url(#linearGradient27063);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-251.12772" y="85.596474" id="rect21149" style="opacity:0.46875;fill:url(#linearGradient27065);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-227.31731" y="56.329018" id="rect21151" style="opacity:0.1875;fill:url(#linearGradient27067);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-303.57483" y="95.667526" id="rect21153" style="opacity:0.1875;fill:url(#linearGradient27069);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-265.48077" y="100.69909" id="rect21155" style="opacity:0.1875;fill:url(#linearGradient27071);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-228.17764" y="59.823067" id="rect21157" style="opacity:0.46875;fill:url(#linearGradient27073);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-229.42281" y="78.211479" id="rect21159" style="opacity:0.46875;fill:url(#linearGradient27075);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-301.68494" y="70.215508" id="rect21161" style="opacity:0.46875;fill:url(#linearGradient27077);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-288.6322" y="101.17437" id="rect21163" style="opacity:0.1875;fill:url(#linearGradient27079);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-285.22156" y="85.157867" id="rect21165" style="opacity:0.1875;fill:url(#linearGradient27081);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-301.52106" y="63.534519" id="rect21167" style="opacity:0.1875;fill:url(#linearGradient27083);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-216.44229" y="83.262306" id="rect21169" style="opacity:0.46875;fill:url(#linearGradient27085);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-287.93253" y="108.89066" id="rect21171" style="opacity:0.46875;fill:url(#linearGradient27087);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-293.96442" y="57.4179" id="rect21173" style="opacity:0.46875;fill:url(#linearGradient27089);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-292.90317" y="111.03307" id="rect21175" style="opacity:0.1875;fill:url(#linearGradient27091);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-256.35715" y="69.274529" id="rect21177" style="opacity:0.1875;fill:url(#linearGradient27093);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-260.00333" y="109.78416" id="rect21179" style="opacity:0.1875;fill:url(#linearGradient27095);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-283.11942" y="94.954216" id="rect21181" style="opacity:0.46875;fill:url(#linearGradient27097);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-296.60632" y="85.795189" id="rect21183" style="opacity:0.46875;fill:url(#linearGradient27099);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-256.70975" y="66.782021" id="rect21185" style="opacity:0.46875;fill:url(#linearGradient27101);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-299.90479" y="102.16841" id="rect21187" style="opacity:0.1875;fill:url(#linearGradient27103);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-228.94711" y="57.03421" id="rect21189" style="opacity:0.1875;fill:url(#linearGradient27105);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-264.45731" y="61.083805" id="rect21191" style="opacity:0.1875;fill:url(#linearGradient27107);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-239.54405" y="93.159767" id="rect21193" style="opacity:0.46875;fill:url(#linearGradient27109);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-260.33878" y="92.271156" id="rect21195" style="opacity:0.46875;fill:url(#linearGradient27111);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-280.116" y="84.80423" id="rect21197" style="opacity:0.46875;fill:url(#linearGradient27113);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-250.88902" y="58.80711" id="rect21199" style="opacity:0.1875;fill:url(#linearGradient27115);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-294.33392" y="76.536911" id="rect21201" style="opacity:0.1875;fill:url(#linearGradient27117);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-306.26511" y="80.201492" id="rect21203" style="opacity:0.1875;fill:url(#linearGradient27119);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-301.01447" y="100.298" id="rect21205" style="opacity:0.46875;fill:url(#linearGradient27121);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-253.10202" y="58.051792" id="rect21207" style="opacity:0.46875;fill:url(#linearGradient27123);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-252.26166" y="107.3416" id="rect21209" style="opacity:0.46875;fill:url(#linearGradient27125);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-245.62167" y="58.792862" id="rect21211" style="opacity:0.1875;fill:url(#linearGradient27127);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-261.48352" y="61.158932" id="rect21213" style="opacity:0.1875;fill:url(#linearGradient27129);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-283.12637" y="66.620155" id="rect21215" style="opacity:0.1875;fill:url(#linearGradient27131);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-288.6153" y="73.945251" id="rect21217" style="opacity:0.46875;fill:url(#linearGradient27133);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-250.59021" y="65.025085" id="rect21219" style="opacity:0.46875;fill:url(#linearGradient27135);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-275.93964" y="95.183495" id="rect21221" style="opacity:0.46875;fill:url(#linearGradient27137);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-242.58449" y="98.754738" id="rect21223" style="opacity:0.1875;fill:url(#linearGradient27139);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-275.2807" y="65.886925" id="rect21225" style="opacity:0.1875;fill:url(#linearGradient27141);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-280.5025" y="83.986488" id="rect21227" style="opacity:0.1875;fill:url(#linearGradient27143);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-269.90002" y="85.324791" id="rect21229" style="opacity:0.46875;fill:url(#linearGradient27145);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-302.44086" y="82.210342" id="rect21231" style="opacity:0.46875;fill:url(#linearGradient27147);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-256.56891" y="84.863411" id="rect21233" style="opacity:0.46875;fill:url(#linearGradient27149);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-297.25336" y="87.089043" id="rect21235" style="opacity:0.1875;fill:url(#linearGradient27151);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-273.89474" y="76.845276" id="rect21237" style="opacity:0.1875;fill:url(#linearGradient27153);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-266.92368" y="108.63635" id="rect21239" style="opacity:0.1875;fill:url(#linearGradient27155);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-234.47511" y="63.970722" id="rect21241" style="opacity:0.46875;fill:url(#linearGradient27157);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-299.57806" y="61.810444" id="rect21243" style="opacity:0.46875;fill:url(#linearGradient27159);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-237.78726" y="80.350128" id="rect21245" style="opacity:0.46875;fill:url(#linearGradient27161);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-246.69666" y="70.788307" id="rect21247" style="opacity:0.1875;fill:url(#linearGradient27163);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-232.49185" y="68.09623" id="rect21249" style="opacity:0.1875;fill:url(#linearGradient27165);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-230.31662" y="72.337776" id="rect21251" style="opacity:0.1875;fill:url(#linearGradient27167);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-294.89255" y="66.959465" id="rect21253" style="opacity:0.46875;fill:url(#linearGradient27169);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-244.88751" y="69.532631" id="rect21255" style="opacity:0.46875;fill:url(#linearGradient27171);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-274.67349" y="60.119705" id="rect21257" style="opacity:0.46875;fill:url(#linearGradient27173);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-251.59361" y="87.967026" id="rect21259" style="opacity:0.1875;fill:url(#linearGradient27175);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-250.74771" y="107.91908" id="rect21261" style="opacity:0.1875;fill:url(#linearGradient27177);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-231.36357" y="97.068886" id="rect21263" style="opacity:0.1875;fill:url(#linearGradient27179);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-238.16719" y="75.513985" id="rect21265" style="opacity:0.46875;fill:url(#linearGradient27181);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-271.69632" y="99.551247" id="rect21267" style="opacity:0.46875;fill:url(#linearGradient27183);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-251.33495" y="75.012238" id="rect21269" style="opacity:0.46875;fill:url(#linearGradient27185);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-256.54056" y="111.64594" id="rect21271" style="opacity:0.1875;fill:url(#linearGradient27187);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-277.6232" y="57.15493" id="rect21273" style="opacity:0.1875;fill:url(#linearGradient27189);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-228.94926" y="102.41476" id="rect21275" style="opacity:0.1875;fill:url(#linearGradient27191);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-271.89328" y="68.986198" id="rect21277" style="opacity:0.46875;fill:url(#linearGradient27193);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-233.78401" y="92.376289" id="rect21279" style="opacity:0.46875;fill:url(#linearGradient27195);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-248.17442" y="62.975868" id="rect21281" style="opacity:0.46875;fill:url(#linearGradient27197);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-234.98894" y="74.333855" id="rect21283" style="opacity:0.1875;fill:url(#linearGradient27199);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-306.34875" y="74.775146" id="rect21285" style="opacity:0.1875;fill:url(#linearGradient27201);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-258.19437" y="67.117424" id="rect21287" style="opacity:0.1875;fill:url(#linearGradient27203);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-283.04742" y="87.623558" id="rect21289" style="opacity:0.46875;fill:url(#linearGradient27205);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-292.68338" y="83.066238" id="rect21291" style="opacity:0.46875;fill:url(#linearGradient27207);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-256.97443" y="68.172554" id="rect21293" style="opacity:0.46875;fill:url(#linearGradient27209);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-259.65314" y="103.76814" id="rect21295" style="opacity:0.1875;fill:url(#linearGradient27211);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-284.52921" y="89.421211" id="rect21297" style="opacity:0.1875;fill:url(#linearGradient27213);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-255.46428" y="86.758759" id="rect21299" style="opacity:0.1875;fill:url(#linearGradient27215);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-307.32059" y="59.507183" id="rect21301" style="opacity:0.46875;fill:url(#linearGradient27217);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-268.4805" y="56.354454" id="rect21303" style="opacity:0.46875;fill:url(#linearGradient27219);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-253.79776" y="82.508331" id="rect21305" style="opacity:0.46875;fill:url(#linearGradient27221);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-250.34879" y="101.22415" id="rect21307" style="opacity:0.1875;fill:url(#linearGradient27223);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-286.26691" y="81.187157" id="rect21309" style="opacity:0.1875;fill:url(#linearGradient27225);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-245.5034" y="57.942776" id="rect21311" style="opacity:0.1875;fill:url(#linearGradient27227);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-279.29797" y="56.313656" id="rect21313" style="opacity:0.46875;fill:url(#linearGradient27229);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-239.09218" y="102.84291" id="rect21315" style="opacity:0.46875;fill:url(#linearGradient27231);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-300.79333" y="57.296597" id="rect21317" style="opacity:0.46875;fill:url(#linearGradient27233);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-230.46246" y="58.547722" id="rect21319" style="opacity:0.1875;fill:url(#linearGradient27235);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-290.19955" y="98.540131" id="rect21321" style="opacity:0.1875;fill:url(#linearGradient27237);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-246.17332" y="70.700653" id="rect21323" style="opacity:0.1875;fill:url(#linearGradient27239);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-281.90558" y="89.287468" id="rect21325" style="opacity:0.46875;fill:url(#linearGradient27241);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-267.75607" y="75.273468" id="rect21327" style="opacity:0.46875;fill:url(#linearGradient27243);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-285.25287" y="96.609406" id="rect21329" style="opacity:0.46875;fill:url(#linearGradient27245);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-251.75479" y="105.10313" id="rect21331" style="opacity:0.1875;fill:url(#linearGradient27247);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-236.81497" y="60.864231" id="rect21333" style="opacity:0.1875;fill:url(#linearGradient27249);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-261.41241" y="63.960575" id="rect21335" style="opacity:0.1875;fill:url(#linearGradient27251);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-250.99886" y="64.671219" id="rect21337" style="opacity:0.46875;fill:url(#linearGradient27253);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-236.80031" y="56.595322" id="rect21339" style="opacity:0.46875;fill:url(#linearGradient27255);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-246.96497" y="103.23323" id="rect21341" style="opacity:0.46875;fill:url(#linearGradient27257);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-260.19916" y="75.172691" id="rect21343" style="opacity:0.1875;fill:url(#linearGradient27259);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-293.57715" y="101.3636" id="rect21345" style="opacity:0.1875;fill:url(#linearGradient27261);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-235.93849" y="74.692139" id="rect21347" style="opacity:0.1875;fill:url(#linearGradient27263);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-293.13702" y="64.289536" id="rect21349" style="opacity:0.46875;fill:url(#linearGradient27265);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-231.13849" y="63.319588" id="rect21351" style="opacity:0.46875;fill:url(#linearGradient27267);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-233.52722" y="87.676361" id="rect21353" style="opacity:0.46875;fill:url(#linearGradient27269);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-249.15074" y="78.342529" id="rect21355" style="opacity:0.1875;fill:url(#linearGradient27271);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-304.875" y="106.99411" id="rect21357" style="opacity:0.1875;fill:url(#linearGradient27273);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-243.84726" y="69.912445" id="rect21359" style="opacity:0.1875;fill:url(#linearGradient27275);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-245.75728" y="84.166862" id="rect21361" style="opacity:0.46875;fill:url(#linearGradient27277);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-296.75204" y="88.894562" id="rect21363" style="opacity:0.46875;fill:url(#linearGradient27279);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-267.36176" y="58.718811" id="rect21365" style="opacity:0.46875;fill:url(#linearGradient27281);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-223.17926" y="100.05959" id="rect21367" style="opacity:0.1875;fill:url(#linearGradient27283);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-291.39511" y="91.973068" id="rect21369" style="opacity:0.1875;fill:url(#linearGradient27285);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-234.90848" y="65.40184" id="rect21371" style="opacity:0.1875;fill:url(#linearGradient27287);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-276.50565" y="82.440086" id="rect21373" style="opacity:0.46875;fill:url(#linearGradient27289);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-282.06406" y="62.919212" id="rect21375" style="opacity:0.46875;fill:url(#linearGradient27291);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-294.80597" y="79.708824" id="rect21377" style="opacity:0.46875;fill:url(#linearGradient27293);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-219.50827" y="86.379814" id="rect21379" style="opacity:0.1875;fill:url(#linearGradient27295);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-306.90628" y="78.480072" id="rect21381" style="opacity:0.1875;fill:url(#linearGradient27297);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-239.25328" y="88.913887" id="rect21383" style="opacity:0.1875;fill:url(#linearGradient27299);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-283.05078" y="72.513489" id="rect21385" style="opacity:0.46875;fill:url(#linearGradient27301);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-243.75754" y="59.668365" id="rect21387" style="opacity:0.46875;fill:url(#linearGradient27303);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-251.42499" y="84.254898" id="rect21389" style="opacity:0.46875;fill:url(#linearGradient27305);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-230.21336" y="92.538765" id="rect21391" style="opacity:0.1875;fill:url(#linearGradient27307);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-274.96292" y="67.801994" id="rect21393" style="opacity:0.1875;fill:url(#linearGradient27309);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-259.03345" y="79.786247" id="rect21395" style="opacity:0.1875;fill:url(#linearGradient27311);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-222.33481" y="73.434113" id="rect21397" style="opacity:0.46875;fill:url(#linearGradient27313);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-237.33148" y="104.76869" id="rect21399" style="opacity:0.46875;fill:url(#linearGradient27315);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-233.44894" y="99.540825" id="rect21401" style="opacity:0.46875;fill:url(#linearGradient27317);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-256.04898" y="81.255905" id="rect21403" style="opacity:0.1875;fill:url(#linearGradient27319);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-298.30069" y="63.783806" id="rect21405" style="opacity:0.1875;fill:url(#linearGradient27321);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-266.29605" y="68.727859" id="rect21407" style="opacity:0.1875;fill:url(#linearGradient27323);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-222.89272" y="66.714928" id="rect21409" style="opacity:0.46875;fill:url(#linearGradient27325);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-302.11136" y="102.37201" id="rect21411" style="opacity:0.46875;fill:url(#linearGradient27327);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-255.21965" y="90.515549" id="rect21413" style="opacity:0.46875;fill:url(#linearGradient27329);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-217.83557" y="104.97116" id="rect21415" style="opacity:0.1875;fill:url(#linearGradient27331);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-278.50201" y="107.85217" id="rect21417" style="opacity:0.1875;fill:url(#linearGradient27333);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-256.51273" y="109.82304" id="rect21419" style="opacity:0.1875;fill:url(#linearGradient27335);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-296.68771" y="83.052849" id="rect21421" style="opacity:0.46875;fill:url(#linearGradient27337);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-234.08441" y="55.352558" id="rect21423" style="opacity:0.46875;fill:url(#linearGradient27339);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-307.1561" y="69.60759" id="rect21425" style="opacity:0.46875;fill:url(#linearGradient27341);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-248.7278" y="98.796432" id="rect21427" style="opacity:0.1875;fill:url(#linearGradient27343);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-305.89224" y="93.656448" id="rect21429" style="opacity:0.1875;fill:url(#linearGradient27345);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-230.91916" y="79.919479" id="rect21431" style="opacity:0.1875;fill:url(#linearGradient27347);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-275.83963" y="82.481972" id="rect21433" style="opacity:0.46875;fill:url(#linearGradient27349);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-294.69556" y="84.644272" id="rect21435" style="opacity:0.46875;fill:url(#linearGradient27351);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-296.13559" y="75.38723" id="rect21437" style="opacity:0.46875;fill:url(#linearGradient27353);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-245.20813" y="69.854103" id="rect21439" style="opacity:0.1875;fill:url(#linearGradient27355);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-280.60059" y="68.559395" id="rect21441" style="opacity:0.1875;fill:url(#linearGradient27357);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-283.63321" y="81.568436" id="rect21443" style="opacity:0.1875;fill:url(#linearGradient27359);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-257.16757" y="81.135536" id="rect21445" style="opacity:0.46875;fill:url(#linearGradient27361);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-296.10229" y="85.68129" id="rect21447" style="opacity:0.46875;fill:url(#linearGradient27363);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-229.03432" y="107.33843" id="rect21449" style="opacity:0.46875;fill:url(#linearGradient27365);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-234.79033" y="95.026062" id="rect21451" style="opacity:0.1875;fill:url(#linearGradient27367);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-247.72145" y="98.058182" id="rect21453" style="opacity:0.1875;fill:url(#linearGradient27369);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-233.6649" y="63.695808" id="rect21455" style="opacity:0.1875;fill:url(#linearGradient27371);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-220.88246" y="75.468437" id="rect21457" style="opacity:0.46875;fill:url(#linearGradient27373);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-275.45953" y="111.10085" id="rect21459" style="opacity:0.46875;fill:url(#linearGradient27375);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-232.74779" y="85.411835" id="rect21461" style="opacity:0.46875;fill:url(#linearGradient27377);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-225.76868" y="65.039749" id="rect21463" style="opacity:0.1875;fill:url(#linearGradient27379);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-273.39914" y="109.71464" id="rect21465" style="opacity:0.1875;fill:url(#linearGradient27381);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-287.76727" y="87.23999" id="rect21467" style="opacity:0.1875;fill:url(#linearGradient27383);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-235.03047" y="70.933456" id="rect21469" style="opacity:0.46875;fill:url(#linearGradient27385);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-261.24399" y="91.743217" id="rect21471" style="opacity:0.46875;fill:url(#linearGradient27387);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-268.04282" y="96.093422" id="rect21473" style="opacity:0.46875;fill:url(#linearGradient27389);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-303.54053" y="80.427925" id="rect21475" style="opacity:0.1875;fill:url(#linearGradient27391);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-294.41525" y="87.967781" id="rect21477" style="opacity:0.1875;fill:url(#linearGradient27393);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-287.14575" y="92.518379" id="rect21479" style="opacity:0.1875;fill:url(#linearGradient27395);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-267.88187" y="104.75542" id="rect21481" style="opacity:0.46875;fill:url(#linearGradient27397);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-225.48245" y="56.437023" id="rect21483" style="opacity:0.46875;fill:url(#linearGradient27399);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-291.78445" y="71.8396" id="rect21485" style="opacity:0.46875;fill:url(#linearGradient27401);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-271.13855" y="110.62964" id="rect21487" style="opacity:0.1875;fill:url(#linearGradient27403);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-265.79547" y="95.475662" id="rect21489" style="opacity:0.1875;fill:url(#linearGradient27405);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-260.55093" y="83.479332" id="rect21491" style="opacity:0.1875;fill:url(#linearGradient27407);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-264.83661" y="105.59111" id="rect21493" style="opacity:0.46875;fill:url(#linearGradient27409);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-283.90616" y="105.14223" id="rect21495" style="opacity:0.46875;fill:url(#linearGradient27411);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-247.52286" y="110.83428" id="rect21497" style="opacity:0.46875;fill:url(#linearGradient27413);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-233.30792" y="108.30075" id="rect21499" style="opacity:0.1875;fill:url(#linearGradient27415);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-238.4128" y="66.733093" id="rect21501" style="opacity:0.1875;fill:url(#linearGradient27417);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-236.95995" y="100.79337" id="rect21503" style="opacity:0.1875;fill:url(#linearGradient27419);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-248.94753" y="109.69339" id="rect21505" style="opacity:0.46875;fill:url(#linearGradient27421);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-285.84122" y="61.881496" id="rect21507" style="opacity:0.46875;fill:url(#linearGradient27423);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-263.46597" y="90.312744" id="rect21509" style="opacity:0.46875;fill:url(#linearGradient27425);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-305.28766" y="105.66008" id="rect21511" style="opacity:0.1875;fill:url(#linearGradient27427);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-306.57361" y="110.81626" id="rect21513" style="opacity:0.1875;fill:url(#linearGradient27429);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-273.30582" y="78.19458" id="rect21515" style="opacity:0.1875;fill:url(#linearGradient27431);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-245.36133" y="65.584717" id="rect21517" style="opacity:0.46875;fill:url(#linearGradient27433);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-247.48462" y="90.008995" id="rect21519" style="opacity:0.46875;fill:url(#linearGradient27435);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-293.29022" y="77.312546" id="rect21521" style="opacity:0.46875;fill:url(#linearGradient27437);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-290.92154" y="108.85014" id="rect21523" style="opacity:0.1875;fill:url(#linearGradient27439);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-235.70132" y="86.926987" id="rect21525" style="opacity:0.1875;fill:url(#linearGradient27441);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-299.51126" y="81.268387" id="rect21527" style="opacity:0.1875;fill:url(#linearGradient27443);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-242.69012" y="107.18739" id="rect21529" style="opacity:0.46875;fill:url(#linearGradient27445);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-296.16809" y="91.953133" id="rect21531" style="opacity:0.46875;fill:url(#linearGradient27447);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-303.52182" y="91.424484" id="rect21533" style="opacity:0.46875;fill:url(#linearGradient27449);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-265.15775" y="104.16637" id="rect21535" style="opacity:0.1875;fill:url(#linearGradient27451);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-302.05234" y="58.979252" id="rect21537" style="opacity:0.1875;fill:url(#linearGradient27453);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-261.64029" y="55.466087" id="rect21539" style="opacity:0.1875;fill:url(#linearGradient27455);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-259.65317" y="72.480949" id="rect21541" style="opacity:0.46875;fill:url(#linearGradient27457);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-234.7802" y="75.611626" id="rect21543" style="opacity:0.46875;fill:url(#linearGradient27459);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-305.25217" y="107.40909" id="rect21545" style="opacity:0.46875;fill:url(#linearGradient27461);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-236.92938" y="100.32093" id="rect21547" style="opacity:0.1875;fill:url(#linearGradient27463);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-278.53226" y="61.29652" id="rect21549" style="opacity:0.1875;fill:url(#linearGradient27465);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-292.69031" y="77.940781" id="rect21551" style="opacity:0.1875;fill:url(#linearGradient27467);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-281.86548" y="85.345512" id="rect21553" style="opacity:0.46875;fill:url(#linearGradient27469);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-278.49466" y="73.688721" id="rect21555" style="opacity:0.46875;fill:url(#linearGradient27471);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-232.92558" y="101.36566" id="rect21557" style="opacity:0.46875;fill:url(#linearGradient27473);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-263.073" y="107.99613" id="rect21559" style="opacity:0.1875;fill:url(#linearGradient27475);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-293.97604" y="90.513596" id="rect21561" style="opacity:0.1875;fill:url(#linearGradient27477);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-238.73608" y="97.185303" id="rect21563" style="opacity:0.1875;fill:url(#linearGradient27479);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-247.27396" y="105.07907" id="rect21565" style="opacity:0.46875;fill:url(#linearGradient27481);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-229.82477" y="56.584343" id="rect21567" style="opacity:0.46875;fill:url(#linearGradient27483);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-286.95914" y="98.348389" id="rect21569" style="opacity:0.46875;fill:url(#linearGradient27485);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-251.59947" y="63.419086" id="rect21571" style="opacity:0.1875;fill:url(#linearGradient27487);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-278.72168" y="82.934814" id="rect21573" style="opacity:0.1875;fill:url(#linearGradient27489);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-279.19464" y="66.085556" id="rect21575" style="opacity:0.1875;fill:url(#linearGradient27491);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-284.0527" y="58.101696" id="rect21577" style="opacity:0.46875;fill:url(#linearGradient27493);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-280.06149" y="103.94582" id="rect21579" style="opacity:0.46875;fill:url(#linearGradient27495);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-235.56268" y="72.870979" id="rect21581" style="opacity:0.46875;fill:url(#linearGradient27497);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-252.6017" y="74.478989" id="rect21583" style="opacity:0.1875;fill:url(#linearGradient27499);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-277.55887" y="99.894096" id="rect21585" style="opacity:0.1875;fill:url(#linearGradient27501);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-248.11136" y="92.003113" id="rect21587" style="opacity:0.1875;fill:url(#linearGradient27503);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-258.96588" y="91.77327" id="rect21589" style="opacity:0.46875;fill:url(#linearGradient27505);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-227.51933" y="105.80508" id="rect21591" style="opacity:0.46875;fill:url(#linearGradient27507);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-242.48543" y="103.79506" id="rect21593" style="opacity:0.46875;fill:url(#linearGradient27509);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-247.12206" y="108.9409" id="rect21595" style="opacity:0.1875;fill:url(#linearGradient27511);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-293.02167" y="58.260303" id="rect21597" style="opacity:0.1875;fill:url(#linearGradient27513);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-272.77448" y="65.542923" id="rect21599" style="opacity:0.1875;fill:url(#linearGradient27515);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-305.63763" y="68.649734" id="rect21601" style="opacity:0.46875;fill:url(#linearGradient27517);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-237.66443" y="55.40823" id="rect21603" style="opacity:0.46875;fill:url(#linearGradient27519);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-281.11868" y="70.003098" id="rect21605" style="opacity:0.46875;fill:url(#linearGradient27521);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-281.80618" y="83.68644" id="rect21607" style="opacity:0.1875;fill:url(#linearGradient27523);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-276.61108" y="72.337257" id="rect21609" style="opacity:0.1875;fill:url(#linearGradient27525);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-281.52625" y="91.485954" id="rect21611" style="opacity:0.1875;fill:url(#linearGradient27527);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-302.82098" y="73.17878" id="rect21613" style="opacity:0.46875;fill:url(#linearGradient27529);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-244.31381" y="62.302635" id="rect21615" style="opacity:0.46875;fill:url(#linearGradient27531);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-275.39542" y="100.40778" id="rect21617" style="opacity:0.46875;fill:url(#linearGradient27533);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-305.2916" y="56.54998" id="rect21619" style="opacity:0.1875;fill:url(#linearGradient27535);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-226.85687" y="88.680138" id="rect21621" style="opacity:0.1875;fill:url(#linearGradient27537);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-290.02325" y="57.190468" id="rect21623" style="opacity:0.1875;fill:url(#linearGradient27539);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-218.22159" y="107.58854" id="rect21625" style="opacity:0.46875;fill:url(#linearGradient27541);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-296.79041" y="67.897629" id="rect21627" style="opacity:0.46875;fill:url(#linearGradient27543);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-286.17734" y="93.437904" id="rect21629" style="opacity:0.46875;fill:url(#linearGradient27545);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-221.62856" y="69.776123" id="rect21631" style="opacity:0.1875;fill:url(#linearGradient27547);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-292.85226" y="72.556374" id="rect21633" style="opacity:0.1875;fill:url(#linearGradient27549);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-236.26521" y="65.97863" id="rect21829" style="opacity:0.46875;fill:url(#linearGradient27745);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-234.92079" y="66.180679" id="rect21635" style="opacity:0.1875;fill:url(#linearGradient27551);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-273.52203" y="88.789848" id="rect21637" style="opacity:0.46875;fill:url(#linearGradient27553);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-239.35887" y="106.48306" id="rect21639" style="opacity:0.46875;fill:url(#linearGradient27555);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-257.09924" y="61.134922" id="rect21641" style="opacity:0.46875;fill:url(#linearGradient27557);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-293.71439" y="71.699997" id="rect21643" style="opacity:0.1875;fill:url(#linearGradient27559);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-237.7209" y="60.317715" id="rect21645" style="opacity:0.1875;fill:url(#linearGradient27561);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-232.00232" y="56.347214" id="rect21647" style="opacity:0.1875;fill:url(#linearGradient27563);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-230.17883" y="94.825455" id="rect21649" style="opacity:0.46875;fill:url(#linearGradient27565);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-271.89526" y="87.537811" id="rect21651" style="opacity:0.46875;fill:url(#linearGradient27567);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-261.26334" y="84.091301" id="rect21653" style="opacity:0.46875;fill:url(#linearGradient27569);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-300.27002" y="70.411156" id="rect21655" style="opacity:0.1875;fill:url(#linearGradient27571);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-259.69394" y="78.538818" id="rect21657" style="opacity:0.1875;fill:url(#linearGradient27573);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-273.68408" y="60.320854" id="rect21659" style="opacity:0.1875;fill:url(#linearGradient27575);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-251.35306" y="103.11416" id="rect21661" style="opacity:0.46875;fill:url(#linearGradient27577);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-244.28685" y="96.777092" id="rect21663" style="opacity:0.46875;fill:url(#linearGradient27579);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-238.80014" y="106.55783" id="rect21665" style="opacity:0.46875;fill:url(#linearGradient27581);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-222.17648" y="66.65284" id="rect21667" style="opacity:0.1875;fill:url(#linearGradient27583);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-306.69562" y="59.358051" id="rect21669" style="opacity:0.1875;fill:url(#linearGradient27585);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-267.25375" y="75.676254" id="rect21671" style="opacity:0.1875;fill:url(#linearGradient27587);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-263.92645" y="65.860481" id="rect21673" style="opacity:0.46875;fill:url(#linearGradient27589);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-269.39749" y="102.62814" id="rect21675" style="opacity:0.46875;fill:url(#linearGradient27591);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-275.31821" y="77.852493" id="rect21677" style="opacity:0.46875;fill:url(#linearGradient27593);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-243.6496" y="101.4992" id="rect21679" style="opacity:0.1875;fill:url(#linearGradient27595);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-243.46136" y="73.306519" id="rect21681" style="opacity:0.1875;fill:url(#linearGradient27597);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-305.29956" y="102.79834" id="rect21683" style="opacity:0.1875;fill:url(#linearGradient27599);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-245.90312" y="85.702217" id="rect21685" style="opacity:0.46875;fill:url(#linearGradient27601);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-303.05383" y="111.4539" id="rect21687" style="opacity:0.46875;fill:url(#linearGradient27603);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-268.43542" y="81.403618" id="rect21689" style="opacity:0.46875;fill:url(#linearGradient27605);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-267.30719" y="92.514725" id="rect21691" style="opacity:0.1875;fill:url(#linearGradient27607);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-300.24991" y="74.283562" id="rect21693" style="opacity:0.1875;fill:url(#linearGradient27609);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-282.06049" y="60.561077" id="rect21695" style="opacity:0.1875;fill:url(#linearGradient27611);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-239.73814" y="105.74458" id="rect21697" style="opacity:0.46875;fill:url(#linearGradient27613);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-278.22021" y="96.253685" id="rect21699" style="opacity:0.46875;fill:url(#linearGradient27615);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-288.03934" y="110.5692" id="rect21701" style="opacity:0.46875;fill:url(#linearGradient27617);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-257.17294" y="111.13409" id="rect21703" style="opacity:0.1875;fill:url(#linearGradient27619);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-234.59334" y="101.43046" id="rect21705" style="opacity:0.1875;fill:url(#linearGradient27621);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-262.58798" y="60.705799" id="rect21707" style="opacity:0.1875;fill:url(#linearGradient27623);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-272.61441" y="73.019402" id="rect21709" style="opacity:0.46875;fill:url(#linearGradient27625);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-267.7652" y="98.472694" id="rect21711" style="opacity:0.46875;fill:url(#linearGradient27627);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-276.8707" y="107.17078" id="rect21713" style="opacity:0.46875;fill:url(#linearGradient27629);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-238.23187" y="86.312042" id="rect21715" style="opacity:0.1875;fill:url(#linearGradient27631);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-232.60698" y="95.533546" id="rect21717" style="opacity:0.1875;fill:url(#linearGradient27633);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-306.71002" y="101.39093" id="rect21719" style="opacity:0.1875;fill:url(#linearGradient27635);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-272.34747" y="86.315704" id="rect21721" style="opacity:0.46875;fill:url(#linearGradient27637);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-291.95612" y="55.324371" id="rect21723" style="opacity:0.46875;fill:url(#linearGradient27639);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-304.55295" y="102.14988" id="rect21725" style="opacity:0.46875;fill:url(#linearGradient27641);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-267.01569" y="61.645065" id="rect21727" style="opacity:0.1875;fill:url(#linearGradient27643);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-256.86374" y="110.06892" id="rect21729" style="opacity:0.1875;fill:url(#linearGradient27645);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-297.23123" y="92.380867" id="rect21731" style="opacity:0.1875;fill:url(#linearGradient27647);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-276.22873" y="59.463947" id="rect21733" style="opacity:0.46875;fill:url(#linearGradient27649);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-291.77228" y="92.189217" id="rect21735" style="opacity:0.46875;fill:url(#linearGradient27651);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-285.35599" y="108.36303" id="rect21737" style="opacity:0.46875;fill:url(#linearGradient27653);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-278.51425" y="55.131035" id="rect21739" style="opacity:0.1875;fill:url(#linearGradient27655);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-254.97046" y="78.479927" id="rect21741" style="opacity:0.1875;fill:url(#linearGradient27657);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-290.53455" y="70.767914" id="rect21743" style="opacity:0.1875;fill:url(#linearGradient27659);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-248.0918" y="83.996956" id="rect21745" style="opacity:0.46875;fill:url(#linearGradient27661);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-280.30066" y="100.72653" id="rect21747" style="opacity:0.46875;fill:url(#linearGradient27663);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-279.70331" y="67.053055" id="rect21749" style="opacity:0.46875;fill:url(#linearGradient27665);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-299.98083" y="73.581207" id="rect21751" style="opacity:0.1875;fill:url(#linearGradient27667);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-265.08847" y="94.374672" id="rect21753" style="opacity:0.1875;fill:url(#linearGradient27669);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-254.45741" y="100.69733" id="rect21755" style="opacity:0.1875;fill:url(#linearGradient27671);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-231.60889" y="85.703201" id="rect21757" style="opacity:0.46875;fill:url(#linearGradient27673);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-274.84732" y="103.87772" id="rect21759" style="opacity:0.46875;fill:url(#linearGradient27675);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-289.03357" y="90.877365" id="rect21761" style="opacity:0.46875;fill:url(#linearGradient27677);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-275.6626" y="70.500305" id="rect21763" style="opacity:0.1875;fill:url(#linearGradient27679);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-225.17976" y="57.346786" id="rect21765" style="opacity:0.1875;fill:url(#linearGradient27681);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-275.80215" y="76.338768" id="rect21767" style="opacity:0.1875;fill:url(#linearGradient27683);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-230.84044" y="62.407707" id="rect21769" style="opacity:0.46875;fill:url(#linearGradient27685);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-305.61429" y="109.48866" id="rect21771" style="opacity:0.46875;fill:url(#linearGradient27687);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-292.95377" y="99.259407" id="rect21773" style="opacity:0.46875;fill:url(#linearGradient27689);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-302.67654" y="80.126701" id="rect21775" style="opacity:0.1875;fill:url(#linearGradient27691);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-232.54361" y="80.017448" id="rect21777" style="opacity:0.1875;fill:url(#linearGradient27693);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-270.85376" y="96.710403" id="rect21779" style="opacity:0.1875;fill:url(#linearGradient27695);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-236.68607" y="104.046" id="rect21781" style="opacity:0.46875;fill:url(#linearGradient27697);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-271.02905" y="68.652893" id="rect21783" style="opacity:0.46875;fill:url(#linearGradient27699);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-294.33957" y="59.477379" id="rect21785" style="opacity:0.46875;fill:url(#linearGradient27701);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-233.72734" y="62.554237" id="rect21787" style="opacity:0.1875;fill:url(#linearGradient27703);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-251.08012" y="84.629906" id="rect21789" style="opacity:0.1875;fill:url(#linearGradient27705);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-246.50664" y="61.226196" id="rect21791" style="opacity:0.1875;fill:url(#linearGradient27707);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-288.17026" y="109.02679" id="rect21793" style="opacity:0.46875;fill:url(#linearGradient27709);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-276.62747" y="110.70783" id="rect21795" style="opacity:0.46875;fill:url(#linearGradient27711);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-252.71053" y="105.81419" id="rect21797" style="opacity:0.46875;fill:url(#linearGradient27713);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-223.33205" y="56.806377" id="rect21799" style="opacity:0.1875;fill:url(#linearGradient27715);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-290.8923" y="72.453812" id="rect21801" style="opacity:0.1875;fill:url(#linearGradient27717);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-287.84396" y="81.6036" id="rect21803" style="opacity:0.1875;fill:url(#linearGradient27719);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-259.28372" y="80.256149" id="rect21805" style="opacity:0.46875;fill:url(#linearGradient27721);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-299.51932" y="63.046921" id="rect21807" style="opacity:0.46875;fill:url(#linearGradient27723);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-229.11929" y="86.822929" id="rect21809" style="opacity:0.46875;fill:url(#linearGradient27725);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-273.89749" y="60.208015" id="rect21811" style="opacity:0.1875;fill:url(#linearGradient27727);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-257.36871" y="61.199322" id="rect21813" style="opacity:0.1875;fill:url(#linearGradient27729);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-297.65778" y="99.558662" id="rect21815" style="opacity:0.1875;fill:url(#linearGradient27731);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-294.99631" y="83.771034" id="rect21817" style="opacity:0.46875;fill:url(#linearGradient27733);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-296.79523" y="55.187725" id="rect21819" style="opacity:0.46875;fill:url(#linearGradient27735);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-274.21899" y="67.234024" id="rect21821" style="opacity:0.46875;fill:url(#linearGradient27737);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-279.93652" y="58.027828" id="rect21823" style="opacity:0.1875;fill:url(#linearGradient27739);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-265.09564" y="57.621449" id="rect21825" style="opacity:0.1875;fill:url(#linearGradient27741);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-230.92448" y="62.891903" id="rect21827" style="opacity:0.1875;fill:url(#linearGradient27743);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-245.2112" y="73.311836" id="rect21831" style="opacity:0.46875;fill:url(#linearGradient27747);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-292.29486" y="72.867485" id="rect21833" style="opacity:0.46875;fill:url(#linearGradient27749);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-293.24588" y="71.625595" id="rect21835" style="opacity:0.1875;fill:url(#linearGradient27751);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-259.41812" y="65.277237" id="rect21837" style="opacity:0.1875;fill:url(#linearGradient27753);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-278.57266" y="64.746178" id="rect21839" style="opacity:0.1875;fill:url(#linearGradient27755);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-281.70593" y="95.995338" id="rect21841" style="opacity:0.46875;fill:url(#linearGradient27757);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-260.45135" y="59.459827" id="rect21843" style="opacity:0.46875;fill:url(#linearGradient27759);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-296.65451" y="64.189789" id="rect21845" style="opacity:0.46875;fill:url(#linearGradient27761);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-247.06418" y="95.602432" id="rect21847" style="opacity:0.1875;fill:url(#linearGradient27763);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-297.3447" y="63.354229" id="rect21849" style="opacity:0.1875;fill:url(#linearGradient27765);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-288.95663" y="101.5279" id="rect21851" style="opacity:0.1875;fill:url(#linearGradient27767);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-298.72165" y="86.172012" id="rect21853" style="opacity:0.46875;fill:url(#linearGradient27769);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-278.71814" y="78.380249" id="rect21855" style="opacity:0.46875;fill:url(#linearGradient27771);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-229.52434" y="93.67672" id="rect21857" style="opacity:0.46875;fill:url(#linearGradient27773);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-290.90338" y="85.702248" id="rect21859" style="opacity:0.1875;fill:url(#linearGradient27775);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-250.38721" y="77.190605" id="rect21861" style="opacity:0.1875;fill:url(#linearGradient27777);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-247.67737" y="56.181717" id="rect21863" style="opacity:0.1875;fill:url(#linearGradient27779);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-282.15222" y="107.90704" id="rect21865" style="opacity:0.46875;fill:url(#linearGradient27781);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-303.92514" y="69.235466" id="rect21867" style="opacity:0.46875;fill:url(#linearGradient27783);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-282.22012" y="109.27183" id="rect21869" style="opacity:0.46875;fill:url(#linearGradient27785);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-282.93329" y="104.98781" id="rect21871" style="opacity:0.1875;fill:url(#linearGradient27787);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-290.55911" y="75.871635" id="rect21873" style="opacity:0.1875;fill:url(#linearGradient27789);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-290.32047" y="99.745865" id="rect21875" style="opacity:0.1875;fill:url(#linearGradient27791);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-258.80777" y="80.191414" id="rect21877" style="opacity:0.46875;fill:url(#linearGradient27793);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-243.10162" y="73.924088" id="rect21879" style="opacity:0.46875;fill:url(#linearGradient27795);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-234.60951" y="101.18223" id="rect21881" style="opacity:0.46875;fill:url(#linearGradient27797);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-247.05617" y="78.823349" id="rect21883" style="opacity:0.1875;fill:url(#linearGradient27799);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-300.5704" y="108.95625" id="rect21885" style="opacity:0.1875;fill:url(#linearGradient27801);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-280.31177" y="56.026588" id="rect21887" style="opacity:0.1875;fill:url(#linearGradient27803);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-223.99092" y="78.282021" id="rect21889" style="opacity:0.46875;fill:url(#linearGradient27805);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-250.61678" y="59.413132" id="rect21891" style="opacity:0.46875;fill:url(#linearGradient27807);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-282.67126" y="61.633476" id="rect21893" style="opacity:0.46875;fill:url(#linearGradient27809);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-306.9444" y="111.4621" id="rect21895" style="opacity:0.1875;fill:url(#linearGradient27811);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-240.84995" y="83.256912" id="rect21897" style="opacity:0.1875;fill:url(#linearGradient27813);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-262.802" y="57.619476" id="rect21899" style="opacity:0.1875;fill:url(#linearGradient27815);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-232.81755" y="77.153168" id="rect21901" style="opacity:0.46875;fill:url(#linearGradient27817);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-247.31902" y="68.481903" id="rect21903" style="opacity:0.46875;fill:url(#linearGradient27819);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-238.41722" y="61.906265" id="rect21905" style="opacity:0.46875;fill:url(#linearGradient27821);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-232.65349" y="86.281181" id="rect21907" style="opacity:0.1875;fill:url(#linearGradient27823);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-250.61473" y="89.972336" id="rect21909" style="opacity:0.1875;fill:url(#linearGradient27825);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-241.95982" y="103.9351" id="rect21911" style="opacity:0.1875;fill:url(#linearGradient27827);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-275.90552" y="105.45963" id="rect21913" style="opacity:0.46875;fill:url(#linearGradient27829);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-236.45705" y="73.526924" id="rect21915" style="opacity:0.46875;fill:url(#linearGradient27831);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-291.1709" y="64.812592" id="rect21917" style="opacity:0.46875;fill:url(#linearGradient27833);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-273.98798" y="64.855049" id="rect21919" style="opacity:0.1875;fill:url(#linearGradient27835);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-233.42635" y="73.936829" id="rect21921" style="opacity:0.1875;fill:url(#linearGradient27837);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-268.98654" y="73.139526" id="rect21923" style="opacity:0.1875;fill:url(#linearGradient27839);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-219.25526" y="80.140846" id="rect21925" style="opacity:0.46875;fill:url(#linearGradient27841);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-277.05325" y="94.54393" id="rect21927" style="opacity:0.46875;fill:url(#linearGradient27843);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-300.58752" y="94.470482" id="rect21929" style="opacity:0.46875;fill:url(#linearGradient27845);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-265.10745" y="68.010391" id="rect21931" style="opacity:0.1875;fill:url(#linearGradient27847);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-262.12384" y="57.154907" id="rect21933" style="opacity:0.1875;fill:url(#linearGradient27849);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-292.16574" y="94.142303" id="rect21935" style="opacity:0.1875;fill:url(#linearGradient27851);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-266.22025" y="110.43915" id="rect21937" style="opacity:0.46875;fill:url(#linearGradient27853);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-250.00839" y="80.812195" id="rect21939" style="opacity:0.46875;fill:url(#linearGradient27855);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-267.59402" y="76.412384" id="rect21941" style="opacity:0.46875;fill:url(#linearGradient27857);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-305.91107" y="58.024467" id="rect21943" style="opacity:0.1875;fill:url(#linearGradient27859);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-249.53322" y="97.532372" id="rect21945" style="opacity:0.1875;fill:url(#linearGradient27861);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-297.9502" y="79.375854" id="rect21947" style="opacity:0.1875;fill:url(#linearGradient27863);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-297.24863" y="83.744377" id="rect21949" style="opacity:0.46875;fill:url(#linearGradient27865);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-258.81308" y="87.086861" id="rect21951" style="opacity:0.46875;fill:url(#linearGradient27867);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-260.07507" y="87.316689" id="rect21953" style="opacity:0.46875;fill:url(#linearGradient27869);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-289.18948" y="111.07953" id="rect21955" style="opacity:0.1875;fill:url(#linearGradient27871);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-259.52704" y="94.9814" id="rect21957" style="opacity:0.1875;fill:url(#linearGradient27873);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-259.55115" y="79.851738" id="rect21959" style="opacity:0.1875;fill:url(#linearGradient27875);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-286.60129" y="67.812614" id="rect21961" style="opacity:0.46875;fill:url(#linearGradient27877);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-260.33926" y="104.16561" id="rect21963" style="opacity:0.46875;fill:url(#linearGradient27879);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-283.54825" y="93.081116" id="rect21965" style="opacity:0.46875;fill:url(#linearGradient27881);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-217.43896" y="58.822296" id="rect21967" style="opacity:0.1875;fill:url(#linearGradient27883);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-237.89325" y="100.85945" id="rect21969" style="opacity:0.1875;fill:url(#linearGradient27885);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-242.74698" y="63.367489" id="rect21971" style="opacity:0.1875;fill:url(#linearGradient27887);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-226.92989" y="76.764717" id="rect21973" style="opacity:0.46875;fill:url(#linearGradient27889);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-233.42609" y="98.909195" id="rect21975" style="opacity:0.46875;fill:url(#linearGradient27891);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-299.9494" y="67.81192" id="rect21977" style="opacity:0.46875;fill:url(#linearGradient27893);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-265.12759" y="80.207634" id="rect21979" style="opacity:0.1875;fill:url(#linearGradient27895);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-260.70068" y="107.55251" id="rect21981" style="opacity:0.1875;fill:url(#linearGradient27897);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-236.33008" y="88.17466" id="rect21983" style="opacity:0.1875;fill:url(#linearGradient27899);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="10.629006" height="0.28105551" rx="0" ry="0" x="-251.88853" y="84.047386" id="rect21985" style="opacity:0.46875;fill:url(#linearGradient27901);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.28105551" rx="0" ry="0" x="-255.8196" y="80.099098" id="rect21987" style="opacity:0.46875;fill:url(#linearGradient27903);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="19.367277" height="0.33215648" rx="0" ry="0" x="-276.29352" y="88.051704" id="rect21989" style="opacity:0.46875;fill:url(#linearGradient27905);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + </g> + <path d="M 34.6875,80.38144 C 33.51024,80.38144 32.5625,81.339002 32.5625,82.528441 L 32.5625,82.717882 C 32.5625,81.528444 33.51024,80.570884 34.6875,80.57088 L 85.84375,80.57088 C 86.87384,80.57088 87.74,81.327313 87.9375,82.307427 C 87.82856,81.22269 86.94705,80.38144 85.84375,80.38144 L 34.6875,80.38144 z M 39.96875,111.10251 L 39.96875,111.29197 C 39.96875,111.81689 40.38669,112.23916 40.90625,112.23916 L 55.03125,112.23916 C 55.5508,112.23916 55.96874,111.81689 55.96875,111.29197 L 55.96875,111.10251 C 55.96874,111.62744 55.5508,112.04971 55.03125,112.04971 L 40.90625,112.04971 C 40.38669,112.04971 39.96875,111.62744 39.96875,111.10251 z" id="path3292" style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <path d="M 34.6875,80.279513 C 33.51024,80.279513 32.5625,81.643 32.5625,82.832439 L 32.5625,83.021881 C 32.5625,81.832441 33.51024,81.474879 34.6875,81.474879 L 85.84375,81.474879 C 86.87384,81.474879 87.54,81.631311 87.7375,82.611424 C 87.62856,81.526688 86.94705,80.380993 85.84375,80.380993 L 34.6875,80.279513 z M 39.96875,111.40651 L 39.96875,111.59595 C 39.96875,112.12088 40.38669,112.54316 40.90625,112.54316 L 55.03125,112.54316 C 55.5508,112.54316 55.96874,112.12088 55.96875,111.59595 L 55.96875,111.40651 C 55.96874,111.93144 55.5508,112.35371 55.03125,112.35371 L 40.90625,112.35371 C 40.38669,112.35371 39.96875,111.93144 39.96875,111.40651 z" id="path3301" style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <rect width="0.25288588" height="38.263451" rx="0" ry="0" x="-87.866302" y="81.923531" transform="scale(-1,1)" id="rect27971" style="opacity:1;fill:url(#linearGradient27979);fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <g transform="matrix(1.0884558,0,0,1.1036437,-2.1696646,-3.433884)" id="g28105" style="opacity:0.78515625"> + <rect width="8" height="12" rx="1.079258" ry="1.079258" x="12" y="12" transform="matrix(0.6942102,0,0,0.6942102,4.8926363,5.5042159)" clip-path="url(#clipPath28045)" id="rect28009" style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1;filter:url(#filter28031)"/> + <rect width="8" height="12" rx="1.079258" ry="1.079258" x="12" y="12" transform="matrix(0.6942102,0,0,0.6942102,4.8926363,5.5042159)" clip-path="url(#clipPath28041)" id="rect28039" style="opacity:1;fill:url(#radialGradient28110);fill-opacity:1;stroke:url(#linearGradient28112);stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1;filter:url(#filter28031)"/> + <rect width="4.3502288" height="3.6759202" rx="0.45226815" ry="0.45226815" x="13.897468" y="18.030909" id="rect28057" style="opacity:1;fill:url(#radialGradient28114);fill-opacity:1;stroke:url(#linearGradient28116);stroke-width:0.33188635;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1;filter:url(#filter28101)"/> + </g> + <rect width="55.5" height="2.5258846" x="32.5" y="118.41405" id="rect28122" style="opacity:0.546875;fill:url(#linearGradient28138);fill-opacity:1;stroke:none;stroke-width:0.30000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:4.15;stroke-opacity:1"/> + <path d="M 11.375,8.000469 C 9.318588,8.107658 8,9.705749 8,12.312968 L 8,12.906718 C 8,9.927039 9.421552,8.594219 12.375,8.594219 C 48.895822,8.020377 88.665734,8.321938 116.625,8.594219 C 118.52101,8.594219 120,9.722534 120,11.906718 L 120,11.312968 C 120,9.769599 118.4515,8.000469 116.625,8.000469 L 12.375,8.000469 C 12.005819,8.000469 11.668773,7.9851585 11.375,8.000469 z" id="path3391" style="opacity:1;fill:#343434;fill-opacity:0.82840235;stroke:none;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.08779998;stroke-opacity:1"/> + <path d="M 118.02054,8.3884687 L 118.13103,9.4933229 L 119.58944,9.493323 C 119.49063,9.021128 119.39101,8.3122317 118.02054,8.3884687 z" transform="matrix(-1.3891392,0,0,1.3891392,175.666,-2.239338)" id="path3081" style="fill:url(#radialGradient3084);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter3077)"/> + <path d="M 117.12054,8.6884687 L 117.23103,9.793323 L 118.68944,9.793323 C 118.59063,9.321128 118.49101,8.6122317 117.12054,8.6884687 z" transform="matrix(1.2828374,0,0,1.2828374,-33.432312,-2.365499)" id="path3031" style="opacity:0.86141304;fill:url(#radialGradient3039);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter3077)"/> +</svg>
\ No newline at end of file diff --git a/Samples/CrowIDE/src/CrowIDE.cs b/Samples/CrowIDE/src/CrowIDE.cs new file mode 100644 index 00000000..1b6ed151 --- /dev/null +++ b/Samples/CrowIDE/src/CrowIDE.cs @@ -0,0 +1,289 @@ +// +// HelloCube.cs +// +// Author: +// Jean-Philippe Bruyère <jp.bruyere@hotmail.com> +// +// Copyright (c) 2016 jp +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see <http://www.gnu.org/licenses/>. + +using System; +using System.IO; +using Crow; + +namespace Crow.Coding +{ + class CrowIDE : CrowVkWin + { + static void Main (string [] args) + { + using (CrowIDE app = new CrowIDE ()) { + app.initIde (); + app.reloadWinConfigs (); + app.Run (); + app.saveWinConfigs (); + } + } + + protected override void onLoad () + { + + } + public Command CMDNew, CMDOpen, CMDSave, CMDSaveAs, cmdCloseSolution, CMDQuit, + CMDUndo, CMDRedo, CMDCut, CMDCopy, CMDPaste, CMDHelp, + CMDAbout, CMDOptions, + CMDViewGTExp, CMDViewProps, CMDViewProj, CMDViewProjProps, CMDViewErrors, CMDViewSolution, CMDViewEditor, CMDViewProperties, + CMDViewToolbox, CMDViewSchema, CMDViewStyling,CMDViewDesign, + CMDCompile; + + void initCommands () { + CMDNew = new Command(new Action(() => newFile())) { Caption = "New", Icon = new SvgPicture("#CrowIDE.icons.blank-file.svg"), CanExecute = true}; + CMDOpen = new Command(new Action(() => openFileDialog())) { Caption = "Open...", Icon = new SvgPicture("#CrowIDE.icons.open.svg") }; + CMDSave = new Command(new Action(() => saveFileDialog())) { Caption = "Save", Icon = new SvgPicture("#CrowIDE.icons.save.svg"), CanExecute = false}; + CMDSaveAs = new Command(new Action(() => saveFileDialog())) { Caption = "Save As...", Icon = new SvgPicture("#CrowIDE.icons.save.svg"), CanExecute = false}; + //CMDQuit = new Command(new Action(() => running = false)) { Caption = "Quit", Icon = new SvgPicture("#CrowIDE.icons.sign-out.svg") }; + CMDUndo = new Command(new Action(() => undo())) { Caption = "Undo", Icon = new SvgPicture("#CrowIDE.icons.undo.svg"), CanExecute = false}; + CMDRedo = new Command(new Action(() => redo())) { Caption = "Redo", Icon = new SvgPicture("#CrowIDE.icons.redo.svg"), CanExecute = false}; + //CMDCut = new Command(new Action(() => Quit (null, null))) { Caption = "Cut", Icon = new SvgPicture("#CrowIDE.icons.scissors.svg"), CanExecute = false}; + //CMDCopy = new Command(new Action(() => Quit (null, null))) { Caption = "Copy", Icon = new SvgPicture("#CrowIDE.icons.copy-file.svg"), CanExecute = false}; + //CMDPaste = new Command(new Action(() => Quit (null, null))) { Caption = "Paste", Icon = new SvgPicture("#CrowIDE.icons.paste-on-document.svg"), CanExecute = false}; + CMDHelp = new Command(new Action(() => System.Diagnostics.Debug.WriteLine("help"))) { Caption = "Help", Icon = new SvgPicture("#CrowIDE.icons.question.svg") }; + CMDOptions = new Command(new Action(() => loadWindow("#CrowIDE.ui.Options.crow"))) { Caption = "Editor Options", Icon = new SvgPicture("#CrowIDE.icons.tools.svg") }; + + cmdCloseSolution = new Command(new Action(() => closeSolution())) + { Caption = "Close Solution", Icon = new SvgPicture("#CrowIDE.icons.paste-on-document.svg"), CanExecute = false}; + + CMDViewErrors = new Command(new Action(() => loadWindow ("#CrowIDE.ui.DockWindows.winErrors.crow",this))) + { Caption = "Errors pane"}; + CMDViewSolution = new Command(new Action(() => loadWindow ("#CrowIDE.ui.DockWindows.winSolution.crow",this))) + { Caption = "Solution Tree", CanExecute = false}; + CMDViewEditor = new Command(new Action(() => loadWindow ("#CrowIDE.ui.DockWindows.winEditor.crow",this))) + { Caption = "Editor Pane"}; + CMDViewProperties = new Command(new Action(() => loadWindow ("#CrowIDE.ui.DockWindows.winProperties.crow",this))) + { Caption = "Properties"}; + CMDViewDesign = new Command(new Action(() => loadWindow ("#CrowIDE.ui.DockWindows.winDesign.crow",this))) + { Caption = "Quick Design", CanExecute = true}; + CMDViewToolbox = new Command(new Action(() => loadWindow ("#CrowIDE.ui.DockWindows.winToolbox.crow",this))) + { Caption = "Toolbox", CanExecute = false}; + CMDViewSchema = new Command(new Action(() => loadWindow ("#CrowIDE.ui.DockWindows.winSchema.crow",this))) + { Caption = "IML Shematic View", CanExecute = true}; + CMDViewStyling = new Command(new Action(() => loadWindow ("#CrowIDE.ui.DockWindows.winStyleView.crow",this))) + { Caption = "Styling Explorer", CanExecute = true}; + + CMDViewGTExp = new Command(new Action(() => loadWindow ("#CrowIDE.ui.DockWindows.winGTExplorer.crow",this))) + { Caption = "Graphic Tree Explorer", CanExecute = true}; + CMDCompile = new Command(new Action(() => compileSolution())) + { Caption = "Compile", CanExecute = false}; + CMDViewProjProps = new Command(new Action(loadProjProps)) + { Caption = "Project Properties", CanExecute = false}; + } + + void openFileDialog () { + crow.AddWidget (instFileDlg.CreateInstance()).DataSource = this; + } + void openOptionsDialog(){} + void newFile() { + currentSolution.OpenedItems.AddElement(new ProjectFile()); + } + void saveFileDialog() {} + void undo() {} + void redo() {} + void closeSolution (){ + if (currentSolution != null) + currentSolution.CloseSolution (); + CurrentSolution = null; + } + + public void saveWinConfigs() { + Configuration.Global.Set ("WinConfigs", mainDock.ExportConfig ()); + Configuration.Global.Save (); + } + public void reloadWinConfigs() { + string conf = Configuration.Global.Get<string>("WinConfigs"); + if (string.IsNullOrEmpty (conf)) + return; + mainDock.ImportConfig (conf, this); + } + + + static void App_KeyboardKeyDown (object sender, KeyEventArgs e) + { + Console.WriteLine((byte)e.Key); + //#if DEBUG_LOG + /*switch (e.Key) { + case Key.F2: + DebugLog.save (app); + break; + }*/ + //#endif + } + + + + IML.Instantiator instFileDlg; + Solution currentSolution; + Project currentProject; + DockStack mainDock; + + public static Interface MainIFace; + public static CrowIDE MainWin; + + void initIde() { + + initCommands (); + + Widget go = crow.Load (@"#CrowIDE.ui.CrowIDE.crow"); + go.DataSource = this; + + mainDock = go.FindByName ("mainDock") as DockStack; + ReopenLastSolution = false; + if (ReopenLastSolution && !string.IsNullOrEmpty (LastOpenSolution)) { + CurrentSolution = Solution.LoadSolution (LastOpenSolution); + //lock(MainIFace.UpdateMutex) + CurrentSolution.ReopenItemsSavedInUserConfig (); + } + + instFileDlg = IML.Instantiator.CreateFromImlFragment + (MainIFace, "<FileDialog Caption='Open File' CurrentDirectory='{²CurrentDirectory}' SearchPattern='*.sln' OkClicked='onFileOpen'/>"); + + /*DockWindow dw = loadWindow ("#CrowIDE.ui.DockWindows.winEditor.crow", this) as DockWindow; + dw.DockingPosition = Alignment.Center; + dw.Dock (mainDock); + dw = loadWindow ("#CrowIDE.ui.DockWindows.winSolution.crow", this) as DockWindow; + dw.DockingPosition = Alignment.Right; + dw.Dock (mainDock); + dw = loadWindow ("#CrowIDE.ui.DockWindows.winToolbox.crow", this) as DockWindow; + dw.DockingPosition = Alignment.Left; + dw.Dock (mainDock);*/ + + //Console.WriteLine (); + } + + void loadProjProps () { + loadWindow ("#CrowIDE.ui.ProjectProperties.crow"); + } + void compileSolution () { + //ProjectItem pi = CurrentSolution.SelectedItem; + Project p = CurrentSolution?.Projects[1]; + if (p == null) + return; + p.Compile (); + } + + public string CurrentDirectory { + get { return Crow.Configuration.Global.Get<string>("CurrentDirectory");} + set { + Crow.Configuration.Global.Set ("CurrentDirectory", value); + } + } + public Solution CurrentSolution { + get { return currentSolution; } + set { + if (currentSolution == value) + return; + + currentSolution = value; + + CMDCompile.CanExecute = (currentSolution != null); + cmdCloseSolution.CanExecute = (currentSolution != null); + CMDViewSolution.CanExecute = (currentSolution != null); + + lock (MainIFace) { + NotifyValueChanged ("CurrentSolution", currentSolution); + } + } + } + public Project CurrentProject { + get { return currentProject; } + set { + if (currentProject == value) + return; + currentProject = value; + + CMDViewProjProps.CanExecute = (currentProject != null); + + lock (MainIFace) { + NotifyValueChanged ("CurrentProject", currentProject); + } + } + } + + public string LastOpenSolution { + get { return Crow.Configuration.Global.Get<string>("LastOpenSolution");} + set { + if (LastOpenSolution == value) + return; + Crow.Configuration.Global.Set ("LastOpenSolution", value); + NotifyValueChanged ("LastOpenSolution", value); + } + } + public bool ReopenLastSolution { + get { return Crow.Configuration.Global.Get<bool>("ReopenLastSolution");} + set { + if (ReopenLastSolution == value) + return; + Crow.Configuration.Global.Set ("ReopenLastSolution", value); + NotifyValueChanged ("ReopenLastSolution", value); + } + } + + public void onFileOpen (object sender, EventArgs e) + { + FileDialog fd = sender as FileDialog; + + string filePath = fd.SelectedFileFullPath; + + try { + string ext = Path.GetExtension (filePath); + if (string.Equals (ext, ".sln", StringComparison.InvariantCultureIgnoreCase)) { + CurrentSolution = Solution.LoadSolution (filePath); + LastOpenSolution = filePath; +// }else if (string.Equals (ext, ".csproj", StringComparison.InvariantCultureIgnoreCase)) { +// currentProject = new Project (filePath); + } + } catch (Exception ex) { + crow.LoadIMLFragment ("<MessageBox Message='"+ ex.Message + "\n" + "' MsgType='Error'/>"); + } + } + + Window loadWindow(string path, object dataSource = null){ + try { + Widget g = MainIFace.FindByName (path); + if (g != null) + return g as Window; + g = MainIFace.Load (path); + g.Name = path; + g.DataSource = dataSource; + return g as Window; + } catch (Exception ex) { + Console.WriteLine (ex.ToString ()); + } + return null; + } + void closeWindow (string path){ + Widget g = MainIFace.FindByName (path); + if (g != null) + MainIFace.DeleteWidget (g); + } + + protected void onCommandSave(object sender, MouseButtonEventArgs e){ + System.Diagnostics.Debug.WriteLine("save"); + } + + void actionOpenFile(){ + System.Diagnostics.Debug.WriteLine ("OpenFile action"); + } + } +}
\ No newline at end of file diff --git a/Samples/CrowIDE/src/DesignInterface.cs b/Samples/CrowIDE/src/DesignInterface.cs new file mode 100644 index 00000000..82c604c8 --- /dev/null +++ b/Samples/CrowIDE/src/DesignInterface.cs @@ -0,0 +1,190 @@ +// +// DesignInterface.cs +// +// Author: +// Jean-Philippe Bruyère <jp_bruyere@hotmail.com> +// +// Copyright (c) 2013-2017 Jean-Philippe Bruyère +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. +using System; +using System.Threading; +using System.Collections.Generic; +using System.IO; + + +namespace Crow.Coding +{ + public class DesignInterface : Interface, IValueChange + { + #region IValueChange implementation + /// <summary> + /// Raise to notify that the value of a property has changed, the binding system + /// rely mainly on this event. the member name may not be present in the class, this is + /// used in **propertyless** bindings, this allow to raise custom named events without needing + /// to create an new one in the class or a new property. + /// </summary> + public event EventHandler<ValueChangeEventArgs> ValueChanged; + /// <summary> + /// Helper function to raise the value changed event + /// </summary> + public virtual void NotifyValueChanged(string MemberName, object _value) + { + //Debug.WriteLine ("Value changed: {0}->{1} = {2}", this, MemberName, _value); + ValueChanged.Raise(this, new ValueChangeEventArgs(MemberName, _value)); + } + #endregion + + public DesignInterface (vkvg.Device dev) : base(dev) + { + } + + public ProjectFile ProjFile; + + + + public override Widget CreateInstance (string path) + { + ProjectFile pi; + + if (ProjFile.Project.solution.GetProjectFileFromPath (path, out pi)) + return CreateITorFromIMLFragment (pi.Source).CreateInstance(); + + return null; + } + public override Stream GetStreamFromPath (string path) + { + ProjectFile pi; + if (ProjFile.Project.solution.GetProjectFileFromPath (path, out pi)) { + return new FileStream (pi.AbsolutePath, FileMode.Open); + } + throw new Exception ($"In Design File not found: {path}"); + } + + + public override bool ProcessMouseMove (int x, int y) + { + int deltaX = x - Mouse.X; + int deltaY = y - Mouse.Y; + Mouse.X = x; + Mouse.Y = y; + MouseMoveEventArgs e = new MouseMoveEventArgs (x, y, deltaX, deltaY); + e.Mouse = Mouse; + + if (ActiveWidget != null) { + //TODO, ensure object is still in the graphic tree + //send move evt even if mouse move outside bounds + ActiveWidget.onMouseMove (this, e); + if (!ActiveWidget.IsDragged)//if active is dragged, process mouse move as it was not visible. + return true; + } + + if (HoverWidget != null) { + + //check topmost graphicobject first + Widget tmp = HoverWidget; + Widget topc = null; + while (tmp is Widget) { + topc = tmp; + tmp = tmp.LogicalParent as Widget; + } + int idxhw = GraphicTree.IndexOf (topc); + if (idxhw != 0) { + int i = 0; + while (i < idxhw) { + if (GraphicTree [i].localLogicalParentIsNull) { + if (GraphicTree [i].MouseIsIn (e.Position)) { + while (HoverWidget != null) { + HoverWidget.onMouseLeave (HoverWidget, e); + HoverWidget = HoverWidget.LogicalParent as Widget; + } + + GraphicTree [i].checkHoverWidget (e); + return true; + } + } + i++; + } + } + + if (HoverWidget.MouseIsIn (e.Position)) { + if (!(HoverWidget is TemplatedControl)) + HoverWidget.checkHoverWidget (e); + return true; + } else { + HoverWidget.onMouseLeave (HoverWidget, e); + //seek upward from last focused graph obj's + while (HoverWidget.LogicalParent as Widget != null) { + HoverWidget = HoverWidget.LogicalParent as Widget; + if (HoverWidget.MouseIsIn (e.Position)) { + HoverWidget.checkHoverWidget (e); + return true; + } else + HoverWidget.onMouseLeave (HoverWidget, e); + } + } + } + + //top level graphic obj's parsing + lock (GraphicTree) { + for (int i = 0; i < GraphicTree.Count; i++) { + Widget g = GraphicTree [i]; + if (g.MouseIsIn (e.Position)) { + if (!(HoverWidget is TemplatedControl)) + g.checkHoverWidget (e); + if (g is Window) + PutOnTop (g); + return true; + } + } + } + HoverWidget = null; + return false; + } + + protected override void processLayouting () + { + #if MEASURE_TIME + layoutingMeasure.StartCycle(); + #endif + + if (Monitor.TryEnter (LayoutMutex)) { + DiscardQueue = new Queue<LayoutingQueueItem> (); + LayoutingQueueItem lqi; + while (LayoutingQueue.Count > 0) { + lqi = LayoutingQueue.Dequeue (); + //Console.WriteLine (lqi.ToString ()); + #if DEBUG_LAYOUTING + currentLQI = lqi; + curLQIsTries.Add(currentLQI); + #endif + lqi.ProcessLayouting (); + } + LayoutingQueue = DiscardQueue; + Monitor.Exit (LayoutMutex); + DiscardQueue = null; + } + + #if MEASURE_TIME + layoutingMeasure.StopCycle(); + #endif + } + } +} + diff --git a/Samples/CrowIDE/src/Editors/CodeBuffer/CodeBuffer.cs b/Samples/CrowIDE/src/Editors/CodeBuffer/CodeBuffer.cs new file mode 100644 index 00000000..7d5efec9 --- /dev/null +++ b/Samples/CrowIDE/src/Editors/CodeBuffer/CodeBuffer.cs @@ -0,0 +1,530 @@ +// +// CodeTextBuffer.cs +// +// Author: +// Jean-Philippe Bruyère <jp.bruyere@hotmail.com> +// +// Copyright (c) 2017 jp +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see <http://www.gnu.org/licenses/>. +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text.RegularExpressions; +using System.Diagnostics; +using System.Threading; + +namespace Crow.Coding +{ + /// <summary> + /// Code buffer, lines are arranged in a List<string>, new line chars are removed during string.split on '\n...', + /// </summary> + public class CodeBuffer + { + public ReaderWriterLockSlim editMutex = new ReaderWriterLockSlim(LockRecursionPolicy.SupportsRecursion); + + //those events are handled in SourceEditor to help keeping sync between textbuffer,parser and editor. + //modified lines are marked for reparse + #region Events + public event EventHandler<CodeBufferEventArgs> LineUpadateEvent; + public event EventHandler<CodeBufferEventArgs> LineRemoveEvent; + public event EventHandler<CodeBufferEventArgs> LineAdditionEvent; + public event EventHandler<CodeBufferEventArgs> FoldingEvent; + public event EventHandler BufferCleared; + public event EventHandler SelectionChanged; + public event EventHandler PositionChanged; + #endregion + + string lineBreak = Interface.LineBreak; + List<CodeLine> lines = new List<CodeLine>(); + public int longestLineIdx = 0; + public int longestLineCharCount = 0; + /// <summary> + /// real position in char arrays, tab = 1 char + /// </summary> + int _currentLine = 0; + int _currentCol = 0; + + public int LineCount { get { return lines.Count;}} + public int IndexOf (CodeLine cl) { + return lines.IndexOf (cl); + } + + public CodeLine this[int i] + { + get { return i < LineCount ? lines[i] : null; } + set { + if (lines [i] == value) + return; + editMutex.EnterWriteLock (); + lines [i] = value; + editMutex.ExitWriteLock (); + LineUpadateEvent.Raise (this, new CodeBufferEventArgs (i)); + } + } + + public void RemoveAt(int i){ + editMutex.EnterWriteLock (); + lines.RemoveAt (i); + editMutex.ExitWriteLock (); + LineRemoveEvent.Raise (this, new CodeBufferEventArgs (i)); + } + public void Insert(int i, string item){ + editMutex.EnterWriteLock (); + lines.Insert (i, item); + editMutex.ExitWriteLock (); + LineAdditionEvent.Raise (this, new CodeBufferEventArgs (i)); + } + public void Add(CodeLine item){ + editMutex.EnterWriteLock (); + lines.Add (item); + editMutex.ExitWriteLock (); + LineAdditionEvent.Raise (this, new CodeBufferEventArgs (lines.Count - 1)); + } + public void AddRange (string[] items){ + int start = lines.Count; + editMutex.EnterWriteLock (); + for (int i = 0; i < items.Length; i++) + lines.Add (items [i]); + editMutex.ExitWriteLock (); + LineAdditionEvent.Raise (this, new CodeBufferEventArgs (start, items.Length)); + } + public void AddRange (CodeLine[] items){ + int start = lines.Count; + editMutex.EnterWriteLock (); + lines.AddRange (items); + editMutex.ExitWriteLock (); + LineAdditionEvent.Raise (this, new CodeBufferEventArgs (start, items.Length)); + } + public void Clear () { + editMutex.EnterWriteLock (); + longestLineCharCount = 0; + lines.Clear (); + editMutex.ExitWriteLock (); + BufferCleared.Raise (this, null); + } + public void UpdateLine(int i, string newContent){ + editMutex.EnterWriteLock (); + this [i].Content = newContent; + editMutex.ExitWriteLock (); + LineUpadateEvent.Raise (this, new CodeBufferEventArgs (i)); + } + public void AppenedLine(int i, string newContent){ + editMutex.EnterWriteLock (); + this [i].Content += newContent; + editMutex.ExitWriteLock (); + LineUpadateEvent.Raise (this, new CodeBufferEventArgs (i)); + } + public void RemoveLeadingTab (int l) { + if (this [l] [0] == '\t') { + UpdateLine (l, this [l].Content.Substring (1)); + return; + } + int i = 0; + while (i < Interface.TabSize) { + if (this [l] [i] != ' ') + break; + i++; + } + if (i > 0) + UpdateLine (l, this [l].Content.Substring (i)); + } + public void ToogleFolding (int line) { + if (!this [line].IsFoldable) + return; + editMutex.EnterWriteLock (); + this [line].IsFolded = !this [line].IsFolded; + editMutex.ExitWriteLock (); + FoldingEvent.Raise (this, new CodeBufferEventArgs (line)); + } + public void Load(string rawSource, string lineBrkRegex = @"\r\n|\r|\n|\\\n") { + this.Clear(); + + if (string.IsNullOrEmpty (rawSource)) + return; + + AddRange (Regex.Split (rawSource, lineBrkRegex)); + + lineBreak = detectLineBreakKind (rawSource); + } + + /// <summary> + /// Finds the longest visual line as printed on screen with tabulation replaced with n spaces + /// </summary> + public void FindLongestVisualLine(){ + longestLineCharCount = 0; + editMutex.EnterReadLock (); + for (int i = 0; i < this.LineCount; i++) { + if (lines[i].PrintableLength > longestLineCharCount) { + longestLineCharCount = lines[i].PrintableLength; + longestLineIdx = i; + } + } + editMutex.ExitReadLock (); + //Debug.WriteLine ("Longest line: {0}->{1}", longestLineIdx, longestLineCharCount); + } + /// <summary> line break could be '\r' or '\n' or '\r\n' </summary> + static string detectLineBreakKind(string buffer){ + string strLB = ""; + + if (string.IsNullOrEmpty(buffer)) + return Interface.LineBreak; + int i = 0; + while ( i < buffer.Length) { + if (buffer [i] == '\r') { + strLB += '\r'; + i++; + } + if (i < buffer.Length) { + if (buffer [i] == '\r') + return "\r"; + if (buffer[i] == '\n') + strLB += '\n'; + } + if (!string.IsNullOrEmpty (strLB)) + return strLB; + i++; + } + return Interface.LineBreak; + } + /// <summary> + /// return all lines with linebreaks + /// </summary> + public string FullText{ + get { + if (lines.Count == 0) + return ""; + string tmp = ""; + editMutex.EnterReadLock (); + for (int i = 0; i < lines.Count -1; i++) + tmp += lines [i].Content + this.lineBreak; + tmp += lines [lines.Count - 1].Content; + editMutex.ExitReadLock (); + return tmp; + } + } + + /// <summary> + /// unfolded and not in folds line count + /// </summary> + public int UnfoldedLines { + get { + int i = 0, vl = 0; + editMutex.EnterReadLock (); + while (i < LineCount) { + if (this [i].IsFolded) { + i = GetEndNodeIndex (i); + if (i < 0) { + Console.WriteLine ("error folding"); + break; + } + } + i++; + vl++; + } + editMutex.ExitReadLock (); + //Debug.WriteLine ("unfolded lines: " + vl); + return vl; + } + } + + /// <summary> + /// convert visual position to buffer position + /// </summary> + Point getBuffPos (Point visualPos) { + int i = 0; + int buffCol = 0; + while (i < visualPos.X) { + if (this [visualPos.Y] [buffCol] == '\t') + i += Interface.TabSize; + else + i++; + buffCol++; + } + return new Point (buffCol, visualPos.Y); + } + + public int GetEndNodeIndex (int line) { + return IndexOf (this [line].SyntacticNode.EndLine); + } + + int ConverteTabulatedPosOfCurLine (int column) { + int tmp = 0; + int i = 0; + while (i < lines [_currentLine].Content.Length){ + if (lines [_currentLine].Content [i] == '\t') + tmp += 4; + else + tmp++; + if (tmp > column) + break; + i++; + } + return i; + } + + public int CurrentTabulatedColumn { + get { + return lines [_currentLine].Content.Substring (0, _currentCol). + Replace ("\t", new String (' ', Interface.TabSize)).Length; + } + } + /// <summary> + /// Gets visual position computed from actual buffer position + /// </summary> +// public Point TabulatedPosition { +// get { return new Point (TabulatedColumn, _currentLine); } +// } + /// <summary> + /// set buffer current position from visual position + /// </summary> +// public void SetBufferPos(Point tabulatedPosition) { +// CurrentPosition = getBuffPos(tabulatedPosition); +// } + + #region Editing and moving cursor + Point selStartPos = -1; //selection start (row,column) + Point selEndPos = -1; //selection end (row,column) + + public bool SelectionInProgress { get { return selStartPos >= 0; }} + public void SetSelStartPos () { + selStartPos = selEndPos = CurrentPosition; + SelectionChanged.Raise (this, null); + } + public void SetSelEndPos () { + selEndPos = CurrentPosition; + SelectionChanged.Raise (this, null); + } + public void SetSelectionOnFullLines () { + if (!SelectionInProgress) + return; + Point s = new Point (0, SelectionStart.Y); + Point e = new Point (this [SelectionEnd.Y].Length, SelectionEnd.Y); + selStartPos = s; + selEndPos = e; + SelectionChanged.Raise (this, null); + } + /// <summary> + /// Set selection in buffer to -1, empty selection + /// </summary> + public void ResetSelection () { + selStartPos = selEndPos = -1; + SelectionChanged.Raise (this, null); + } + + public string SelectedText { + get { + if (SelectionIsEmpty) + return ""; + Point selStart = SelectionStart; + Point selEnd = SelectionEnd; + if (selStart.Y == selEnd.Y) + return this [selStart.Y].Content.Substring (selStart.X, selEnd.X - selStart.X); + string tmp = ""; + tmp = this [selStart.Y].Content.Substring (selStart.X); + for (int l = selStart.Y + 1; l < selEnd.Y; l++) { + tmp += Interface.LineBreak + this [l].Content; + } + tmp += Interface.LineBreak + this [selEnd.Y].Content.Substring (0, selEnd.X); + return tmp; + } + } + /// <summary> + /// ordered selection start and end positions in char units + /// </summary> + public Point SelectionStart { + get { return selEndPos < 0 || selStartPos.Y < selEndPos.Y ? selStartPos : + selStartPos.Y > selEndPos.Y ? selEndPos : + selStartPos.X < selEndPos.X ? selStartPos : selEndPos; } + } + public Point SelectionEnd { + get { return selEndPos < 0 || selStartPos.Y > selEndPos.Y ? selStartPos : + selStartPos.Y < selEndPos.Y ? selEndPos : + selStartPos.X > selEndPos.X ? selStartPos : selEndPos; } + } + public bool SelectionIsEmpty + { get { return selEndPos == selStartPos; } } + int requestedColumn = -1; + /// <summary> + /// Current column in buffer coordinate, tabulation = 1 char + /// </summary> + public int CurrentColumn{ + get { return _currentCol; } + set { + if (value == _currentCol) + return; + + editMutex.EnterReadLock (); + + if (value < 0) + _currentCol = 0; + else if (value > lines [_currentLine].Length) + _currentCol = lines [_currentLine].Length; + else + _currentCol = value; + + requestedColumn = CurrentTabulatedColumn; + + editMutex.ExitReadLock (); + + PositionChanged.Raise (this, null); + } + } + /// <summary> + /// Current row in buffer coordinate, tabulation = 1 char + /// </summary> + public int CurrentLine{ + get { return _currentLine; } + set { + if (value == _currentLine) + return; + + editMutex.EnterReadLock (); + + if (LineCount == 0) + _currentLine = 0; + else if (value >= lines.Count) + _currentLine = lines.Count-1; + else if (value < 0) + _currentLine = 0; + else + _currentLine = value; +// if (_currentCol < 0) +// requestedColumn = tabu _currentCol; + int tabulatedRequestedCol = ConverteTabulatedPosOfCurLine(requestedColumn); + if (requestedColumn > lines [_currentLine].PrintableLength) + _currentCol = lines [_currentLine].Length; + else + //_currentCol = requestedColumn; + _currentCol = tabulatedRequestedCol; + //Debug.WriteLine ("buff cur line: " + _currentLine); + + editMutex.ExitReadLock(); + + PositionChanged.Raise (this, null); + } + } + public CodeLine CurrentCodeLine { + get { return this [_currentLine]; } + } + /// <summary> + /// Current position in buffer coordinate, tabulation = 1 char + /// </summary> + public Point CurrentPosition { + get { return new Point(CurrentColumn, CurrentLine); } +// set { +// _currentCol = value.X; +// _currentLine = value.Y; +// } + } + /// <summary> + /// get char at current position in buffer + /// </summary> + protected Char CurrentChar { get { return lines [CurrentLine] [CurrentColumn]; } } + + public void GotoWordStart(){ + if (this[CurrentLine].Length == 0) + return; + CurrentColumn--; + //skip white spaces + while (!char.IsLetterOrDigit (this.CurrentChar) && CurrentColumn > 0) + CurrentColumn--; + while (char.IsLetterOrDigit (this.CurrentChar) && CurrentColumn > 0) + CurrentColumn--; + if (!char.IsLetterOrDigit (this.CurrentChar)) + CurrentColumn++; + } + public void GotoWordEnd(){ + //skip white spaces + if (CurrentColumn >= this [CurrentLine].Length - 1) + return; + while (!char.IsLetterOrDigit (this.CurrentChar) && CurrentColumn < this [CurrentLine].Length-1) + CurrentColumn++; + while (char.IsLetterOrDigit (this.CurrentChar) && CurrentColumn < this [CurrentLine].Length-1) + CurrentColumn++; + if (char.IsLetterOrDigit (this.CurrentChar)) + CurrentColumn++; + } + public void DeleteChar() + { + editMutex.EnterWriteLock (); + if (SelectionIsEmpty) { + if (CurrentColumn == 0) { + if (CurrentLine == 0) { + editMutex.ExitWriteLock (); + return; + } + CurrentLine--; + CurrentColumn = this [CurrentLine].Length; + AppenedLine (CurrentLine, this [CurrentLine + 1].Content); + RemoveAt (CurrentLine + 1); + editMutex.ExitWriteLock (); + return; + } + CurrentColumn--; + UpdateLine (CurrentLine, this [CurrentLine].Content.Remove (CurrentColumn, 1)); + } else { + int linesToRemove = SelectionEnd.Y - SelectionStart.Y + 1; + int l = SelectionStart.Y; + + if (linesToRemove > 0) { + UpdateLine (l, this [l].Content.Remove (SelectionStart.X, this [l].Length - SelectionStart.X) + + this [SelectionEnd.Y].Content.Substring (SelectionEnd.X, this [SelectionEnd.Y].Length - SelectionEnd.X)); + l++; + for (int c = 0; c < linesToRemove - 1; c++) + RemoveAt (l); + CurrentLine = SelectionStart.Y; + CurrentColumn = SelectionStart.X; + } else + UpdateLine (l, this [l].Content.Remove (SelectionStart.X, SelectionEnd.X - SelectionStart.X)); + CurrentColumn = SelectionStart.X; + ResetSelection (); + } + editMutex.ExitWriteLock (); + } + /// <summary> + /// Insert new string at caret position, should be sure no line break is inside. + /// </summary> + /// <param name="str">String.</param> + public void Insert(string str) + { + if (!SelectionIsEmpty) + this.DeleteChar (); + string[] strLines = Regex.Split (str, "\r\n|\r|\n|" + @"\\n").ToArray(); + UpdateLine (CurrentLine, this [CurrentLine].Content.Insert (CurrentColumn, strLines[0])); + CurrentColumn += strLines[0].Length; + for (int i = 1; i < strLines.Length; i++) { + InsertLineBreak (); + UpdateLine (CurrentLine, this [CurrentLine].Content.Insert (CurrentColumn, strLines[i])); + CurrentColumn += strLines[i].Length; + } + } + /// <summary> + /// Insert a line break. + /// </summary> + public void InsertLineBreak() + { + if (CurrentColumn > 0) { + Insert (CurrentLine + 1, this [CurrentLine].Content.Substring (CurrentColumn)); + UpdateLine (CurrentLine, this [CurrentLine].Content.Substring (0, CurrentColumn)); + } else + Insert(CurrentLine, ""); + + CurrentColumn = 0; + CurrentLine++; + } + #endregion + } +} + diff --git a/Samples/CrowIDE/src/Editors/CodeBuffer/CodeBufferEventArgs.cs b/Samples/CrowIDE/src/Editors/CodeBuffer/CodeBufferEventArgs.cs new file mode 100644 index 00000000..07dd25b6 --- /dev/null +++ b/Samples/CrowIDE/src/Editors/CodeBuffer/CodeBufferEventArgs.cs @@ -0,0 +1,20 @@ +using System; + +namespace Crow.Coding +{ + public class CodeBufferEventArgs : EventArgs { + public int LineStart; + public int LineCount; + + public CodeBufferEventArgs(int lineNumber) { + LineStart = lineNumber; + LineCount = 1; + } + public CodeBufferEventArgs(int lineStart, int lineCount) { + LineStart = lineStart; + LineCount = lineCount; + } + } + +} + diff --git a/Samples/CrowIDE/src/Editors/CodeBuffer/CodeLine.cs b/Samples/CrowIDE/src/Editors/CodeBuffer/CodeLine.cs new file mode 100644 index 00000000..23f43fba --- /dev/null +++ b/Samples/CrowIDE/src/Editors/CodeBuffer/CodeLine.cs @@ -0,0 +1,82 @@ +using System; +using System.Text; +using System.Collections.Generic; +using System.Linq; + +namespace Crow.Coding +{ + public class CodeLine + { + public string Content; + public List<Token> Tokens; + public int EndingState = 0; + public Node SyntacticNode; + public ParserException exception; + + public CodeLine (string _content){ + Content = _content; + Tokens = null; + exception = null; + } + + public char this[int i] + { + get { return Content[i]; } + set { + if (Content [i] == value) + return; + StringBuilder sb = new StringBuilder(Content); + sb[i] = value; + Content = sb.ToString(); + Tokens = null; + //LineUpadateEvent.Raise (this, new CodeBufferEventArgs (i)); + } + } + public bool IsFoldable { get { return SyntacticNode == null ? false : + SyntacticNode.EndLine != SyntacticNode.StartLine && SyntacticNode.EndLine != null; } } + public int FoldingLevel { get { return IsFoldable ? SyntacticNode.Level : 0; } } + public bool IsFolded = false; + public bool IsParsed { + get { return Tokens != null; } + } + public string PrintableContent { + get { + return string.IsNullOrEmpty (Content) ? "" : Content.Replace ("\t", new String (' ', Interface.TabSize)); + } + } + public int PrintableLength { + get { + return PrintableContent.Length; + } + } + public int Length { + get { + return string.IsNullOrEmpty (Content) ? 0 : Content.Length; + } + } + public int FirstNonBlankTokIndex { + get { return Tokens == null ? -1 : Tokens.FindIndex (tk=>tk.Type != BufferParser.TokenType.WhiteSpace); } + } + + public void SetLineInError (ParserException ex) { + Tokens = null; + exception = ex; + } + +// public static implicit operator string(CodeLine sl) { +// return sl == null ? "" : sl.Content; +// } + public static implicit operator CodeLine(string s) { + return new CodeLine(s); + } + public static bool operator ==(string s1, CodeLine s2) + { + return string.Equals (s1, s2.Content); + } + public static bool operator !=(string s1, CodeLine s2) + { + return !string.Equals (s1, s2.Content); + } + } +} + diff --git a/Samples/CrowIDE/src/Editors/CodeBuffer/Node.cs b/Samples/CrowIDE/src/Editors/CodeBuffer/Node.cs new file mode 100644 index 00000000..9db55428 --- /dev/null +++ b/Samples/CrowIDE/src/Editors/CodeBuffer/Node.cs @@ -0,0 +1,36 @@ +using System; +using System.Collections.Generic; + +namespace Crow.Coding +{ + public class Node + { + public Node Parent; + public string Name; + public string Type; + public CodeLine StartLine; + public CodeLine EndLine; + public Dictionary<string,string> Attributes = new Dictionary<string, string> (); + + public List<Node> Children = new List<Node>(); + + public Node () + { + } + + public void AddChild (Node child) { + child.Parent = this; + Children.Add (child); + } + + public int Level { + get { return Parent == null ? 1 : Parent.Level + 1; } + } + + public override string ToString () + { + return string.Format ("Name:{0}, Type:{1}\n\tparent:{2}", Name, Type, Parent); + } + } +} + diff --git a/Samples/CrowIDE/src/Editors/CodeBuffer/TextBuffer.cs b/Samples/CrowIDE/src/Editors/CodeBuffer/TextBuffer.cs new file mode 100644 index 00000000..e8c87182 --- /dev/null +++ b/Samples/CrowIDE/src/Editors/CodeBuffer/TextBuffer.cs @@ -0,0 +1,527 @@ +// +// CodeTextBuffer.cs +// +// Author: +// Jean-Philippe Bruyère <jp.bruyere@hotmail.com> +// +// Copyright (c) 2017 jp +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see <http://www.gnu.org/licenses/>. +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text.RegularExpressions; +using System.Diagnostics; +using System.Threading; +using System.Text; + +namespace Crow.Text +{ + /// <summary> + /// Code buffer, lines are arranged in a List<string>, new line chars are removed during string.split on '\n...', + /// </summary> + public class TextBuffer + { + public ReaderWriterLockSlim editMutex = new ReaderWriterLockSlim(LockRecursionPolicy.SupportsRecursion); + static Regex slb = new Regex ("\\n");//single char line break used internaly + Regex reghexLineBrk = new Regex(@"\r\n|\r|\n|\\\n");//original text line break regex + + #region Events + public event EventHandler<TextBufferEventArgs> LineUpadateEvent; + public event EventHandler<TextBufferEventArgs> LineRemoveEvent; + public event EventHandler<TextBufferEventArgs> LineAdditionEvent; + public event EventHandler BufferCleared; + public event EventHandler SelectionChanged; + public event EventHandler PositionChanged; + #endregion + + StringBuilder buffer = new StringBuilder(); + string lineBreak = Interface.LineBreak;//detected linebreak kind in original source + List<int> lineLength = new List<int>();//line length table + /// <summary> + /// real position in char arrays, tab = 1 char + /// </summary> + int _currentLine = 0; + int _currentCol = 0; + + /// <summary> + /// Gets the total line count. + /// </summary> + public int LineCount { get { return lineLength.Count;}} + + /// <summary> + /// get a substring in the buffer + /// </summary> + /// <returns>a new string</returns> + /// <param name="idx">absolute index in the buffer</param> + /// <param name="length">length of the substring</param> + public string GetSubString (int idx, int length){ + return buffer.ToString (idx, length); + } + /// <summary> + /// Gets length of a line. + /// </summary> + /// <returns>length of line</returns> + /// <param name="lineIdx">line nuber</param> + public int GetLineLength (int lineIdx) { + return lineLength [lineIdx]; + } + /// <summary> + /// get a single charactere in the buffer + /// </summary> + /// <returns>a single char</returns> + /// <param name="idx">absolute index in the buffer</param> + public char GetCharAt (int idx){ + return buffer [idx]; + } + /// <summary> + /// return full text with original line breaks + /// </summary> + /// <value>a string containing the full text</value> + public string FullText { + get { return buffer.Replace("\n", lineBreak).ToString (); } + set { + Load (value); + } + } + /// <summary> + /// Gets the buffer pointer of a line + /// </summary> + /// <returns>absolute index of the line in the buffer</returns> + /// <param name="i">line number</param> + public int GetBufferIndexOfLine (int i) { + int ptr = 0; + editMutex.EnterReadLock (); + for (int j = 0; j < i; j++) { + ptr += lineLength [j]; + } + editMutex.ExitReadLock (); + return ptr; + } + /// <summary> + /// Gets the buffer pointer for the current position + /// </summary> + /// <value>absolute index in the buffer of current position</value> + public int BufferIndexOfCurrentPosition { + get {return GetBufferIndexOfLine (_currentLine) + _currentCol;} + } + public int this[int i] + { + get { + int ptr = 0; + editMutex.EnterReadLock (); + for (int j = 0; j < i; j++) { + ptr += lineLength [j]; + } + editMutex.ExitReadLock (); + return ptr; + } + } + /// <summary> + /// remove line number i + /// </summary> + /// <param name="i">index of the line</param> + public void RemoveLine(int i){ + editMutex.EnterWriteLock (); + buffer.Remove (GetBufferIndexOfLine (i), lineLength [i]); + lineLength.RemoveAt (i); + editMutex.ExitWriteLock (); + LineRemoveEvent.Raise (this, new TextBufferEventArgs (i)); + } + /// <summary> + /// insert string without linebreaks at position i in buff + /// </summary> + /// <param name="i">absolute index in the buffer</param> + /// <param name="str">linebreak free string</param> + public void InsertAt(int i, string str){ + editMutex.EnterWriteLock (); + buffer.Insert (this [i], str); + lineLength.Insert (i, str.Length); + editMutex.ExitWriteLock (); + LineAdditionEvent.Raise (this, new TextBufferEventArgs (i)); + } + public void AddLine(string str){ + editMutex.EnterWriteLock (); + if (lineLength.LastOrDefault() == 0) { + buffer.Append (str); + lineLength [lineLength.Count - 1] = str.Length; + lineLength.Add (0); + } + editMutex.ExitWriteLock (); + LineAdditionEvent.Raise (this, new TextBufferEventArgs (lineLength.Count - 1)); + } + public void AddRange (string[] items){ + int start = lineLength.Count; + editMutex.EnterWriteLock (); + for (int i = 0; i < items.Length; i++) + AddLine (items [i]); + editMutex.ExitWriteLock (); + LineAdditionEvent.Raise (this, new TextBufferEventArgs (start, items.Length)); + } + public void Clear () { + editMutex.EnterWriteLock (); + lineLength.Clear (); + buffer.Clear (); + editMutex.ExitWriteLock (); + BufferCleared.Raise (this, null); + } + public void UpdateLine(int i, string newContent){ + editMutex.EnterWriteLock (); + int ptrL = this [i]; + buffer.Remove (ptrL, lineLength [i]); + buffer.Insert (ptrL, newContent); + lineLength [i] = newContent.Length; + editMutex.ExitWriteLock (); + LineUpadateEvent.Raise (this, new TextBufferEventArgs (i)); + } + public void AppenedLine(int i, string newContent){ + editMutex.EnterWriteLock (); + int ptr = this [i] + lineLength [i]; + if (i < LineCount - 1) + ptr--; + buffer.Insert(ptr, newContent); + lineLength [i] += newContent.Length; + editMutex.ExitWriteLock (); + LineUpadateEvent.Raise (this, new TextBufferEventArgs (i)); + } + /// <summary> + /// Insert new string at caret position, should be sure no line break is inside. + /// </summary> + /// <param name="str">String.</param> + public void InsertAt(string str) + { + if (!SelectionIsEmpty) + this.Delete (); + + editMutex.EnterWriteLock (); + + string tmp = reghexLineBrk.Replace (str, "\n");//use single char line break in buffer + int buffPtr = this [CurrentLine] + CurrentColumn; + buffer.Insert (buffPtr, tmp); + + int lPtr = CurrentLine, strPtr = 0; + int remainingLength = lineLength [lPtr] - CurrentColumn; + lineLength [lPtr] = CurrentColumn; + foreach (Match match in slb.Matches(tmp)) + { + lineLength [lPtr] += match.Index + 1 - strPtr; + lPtr++; + lineLength.Insert (lPtr, 0); + strPtr = match.Index + 1; + //CurrentLine++; + } + remainingLength += tmp.Length - strPtr; + lineLength [lPtr] += remainingLength; + + CurrentLine = lPtr; + if (strPtr == 0) + CurrentColumn += tmp.Length; + else + CurrentColumn = tmp.Length - strPtr; + + editMutex.ExitWriteLock (); + if (strPtr>0) + LineAdditionEvent.Raise (this, null); + else + LineUpadateEvent.Raise (this, null); + } + /// <summary> + /// Insert a line break. + /// </summary> + public void InsertLineBreak() + { + editMutex.EnterWriteLock (); + buffer.Insert (this [CurrentLine] + CurrentColumn, '\n'); + int lgdiff = lineLength [CurrentLine] - CurrentColumn; + lineLength.Insert (CurrentLine + 1, lineLength [CurrentLine] - CurrentColumn); + lineLength [CurrentLine] = CurrentColumn + 1; + editMutex.ExitWriteLock (); + LineAdditionEvent.Raise (this, null); + CurrentColumn = 0; + CurrentLine++; + } + public void Delete() + { + editMutex.EnterWriteLock (); + if (SelectionIsEmpty) { + if (CurrentColumn == 0) { + if (CurrentLine == 0) { + editMutex.ExitWriteLock (); + return; + } + + buffer.Remove (this [CurrentLine] - 1, 1); + + int col = lineLength [CurrentLine - 1] - 1; + lineLength [CurrentLine - 1] += lineLength [CurrentLine] - 1; + lineLength.RemoveAt (CurrentLine); + + CurrentLine--; + CurrentColumn = col; + + editMutex.ExitWriteLock (); + LineRemoveEvent.Raise (this, null); + return; + } + CurrentColumn--; + buffer.Remove (this [CurrentLine] + CurrentColumn, 1); + lineLength [CurrentLine]--; + } else { + int linesToRemove = SelectionEnd.Y - SelectionStart.Y; + int ptr = this [SelectionStart.Y] + SelectionStart.X; + int length = lineLength [SelectionStart.Y] - SelectionStart.X; + int l = 1; + while (l <= linesToRemove ) { + length += lineLength [SelectionStart.Y + l]; + l++; + } + length -= lineLength [SelectionEnd.Y] - SelectionEnd.X; + buffer.Remove (ptr, length); + lineLength [SelectionStart.Y] = SelectionStart.X + lineLength [SelectionEnd.Y] - SelectionEnd.X; + lineLength.RemoveRange (SelectionStart.Y + 1, linesToRemove); + + CurrentLine = SelectionStart.Y; + CurrentColumn = SelectionStart.X; + ResetSelection (); + + if (linesToRemove > 0) + LineRemoveEvent.Raise (this, null); + else + LineUpadateEvent.Raise (this, null); + } + editMutex.ExitWriteLock (); + } + public void Load(string rawSource) { + this.Clear(); + + if (string.IsNullOrEmpty (rawSource)) + return; + + lineBreak = reghexLineBrk.Match (rawSource).Value;//store original line break + string tmp = reghexLineBrk.Replace (rawSource, "\n");//use single char line break in buffer + int ptr = 0; + foreach (Match match in slb.Matches(tmp)) + { + int l = match.Index + 1; + int lg = l - ptr; + lineLength.Add (lg); + ptr = l; + } + lineLength.Add (0); + + buffer = new StringBuilder (tmp); + } + +// public int CurrentTabulatedColumn { +// get { +//// return lines [_currentLine].Content.Substring (0, _currentCol). +//// Replace ("\t", new String (' ', Interface.TabSize)).Length; +// } +// } + + #region moving cursor an selection + Point selStartPos = -1; //selection start (row,column) + Point selEndPos = -1; //selection end (row,column) + + public bool SelectionInProgress { get { return selStartPos >= 0; }} + public void SetSelStartPos () { + selStartPos = selEndPos = CurrentPosition; + SelectionChanged.Raise (this, null); + } + public void SetSelEndPos () { + selEndPos = CurrentPosition; + SelectionChanged.Raise (this, null); + } + /// <summary> + /// Set selection in buffer to -1, empty selection + /// </summary> + public void ResetSelection () { + selStartPos = selEndPos = -1; + SelectionChanged.Raise (this, null); + } + /// <summary> + /// ordered selection start and end positions in char units + /// </summary> + public Point SelectionStart { + get { return selEndPos < 0 || selStartPos.Y < selEndPos.Y ? selStartPos : + selStartPos.Y > selEndPos.Y ? selEndPos : + selStartPos.X < selEndPos.X ? selStartPos : selEndPos; } + } + public Point SelectionEnd { + get { return selEndPos < 0 || selStartPos.Y > selEndPos.Y ? selStartPos : + selStartPos.Y < selEndPos.Y ? selEndPos : + selStartPos.X > selEndPos.X ? selStartPos : selEndPos; } + } + public bool SelectionIsEmpty + { get { return selEndPos == selStartPos; } } + /// <summary> + /// Current column in buffer coordinate, tabulation = 1 char + /// </summary> + public int CurrentColumn{ + get { return _currentCol; } + set { + if (value == _currentCol) + return; + + editMutex.EnterWriteLock (); + + if (value < 0) + _currentCol = 0; + else if (value >= lineLength [_currentLine]) { + if (_currentLine < LineCount -1 && value > lineLength [_currentLine] - 1) + _currentCol = lineLength [_currentLine] - 1; + else + _currentCol = lineLength [_currentLine]; + }else + _currentCol = value; + + editMutex.ExitWriteLock (); + + PositionChanged.Raise (this, null); + } + } + /// <summary> + /// Current row in buffer coordinate, tabulation = 1 char + /// </summary> + public int CurrentLine{ + get { return _currentLine; } + set { + if (value == _currentLine) + return; + + editMutex.EnterWriteLock (); + + if (value >= lineLength.Count) + _currentLine = lineLength.Count-1; + else if (value < 0) + _currentLine = 0; + else + _currentLine = value; + + int c = _currentCol; + _currentCol = 0; + CurrentColumn = c; + + editMutex.ExitWriteLock(); + + PositionChanged.Raise (this, null); + } + } + /// <summary> + /// Current position in buffer coordinate, tabulation = 1 char + /// </summary> + public Point CurrentPosition { + get { return new Point(CurrentColumn, CurrentLine); } + } + /// <summary> + /// get char at current position in buffer + /// </summary> + protected Char CurrentChar { get { return buffer[this [CurrentLine]]; } } + public string SelectedText { + get { + if (SelectionIsEmpty) + return ""; + Point selStart = SelectionStart; + Point selEnd = SelectionEnd; + + int ptr = this [selStart.Y] + selStart.X; + int length = lineLength[selStart.Y] - selStart.X; + for (int i = selStart.Y+1; i <= selEnd.Y; i++) + length += lineLength [i]; + length -= lineLength[selEnd.Y] - selEnd.X; + + return buffer.ToString (ptr, length); + } + } + + public void GotoWordStart(){ + if (_currentCol == 0) + MoveLeft (); + if (_currentCol == 0) + return; + int ptrStart = BufferIndexOfCurrentPosition; + int ptr = ptrStart; + char c; + //skip white spaces + do { + ptr--; + c = this.GetCharAt (ptr); + } while (!char.IsLetterOrDigit (c) && c != '\n' && ptr > 1); + + do { + ptr--; + c = this.GetCharAt (ptr); + } while (char.IsLetterOrDigit (c) && c != '\n' && ptr > 1); + + if (ptr == 0) + CurrentColumn = 0; + else + CurrentColumn -= ptrStart - ptr - 1; + } + public void GotoWordEnd(){ + int limx = GetLineLength (_currentLine); + if (_currentLine < lineLength.Count - 1) + limx--; + + if (_currentCol == limx) { + MoveRight (); + limx = GetLineLength (_currentLine); + if (_currentLine < lineLength.Count - 1) + limx--; + } + + int ptrLine = GetBufferIndexOfLine(_currentLine); + int ptrCol = _currentCol; + + char c; + //skip white spaces + do { + c = GetCharAt (ptrLine+ptrCol); + ptrCol++; + } while (!char.IsLetterOrDigit (c) && ptrCol < limx); + + do { + c = GetCharAt (ptrLine + ptrCol); + ptrCol++; + } while (char.IsLetterOrDigit (c) && ptrCol < limx); + CurrentColumn = ptrCol - 1; + } + /// <summary> + /// Moves cursor one char to the left, move up if cursor reaches start of line + /// </summary> + public void MoveLeft(){ + if (CurrentColumn == 0) { + CurrentLine--; + CurrentColumn = int.MaxValue; + } else + CurrentColumn--; + } + /// <summary> + /// Moves cursor one char to the right, move down if cursor reaches end of line + /// </summary> + public void MoveRight(){ + if (_currentLine < LineCount -1){ + if (CurrentColumn >= lineLength [CurrentLine] - 1) { + CurrentColumn = 0; + CurrentLine++; + return; + } + } + CurrentColumn++; + } + + #endregion + } +} + diff --git a/Samples/CrowIDE/src/Editors/CodeBuffer/TextBufferEventArgs.cs b/Samples/CrowIDE/src/Editors/CodeBuffer/TextBufferEventArgs.cs new file mode 100644 index 00000000..3b67bb1c --- /dev/null +++ b/Samples/CrowIDE/src/Editors/CodeBuffer/TextBufferEventArgs.cs @@ -0,0 +1,20 @@ +using System; + +namespace Crow.Text +{ + public class TextBufferEventArgs : EventArgs { + public int LineStart; + public int LineCount; + + public TextBufferEventArgs(int lineNumber) { + LineStart = lineNumber; + LineCount = 1; + } + public TextBufferEventArgs(int lineStart, int lineCount) { + LineStart = lineStart; + LineCount = lineCount; + } + } + +} + diff --git a/Samples/CrowIDE/src/Editors/CodeBuffer/TextEditor.cs b/Samples/CrowIDE/src/Editors/CodeBuffer/TextEditor.cs new file mode 100644 index 00000000..8b16b9a8 --- /dev/null +++ b/Samples/CrowIDE/src/Editors/CodeBuffer/TextEditor.cs @@ -0,0 +1,699 @@ +// +// ScrollingTextBox.cs +// +// Author: +// Jean-Philippe Bruyère <jp.bruyere@hotmail.com> +// +// Copyright (c) 2013-2017 Jean-Philippe Bruyère +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +using System; +using System.ComponentModel; +using vkvg; + +namespace Crow.Text +{ + /// <summary> + /// Scrolling text box optimized for monospace fonts, for coding + /// </summary> + public class TextEditor : Crow.Coding.Editor + { + #region CTOR + public TextEditor (): base() + { + buffer = new TextBuffer (); + buffer.LineUpadateEvent += Buffer_LineUpadateEvent; + buffer.LineAdditionEvent += Buffer_LineAdditionEvent;; + buffer.LineRemoveEvent += Buffer_LineRemoveEvent; + buffer.BufferCleared += Buffer_BufferCleared; + buffer.SelectionChanged += Buffer_SelectionChanged; + buffer.PositionChanged += Buffer_PositionChanged; + //buffer.Add (""); + } + #endregion + + string oldSource = ""; + volatile bool isDirty = false; + + #region private and protected fields + int visibleLines = 1; + int visibleColumns = 1; + + TextBuffer buffer; + + Color selBackground; + Color selForeground; + int selStartCol; + int selEndCol; + + protected Rectangle rText; + protected FontExtents fe; + protected TextExtents te; + + Point mouseLocalPos; + bool doubleClicked = false; + #endregion + + /// <summary> + /// Updates visible line in widget, adapt max scroll y and updatePrintedLines + /// </summary> + void updateVisibleLines(){ + visibleLines = (int)Math.Floor ((double)ClientRectangle.Height / (fe.Ascent+fe.Descent)); + NotifyValueChanged ("VisibleLines", visibleLines); + updateMaxScrollY (); + RegisterForGraphicUpdate (); +// System.Diagnostics.Debug.WriteLine ("update visible lines: " + visibleLines); +// System.Diagnostics.Debug.WriteLine ("update MaxScrollY: " + MaxScrollY); + } + void updateVisibleColumns(){ + visibleColumns = (int)Math.Floor ((double)(ClientRectangle.Width)/ fe.MaxXAdvance); + NotifyValueChanged ("VisibleColumns", visibleColumns); + RegisterForGraphicUpdate (); +// System.Diagnostics.Debug.WriteLine ("update visible columns: {0} leftMargin:{1}",visibleColumns, leftMargin); +// System.Diagnostics.Debug.WriteLine ("update MaxScrollX: " + MaxScrollX); + } + void updateMaxScrollX (int longestTabulatedLineLength) { + MaxScrollX = Math.Max (0, longestTabulatedLineLength - visibleColumns); + if (longestTabulatedLineLength > 0) + NotifyValueChanged ("ChildWidthRatio", Slot.Width * visibleColumns / longestTabulatedLineLength); + } + void updateMaxScrollY () { + int lc = buffer.LineCount; + MaxScrollY = Math.Max (0, lc - visibleLines); + if (lc > 0) + NotifyValueChanged ("ChildHeightRatio", Slot.Height * visibleLines / lc); + + } + + + + #region Editor overrides + protected override void updateEditorFromProjFile () + { + buffer.editMutex.EnterWriteLock (); + loadSource (); + buffer.editMutex.ExitWriteLock (); + + isDirty = false; + oldSource = projFile.Source; + projFile.RegisteredEditors [this] = true; + } + protected override void updateProjFileFromEditor () + { + buffer.editMutex.EnterWriteLock (); + string newsrc = buffer.FullText; + buffer.editMutex.ExitWriteLock (); + projFile.UpdateSource (this, newsrc); + } + protected override bool EditorIsDirty { + get { return isDirty; } + set { isDirty = value; } + } + protected override bool IsReady { + get { return projFile != null && buffer != null; } + } + #endregion + + #region Buffer events handlers + void Buffer_BufferCleared (object sender, EventArgs e) + { + editorMutex.EnterWriteLock (); + + MaxScrollX = MaxScrollY = 0; + RegisterForGraphicUpdate (); + notifyPositionChanged (); + isDirty = true; + + editorMutex.ExitWriteLock (); + } + void Buffer_LineAdditionEvent (object sender, TextBufferEventArgs e) + { + updateMaxScrollY (); + RegisterForGraphicUpdate (); + isDirty = true; + } + void Buffer_LineRemoveEvent (object sender, TextBufferEventArgs e) + { + updateMaxScrollY (); + RegisterForGraphicUpdate (); + notifyPositionChanged (); + isDirty = true; + } + void Buffer_LineUpadateEvent (object sender, TextBufferEventArgs e) + { + RegisterForGraphicUpdate (); + notifyPositionChanged (); + isDirty = true; + } + void Buffer_PositionChanged (object sender, EventArgs e) + { + int cc = getTabulatedColumn (buffer.CurrentPosition); + + if (cc > visibleColumns + ScrollX) { + ScrollX = cc - visibleColumns; + } else if (cc < ScrollX) + ScrollX = cc; + + if (buffer.CurrentLine >= visibleLines + ScrollY - 1) + ScrollY = buffer.CurrentLine - visibleLines + 1; + else if (buffer.CurrentLine < ScrollY) + ScrollY = buffer.CurrentLine; + + RegisterForGraphicUpdate (); + notifyPositionChanged (); + } + + void Buffer_SelectionChanged (object sender, EventArgs e) + { + RegisterForGraphicUpdate (); + } + #endregion + + void notifyPositionChanged (){ + try { + NotifyValueChanged ("CurrentLine", buffer.CurrentLine+1); + NotifyValueChanged ("CurrentColumn", buffer.CurrentColumn+1); + } catch (Exception ex) { + Console.WriteLine (ex.ToString ()); + } + } + + #region Public Crow Properties + public int CurrentLine{ + get { return buffer == null ? 0 : buffer.CurrentLine+1; } + set { + try { + int l = value - 1; + if (l == buffer.CurrentLine) + return; + buffer.CurrentLine = l; + } catch (Exception ex) { + Console.WriteLine ("Error cur column: " + ex.ToString ()); + } + } + } + public int CurrentColumn{ + get { return buffer == null ? 0 : buffer.CurrentColumn+1; } + set { + try { + if (value - 1 == buffer.CurrentColumn) + return; + buffer.CurrentColumn = value - 1; + } catch (Exception ex) { + Console.WriteLine ("Error cur column: " + ex.ToString ()); + } + } + } + [DefaultValue("Blue")] + public virtual Color SelectionBackground { + get { return selBackground; } + set { + if (value == selBackground) + return; + selBackground = value; + NotifyValueChanged ("SelectionBackground", selBackground); + RegisterForRedraw (); + } + } + [DefaultValue("White")] + public virtual Color SelectionForeground { + get { return selForeground; } + set { + if (value == selForeground) + return; + selForeground = value; + NotifyValueChanged ("SelectionForeground", selForeground); + RegisterForRedraw (); + } + } + public override int ScrollY { + get { + return base.ScrollY; + } + set { + if (value == base.ScrollY) + return; + editorMutex.EnterWriteLock (); + base.ScrollY = value; + editorMutex.ExitWriteLock (); + RegisterForGraphicUpdate (); + } + } + #endregion + + + void loadSource () { + buffer.Load (projFile.Source); + projFile.RegisteredEditors [this] = true; + updateMaxScrollY (); + RegisterForGraphicUpdate (); + } + + int getTabulatedColumn (int col, int line) { + return buffer.GetSubString (buffer [line], + buffer.GetLineLength (line)).Substring(0,col).Replace ("\t", new String (' ', Interface.TabSize)).Length; + } + int getTabulatedColumn (Point pos) { + return getTabulatedColumn (pos.X,pos.Y); + } + + #region Drawing + void drawLines(Context gr, Rectangle cb) { + int longestTabulatedLine = 0; + for (int i = 0; i < visibleLines; i++) { + int lineIndex = i + ScrollY; + if (lineIndex >= buffer.LineCount)//TODO:need optimize + break; + + double y = cb.Y + (fe.Ascent+fe.Descent) * i, x = cb.X; + + int lineLength = buffer.GetLineLength (lineIndex); + if (lineIndex < buffer.LineCount - 1)//dont print line break + lineLength--; + string lstr = buffer.GetSubString (buffer [lineIndex], + lineLength).Replace ("\t", new String (' ', Interface.TabSize)); + + int lstrLength = lstr.Length; + if (lstrLength > longestTabulatedLine) + longestTabulatedLine = lstrLength; + + if (ScrollX < lstrLength) + lstr = lstr.Substring (ScrollX); + else + lstr = ""; + + gr.MoveTo (x, y + fe.Ascent); + gr.ShowText (lstr); + gr.Fill (); + + if (!buffer.SelectionIsEmpty && lineIndex >= buffer.SelectionStart.Y && lineIndex <= buffer.SelectionEnd.Y) { + double rLineX = x, + rLineY = y, + rLineW = lstr.Length * fe.MaxXAdvance; + + if (lineIndex == buffer.SelectionStart.Y) { + rLineX += (selStartCol - ScrollX) * fe.MaxXAdvance; + rLineW -= (selStartCol - ScrollX) * fe.MaxXAdvance; + } + if (lineIndex == buffer.SelectionEnd.Y) + rLineW -= (lstr.Length - selEndCol + ScrollX) * fe.MaxXAdvance; + + gr.Save (); + gr.Operator = Operator.Source; + gr.Rectangle (rLineX, rLineY, rLineW, (fe.Ascent+fe.Descent)); + gr.SetSourceColor (SelectionBackground); + gr.FillPreserve (); + gr.Clip (); + gr.Operator = Operator.Over; + gr.SetSourceColor (SelectionForeground); + gr.MoveTo (x, y + fe.Ascent); + gr.ShowText (lstr); + gr.Fill (); + gr.Restore (); + } + + + } + + updateMaxScrollX(longestTabulatedLine); + } + #endregion + + #region GraphicObject overrides + public override Font Font { + get { return base.Font; } + set { + base.Font = value; + + using (Surface img = new Surface (IFace.dev, 1, 1)) { + using (Context gr = new Context (img)) { + gr.FontFace = Font.Name; + gr.FontSize = (uint)Font.Size; + + fe = gr.FontExtents; + } + } + MaxScrollY = 0; + RegisterForGraphicUpdate (); + } + } + protected override int measureRawSize(LayoutingType lt) + { + if (lt == LayoutingType.Height) + return (int)Math.Ceiling((fe.Ascent+fe.Descent) * buffer.LineCount) + Margin * 2; + + return 0;// (int)(fe.MaxXAdvance * buffer.GetLineLength(buffer.longestLineIdx)) + Margin * 2; + } + public override void OnLayoutChanges (LayoutingType layoutType) + { + base.OnLayoutChanges (layoutType); + + if (layoutType == LayoutingType.Height) + updateVisibleLines (); + else if (layoutType == LayoutingType.Width) + updateVisibleColumns (); + } + + protected override void onDraw (Context gr) + { + base.onDraw (gr); + + gr.FontFace = Font.Name; + gr.FontSize = (uint)Font.Size; + //gr.FontOptions = Interface.FontRenderingOptions; + //gr.Antialias = Interface.Antialias; + + Rectangle cb = ClientRectangle; + + Foreground.SetAsSource (gr); + + buffer.editMutex.EnterReadLock (); + editorMutex.EnterReadLock (); + + #region draw text cursor + if (buffer.SelectionInProgress){ + selStartCol = getTabulatedColumn (buffer.SelectionStart); + selEndCol = getTabulatedColumn (buffer.SelectionEnd); + }else if (HasFocus && CurrentLine >= 0){ + gr.LineWidth = 1.0; + double cursorX = cb.X + (getTabulatedColumn(buffer.CurrentPosition) - ScrollX) * fe.MaxXAdvance ; + double cursorY = cb.Y + (buffer.CurrentLine - ScrollY) * (fe.Ascent+fe.Descent); + gr.MoveTo (0.5 + cursorX, cursorY); + gr.LineTo (0.5 + cursorX, cursorY + fe.Ascent+fe.Descent); + gr.Stroke(); + } + #endregion + + drawLines (gr, cb); + + editorMutex.ExitReadLock (); + + buffer.editMutex.ExitReadLock (); + + } + #endregion + + int getBufferColFromVisualCol (int line, int column) { + int i = 0; + int buffCol = 0; + int buffPtr = buffer [line]; + while (i < column && buffCol < buffer.GetLineLength(line)) { + if (buffer.GetCharAt(buffPtr + buffCol) == '\t') + i += Interface.TabSize; + else + i++; + buffCol++; + } + return buffCol; + } + + + #region Mouse handling + + int hoverLine = -1; + public int HoverLine { + get { return hoverLine; } + set { + if (hoverLine == value) + return; + hoverLine = value; + NotifyValueChanged ("HoverLine", hoverLine); + } + } + void updateHoverLine () { +// int hvl = (int)Math.Max (0, Math.Floor (mouseLocalPos.Y / (fe.Ascent+fe.Descent))); +// hvl = Math.Min (PrintedLines.Count, hvl); +// HoverLine = buffer.IndexOf (PrintedLines[hvl]); + } + void updateCurrentPosFromMouseLocalPos(){ + + buffer.CurrentLine = ScrollY + (int)Math.Max (0, Math.Floor (mouseLocalPos.Y / (fe.Ascent+fe.Descent))); + int curVisualCol = ScrollX + (int)Math.Round ((mouseLocalPos.X) / fe.MaxXAdvance); + buffer.CurrentColumn = getBufferColFromVisualCol (buffer.CurrentLine, curVisualCol); + } + + public override void onMouseEnter (object sender, MouseMoveEventArgs e) + { + base.onMouseEnter (sender, e); + IFace.MouseCursor = MouseCursor.IBeam; + } + public override void onMouseLeave (object sender, MouseMoveEventArgs e) + { + base.onMouseLeave (sender, e); + IFace.MouseCursor = MouseCursor.Arrow; + } + public override void onMouseMove (object sender, MouseMoveEventArgs e) + { + base.onMouseMove (sender, e); + + mouseLocalPos = e.Position - ScreenCoordinates(Slot).TopLeft - ClientRectangle.TopLeft; + + updateHoverLine (); + + if (e.Mouse.LeftButton == ButtonState.Released || !buffer.SelectionInProgress) + return; + + //mouse is down + updateCurrentPosFromMouseLocalPos(); + buffer.SetSelEndPos (); + } + public override void onMouseDown (object sender, MouseButtonEventArgs e) + { + if (!Focusable) + return; + + base.onMouseDown (sender, e); + + if (doubleClicked) { + doubleClicked = false; + return; + } + + updateCurrentPosFromMouseLocalPos (); + buffer.SetSelStartPos (); + } + public override void onMouseUp (object sender, MouseButtonEventArgs e) + { + base.onMouseUp (sender, e); + + if (buffer.SelectionIsEmpty) + buffer.ResetSelection (); + } + + public override void onMouseDoubleClick (object sender, MouseButtonEventArgs e) + { + //doubleClicked = true; + base.onMouseDoubleClick (sender, e); + + buffer.GotoWordStart (); + buffer.SetSelStartPos (); + buffer.GotoWordEnd (); + buffer.SetSelEndPos (); + } + + public override void onMouseWheel (object sender, MouseWheelEventArgs e) + { + base.onMouseWheel (sender, e); + } + #endregion + + #region Keyboard handling + public override void onKeyDown (object sender, KeyEventArgs e) + { + //base.onKeyDown (sender, e); + + Key key = e.Key; + + if (IFace.Ctrl) { + switch (key) { + case Key.S: + projFile.Save (); + break; + case Key.W: + editorMutex.EnterWriteLock (); + if (IFace.Shift) + projFile.Redo (null); + else + projFile.Undo (null); + editorMutex.ExitWriteLock (); + break; + default: + Console.WriteLine (""); + break; + } + } + + switch (key) + { + case Key.Backspace: + buffer.Delete (); + break; + case Key.Delete: + if (buffer.SelectionIsEmpty) + buffer.MoveRight (); +// else if (e.Shift) +// IFace.Clipboard = buffer.SelectedText; + buffer.Delete (); + break; + case Key.Enter: + case Key.KeypadEnter: + if (!buffer.SelectionIsEmpty) + buffer.Delete (); + buffer.InsertLineBreak (); + break; + case Key.Escape: + buffer.ResetSelection (); + break; + case Key.Home: + if (IFace.Shift) { + if (buffer.SelectionIsEmpty) + buffer.SetSelStartPos (); + if (IFace.Ctrl) + buffer.CurrentLine = 0; + buffer.CurrentColumn = 0; + buffer.SetSelEndPos (); + break; + } + buffer.ResetSelection (); + if (IFace.Ctrl) + buffer.CurrentLine = 0; + buffer.CurrentColumn = 0; + break; + case Key.End: + if (IFace.Shift) { + if (buffer.SelectionIsEmpty) + buffer.SetSelStartPos (); + if (IFace.Ctrl) + buffer.CurrentLine = int.MaxValue; + buffer.CurrentColumn = int.MaxValue; + buffer.SetSelEndPos (); + break; + } + buffer.ResetSelection (); + if (IFace.Ctrl) + buffer.CurrentLine = int.MaxValue; + buffer.CurrentColumn = int.MaxValue; + break; + case Key.Insert: + if (IFace.Shift) + buffer.InsertAt (IFace.Clipboard); + else if (IFace.Ctrl && !buffer.SelectionIsEmpty) + IFace.Clipboard = buffer.SelectedText; + break; + case Key.Left: + if (IFace.Shift) { + if (buffer.SelectionIsEmpty) + buffer.SetSelStartPos (); + if (IFace.Ctrl) + buffer.GotoWordStart (); + else + buffer.MoveLeft (); + buffer.SetSelEndPos (); + break; + } + buffer.ResetSelection (); + if (IFace.Ctrl) + buffer.GotoWordStart (); + else + buffer.MoveLeft(); + break; + case Key.Right: + if (IFace.Shift) { + if (buffer.SelectionIsEmpty) + buffer.SetSelStartPos (); + if (IFace.Ctrl) + buffer.GotoWordEnd (); + else + buffer.MoveRight (); + buffer.SetSelEndPos (); + break; + } + buffer.ResetSelection (); + if (IFace.Ctrl) + buffer.GotoWordEnd (); + else + buffer.MoveRight (); + break; + case Key.Up: + if (IFace.Shift) { + if (buffer.SelectionIsEmpty) + buffer.SetSelStartPos (); + CurrentLine--; + buffer.SetSelEndPos (); + break; + } + buffer.ResetSelection (); + CurrentLine--; + break; + case Key.Down: + if (IFace.Shift) { + if (buffer.SelectionIsEmpty) + buffer.SetSelStartPos (); + CurrentLine++; + buffer.SetSelEndPos (); + break; + } + buffer.ResetSelection (); + CurrentLine++; + break; + case Key.Menu: + break; + case Key.NumLock: + break; + case Key.PageDown: + if (IFace.Shift) { + if (buffer.SelectionIsEmpty) + buffer.SetSelStartPos (); + CurrentLine += visibleLines; + buffer.SetSelEndPos (); + break; + } + buffer.ResetSelection (); + CurrentLine += visibleLines; + break; + case Key.PageUp: + if (IFace.Shift) { + if (buffer.SelectionIsEmpty) + buffer.SetSelStartPos (); + CurrentLine -= visibleLines; + buffer.SetSelEndPos (); + break; + } + buffer.ResetSelection (); + CurrentLine -= visibleLines; + break; + case Key.Tab: + buffer.InsertAt ("\t"); + break; + default: + break; + } + RegisterForGraphicUpdate(); + } + public override void onKeyPress (object sender, KeyPressEventArgs e) + { + base.onKeyPress (sender, e); + + buffer.InsertAt (e.KeyChar.ToString()); + buffer.ResetSelection (); + } + #endregion + } +}
\ No newline at end of file diff --git a/Samples/CrowIDE/src/Editors/CodeBuffer/TextFormatting.cs b/Samples/CrowIDE/src/Editors/CodeBuffer/TextFormatting.cs new file mode 100644 index 00000000..f7b2e518 --- /dev/null +++ b/Samples/CrowIDE/src/Editors/CodeBuffer/TextFormatting.cs @@ -0,0 +1,19 @@ +using System; + +namespace Crow.Coding +{ + public struct TextFormatting { + public Color Foreground; + public Color Background; + public bool Bold; + public bool Italic; + + public TextFormatting(Color fg, Color bg, bool bold = false, bool italic = false){ + Foreground = fg; + Background = bg; + Bold = bold; + Italic = italic; + } + } +} + diff --git a/Samples/CrowIDE/src/Editors/CodeBuffer/Token.cs b/Samples/CrowIDE/src/Editors/CodeBuffer/Token.cs new file mode 100644 index 00000000..8b4df5e5 --- /dev/null +++ b/Samples/CrowIDE/src/Editors/CodeBuffer/Token.cs @@ -0,0 +1,71 @@ +// +// Token.cs +// +// Author: +// Jean-Philippe Bruyère <jp.bruyere@hotmail.com> +// +// Copyright (c) 2017 jp +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see <http://www.gnu.org/licenses/>. +using System; + +namespace Crow.Coding +{ + public struct Token + { + public BufferParser.TokenType Type; + public string Content; + public Point Start; + public Point End; + + public string PrintableContent { + get { return string.IsNullOrEmpty(Content) ? "" : Content.Replace("\t", new String(' ', Interface.TabSize)); } + } + +// public Token (TokenType tokType, string content = ""){ +// Type = tokType; +// Content = content; +// } + + public bool IsNull { get { return IsEmpty && Type == BufferParser.TokenType.Unknown; }} + public bool IsEmpty { get { return string.IsNullOrEmpty(Content); }} + + public static bool operator == (Token t, System.Enum tt){ + return Convert.ToInt32(t.Type) == Convert.ToInt32(tt); + } + public static bool operator != (Token t, System.Enum tt){ + return Convert.ToInt32(t.Type) != Convert.ToInt32(tt); + } + public static bool operator == (System.Enum tt, Token t){ + return Convert.ToInt32(t.Type) == Convert.ToInt32(tt); + } + public static bool operator != (System.Enum tt, Token t){ + return Convert.ToInt32(t.Type) != Convert.ToInt32(tt); + } + + public static Token operator +(Token t, char c){ + t.Content += c; + return t; + } + public static Token operator +(Token t, string s){ + t.Content += s; + return t; + } + public override string ToString () + { + return string.Format ("[Tok{2}->{3}:{0}: {1}]", Type,Content,Start,End); + } + } +} + diff --git a/Samples/CrowIDE/src/Editors/EditPane.cs b/Samples/CrowIDE/src/Editors/EditPane.cs new file mode 100644 index 00000000..a75522f0 --- /dev/null +++ b/Samples/CrowIDE/src/Editors/EditPane.cs @@ -0,0 +1,57 @@ +// +// EditPane.cs +// +// Author: +// Jean-Philippe Bruyère <jp_bruyere@hotmail.com> +// +// Copyright (c) 2013-2017 Jean-Philippe Bruyère +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. +using System; +using Crow; +using System.Linq; + +namespace Crow.Coding +{ + public class EditPane : TemplatedGroup + { + public EditPane () {} + + object selectedItemElement = null; + + public override int SelectedIndex { + get { + return base.SelectedIndex; + } + set { + base.SelectedIndex = value; + } + } + public object SelectedItemElement { + get { return selectedItemElement; } + set { + if (selectedItemElement == value) + return; + selectedItemElement = value; + NotifyValueChanged ("SelectedItemElement", selectedItemElement); + } + } + } +} + diff --git a/Samples/CrowIDE/src/Editors/Editor.cs b/Samples/CrowIDE/src/Editors/Editor.cs new file mode 100644 index 00000000..102debb5 --- /dev/null +++ b/Samples/CrowIDE/src/Editors/Editor.cs @@ -0,0 +1,105 @@ +// +// Editor.cs +// +// Author: +// Jean-Philippe Bruyère <jp_bruyere@hotmail.com> +// +// Copyright (c) 2013-2017 Jean-Philippe Bruyère +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. +using System; +using System.Threading; +using System.Xml.Serialization; + +namespace Crow.Coding +{ + public abstract class Editor : ScrollingObject + { + #region CTOR + protected Editor ():base(){ + Thread t = new Thread (backgroundThreadFunc); + t.IsBackground = true; + t.Start (); + } + #endregion + + protected ReaderWriterLockSlim editorMutex = new ReaderWriterLockSlim(LockRecursionPolicy.SupportsRecursion); + protected ProjectFile projFile = null; + Exception error = null; + + public virtual ProjectFile ProjectNode + { + get { return projFile; } + set + { + if (projFile == value) + return; + + if (projFile != null) + projFile.UnregisterEditor (this); + + projFile = value; + + if (projFile != null) + projFile.RegisterEditor (this); + + NotifyValueChanged ("ProjectNode", projFile); + } + } + [XmlIgnore]public Exception Error { + get { return error; } + set { + if (error == value) + return; + error = value; + NotifyValueChanged ("Error", error); + NotifyValueChanged ("HasError", HasError); + } + } + [XmlIgnore]public bool HasError { + get { return error != null; } + } + + protected abstract void updateEditorFromProjFile (); + protected abstract void updateProjFileFromEditor (); + protected abstract bool EditorIsDirty { get; set; } + protected virtual bool IsReady { get { return true; }} + protected virtual void updateCheckPostProcess () {} + + protected void backgroundThreadFunc () { + while (true) { + if (IsReady) { + if (Monitor.TryEnter (IFace.UpdateMutex)) { + if (!projFile.RegisteredEditors [this]) { + projFile.RegisteredEditors [this] = true; + updateEditorFromProjFile (); + } else if (EditorIsDirty) { + EditorIsDirty = false; + updateProjFileFromEditor (); + } + updateCheckPostProcess (); + Monitor.Exit (IFace.UpdateMutex); + } + } + Thread.Sleep (100); + } + } + } +} + diff --git a/Samples/CrowIDE/src/Editors/ImlSchematicEditor.cs b/Samples/CrowIDE/src/Editors/ImlSchematicEditor.cs new file mode 100644 index 00000000..64541c90 --- /dev/null +++ b/Samples/CrowIDE/src/Editors/ImlSchematicEditor.cs @@ -0,0 +1,132 @@ +// +// ImlVisualEditor.cs +// +// Author: +// Jean-Philippe Bruyère <jp.bruyere@hotmail.com> +// +// Copyright (c) 2016 jp +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see <http://www.gnu.org/licenses/>. +using System; +using Crow; +using System.Threading; +using System.Xml.Serialization; +using System.ComponentModel; +using System.IO; +using System.Collections.Generic; +using Crow.IML; +using System.Text; +using System.Xml; + +namespace Crow.Coding +{ + public class ImlSchematicEditor : TemplatedGroup + { + #region CTOR + public ImlSchematicEditor () + { + } + #endregion + + ProjectFile projNode; + Widget selectedItem; + ImlProjectItem imlProjFile; + Exception imlError = null; + + bool drawGrid, snapToGrid; + int gridSpacing; + + [DefaultValue(true)] + public bool DrawGrid { + get { return drawGrid; } + set { + if (drawGrid == value) + return; + drawGrid = value; + NotifyValueChanged ("DrawGrid", drawGrid); + RegisterForRedraw (); + } + } + [DefaultValue(true)] + public bool SnapToGrid { + get { return snapToGrid; } + set { + if (snapToGrid == value) + return; + snapToGrid = value; + NotifyValueChanged ("SnapToGrid", snapToGrid); + } + } + [DefaultValue(10)] + public int GridSpacing { + get { return gridSpacing; } + set { + if (gridSpacing == value) + return; + gridSpacing = value; + NotifyValueChanged ("GridSpacing", gridSpacing); + RegisterForRedraw (); + } + } + public Widget SelectedItem { + get { return selectedItem; } + set { + if (selectedItem == value) + return; + selectedItem = value; + NotifyValueChanged ("SelectedItem", selectedItem); + RegisterForRedraw (); + } + } +// public override ProjectFile ProjectNode { +// get { +// return projNode; +// } +// set { +// if (projNode == value) +// return; +// projNode = value; +// NotifyValueChanged ("ProjectNode", projNode); +// +// if (projNode is ImlProjectItem) +// imlProjFile = projNode as ImlProjectItem; +// else +// imlProjFile = null; +// } +// } + + +// protected override bool EditorIsDirty { +// get { +// throw new NotImplementedException (); +// } +// set { +// throw new NotImplementedException (); +// } +// } +// protected override void updateProjFileFromEditor () +// { +// +// } +// protected override void updateEditorFromProjFile () { +// +// } +// protected override void updateCheckPostProcess () +// { +// +// } + + + } +} diff --git a/Samples/CrowIDE/src/Editors/ImlVisualEditor.cs b/Samples/CrowIDE/src/Editors/ImlVisualEditor.cs new file mode 100644 index 00000000..75d8206b --- /dev/null +++ b/Samples/CrowIDE/src/Editors/ImlVisualEditor.cs @@ -0,0 +1,908 @@ +// +// ImlVisualEditor.cs +// +// Author: +// Jean-Philippe Bruyère <jp.bruyere@hotmail.com> +// +// Copyright (c) 2016 jp +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see <http://www.gnu.org/licenses/>. +using System; +using Crow; +using System.Threading; +using System.Xml.Serialization; +using System.ComponentModel; +using System.IO; +using System.Collections.Generic; +using Crow.IML; +using System.Text; +using System.Xml; +using System.Diagnostics; +using vkvg; + +namespace Crow.Coding +{ + public class ImlVisualEditor : Editor + { + #region CTOR + public ImlVisualEditor () : base() + { + //imlVE = new DesignInterface (Interface.de); + initCommands (); + } + #endregion + + protected override void onInitialized (object sender, EventArgs e) + { + initIcons (); + base.onInitialized (sender, e); + } + DesignInterface imlVE; + Widget selectedItem; + ImlProjectItem imlProjFile; + + bool editorIsDirty = false;//needed when tree is empty + bool drawGrid, snapToGrid; + int gridSpacing, zoom = 100; + Measure designWidth, designHeight; + bool updateEnabled; + + Picture icoMove, icoStyle; + Rectangle rIcons = default(Rectangle); + Size iconSize = new Size(11,11); + + public List<Crow.Command> Commands; + Crow.Command cmdDelete; + + void initCommands () { + cmdDelete = new Crow.Command (new Action (() => deleteObject (SelectedItem))) + { Caption = "Delete", Icon = new SvgPicture ("#CrowIDE.icons.save.svg"), CanExecute = true }; + Commands = new List<Crow.Command> (new Crow.Command[] { cmdDelete }); + } + + void initIcons () { + icoMove = new SvgPicture ("#CrowIDE.icons.move-arrows.svg"); + + // icoStyle = new SvgPicture (); + // icoStyle.Load (IFace, "#CrowIDE.icons.palette.svg"); + } + + [DefaultValue(true)] + public bool DrawGrid { + get { return drawGrid; } + set { + if (drawGrid == value) + return; + drawGrid = value; + NotifyValueChanged ("DrawGrid", drawGrid); + RegisterForRedraw (); + } + } + [DefaultValue(true)] + public bool SnapToGrid { + get { return snapToGrid; } + set { + if (snapToGrid == value) + return; + snapToGrid = value; + NotifyValueChanged ("SnapToGrid", snapToGrid); + } + } + [DefaultValue(10)] + public int GridSpacing { + get { return gridSpacing; } + set { + if (gridSpacing == value) + return; + gridSpacing = value; + NotifyValueChanged ("GridSpacing", gridSpacing); + RegisterForRedraw (); + } + } + [DefaultValue(100)] + public int Zoom { + get { return zoom; } + set { + if (zoom == value) + return; + + zoom = value; + NotifyValueChanged ("Zoom", zoom); + Width = (int)(designWidth * zoom / 100.0); + Height = (int)(designHeight * zoom / 100.0); + } + } + [DefaultValue("512")] + public Measure DesignWidth { + get { return designWidth; } + set { + if (designWidth == value) + return; + designWidth = value; + NotifyValueChanged ("DesignWidth", designWidth); + Width = (int)(designWidth * zoom / 100.0); + } + } + [DefaultValue("400")] + public Measure DesignHeight { + get { return designHeight; } + set { + if (designHeight == value) + return; + designHeight = value; + NotifyValueChanged ("DesignHeight", designHeight); + Height = (int)(designHeight * zoom / 100.0); + } + } + + public Widget SelectedItem { + get { return selectedItem; } + set { + if (selectedItem == value) + return; + selectedItem = value; + + if (selectedItem == null) + cmdDelete.CanExecute = false; + else + cmdDelete.CanExecute = true; + + NotifyValueChanged ("SelectedItem", selectedItem); + RegisterForGraphicUpdate (); + } + } + /// <summary>PoinprojFilever the widget</summary> + public virtual Widget HoverWidget + { + get { return imlVE.HoverWidget; } + set { + if (HoverWidget == value) + return; + + imlVE.HoverWidget = value; + + NotifyValueChanged ("HoverWidget", HoverWidget); + } + } + /// <summary> + /// use to disable update if tab is not the visible one + /// </summary> + public bool UpdateEnabled { + get { return updateEnabled; } + set { + if (value == updateEnabled) + return; + updateEnabled = value; + NotifyValueChanged ("UpdateEnabled", updateEnabled); + } + } + + public List<Widget> GraphicTree { + get { return imlVE.GraphicTree; } + } + + [XmlIgnore]public List<LQIList> LQIs { + get { return imlVE.LQIs; } + } + + #region editor overrides + public override ProjectFile ProjectNode { + get { + return base.ProjectNode; + } + set { + base.ProjectNode = value; + imlProjFile = projFile as ImlProjectItem; + imlVE.ProjFile = imlProjFile; + } + } + + protected override bool EditorIsDirty { + get { return imlProjFile == null ? false : + imlProjFile.Instance == null ? editorIsDirty : + imlProjFile.Instance.design_HasChanged | editorIsDirty; } + set { + editorIsDirty = value; + if (GraphicTree.Count == 0) + return; + if (GraphicTree [0] != null) + GraphicTree [0].design_HasChanged = value; + } + } + protected override bool IsReady { + get { return updateEnabled && imlVE != null && imlProjFile != null; } + } + + protected override void updateProjFileFromEditor () + { + Debug.WriteLine("\t\tImlEditor updateProjFileFromEditor"); + try { + if (imlProjFile.Instance == null) + projFile.UpdateSource(this, @"<?xml version=""1.0""?>"); + else + projFile.UpdateSource(this, imlProjFile.Instance.GetIML()); + } catch (Exception ex) { + Error = ex.InnerException; + if (Monitor.IsEntered(imlVE.UpdateMutex)) + Monitor.Exit (imlVE.UpdateMutex); + } + } + protected override void updateEditorFromProjFile () { + Debug.WriteLine("\t\tImlEditor updateEditorFromProjFile"); + try { + string selItemDesignID = null; + if (SelectedItem!=null) + selItemDesignID = SelectedItem.design_id; + imlVE.ClearInterface(); + Instantiator.NextInstantiatorID = 0; + imlVE.Styling = projFile.Project.solution.Styling; + imlVE.DefaultValuesLoader.Clear(); + //imlVE.DefaultTemplates = projFile.Project.solution.DefaultTemplates; + imlVE.Instantiators = new Dictionary<string, Instantiator>(); + + //prevent error on empty file + bool emptyFile = true; + string src = projFile.Source; + using (Stream s = new MemoryStream (Encoding.UTF8.GetBytes (src))) { + using (XmlReader itr = XmlReader.Create (s)) { + while(itr.Read()){ + if (itr.NodeType == XmlNodeType.Element){ + emptyFile = false; + break; + } + } + } + } + Widget go = null; + Error = null; + + if (emptyFile){ + imlProjFile.Instance = null; + }else{ + imlVE.LoadIMLFragment(src); + imlProjFile.Instance = imlVE.GraphicTree[0]; + if (selItemDesignID!=null) + imlProjFile.Instance.FindByDesignID(selItemDesignID,out go); + + } + SelectedItem = go; + } catch (Exception ex) { + Error = ex; + } + } + protected override void updateCheckPostProcess () + { + if (Error != null) { + RegisterForRedraw (); + return; + } + imlVE.Update (); + bool isDirty = false; + + lock (imlVE.RenderMutex) + isDirty = imlVE.IsDirty; + + if (isDirty) { + lock (IFace.UpdateMutex) + RegisterForRedraw (); + } + } + #endregion + + #region GraphicObject overrides + public override void OnLayoutChanges (LayoutingType layoutType) + { + base.OnLayoutChanges (layoutType); + switch (layoutType) { + case LayoutingType.Width: + DesignWidth = Slot.Width * 100 / zoom; + imlVE.ProcessResize (new Size(designWidth,designHeight)); + break; + case LayoutingType.Height: + DesignHeight = Slot.Height * 100 / zoom; + imlVE.ProcessResize (new Size(designWidth,designHeight)); + break; + } + } + + public override void onMouseMove (object sender, MouseMoveEventArgs e) + { + base.onMouseMove (sender, e); + + Widget oldHW = HoverWidget; + Rectangle scr = this.ScreenCoordinates (this.getSlot ()); + ProcessMouseMove (e.X - scr.X, e.Y - scr.Y); + + Widget newHW = HoverWidget; + if (newHW == null) + return; + + if (draggedObj != null) { + if (draggedObj.Parent == null) { + if (tryAddObjectTo (newHW, draggedObj)) { + RegisterForRedraw (); + return; + } + } else if (newHW != draggedObj) { + //lock (imlVE.UpdateMutex) { + ILayoutable possibleParent = getPossibleParent (newHW, draggedObj); + if (possibleParent == null) { + Group g = newHW.Parent as Group; + if (g != null && g != draggedObj) { + removeObject (draggedObj); + g.InsertChild (g.Children.IndexOf (newHW), draggedObj); + RegisterForRedraw (); + return; + } + } else if (possibleParent != draggedObj.Parent) { + removeObject (draggedObj); + if (tryAddObjectTo (possibleParent, draggedObj)) { + RegisterForRedraw (); + return; + } + } + //} + } + } + + if (oldHW == newHW) + return; + //RegisterForRedraw (); + + } + public override void onMouseEnter (object sender, MouseMoveEventArgs e) + { + base.onMouseEnter (sender, e); + if (IFace.DragAndDropOperation != null && draggedObj == null) + return; + IFace.FocusedWidget = this; + } + public override void onMouseLeave (object sender, MouseMoveEventArgs e) + { + base.onMouseLeave (sender, e); +// IFace.FocusedWidget = null; + } + public override void onMouseDown (object sender, MouseButtonEventArgs e) + { + if (e.Mouse.RightButton == ButtonState.Pressed) { + base.onMouseDown (sender, e); + return; + } + SelectedItem = HoverWidget; + +// if (SelectedItem != null && projFile != null) { +// projFile.CurrentLine = SelectedItem.design_line; +// projFile.CurrentColumn = SelectedItem.design_column; +// } + + } + + protected override void onDraw (Context gr) + { + base.onDraw (gr); + + Rectangle cb = new Rectangle (0, 0, designWidth, designHeight); + + gr.Save (); + + double z = zoom / 100.0; + + gr.Scale (z, z); + + if (drawGrid) { + double gridLineWidth = 0.2 / z; + double glhw = gridLineWidth / 2.0; + int nbLines = cb.Width / gridSpacing; + double d = cb.Left + gridSpacing; + for (int i = 0; i < nbLines; i++) { + gr.MoveTo (d - glhw, cb.Y); + gr.LineTo (d - glhw, cb.Bottom); + d += gridSpacing; + } + nbLines = cb.Height / gridSpacing; + d = cb.Top + gridSpacing; + for (int i = 0; i < nbLines; i++) { + gr.MoveTo (cb.X, d - glhw); + gr.LineTo (cb.Right, d - glhw); + d += gridSpacing; + } + gr.LineWidth = gridLineWidth; + Foreground.SetAsSource (gr, cb); + gr.Stroke (); + } + + lock (imlVE.RenderMutex) { + gr.SetSourceSurface (imlVE.surf, cb.Left, cb.Top); + gr.Paint (); + imlVE.IsDirty = false; + } + /*if (Error == null) { + gr.SetSourceColor (Color.Black); + gr.Rectangle (cb, 1.0 / z); + } else { + gr.SetSourceColor (Color.LavenderBlush); + gr.Rectangle (cb, 2.0 / z); + string[] lerrs = Error.ToString ().Split ('\n'); + Point p = cb.Center; + p.Y -= lerrs.Length * 20; + foreach (string le in lerrs) { + drawCenteredTextLine(gr, p, le); + p.Y += 20; + + } + } + gr.Stroke ();*/ + + Rectangle hr; + + /* + if (SelectedItem?.Parent != null) { + + gr.SelectFontFace (Font.Name, Font.Slant, Font.Wheight); + gr.SetFontSize (Font.Size); + gr.FontOptions = Interface.FontRenderingOptions; + gr.Antialias = Interface.Antialias; + + Widget g = SelectedItem; + hr = g.ScreenCoordinates (g.getSlot ()); + +// Rectangle rIcons = new Rectangle (iconSize); +// rIcons.Width *= 4; +// rIcons.Top = hr.Bottom; +// rIcons.Left = hr.Right - rIcons.Width + iconSize.Width; + Rectangle rIcoMove = new Rectangle (hr.BottomRight, iconSize); +// Rectangle rIcoStyle = rIcoMove; +// rIcoStyle.Left += iconSize.Width + 4; + + using (Surface mask = new ImageSurface (Format.Argb32, cb.Width, cb.Height)) { + using (Context ctx = new Context (mask)) { + ctx.Save(); + ctx.SetSourceRGBA(1.0,1.0,1.0,0.4); + ctx.Paint (); + ctx.Rectangle (hr); + ctx.Operator = Operator.Clear; + ctx.Fill (); + } + + gr.SetSourceSurface (mask, 0, 0); + gr.Paint (); + + using (Surface ol = new ImageSurface (Format.Argb32, cb.Width, cb.Height)) { + using (Context ctx = new Context (ol)) { + ctx.SetSourceColor (Color.Black); + drawDesignOverlay (ctx, g, cb, hr, 0.4 / z, 6.5); + } + + gr.SetSourceSurface (ol, 0, 0); + gr.Paint (); + } + + drawIcon (gr, icoMove, rIcoMove); + //drawIcon (gr, icoStyle, rIcoStyle); + + } + }*/ + if (HoverWidget != null) { + hr = HoverWidget.ScreenCoordinates (HoverWidget.getSlot ()); + gr.SetSourceColor (Color.SkyBlue); + //gr.SetDash (new double[]{ 5.0, 3.0 }, 0.0); + gr.Rectangle (hr, 0.4 / z); + } + gr.Restore (); + } + + void drawIcon (Context gr, Picture pic, Rectangle r) {/* +// gr.SetSourceColor (Color.Black); +// CairoHelpers.CairoRectangle (gr, r.Inflated (1), 2, 1.0); + gr.SetSourceColor (Color.White); + CairoHelpers.CairoRectangle (gr, r.Inflated (1), 2); + gr.Fill (); + gr.Operator = Operator.Clear; + pic.Paint (gr, r); + gr.Operator = Operator.Over;*/ + } + void drawDesignOverlay (Context gr, Widget g, Rectangle cb, Rectangle hr, double coteStroke, double space = 6.5){ + /* + double z = zoom / 100.0; + double coteW = 3, coteL = 5; + bool fill = true; + Crow.Cairo.PointD p1 = new Crow.Cairo.PointD (hr.X + 0.5, hr.Y - space); + Crow.Cairo.PointD p2 = new Crow.Cairo.PointD (hr.Right - 0.5, hr.Y - space); + + if (p1.Y < cb.Top) { + if (hr.Bottom > cb.Bottom - space) + p1.Y = p2.Y = hr.Bottom - space; + else + p1.Y = p2.Y = hr.Bottom + space; + } + + if (g.Width.IsFit) + gr.DrawCoteInverse (p1, p2, coteStroke, fill, coteW, coteL); + else if (g.Width.IsRelativeToParent) { + gr.DrawCote (p1, p2, coteStroke, fill, coteW, coteL); + if (g.Width.Value < 100) + drawCenteredTextLine (gr, p1.Add(p2.Substract(p1).Divide (2)), g.Width.ToString()); + }else if (g.Width.IsFixed) { + gr.DrawCoteFixed (p1, p2, coteStroke * 2.0, coteW); + drawCenteredTextLine (gr, p1.Add(p2.Substract(p1).Divide (2)), g.Width.Value.ToString()); + } + + p1 = new Crow.Cairo.PointD (hr.X - space, hr.Top + 0.5); + p2 = new Crow.Cairo.PointD (hr.X - space, hr.Bottom - 0.5); + + if (p1.X < cb.Left) { + if (hr.Right > cb.Right - space) + p1.X = p2.X = hr.Right - space; + else + p1.X = p2.X = hr.Right + space; + } + if (g.Height.IsFit) + gr.DrawCoteInverse (p1, p2, coteStroke, fill, coteW, coteL); + else if (g.Height.IsRelativeToParent){ + gr.DrawCote (p1, p2, coteStroke, fill, coteW, coteL); + if (g.Height.Value < 100) + drawCenteredTextLine (gr, p1.Add(p2.Substract(p1).Divide (2)), g.Height.ToString()); + }else if (g.Width.IsFixed) { + gr.DrawCoteFixed (p1, p2, coteStroke * 2.0, coteW); + drawCenteredTextLine (gr, p1.Add(p2.Substract(p1).Divide (2)), g.Height.Value.ToString()); + } + + // hr.Inflate (2); + //gr.SetDash (new double[]{ 1.0, 4.0 }, 0.0); + //gr.SetSourceColor (Color.Grey); +// gr.Rectangle (hr,coteStroke); +// gr.Stroke (); + gr.Operator = Operator.Over; + */ + } + + void drawCenteredTextLine (Context gr, Point center, string txt){ + drawCenteredTextLine (gr, new PointD(center.X,center.Y), txt); + } + void drawCenteredTextLine (Context gr, PointD center, string txt){ + if (string.IsNullOrEmpty(txt)) + return; + FontExtents fe = gr.FontExtents; + TextExtents te = gr.TextExtents (txt); + + Rectangle rText = new Rectangle( + (int)(center.X - te.Width / 2), (int)(center.Y - (fe.Ascent + fe.Descent) / 2), + (int)te.Width, (int)(fe.Ascent + fe.Descent)); + + gr.Operator = Operator.Clear; + Rectangle r = rText; + r.Inflate (2); + gr.Rectangle (r); + gr.Fill (); + gr.Operator = Operator.Over; + + gr.MoveTo (rText.X, rText.Y + fe.Ascent); + gr.ShowText (txt); + gr.Fill (); + + } + protected override void onDragEnter (object sender, DragDropEventArgs e) + { + base.onDragEnter (sender, e); + GraphicObjectDesignContainer godc = e.DragSource.DataSource as GraphicObjectDesignContainer; + if (godc == null) + return; + createDraggedObj (godc.CrowType); + } + protected override void onDragLeave (object sender, DragDropEventArgs e) + { + base.onDragLeave (sender, e); + GraphicObjectDesignContainer godc = e.DragSource.DataSource as GraphicObjectDesignContainer; + if (godc == null) + return; + ClearDraggedObj (); + } + + protected override void onStartDrag (object sender, DragDropEventArgs e) + { + base.onStartDrag (sender, e); + if (SelectedItem == null) + return; + + Widget dumy = new Widget (IFace); + dumy.EndDrag += dumyOnEndDrag; + dumy.Drop += dumyOnDrop; + dumy.IsDragged = true; + IFace.ActiveWidget = dumy; + e.DragSource.IsDragged = false; + IFace.DragAndDropOperation.DragSource = dumy; + draggedObj = SelectedItem; + int dragIconSize = 48; + lock (IFace.UpdateMutex) { + IFace.DragImageHeight = dragIconSize; + IFace.DragImageWidth = dragIconSize; + IFace.DragImage = draggedObj.CreateIcon(dragIconSize); + } + removeObject (draggedObj); + SelectedItem = null; + HoverWidget = null; + } + void dumyOnEndDrag (object sender, DragDropEventArgs e) + { + IFace.ClearDragImage (); + } + void dumyOnDrop (object sender, DragDropEventArgs e) + { + ClearDraggedObj (false); + IFace.ClearDragImage (); + } + #endregion + + + #region draggedObj handling + + public Widget draggedObj = null; + + void createDraggedObj (Type crowType) { + lock (imlVE.UpdateMutex) { + draggedObj = imlVE.CreateITorFromIMLFragment ("<" + crowType.Name + "/>").CreateInstance (); + } + } + + public void ClearDraggedObj (bool removeFromTree = true) { + if (removeFromTree) + deleteObject (draggedObj); + draggedObj = null; + } + #endregion + + void removeObject (Widget go) { + if (go == null) + return; + if (go.Parent == null) + return; +// lock (imlVE.UpdateMutex) { + Interface i = go.Parent as Interface; + if (i != null) { + i.RemoveWidget (go); + imlProjFile.Instance = null; + } else { + Container c = go.Parent as Container; + if (c != null) + c.SetChild (null); + else { + TemplatedContainer tc = go.Parent as TemplatedContainer; + if (tc != null) + tc.Content = null; + else { + Group g = go.Parent as Group; + if (g != null) + g.RemoveChild (go); + } + } + } + EditorIsDirty = true; + //} + } + void deleteObject (Widget go) { + if (go == null) + return; + //lock (imlVE.UpdateMutex) { + removeObject (go); + go.Dispose (); + //} + } + + ILayoutable getPossibleParent (ILayoutable parent, Widget go) { + if (go == null) + return null; +// lock (imlVE.UpdateMutex) { + + Interface i = null; + if (parent == null) + i = imlVE; + else + i = parent as Interface; + if (i != null) + return i.GraphicTree.Count > 0 ? null : i; + + Container c = parent as Container; + if (c != null) + return c.Child == null || c.Child == go ? c : null; + + TemplatedContainer tc = parent as TemplatedContainer; + if (tc != null) + return tc.Content == null || tc.Content == go? tc : null; + + return parent as Group; +// } + } + bool tryAddObjectTo (ILayoutable parent, Widget go) { + if (go == null) + return false; +// lock (imlVE.UpdateMutex) { + Interface i = null; + if (parent == null) + i = imlVE; + else + i = parent as Interface; + if (i != null) { + if (i.GraphicTree.Count > 0) + return false; + i.AddWidget (go); + imlProjFile.Instance = go; + EditorIsDirty = true; + return true; + } + Container c = parent as Container; + if (c != null) { + if (c.Child != null) + return false; + //return tryAddObjectTo (c.Parent, go); + c.SetChild (go); + EditorIsDirty = true; + return true; + } + TemplatedContainer tc = parent as TemplatedContainer; + if (tc != null) { + if (tc.Content != null) + return false; + //return tryAddObjectTo (c.Parent, go); + tc.Content = (go); + EditorIsDirty = true; + return true; + } + Group g = parent as Group; + if (g != null) { + g.AddChild (go); + EditorIsDirty = true; + return true; + } + return false;//tryAddObjectTo (parent.Parent, go); +// } + } + + + + void WidgetCheckOver (Widget go, MouseMoveEventArgs e){ + Type tGo = go.GetType(); + if (typeof(TemplatedGroup).IsAssignableFrom (tGo)) { + + } else if (typeof(TemplatedContainer).IsAssignableFrom (tGo)) { + TemplatedContainer c = go as TemplatedContainer; + if (c.Content?.MouseIsIn (e.Position) == true) { + WidgetCheckOver (c.Content, e); + return; + } + } else if (typeof(TemplatedControl).IsAssignableFrom (tGo)) { + } else if (typeof(Group).IsAssignableFrom (tGo)) { + Group c = go as Group; + for (int i = c.Children.Count -1; i >= 0; i--) { + if (c.Children[i].MouseIsIn (e.Position)) { + WidgetCheckOver (c.Children[i], e); + return; + } + } + } else if (typeof(Crow.Container).IsAssignableFrom (tGo)) { + Crow.Container c = go as Crow.Container; + if (c.Child?.MouseIsIn (e.Position)==true) { + WidgetCheckOver (c.Child, e); + return; + } + } + HoverWidget = go; + WidgetMouseEnter (go, e); + } + void WidgetMouseLeave (Widget go, MouseMoveEventArgs e){ + + } + void WidgetMouseEnter (Widget go, MouseMoveEventArgs e){ + + } + void WidgetMouseMove (Widget go, MouseMoveEventArgs e){} + + public bool ProcessMouseMove(int x, int y) + { + int deltaX = x - imlVE.Mouse.X; + int deltaY = y - imlVE.Mouse.Y; + imlVE.Mouse.X = x; + imlVE.Mouse.Y = y; + MouseMoveEventArgs e = new MouseMoveEventArgs (x, y, deltaX, deltaY); + e.Mouse = imlVE.Mouse; + + if (imlVE.ActiveWidget != null) { + //TODO, ensure object is still in the graphic tree + //send move evt even if mouse move outside bounds + WidgetMouseMove (imlVE.ActiveWidget, e); + return true; + } + + if (HoverWidget != null) { + //TODO, ensure object is still in the graphic tree + //check topmost graphicobject first + Widget tmp = HoverWidget; + Widget topc = null; + while (tmp is Widget) { + topc = tmp; + tmp = tmp.LogicalParent as Widget; + } + int idxhw = imlVE.GraphicTree.IndexOf (topc); + if (idxhw != 0) { + int i = 0; + while (i < idxhw) { + if (imlVE.GraphicTree [i].LogicalParent == imlVE.GraphicTree [i].Parent) { + if (imlVE.GraphicTree [i].MouseIsIn (e.Position)) { + while (imlVE.HoverWidget != null) { + WidgetMouseLeave (imlVE.HoverWidget, e); + imlVE.HoverWidget = imlVE.HoverWidget.LogicalParent as Widget; + } + + WidgetCheckOver (GraphicTree [i], e); + return true; + } + } + i++; + } + } + + + if (imlVE.HoverWidget.MouseIsIn (e.Position)) { + WidgetCheckOver (imlVE.HoverWidget, (e)); + return true; + } else { + WidgetMouseLeave (imlVE.HoverWidget, e); + //seek upward from last focused graph obj's + while (imlVE.HoverWidget.LogicalParent as Widget != null) { + imlVE.HoverWidget = imlVE.HoverWidget.LogicalParent as Widget; + if (imlVE.HoverWidget.MouseIsIn (e.Position)) { + WidgetCheckOver (imlVE.HoverWidget, e); + return true; + } else + WidgetMouseLeave (imlVE.HoverWidget, e); + } + } + } + + //top level graphic obj's parsing + lock (imlVE.GraphicTree) { + for (int i = 0; i < imlVE.GraphicTree.Count; i++) { + Widget g = imlVE.GraphicTree [i]; + if (g.MouseIsIn (e.Position)) { + WidgetCheckOver (g, e); + return true; + } + } + } + imlVE.HoverWidget = null; + return false; + + } + + void GTView_SelectedItemChanged (object sender, SelectionChangeEventArgs e) + { + SelectedItem = e.NewValue as Widget; + } + + + public override void onKeyDown (object sender, KeyEventArgs e) + { + + switch (e.Key) { + case Key.Delete: + if (selectedItem == null) + return; + deleteObject (selectedItem); + break; + case Key.Escape: + SelectedItem = null; + break; + } + } + } +} diff --git a/Samples/CrowIDE/src/Editors/Parsers/BufferParser.cs b/Samples/CrowIDE/src/Editors/Parsers/BufferParser.cs new file mode 100644 index 00000000..c193c7db --- /dev/null +++ b/Samples/CrowIDE/src/Editors/Parsers/BufferParser.cs @@ -0,0 +1,380 @@ +using System; +using System.IO; +using Crow; +using System.Collections.Generic; +using System.Diagnostics; +using System.Text; + +namespace Crow.Coding +{ + /// <summary> + /// base class for tokenizing sources + /// </summary> + public abstract class BufferParser + { + /// <summary> + /// Default tokens, this enum may be overriden in derived parser with the new keyword, + /// see XMLParser for example. + /// </summary> + public enum TokenType { + Unknown = 0, + WhiteSpace = 1, + NewLine = 2, + LineComment = 3, + BlockCommentStart = 4, + BlockComment = 5, + BlockCommentEnd = 6, + Preprocessor = 7, + Identifier = 8, + Keyword = 9, + OpenBlock = 10, + CloseBlock = 11, + StatementEnding = 12, + OperatorOrPunctuation = 13, + IntegerLitteral = 14, + RealLitteral = 15, + StringLitteralOpening = 16, + StringLitteralClosing = 17, + StringLitteral = 18, + CharLitteralOpening = 19, + CharLitteralClosing = 20, + CharLitteral = 21, + BoolLitteral = 22, + NullLitteral = 23, + Type = 24, + } + + #region CTOR + public BufferParser (CodeBuffer _buffer) + { + buffer = _buffer; + + buffer.LineUpadateEvent += Buffer_LineUpadateEvent; + //buffer.LineAdditionEvent += Buffer_LineAdditionEvent;; + buffer.LineRemoveEvent += Buffer_LineRemoveEvent; + buffer.BufferCleared += Buffer_BufferCleared; + } + + #endregion + + #region Buffer events handlers + void Buffer_BufferCleared (object sender, EventArgs e) + { + + } + void Buffer_LineAdditionEvent (object sender, CodeBufferEventArgs e) + { + + } + void Buffer_LineRemoveEvent (object sender, CodeBufferEventArgs e) + { + reparseSource (); + } + void Buffer_LineUpadateEvent (object sender, CodeBufferEventArgs e) + { + for (int i = 0; i < e.LineCount; i++) + TryParseBufferLine (e.LineStart + i); + reparseSource (); + } + #endregion + + internal int currentLine = 0; + internal int currentColumn = 0; + + int syntTreeDepth = 0; + public int SyntacticTreeDepth { + get { return syntTreeDepth;} + set { + syntTreeDepth = value; + if (syntTreeDepth > SyntacticTreeMaxDepth) + SyntacticTreeMaxDepth = syntTreeDepth; + } + } + public int SyntacticTreeMaxDepth = 0; + + protected CodeBuffer buffer; + protected Token currentTok; + protected bool eol = true; + protected Point CurrentPosition { + get { return new Point (currentLine, currentColumn); } + set { + currentLine = value.Y; + currentColumn = value.X; + } + } + + public Node RootNode; + + public abstract void ParseCurrentLine(); + public abstract void SyntaxAnalysis (); + public void reparseSource () { + for (int i = 0; i < buffer.LineCount; i++) { + if (!buffer[i].IsParsed) + TryParseBufferLine (i); + } + try { + SyntaxAnalysis (); + } catch (Exception ex) { + Debug.WriteLine ("Syntax Error: " + ex.ToString ()); + if (ex is ParserException) + SetLineInError (ex as ParserException); + } + } + public void TryParseBufferLine(int lPtr) { + buffer [lPtr].exception = null; + currentLine = lPtr; + currentColumn = 0; + eol = false; + + try { + ParseCurrentLine (); + } catch (Exception ex) { + Debug.WriteLine (ex.ToString ()); + if (ex is ParserException) + SetLineInError (ex as ParserException); + } + + } + + public virtual void SetLineInError(ParserException ex) { + currentTok = default(Token); + if (ex.Line >= buffer.LineCount) + ex.Line = buffer.LineCount - 1; + if (buffer [ex.Line].IsFolded) + buffer.ToogleFolding (ex.Line); + buffer [ex.Line].SetLineInError (ex); + } + public virtual string LineBrkRegex { + get { return @"\r\n|\r|\n|\\\\n"; } + } + void updateFolding () { + // Stack<TokenList> foldings = new Stack<TokenList>(); + // bool inStartTag = false; + // + // for (int i = 0; i < parser.Tokens.Count; i++) { + // TokenList tl = parser.Tokens [i]; + // tl.foldingTo = null; + // int fstTK = tl.FirstNonBlankTokenIndex; + // if (fstTK > 0 && fstTK < tl.Count - 1) { + // if (tl [fstTK + 1] != XMLParser.TokenType.ElementName) + // continue; + // if (tl [fstTK] == XMLParser.TokenType.ElementStart) { + // //search closing tag + // int tkPtr = fstTK+2; + // while (tkPtr < tl.Count) { + // if (tl [tkPtr] == XMLParser.TokenType.ElementClosing) + // + // tkPtr++; + // } + // if (tl.EndingState == (int)XMLParser.States.Content) + // foldings.Push (tl); + // else if (tl.EndingState == (int)XMLParser.States.StartTag) + // inStartTag = true; + // continue; + // } + // if (tl [fstTK] == XMLParser.TokenType.ElementEnd) { + // TokenList tls = foldings.Pop (); + // int fstTKs = tls.FirstNonBlankTokenIndex; + // if (tls [fstTK + 1].Content == tl [fstTK + 1].Content) { + // tl.foldingTo = tls; + // continue; + // } + // parser.CurrentPosition = tls [fstTK + 1].Start; + // parser.SetLineInError(new ParserException(parser, "closing tag not corresponding")); + // } + // + // } + // } + } + + #region low level parsing + protected void addCharToCurTok(char c, Point position){ + currentTok.Start = position; + currentTok += c; + } + /// <summary> + /// Read one char from current position in buffer and store it into the current token + /// </summary> + /// <param name="startOfTok">if true, set the Start position of the current token to the current position</param> + protected void readToCurrTok(bool startOfTok = false){ + if (startOfTok) + currentTok.Start = CurrentPosition; + currentTok += Read(); + } + /// <summary> + /// read n char from the buffer and store it into the current token + /// </summary> + protected void readToCurrTok(int length) { + for (int i = 0; i < length; i++) + currentTok += Read (); + } + /// <summary> + /// Save current token into current TokensLine and raz current token + /// </summary> + protected void saveAndResetCurrentTok() { + currentTok.End = CurrentPosition; + buffer[currentLine].Tokens.Add (currentTok); + currentTok = default(Token); + } + /// <summary> + /// read one char and add current token to current TokensLine, current token is reset + /// </summary> + /// <param name="type">Type of the token</param> + /// <param name="startToc">set start of token to current position</param> + protected void readAndResetCurrentTok(System.Enum type, bool startToc = false) { + readToCurrTok (); + saveAndResetCurrentTok (type); + } + /// <summary> + /// Save current tok + /// </summary> + /// <param name="type">set the type of the tok</param> + protected void saveAndResetCurrentTok(System.Enum type) { + currentTok.Type = (TokenType)type; + saveAndResetCurrentTok (); + } + protected void setPreviousTokOfTypeTo (TokenType inType, TokenType newType) { + for (int i = currentLine; i >= 0; i--) { + int j = buffer [i].Tokens.Count - 1; + while (j >= 0) { + if (buffer [i].Tokens [j].Type == inType) { + Token t = buffer [i].Tokens [j]; + t.Type = newType; + buffer [i].Tokens [j] = t; + return; + } + j--; + } + } + } + /// <summary> + /// Peek next char, emit '\n' if current column > buffer's line length + /// Throw error if eof is true + /// </summary> + protected virtual char Peek() { + if (eol) + throw new ParserException (currentLine, currentColumn, "Unexpected End of line"); + return currentColumn < buffer [currentLine].Length ? + buffer [currentLine] [currentColumn] : '\n'; + } + /// <summary> + /// Peek n char from buffer or less if remaining char in buffer's line is less than requested + /// if end of line is reached, no '\n' will be emitted, instead, empty string is returned. '\n' should be checked only + /// with single char Peek(). + /// Throw error is eof is true + /// </summary> + /// <param name="length">Length.</param> + protected virtual string Peek(int length) { + if (eol) + return "";//throw new ParserException (currentLine, currentColumn, "Unexpected End of Line"); + int lg = Math.Min(length, Math.Max (buffer [currentLine].Length - currentColumn, buffer [currentLine].Length - currentColumn - length)); + if (lg == 0) + return ""; + return buffer [currentLine].Content.Substring (currentColumn, lg); + } + /// <summary> + /// read one char from buffer at current position, if '\n' is read, current line is incremented + /// and column is reset to 0 + /// </summary> + protected virtual char Read() { + char c = Peek (); + if (c == '\n') + eol = true; + currentColumn++; + return c; + } + protected virtual string Read(int charCount){ + string tmp = ""; + for (int i = 0; i < charCount; i++) { + if (eol) + break; + tmp += Read (); + } + return tmp; + } + /// <summary> + /// read until end of line is reached + /// </summary> + /// <returns>string read</returns> + protected virtual string ReadLine () { + StringBuilder tmp = new StringBuilder(); + char c = Read (); + while (!eol) { + tmp.Append (c); + c = Read (); + } + return tmp.ToString(); + } + /// <summary> + /// read until end expression is reached or end of line. + /// </summary> + /// <returns>string read minus the ending expression that has to be read after</returns> + /// <param name="endExp">Expression to search for</param> + protected virtual string ReadLineUntil (string endExp){ + string tmp = ""; + + while (!eol) { + if (buffer [currentLine].Length - currentColumn - endExp.Length < 0) { + tmp += ReadLine(); + break; + } + if (string.Equals (Peek (endExp.Length), endExp)) + return tmp; + tmp += Read(); + } + return tmp; + } + /// <summary> + /// skip white spaces, but not line break. Save spaces in a WhiteSpace token. + /// </summary> + protected void SkipWhiteSpaces () { + if (currentTok.Type != TokenType.Unknown) + throw new ParserException (currentLine, currentColumn, "current token should be reset to unknown (0) before skiping white spaces"); + while (!eol) { + if (!char.IsWhiteSpace (Peek ())||Peek()=='\n') + break; + readToCurrTok (currentTok.Type == TokenType.Unknown); + currentTok.Type = TokenType.WhiteSpace; + } + if (currentTok.Type != TokenType.Unknown) + saveAndResetCurrentTok (); + } + #endregion + + protected Node addChildNode (Node curNode, CodeLine cl, int tokPtr, string type = "") { + Node n = new Node () { Name = cl.Tokens [tokPtr].Content, StartLine = cl, Type = type }; + curNode.AddChild (n); + if (cl.SyntacticNode == null) + cl.SyntacticNode = n; + SyntacticTreeDepth++; + return n; + } + protected void closeNodeAndGoUp (ref Node n, CodeLine cl, string type = ""){ + while (n != null) { + if (n.Type == type) { + n.EndLine = cl; + n = n.Parent; + SyntacticTreeDepth--; + break; + } + n = n.Parent; + SyntacticTreeDepth--; + } + } + protected void closeNodeAndGoUp (ref Node n, CodeLine cl){ + SyntacticTreeDepth--; + n.EndLine = cl; + n = n.Parent; + } + + protected void initSyntaxAnalysis () { + RootNode = new Node () { Name = "RootNode", Type="Root" }; + SyntacticTreeDepth = SyntacticTreeMaxDepth = 0; + } + + + protected void throwParserException(string msg){ + throw new ParserException (currentLine, currentColumn, msg); + } + } +}
\ No newline at end of file diff --git a/Samples/CrowIDE/src/Editors/Parsers/CSharpParser.cs b/Samples/CrowIDE/src/Editors/Parsers/CSharpParser.cs new file mode 100644 index 00000000..23655aa6 --- /dev/null +++ b/Samples/CrowIDE/src/Editors/Parsers/CSharpParser.cs @@ -0,0 +1,386 @@ +using System; +using Crow; +using System.Collections.Generic; +using System.Diagnostics; +using System.Text.RegularExpressions; +using System.Linq; + +namespace Crow.Coding +{ + public class CSharpParser : BufferParser + { + #region keywords + string[] keywords = new string[] { + "abstract", + "as", + "ascending", + "async", + "await", + "base", + "bool", + "break", + "byte", + "case", + "catch", + "char", + "checked", + "class", + "const", + "continue", + "decimal", + "default", + "delegate", + "descending", + "do", + "double", + "dynamic", + "else", + "enum", + "equals", + "event", + "explicit", + "extern", + "false", + "finally", + "fixed", + "float", + "for", + "foreach", + "from", + "get", + "goto", + "group", + "if", + "implicit", + "in", + "int", + "interface", + "internal", + "is", + "join", + "let", + "lock", + "long", + "nameof", + "namespace", + "new", + "null", + "object", + "operator", + "orderby", + "out", + "override", + "params", + "partial", + "private", + "protected", + "public", + "readonly", + "ref", + "return", + "sbyte", + "sealed", + "select", + "set", + "short", + "sizeof", + "stackalloc", + "static", + "string", + "struct", + "switch", + "this", + "throw", + "true", + "try", + "typeof", + "uint", + "ulong", + "unchecked", + "unsafe", + "ushort", + "using", + "value", + "var", + "virtual", + "void", + "volatile", + "when", + "where", + "while", + "yield " + }; + #endregion + + public enum States + { + init, + BlockComment, + InNameSpace, + InClass, + InMember, + Unknown, + } + + public CSharpParser (CodeBuffer _buffer) : base(_buffer) + { + } + + #region Regular Expression for validity checks + static Regex rxValidChar = new Regex(@"\p{Lu}|\p{Ll}|\p{Lt}|\p{Lm}|\p{Lo}|\p{Nl}|\p{Mn}|\p{Mc}|\p{Nd}|\p{Pc}|\p{Cf}"); + static Regex rxNameStartChar = new Regex(@"_|\p{Lu}|\p{Ll}|\p{Lt}|\p{Lm}|\p{Lo}|\p{Nl}"); + static Regex rxNameChar = new Regex(@"\p{Lu}|\p{Ll}|\p{Lt}|\p{Lm}|\p{Lo}|\p{Nl}|\p{Mn}|\p{Mc}|\p{Nd}|\p{Pc}|\p{Cf}"); + static Regex rxNewLineChar = new Regex(@"\u000D|\u000A|\u0085|\u2028|\u2029"); + static Regex rxWhiteSpaceChar = new Regex(@"\p{Zs}|\u0009|\u000B|\u000C"); + static Regex rxDecimal = new Regex(@"[0-9]+"); + static Regex rxHexadecimal = new Regex(@"[0-9a-fA-F]+"); + + public static bool CharIsValidCharStartName (char c) { + return rxNameStartChar.IsMatch(new string(new char[]{c})); + } + public static bool CharIsValidCharName (char c) { + return rxNameChar.IsMatch(new string(new char[]{c})); + } + + public bool nextCharIsValidCharStartName + { + get { return CharIsValidCharStartName(Peek()); } + } + public bool nextCharIsValidCharName + { + get { return CharIsValidCharName(Peek()); } + } + #endregion + + States curState = States.init; + States savedState = States.init; + + public override void ParseCurrentLine () + { + //Debug.WriteLine (string.Format("parsing line:{0}", currentLine)); + CodeLine cl = buffer [currentLine]; + cl.Tokens = new List<Token> (); + + + //retrieve current parser state from previous line + if (currentLine > 0) + curState = (States)buffer[currentLine - 1].EndingState; + else + curState = States.init; + + States previousEndingState = (States)cl.EndingState; + + while (! eol) { + if (currentTok.IsNull) + SkipWhiteSpaces (); + + if (curState == States.BlockComment) { + currentTok.Start = CurrentPosition; + currentTok.Type = (BufferParser.TokenType)TokenType.BlockComment; + currentTok += ReadLineUntil ("*/"); + if (Peek (2) == "*/") { + readToCurrTok (2); + curState = savedState; + } + saveAndResetCurrentTok (); + continue; + } + + switch (Peek()) { + case '\n': + eol = true; + if (!currentTok.IsNull) + saveAndResetCurrentTok (); + break; + case '#': + readToCurrTok (true); + currentTok += ReadLine (); + saveAndResetCurrentTok (TokenType.Preprocessor); + break; + case '/': + readToCurrTok (true); + switch (Peek ()) { + case '*': + readToCurrTok (); + currentTok += ReadLine (); + //currentTok.Type = (Parser.TokenType)TokenType.BlockComment; + savedState = curState; + curState = States.BlockComment; + saveAndResetCurrentTok (TokenType.BlockComment); + break; + case '/': + //readToCurrTok (); + currentTok += ReadLine (); + saveAndResetCurrentTok (TokenType.LineComment); + //currentTok.Type = (Parser.TokenType)TokenType.LineComment; + break; + default: + currentTok += ReadLine (); + saveAndResetCurrentTok (TokenType.Unknown); + break; + } + break; + case '{': + if (currentTok.IsNull) + readAndResetCurrentTok (TokenType.OpenBlock, true); + else + readToCurrTok (); + break; + case '}': + if (currentTok.IsNull) + readAndResetCurrentTok (TokenType.CloseBlock, true); + else + readToCurrTok (); + break; + case '\\'://unicode escape sequence + if (!(currentTok.Type == TokenType.Identifier || + currentTok.IsEmpty || currentTok.Type == TokenType.StringLitteral || currentTok.Type == TokenType.CharLitteral)) { + saveAndResetCurrentTok (); + } + Point pos = CurrentPosition; + Read (); + char escChar = Read (); + + if (escChar == 'u') { + char c = char.ConvertFromUtf32 (int.Parse (Read (4), System.Globalization.NumberStyles.HexNumber))[0]; + if (currentTok.IsEmpty) { + if (!CharIsValidCharStartName (c)) + throwParserException ("expecting identifier start"); + currentTok.Start = pos; + currentTok.Type = TokenType.Identifier; + } else if (currentTok.Type == TokenType.Identifier) { + if (!CharIsValidCharName (c)) + throwParserException ("expecting identifier valid char"); + } + currentTok += c; + break; + } + currentTok += new String (new char[] { '\\', escChar }); + break; + case '\'': + if (currentTok.IsNull) { + readAndResetCurrentTok (TokenType.CharLitteralOpening, true); + currentTok.Type = TokenType.CharLitteral; + } else if (currentTok.Type == TokenType.CharLitteral) { + saveAndResetCurrentTok (); + readAndResetCurrentTok (TokenType.CharLitteralClosing, true); + } else if (currentTok.Type == TokenType.StringLitteral){ + readToCurrTok (); + } else + throwParserException ("unexpected character: (\')"); + break; + case '"': + if (currentTok.IsNull) { + readAndResetCurrentTok (TokenType.StringLitteralOpening, true); + currentTok.Type = TokenType.StringLitteral; + } else if (currentTok.Type == TokenType.StringLitteral) { + saveAndResetCurrentTok (); + readAndResetCurrentTok (TokenType.StringLitteralClosing, true); + } else + throwParserException ("unexpected character: (\")"); + break; + default: + if (currentTok.Type == TokenType.StringLitteral || currentTok.Type == TokenType.CharLitteral) { + readToCurrTok (currentTok.IsEmpty); + } else if (currentTok.IsNull) { + if (nextCharIsValidCharStartName) { + readToCurrTok (true); + while (nextCharIsValidCharName) + readToCurrTok (); + + if (keywords.Contains (currentTok.Content)) + saveAndResetCurrentTok (TokenType.Keyword); + else + saveAndResetCurrentTok (TokenType.Identifier); + continue; + } else + readAndResetCurrentTok(TokenType.Unknown, true); + } else + readAndResetCurrentTok(TokenType.Unknown, true); + break; + } + } + + if (cl.EndingState != (int)curState && currentLine < buffer.LineCount - 1) + buffer [currentLine + 1].Tokens = null; + + cl.EndingState = (int)curState; + } + + public override void SyntaxAnalysis () + { + initSyntaxAnalysis (); + Node currentNode = RootNode; + + int ptrLine = 0; + while (ptrLine < buffer.LineCount) { + CodeLine cl = buffer [ptrLine]; + if (cl.Tokens == null){ + ptrLine++; + continue; + } + cl.SyntacticNode = null; + + int tokPtr = 0; + bool onlyWhiteSpace = true; + while (tokPtr < cl.Tokens.Count) { + if (cl.Tokens [tokPtr].Type == TokenType.WhiteSpace) { + tokPtr++; + continue; + } + + if (cl.Tokens [tokPtr].Type == TokenType.LineComment && onlyWhiteSpace) { + int startLine = ptrLine; + ptrLine++; + while (ptrLine < buffer.LineCount) { + int idx = buffer [ptrLine].FirstNonBlankTokIndex; + if (idx < 0) + break; + if (buffer [ptrLine].Tokens [idx].Type != TokenType.LineComment) + break; + ptrLine++; + } + ptrLine--; + if (ptrLine - startLine > 0) { + currentNode = addChildNode (currentNode, cl, tokPtr, "comment"); + closeNodeAndGoUp (ref currentNode, buffer [ptrLine], "comment"); + } + break; + } + + switch (cl.Tokens [tokPtr].Type) { + case TokenType.BlockCommentStart: + case TokenType.OpenBlock: + currentNode = addChildNode (currentNode, cl, tokPtr); + break; + case TokenType.CloseBlock: + case TokenType.BlockCommentEnd: + closeNodeAndGoUp (ref currentNode, cl); + break; + case TokenType.Preprocessor: + if (cl.Tokens [tokPtr].Content.StartsWith ("#region", StringComparison.Ordinal)) { + currentNode = addChildNode (currentNode, cl, tokPtr, "region"); + } else if (cl.Tokens [tokPtr].Content.StartsWith ("#endregion", StringComparison.Ordinal)) { + + closeNodeAndGoUp (ref currentNode, cl,"region"); + } + break; + } + onlyWhiteSpace = false; + tokPtr++; + } + ptrLine++; + } + /*ptrLine = 0; + while (ptrLine < buffer.LineCount) { + CodeLine cl = buffer [ptrLine]; + if (cl.IsFoldable) { + if (cl.SyntacticNode.Type == "comment" || cl.SyntacticNode.Type == "region") + cl.IsFolded = true; + } + ptrLine++; + }*/ + } + } +} + diff --git a/Samples/CrowIDE/src/Editors/Parsers/StyleParser.cs b/Samples/CrowIDE/src/Editors/Parsers/StyleParser.cs new file mode 100644 index 00000000..9a1e74cd --- /dev/null +++ b/Samples/CrowIDE/src/Editors/Parsers/StyleParser.cs @@ -0,0 +1,179 @@ +using System; +using Crow; +using System.Collections.Generic; +using System.Diagnostics; +using System.Text.RegularExpressions; +using System.Linq; + +namespace Crow.Coding +{ + public class StyleParser : BufferParser + { + enum States { init, classNames, members, value, endOfStatement } + + public StyleParser (CodeBuffer _buffer) : base(_buffer) + { + } + + #region Character ValidityCheck + static Regex rxValidChar = new Regex(@"\p{Lu}|\p{Ll}|\p{Lt}|\p{Lm}|\p{Lo}|\p{Nl}|\p{Mn}|\p{Mc}|\p{Nd}|\p{Pc}|\p{Cf}"); + static Regex rxNameStartChar = new Regex(@"_|\p{Lu}|\p{Ll}|\p{Lt}|\p{Lm}|\p{Lo}"); + static Regex rxNameChar = new Regex(@"\p{Lu}|\p{Ll}|\p{Lt}|\p{Lm}|\p{Lo}|\p{Nl}|\p{Mn}|\p{Mc}|\p{Nd}|\p{Pc}|\p{Cf}"); + static Regex rxDecimal = new Regex(@"[0-9]+"); + static Regex rxHexadecimal = new Regex(@"[0-9a-fA-F]+"); + + public bool nextCharIsValidCharStartName + { + get { return rxNameStartChar.IsMatch(new string(new char[]{Peek()})); } + } + public bool nextCharIsValidCharName + { + get { return rxNameChar.IsMatch(new string(new char[]{Peek()})); } + } + #endregion + + States curState = States.classNames; + + public override void ParseCurrentLine () + { + //Debug.WriteLine (string.Format("parsing line:{0}", currentLine)); + CodeLine cl = buffer [currentLine]; + cl.Tokens = new List<Token> (); + + //retrieve current parser state from previous line + if (currentLine > 0) + curState = (States)buffer[currentLine - 1].EndingState; + else + curState = States.init; + + States previousEndingState = (States)cl.EndingState; + + while (! eol) { + SkipWhiteSpaces (); + + if (eol) + break; + + if (Peek () == '\n') { + if (currentTok != TokenType.Unknown) + throw new ParserException (currentLine, currentColumn, "Unexpected end of line"); + Read (); + eol = true; + continue; + } + + switch (Peek()) { + case '/': + readToCurrTok (true); + switch (Peek ()) { + case '/': + currentTok += ReadLine (); + saveAndResetCurrentTok (TokenType.LineComment); + break; + default: + currentTok += ReadLine (); + saveAndResetCurrentTok (TokenType.Unknown); + break; + } + break; + case ',': + if (curState != States.init && curState != States.classNames ) + throw new ParserException (currentLine, currentColumn, "Unexpected char ','"); + readAndResetCurrentTok (TokenType.OperatorOrPunctuation, true); + curState = States.classNames; + break; + case '{': + if (!(curState == States.init || curState == States.classNames)) + throw new ParserException (currentLine, currentColumn, "Unexpected char '{'"); + readAndResetCurrentTok (TokenType.OpenBlock, true); + curState = States.members; + break; + case '}': + if (curState != States.members) + throw new ParserException (currentLine, currentColumn, "Unexpected char '}'"); + readAndResetCurrentTok (TokenType.CloseBlock, true); + curState = States.classNames; + break; + case '=': + if (curState == States.classNames) + throw new ParserException (currentLine, currentColumn, "Unexpected char '='"); + setPreviousTokOfTypeTo (TokenType.Type, TokenType.Identifier); + readAndResetCurrentTok (TokenType.OperatorOrPunctuation, true); + curState = States.value; + break; + case '"': + if (curState != States.value) + throw new ParserException (currentLine, currentColumn, "Unexpected char '\"'"); + readAndResetCurrentTok (TokenType.StringLitteralOpening, true); + + while (!eol) { + currentTok += ReadLineUntil ("\""); + if (currentTok.Content [currentTok.Content.Length - 1] == '\\') + readToCurrTok (); + else + break; + } + if (eol) + throw new ParserException (currentLine, currentColumn, "Unexpected end of line"); + saveAndResetCurrentTok (TokenType.StringLitteral); + + readAndResetCurrentTok (TokenType.StringLitteralClosing, true); + curState = States.endOfStatement; + break; + case ';': + if (curState != States.endOfStatement) + throw new ParserException (currentLine, currentColumn, "Unexpected end of statement"); + readAndResetCurrentTok (TokenType.StatementEnding, true); + curState = States.members; + break; + default: + if (currentTok.Type != TokenType.Unknown) + throw new ParserException (currentLine, currentColumn, "error curtok not null"); + if (curState == States.value) + throw new ParserException (currentLine, currentColumn, "expecting value enclosed in '\"'"); + if (curState == States.endOfStatement) + throw new ParserException (currentLine, currentColumn, "expecting end of statement"); + + if (nextCharIsValidCharStartName) { + readToCurrTok (true); + while (nextCharIsValidCharName) + readToCurrTok (); + } + saveAndResetCurrentTok (TokenType.Type); + break; + } + } + + if (cl.EndingState != (int)curState && currentLine < buffer.LineCount - 1) + buffer [currentLine + 1].Tokens = null; + + cl.EndingState = (int)curState; + } + public override void SyntaxAnalysis () + { + initSyntaxAnalysis (); + Node currentNode = RootNode; + + for (int i = 0; i < buffer.LineCount; i++) { + CodeLine cl = buffer[i]; + if (cl.Tokens == null) + continue; + cl.SyntacticNode = null; + + int tokPtr = 0; + while (tokPtr < cl.Tokens.Count) { + switch (cl.Tokens [tokPtr].Type) { + case TokenType.OpenBlock: + currentNode = addChildNode (currentNode, cl, tokPtr, "style"); + break; + case TokenType.CloseBlock: + closeNodeAndGoUp (ref currentNode, cl, "style"); + break; + } + tokPtr++; + } + } + } + } +} + diff --git a/Samples/CrowIDE/src/Editors/Parsers/XMLParser.cs b/Samples/CrowIDE/src/Editors/Parsers/XMLParser.cs new file mode 100644 index 00000000..8e95408e --- /dev/null +++ b/Samples/CrowIDE/src/Editors/Parsers/XMLParser.cs @@ -0,0 +1,307 @@ +using System; +using Crow; +using System.Collections.Generic; +using System.Text.RegularExpressions; +using System.Diagnostics; +using System.Linq; + +namespace Crow.Coding +{ + public class XMLParser : BufferParser + { + public new enum TokenType { + Unknown = BufferParser.TokenType.Unknown, + WhiteSpace = BufferParser.TokenType.WhiteSpace, + NewLine = BufferParser.TokenType.NewLine, + LineComment = BufferParser.TokenType.LineComment, + BlockCommentStart = BufferParser.TokenType.BlockCommentStart, + BlockComment = BufferParser.TokenType.BlockComment, + BlockCommentEnd = BufferParser.TokenType.BlockCommentEnd, + ElementName = BufferParser.TokenType.Type, + AttributeName = BufferParser.TokenType.Identifier, + ElementClosing = BufferParser.TokenType.StatementEnding, + Affectation = BufferParser.TokenType.OperatorOrPunctuation, + AttributeValueOpening = BufferParser.TokenType.StringLitteralOpening, + AttributeValueClosing = BufferParser.TokenType.StringLitteralClosing, + AttributeValue = BufferParser.TokenType.StringLitteral, + XMLDecl = BufferParser.TokenType.Preprocessor, + Doctype = BufferParser.TokenType.Keyword, + ElementStart = 50, + ElementEnd = 51, + } + + public enum States + { + init, //first statement of prolog, xmldecl should only apear in this state + prolog, //misc before doctypedecl + InternalSubset, //doctype declaration subset + ExternalSubsetInit, + ExternalSubset, + BlockComment, + DTDEnd,//doctype finished + XML,//normal xml + StartTag,//inside start tag + Content,//after start tag with no closing slash + EndTag + } + + #region CTOR + public XMLParser (CodeBuffer _buffer) : base(_buffer) {} + #endregion + + enum Keywords + { + DOCTYPE, + ELEMENT, + ATTLIST, + ENTITY, + NOTATION + } + + States curState = States.init; + + #region Regular Expression for validity checks + //private static Regex rxValidChar = new Regex("[\u0020-\uD7FF]"); + private static Regex rxValidChar = new Regex(@"\u0009|\u000A|\u000D|[\u0020-\uD7FF]|[\uE000-\uFFFD]"); //| [\u10000-\u10FFFF] unable to set those plans + private static Regex rxNameStartChar = new Regex(@":|[A-Z]|_|[a-z]|[\u00C0-\u00D6]|[\u00D8-\u00F6]|[\u00F8-\u02FF]|[\u0370-\u037D]|[\u037F-\u1FFF]|[\u200C-\u200D]|[\u2070-\u218F]|[\u2C00-\u2FEF]|[\u3001-\uD7FF]|[\uF900-\uFDCF]|[\uFDF0-\uFFFD]"); // | [\u10000-\uEFFFF] + private static Regex rxNameChar = new Regex(@":|[A-Z]|_|[a-z]|[\u00C0-\u00D6]|[\u00D8-\u00F6]|[\u00F8-\u02FF]|[\u0370-\u037D]|[\u037F-\u1FFF]|[\u200C-\u200D]|[\u2070-\u218F]|[\u2C00-\u2FEF]|[\u3001-\uD7FF]|[\uF900-\uFDCF]|[\uFDF0-\uFFFD]|-|\.|[0-9]|\u00B7|[\u0300-\u036F]|[\u203F-\u2040]");//[\u10000-\uEFFFF]| + private static Regex rxDecimal = new Regex(@"[0-9]+"); + private static Regex rxHexadecimal = new Regex(@"[0-9a-fA-F]+"); + private static Regex rxAttributeValue = new Regex(@"[^<]"); + private static Regex rxEntityValue = new Regex(@"[^<]"); + private static Regex rxPubidChar = new Regex(@"\u0020|\u000D|\u000A|[a-zA-Z0-9]|[-\(\)\+\,\./:=\?;!\*#@\$_%]"); + #endregion + + #region Character ValidityCheck + public bool nextCharIsValidCharStartName + { + get { return rxNameStartChar.IsMatch(new string(new char[]{Peek()})); } + } + public bool nextCharIsValidCharName + { + get { return rxNameChar.IsMatch(new string(new char[]{Peek()})); } + } + #endregion + + public override void SetLineInError (ParserException ex) + { + base.SetLineInError (ex); + //buffer[ex.Line].Tokens.EndingState = (int)States.init; + } + + public override void ParseCurrentLine () + { + //Debug.WriteLine (string.Format("parsing line:{0}", currentLine)); + CodeLine cl = buffer [currentLine]; + cl.Tokens = new List<Token> (); + + //retrieve current parser state from previous line + if (currentLine > 0) + curState = (States)buffer[currentLine - 1].EndingState; + else + curState = States.init; + + States previousEndingState = (States)cl.EndingState; + + + while (! eol) { + SkipWhiteSpaces (); + + if (eol) + break; + + if (Peek () == '\n') { + if (currentTok != TokenType.Unknown) + throw new ParserException (currentLine, currentColumn, "Unexpected end of line"); + Read (); + eol = true; + continue; + } + + if (curState == States.BlockComment) { + if (currentTok != TokenType.Unknown) + Debugger.Break (); + + currentTok.Start = CurrentPosition; + currentTok.Type = (BufferParser.TokenType)TokenType.BlockComment; + currentTok += ReadLineUntil ("-->"); + if (Peek (3) == "-->") { + readToCurrTok (3); + curState = States.XML; + } + saveAndResetCurrentTok (); + continue; + } + + switch (Peek()) { + case '<': + readToCurrTok (true); + switch (Peek()) { + case '?': + if (curState != States.init) + throw new ParserException (currentLine, currentColumn, "xml decl may appear only on first line"); + readToCurrTok (); + currentTok += ReadLineUntil ("?>"); + if (Peek (2) != "?>") + throw new ParserException (currentLine, currentColumn, "expecting '?>'"); + readToCurrTok (2); + saveAndResetCurrentTok (TokenType.XMLDecl); + curState = States.prolog; + break; + case '!': + readToCurrTok (); + switch (Peek()) { + case '-': + readToCurrTok (); + if (Peek () != '-') + throw new ParserException (currentLine, currentColumn, "Expecting comment start tag"); + readToCurrTok (); + currentTok += ReadLineUntil ("--"); + if (Peek (3) == "-->") { + readToCurrTok (3); + }else + curState = States.BlockComment; + saveAndResetCurrentTok (TokenType.BlockComment); + break; + case 'D': + case 'd': + string tmp = Read (7); + currentTok += tmp; + if (!string.Equals (tmp, "DOCTYPE", StringComparison.OrdinalIgnoreCase)) + throw new ParserException (currentLine, currentColumn, "Expecting 'doctype'"); + saveAndResetCurrentTok (TokenType.Doctype); + break; + default: + throw new ParserException (currentLine, currentColumn, "error"); + } + break; + default: + if (!(curState == States.Content || curState == States.XML || curState == States.init || curState == States.prolog)) + throw new ParserException (currentLine, currentColumn, "Unexpected char: '<'"); + if (Peek () == '/') { + curState = States.EndTag; + readToCurrTok (); + saveAndResetCurrentTok (TokenType.ElementEnd); + } else { + curState = States.StartTag; + saveAndResetCurrentTok (TokenType.ElementStart); + } + + if (!nextCharIsValidCharStartName) + throw new ParserException (currentLine, currentColumn, "Expected element name"); + + readToCurrTok (true); + while (nextCharIsValidCharName) + readToCurrTok (); + + saveAndResetCurrentTok (TokenType.ElementName); + break; + } + break; + case '/': + if (curState != States.StartTag) + throw new ParserException (currentLine, currentColumn, "Unexpected char: '/'"); + readToCurrTok (true); + if (Peek () != '>') + throw new ParserException (currentLine, currentColumn, "Expecting '>'"); + readAndResetCurrentTok (TokenType.ElementEnd); + + curState = States.XML; + break; + case '>': + readAndResetCurrentTok (TokenType.ElementClosing, true); + switch (curState) { + case States.EndTag: + curState = States.XML; + break; + case States.StartTag: + curState = States.Content; + break; + default: + throw new ParserException (currentLine, currentColumn, "Unexpected char: '>'"); + } + break; + default: + switch (curState) { + case States.StartTag: + if (!nextCharIsValidCharStartName) + throw new ParserException (currentLine, currentColumn, "Expected attribute name"); + readToCurrTok (true); + while (nextCharIsValidCharName) + readToCurrTok (); + saveAndResetCurrentTok (TokenType.AttributeName); + + SkipWhiteSpaces (); + + if (Peek () != '=') + throw new ParserException (currentLine, currentColumn, "Expecting: '='"); + readAndResetCurrentTok (TokenType.Affectation, true); + + SkipWhiteSpaces (); + + char openAttVal = Peek (); + if (openAttVal != '"' && openAttVal != '\'') + throw new ParserException (currentLine, currentColumn, "Expecting attribute value enclosed either in '\"' or in \"'\""); + readAndResetCurrentTok (TokenType.AttributeValueOpening, true); + + currentTok.Start = CurrentPosition; + currentTok.Content = ReadLineUntil (new string (new char[]{ openAttVal })); + saveAndResetCurrentTok (TokenType.AttributeValue); + + if (Peek () != openAttVal) + throw new ParserException (currentLine, currentColumn, string.Format ("Expecting {0}", openAttVal)); + readAndResetCurrentTok (TokenType.AttributeValueClosing, true); + break; + default: + throw new ParserException (currentLine, currentColumn, "unexpected char: " + Peek ()); + } + break; + } + } + + if (cl.EndingState != (int)curState && currentLine < buffer.LineCount - 1) + buffer [currentLine + 1].Tokens = null; + + cl.EndingState = (int)curState; + } + + public override void SyntaxAnalysis () + { + initSyntaxAnalysis (); + Node currentNode = RootNode; + + for (int i = 0; i < buffer.LineCount; i++) { + CodeLine cl = buffer[i]; + if (cl.Tokens == null) + continue; + cl.SyntacticNode = null; + + int tokPtr = 0; + while (tokPtr < cl.Tokens.Count) { + switch ((XMLParser.TokenType)cl.Tokens [tokPtr].Type) { + case TokenType.ElementStart: + tokPtr++; + currentNode = addChildNode (currentNode, cl, tokPtr, "Element"); + break; + case TokenType.ElementEnd: + tokPtr++; + if (tokPtr < cl.Tokens.Count) { + if ((XMLParser.TokenType)cl.Tokens [tokPtr].Type == TokenType.ElementName && + cl.Tokens [tokPtr].Content != currentNode.Name) + throw new ParserException (currentLine, currentColumn, "Closing tag mismatch"); + } + closeNodeAndGoUp (ref currentNode, cl, "Element"); + break; + case TokenType.ElementClosing: + //currentNode = currentNode.Parent; + break; + default: + break; + } + tokPtr++; + } + } + } + } +} + diff --git a/Samples/CrowIDE/src/Editors/Parsers2/Tokenizer.cs b/Samples/CrowIDE/src/Editors/Parsers2/Tokenizer.cs new file mode 100644 index 00000000..bcda1ec6 --- /dev/null +++ b/Samples/CrowIDE/src/Editors/Parsers2/Tokenizer.cs @@ -0,0 +1,67 @@ +// +// Tokenizer.cs +// +// Author: +// Jean-Philippe Bruyère <jp_bruyere@hotmail.com> +// +// Copyright (c) 2013-2017 Jean-Philippe Bruyère +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. +using System; +using Crow.Text; +using System.Collections.Generic; +using System.Text.RegularExpressions; + +namespace Crow.Coding2 +{ + public static class TokenType { + public const int Undefine = 0; + public const int WhiteSpace = 0; + } + public class Token { + public int ptr; + public int length; + } + + public class Tokenizer + { + #region Regular Expression for validity checks + public Regex rxValidChar = new Regex(@"\p{Lu}|\p{Ll}|\p{Lt}|\p{Lm}|\p{Lo}|\p{Nl}|\p{Mn}|\p{Mc}|\p{Nd}|\p{Pc}|\p{Cf}"); + public Regex rxNameStartChar = new Regex(@"_|\p{Lu}|\p{Ll}|\p{Lt}|\p{Lm}|\p{Lo}|\p{Nl}"); + public Regex rxNameChar = new Regex(@"\p{Lu}|\p{Ll}|\p{Lt}|\p{Lm}|\p{Lo}|\p{Nl}|\p{Mn}|\p{Mc}|\p{Nd}|\p{Pc}|\p{Cf}"); + public Regex rxNewLineChar = new Regex(@"\u000D|\u000A|\u0085|\u2028|\u2029"); + public Regex rxWhiteSpaceChar = new Regex(@"\p{Zs}|\u0009|\u000B|\u000C"); + public Regex rxDecimal = new Regex(@"[0-9]+"); + public Regex rxHexadecimal = new Regex(@"[0-9a-fA-F]+"); + #endregion + + public List<Token> Tokens; + + public Tokenizer (TextBuffer buffer) + { + } + + + public void Tokenize () { + + } + + } +} + diff --git a/Samples/CrowIDE/src/Editors/SourceEditor.cs b/Samples/CrowIDE/src/Editors/SourceEditor.cs new file mode 100644 index 00000000..ca55ee09 --- /dev/null +++ b/Samples/CrowIDE/src/Editors/SourceEditor.cs @@ -0,0 +1,1209 @@ +// +// ScrollingTextBox.cs +// +// Author: +// Jean-Philippe Bruyère <jp.bruyere@hotmail.com> +// +// Copyright (c) 2013-2017 Jean-Philippe Bruyère +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +using System; +using System.ComponentModel; +using System.Collections.Generic; +using System.Diagnostics; +using vkvg; + +namespace Crow.Coding +{ + /// <summary> + /// Scrolling text box optimized for monospace fonts, for coding + /// </summary> + public class SourceEditor : Editor + { + #region CTOR + public SourceEditor (): base() + { + formatting.Add ((int)XMLParser.TokenType.AttributeName, new TextFormatting (Color.DarkSlateGrey, Color.Transparent)); + formatting.Add ((int)XMLParser.TokenType.ElementName, new TextFormatting (Color.DarkBlue, Color.Transparent)); + formatting.Add ((int)XMLParser.TokenType.ElementStart, new TextFormatting (Color.Black, Color.Transparent)); + formatting.Add ((int)XMLParser.TokenType.ElementEnd, new TextFormatting (Color.Black, Color.Transparent)); + formatting.Add ((int)XMLParser.TokenType.ElementClosing, new TextFormatting (Color.Black, Color.Transparent)); + + formatting.Add ((int)XMLParser.TokenType.AttributeValueOpening, new TextFormatting (Color.Crimson, Color.Transparent)); + formatting.Add ((int)XMLParser.TokenType.AttributeValueClosing, new TextFormatting (Color.Crimson, Color.Transparent)); + formatting.Add ((int)XMLParser.TokenType.AttributeValue, new TextFormatting (Color.FireBrick, Color.Transparent, false, true)); + formatting.Add ((int)XMLParser.TokenType.XMLDecl, new TextFormatting (Color.ForestGreen, Color.Transparent)); + + formatting.Add ((int)BufferParser.TokenType.BlockComment, new TextFormatting (Color.Grey, Color.Transparent, false, true)); + formatting.Add ((int)BufferParser.TokenType.LineComment, new TextFormatting (Color.Grey, Color.Transparent, false, true)); + formatting.Add ((int)BufferParser.TokenType.OperatorOrPunctuation, new TextFormatting (Color.Black, Color.Transparent)); + formatting.Add ((int)BufferParser.TokenType.Keyword, new TextFormatting (Color.Teal, Color.Transparent)); + //formatting.Add ((int)BufferParser.TokenType.Keyword, new TextFormatting (Color.DarkCyan, Color.Transparent)); + + parsing.Add (".crow", "Crow.Coding.XMLParser"); + parsing.Add (".svg", "Crow.Coding.XMLParser"); + parsing.Add (".template", "Crow.Coding.XMLParser"); + parsing.Add (".cs", "Crow.Coding.CSharpParser"); + parsing.Add (".style", "Crow.Coding.StyleParser"); + + buffer = new CodeBuffer (); + buffer.LineUpadateEvent += Buffer_LineUpadateEvent; + buffer.LineAdditionEvent += Buffer_LineAdditionEvent;; + buffer.LineRemoveEvent += Buffer_LineRemoveEvent; + buffer.BufferCleared += Buffer_BufferCleared; + buffer.SelectionChanged += Buffer_SelectionChanged; + buffer.PositionChanged += Buffer_PositionChanged; + buffer.FoldingEvent += Buffer_FoldingEvent; + buffer.Add (new CodeLine("")); + } + #endregion + + string oldSource = ""; + //save requested position on error, and try it on next move + int requestedLine = 0, requestedCol = 0; + volatile bool isDirty = false; + + const int leftMarginGap = 10;//gap between items in margin and text + const int foldSize = 9;//folding rectangles size + const int foldHSpace = 4;//folding level tabulation x + int foldMargin { get { return parser == null ? 0 : parser.SyntacticTreeMaxDepth * foldHSpace; }}//folding margin size + + #region private and protected fields + bool foldingEnabled = true; + int leftMargin = 0; //margin used to display line numbers, folding errors,etc... + int visibleLines = 1; + int visibleColumns = 1; + int firstPrintedLine = -1; + int printedCurrentLine = 0;//Index of the currentline in the PrintedLines array + + CodeBuffer buffer; + BufferParser parser; + List<CodeLine> PrintedLines;//list of lines visible in the Editor depending on scrolling and folding + + Dictionary<int, TextFormatting> formatting = new Dictionary<int, TextFormatting>(); + Dictionary<string, string> parsing = new Dictionary<string, string>(); + + Color selBackground; + Color selForeground; + int selStartCol; + int selEndCol; + + protected Rectangle rText; + protected FontExtents fe; + protected TextExtents te; + + Point mouseLocalPos; + bool doubleClicked = false; + #endregion + + void measureLeftMargin () { + leftMargin = 0; + if (PrintLineNumbers) + leftMargin += (int)Math.Ceiling((double)buffer.LineCount.ToString().Length * fe.MaxXAdvance) +6; + if (foldingEnabled) + leftMargin += foldMargin; + if (leftMargin > 0) + leftMargin += leftMarginGap; + updateVisibleColumns (); + } + void findLongestLineAndUpdateMaxScrollX() { + buffer.FindLongestVisualLine (); + updateMaxScrollX (); +// Debug.WriteLine ("SourceEditor: Find Longest line and update maxscrollx: {0} visible cols:{1}", MaxScrollX, visibleColumns); + } + /// <summary> + /// Updates visible line in widget, adapt max scroll y and updatePrintedLines + /// </summary> + void updateVisibleLines(){ + visibleLines = (int)Math.Floor ((double)ClientRectangle.Height / (fe.Ascent+fe.Descent)); + NotifyValueChanged ("VisibleLines", visibleLines); + updateMaxScrollY (); + updatePrintedLines (); + RegisterForGraphicUpdate (); +// System.Diagnostics.Debug.WriteLine ("update visible lines: " + visibleLines); +// System.Diagnostics.Debug.WriteLine ("update MaxScrollY: " + MaxScrollY); + } + void updateVisibleColumns(){ + visibleColumns = (int)Math.Floor ((double)(ClientRectangle.Width - leftMargin)/ fe.MaxXAdvance); + NotifyValueChanged ("VisibleColumns", visibleColumns); + updateMaxScrollX (); +// System.Diagnostics.Debug.WriteLine ("update visible columns: {0} leftMargin:{1}",visibleColumns, leftMargin); +// System.Diagnostics.Debug.WriteLine ("update MaxScrollX: " + MaxScrollX); + } + void updateMaxScrollX () { + MaxScrollX = Math.Max (0, buffer.longestLineCharCount - visibleColumns); + if (buffer.longestLineCharCount > 0) + NotifyValueChanged ("ChildWidthRatio", Slot.Width * visibleColumns / buffer.longestLineCharCount); + } + void updateMaxScrollY () { + if (parser == null || !foldingEnabled) { + MaxScrollY = Math.Max (0, buffer.LineCount - visibleLines); + if (buffer.UnfoldedLines > 0) + NotifyValueChanged ("ChildHeightRatio", Slot.Height * visibleLines / buffer.UnfoldedLines); + } else { + MaxScrollY = Math.Max (0, buffer.UnfoldedLines - visibleLines); + if (buffer.UnfoldedLines > 0) + NotifyValueChanged ("ChildHeightRatio", Slot.Height * visibleLines / buffer.UnfoldedLines); + } + } + void updatePrintedLines () { + buffer.editMutex.EnterReadLock (); + editorMutex.EnterWriteLock (); + + PrintedLines = new List<CodeLine> (); + int curL = 0; + int i = 0; + + while (curL < buffer.LineCount && i < ScrollY) { + if (buffer [curL].IsFolded) + curL = buffer.GetEndNodeIndex (curL); + curL++; + i++; + } + + firstPrintedLine = curL; + i = 0; + while (i < visibleLines && curL < buffer.LineCount) { + PrintedLines.Add (buffer [curL]); + + if (buffer [curL].IsFolded) + curL = buffer.GetEndNodeIndex (curL); + + curL++; + i++; + } + + buffer.editMutex.ExitReadLock (); + editorMutex.ExitWriteLock (); + } + void updateOnScreenCurLineFromBuffCurLine(){ + printedCurrentLine = PrintedLines.IndexOf (buffer.CurrentCodeLine); + } + void toogleFolding (int line) { + if (parser == null || !foldingEnabled) + return; + buffer.ToogleFolding (line); + } + + #region Editor overrides + protected override void updateEditorFromProjFile () + { + Debug.WriteLine("\t\tSourceEditor updateEditorFromProjFile"); + + //buffer.editMutex.EnterWriteLock (); + loadSource (); + //buffer.editMutex.ExitWriteLock (); + + isDirty = false; + oldSource = projFile.Source; + CurrentLine = requestedLine; + CurrentColumn = requestedCol; + projFile.RegisteredEditors [this] = true; + } + protected override void updateProjFileFromEditor () + { + Debug.WriteLine("\t\tSourceEditor updateProjFileFromEditor"); + + buffer.editMutex.EnterWriteLock (); + string newsrc = buffer.FullText; + buffer.editMutex.ExitWriteLock (); + projFile.UpdateSource (this, newsrc); + } + protected override bool EditorIsDirty { + get { return isDirty; } + set { isDirty = value; } + } + protected override bool IsReady { + get { return projFile != null && buffer != null; } + } + #endregion + + #region Buffer events handlers + void Buffer_BufferCleared (object sender, EventArgs e) + { + editorMutex.EnterWriteLock (); + + buffer.longestLineCharCount = 0; + buffer.longestLineIdx = 0; + measureLeftMargin (); + MaxScrollX = MaxScrollY = 0; + PrintedLines = null; + RegisterForGraphicUpdate (); + notifyPositionChanged (); + isDirty = true; + + editorMutex.ExitWriteLock (); + } + void Buffer_LineAdditionEvent (object sender, CodeBufferEventArgs e) + { + for (int i = 0; i < e.LineCount; i++) { + int lptr = e.LineStart + i; + int charCount = buffer[lptr].PrintableLength; + if (charCount > buffer.longestLineCharCount) { + buffer.longestLineIdx = lptr; + buffer.longestLineCharCount = charCount; + }else if (lptr <= buffer.longestLineIdx) + buffer.longestLineIdx++; + if (parser == null) + continue; + parser.TryParseBufferLine (e.LineStart + i); + } + + if (parser != null) + parser.reparseSource (); + + measureLeftMargin (); + + updatePrintedLines (); + updateMaxScrollY (); + RegisterForGraphicUpdate (); + notifyPositionChanged (); + isDirty = true; + } + void Buffer_LineRemoveEvent (object sender, CodeBufferEventArgs e) + { + bool trigFindLongestLine = false; + for (int i = 0; i < e.LineCount; i++) { + int lptr = e.LineStart + i; + if (lptr <= buffer.longestLineIdx) + trigFindLongestLine = true; + } + if (trigFindLongestLine) + findLongestLineAndUpdateMaxScrollX (); + + measureLeftMargin (); + updatePrintedLines (); + updateMaxScrollY (); + RegisterForGraphicUpdate (); + notifyPositionChanged (); + isDirty = true; + } + void Buffer_LineUpadateEvent (object sender, CodeBufferEventArgs e) + { + bool trigFindLongestLine = false; + for (int i = 0; i < e.LineCount; i++) { + + int lptr = e.LineStart + i; + if (lptr == buffer.longestLineIdx) + trigFindLongestLine = true; + else if (buffer[lptr].PrintableLength > buffer.longestLineCharCount) { + buffer.longestLineCharCount = buffer[lptr].PrintableLength; + buffer.longestLineIdx = lptr; + } + } + if (trigFindLongestLine) + findLongestLineAndUpdateMaxScrollX (); + + RegisterForGraphicUpdate (); + notifyPositionChanged (); + isDirty = true; + } + void Buffer_PositionChanged (object sender, EventArgs e) + { + //Console.WriteLine ("Position changes: ({0},{1})", buffer.CurrentLine, buffer.CurrentColumn); + int cc = buffer.CurrentTabulatedColumn; + + if (cc > visibleColumns + ScrollX) { + ScrollX = cc - visibleColumns; + } else if (cc < ScrollX) + ScrollX = cc; + + RegisterForGraphicUpdate (); + updateOnScreenCurLineFromBuffCurLine (); + notifyPositionChanged (); + } + + void Buffer_SelectionChanged (object sender, EventArgs e) + { + RegisterForGraphicUpdate (); + } + void Buffer_FoldingEvent (object sender, CodeBufferEventArgs e) + { + updatePrintedLines (); + updateOnScreenCurLineFromBuffCurLine (); + updateMaxScrollY (); + RegisterForGraphicUpdate (); + } + #endregion + + void notifyPositionChanged (){ + try { + NotifyValueChanged ("CurrentLine", buffer.CurrentLine+1); + NotifyValueChanged ("CurrentColumn", buffer.CurrentColumn+1); + NotifyValueChanged ("CurrentLineHasError", CurrentLineHasError); + NotifyValueChanged ("CurrentLineError", CurrentLineError); + } catch (Exception ex) { + Console.WriteLine (ex.ToString ()); + } + } + + #region Public Crow Properties + public int CurrentLine{ + get { return buffer == null ? 0 : buffer.CurrentLine+1; } + set { + try { + int l = value - 1; + if (l == buffer.CurrentLine) + return; + buffer.CurrentLine = l; + l = buffer.CurrentLine; //reaffect from buffer where bound check is made + if ((bool)buffer [l]?.IsFolded) + buffer.ToogleFolding (l); + } catch (Exception ex) { + requestedLine = value - 1; + Console.WriteLine ("Error cur column: " + ex); + } + } + } + public int CurrentColumn{ + get { return buffer == null ? 0 : buffer.CurrentColumn+1; } + set { + try { + if (value - 1 == buffer.CurrentColumn) + return; + buffer.CurrentColumn = value - 1; + } catch (Exception ex) { + requestedCol = value - 1; + Console.WriteLine ("Error cur column: " + ex.ToString ()); + } + } + } + public bool PrintLineNumbers + { + get { return Configuration.Global.Get<bool> ("PrintLineNumbers"); } + set { + if (PrintLineNumbers == value) + return; + Configuration.Global.Set ("PrintLineNumbers", value); + NotifyValueChanged ("PrintLineNumbers", PrintLineNumbers); + measureLeftMargin (); + RegisterForGraphicUpdate (); + } + } + [DefaultValue("SteelBlue")] + public virtual Color SelectionBackground { + get { return selBackground; } + set { + if (value == selBackground) + return; + selBackground = value; + NotifyValueChanged ("SelectionBackground", selBackground); + RegisterForRedraw (); + } + } + [DefaultValue("White")] + public virtual Color SelectionForeground { + get { return selForeground; } + set { + if (value == selForeground) + return; + selForeground = value; + NotifyValueChanged ("SelectionForeground", selForeground); + RegisterForRedraw (); + } + } + public override int ScrollY { + get { + return base.ScrollY; + } + set { + if (value == base.ScrollY) + return; + base.ScrollY = value; + updatePrintedLines (); + updateOnScreenCurLineFromBuffCurLine (); + RegisterForGraphicUpdate (); + } + } + public ParserException CurrentLineError { + get { return buffer?.CurrentCodeLine?.exception; } + } + public bool CurrentLineHasError { + get { return buffer == null ? false : buffer.CurrentCodeLine == null ? false : + buffer.CurrentCodeLine.exception != null; } + } + public override ProjectFile ProjectNode { + get { + return base.ProjectNode; + } + set { + base.ProjectNode = value; + if (projFile != null) + parser = getParserFromExt (System.IO.Path.GetExtension (projFile.Extension)); + } + } + #endregion + + BufferParser getParserFromExt (string extension) { + if (string.IsNullOrEmpty(extension)) + return null; + if (!parsing.ContainsKey(extension)) + return null; + Type parserType = Type.GetType (parsing [extension]); + if (parserType == null) + return null; + return (BufferParser)Activator.CreateInstance (parserType, buffer ); + } + void loadSource () { + + try { + + if (parser == null) + buffer.Load (projFile.Source); + else//parser may have special linebrk rules + buffer.Load (projFile.Source, parser.LineBrkRegex); + + } catch (Exception ex) { + Debug.WriteLine (ex.ToString ()); + } + + projFile.RegisteredEditors [this] = true; + + updateMaxScrollY (); + MaxScrollX = Math.Max (0, buffer.longestLineCharCount - visibleColumns); + updatePrintedLines (); + + RegisterForGraphicUpdate (); + } + + /// <summary> + /// Current editor line, when set, update buffer.CurrentLine + /// </summary> + int PrintedCurrentLine { + get { return printedCurrentLine;} + set { + if (value < 0) { + ScrollY += value; + printedCurrentLine = 0; + } else if (PrintedLines.Count < visibleLines && value >= PrintedLines.Count) { + printedCurrentLine = PrintedLines.Count - 1; + }else if (value >= visibleLines) { + ScrollY += value - visibleLines + 1; + printedCurrentLine = visibleLines - 1; + }else + printedCurrentLine = value; + //Debug.WriteLine ("printed current line:" + printedCurrentLine.ToString ()); + //update position in buffer + buffer.CurrentLine = buffer.IndexOf (PrintedLines[printedCurrentLine]); + } + } + int getTabulatedColumn (int col, int line) { + return buffer [line].Content.Substring (0, col).Replace ("\t", new String (' ', Interface.TabSize)).Length; + } + int getTabulatedColumn (Point pos) { + return getTabulatedColumn (pos.X,pos.Y); + } + /// <summary> + /// Moves cursor one char to the left, move up if cursor reaches start of line + /// </summary> + /// <returns><c>true</c> if move succeed</returns> + public bool MoveLeft(){ + if (buffer.CurrentColumn == 0) { + if (printedCurrentLine == 0) + return false; + PrintedCurrentLine--; + buffer.CurrentColumn = int.MaxValue; + } else + buffer.CurrentColumn--; + return true; + } + /// <summary> + /// Moves cursor one char to the right, move down if cursor reaches end of line + /// </summary> + /// <returns><c>true</c> if move succeed</returns> + public bool MoveRight(){ + if (buffer.CurrentColumn >= buffer.CurrentCodeLine.Length) { + if (PrintedCurrentLine == buffer.UnfoldedLines - 1) + return false; + buffer.CurrentColumn = 0; + PrintedCurrentLine++; + } else + buffer.CurrentColumn++; + return true; + } + + #region Drawing + void drawLine(Context gr, Rectangle cb, int i) { + CodeLine cl = PrintedLines[i]; + int lineIndex = buffer.IndexOf(cl); + + double y = cb.Y + (fe.Ascent+fe.Descent) * i, x = cb.X; + + //Draw line numbering + Color mgFg = Color.Grey; + Color mgBg = Color.White; + if (PrintLineNumbers){ + Rectangle mgR = new Rectangle ((int)x, (int)y, leftMargin - leftMarginGap, (int)Math.Ceiling((fe.Ascent+fe.Descent))); + if (cl.exception != null) { + mgBg = Color.Red; + if (buffer.CurrentLine == lineIndex) + mgFg = Color.White; + else + mgFg = Color.LightGrey; + }else if (buffer.CurrentLine == lineIndex && HasFocus) { + mgFg = Color.Black; + mgBg = Color.DarkGrey; + } + string strLN = (lineIndex+1).ToString (); + gr.SetSourceColor (mgBg); + gr.Rectangle (mgR); + gr.Fill(); + gr.SetSourceColor (mgFg); + + gr.MoveTo (cb.X + (int)(gr.TextExtents (buffer.LineCount.ToString()).Width - gr.TextExtents (strLN).Width), y + fe.Ascent); + gr.ShowText (strLN); + gr.Fill (); + } + + + + //draw folding + if (foldingEnabled){ + + Rectangle rFld = new Rectangle (cb.X + leftMargin - leftMarginGap - foldMargin, + (int)(y + (fe.Ascent + fe.Descent) / 2.0 - foldSize / 2.0), foldSize, foldSize); + + gr.SetSourceColor (Color.Black); + gr.LineWidth = 1.0; + + int level = 0; + bool closingNode = false; + + if (currentNode != null) { + if (cl == currentNode.EndLine) { + currentNode = currentNode.Parent; + closingNode = true; + } + if (currentNode != null) + level = currentNode.Level - 1; + } + + for (int l = 0; l < level; l++) { + gr.MoveTo (rFld.Center.X + 0.5, y); + gr.LineTo (rFld.Center.X + 0.5, y + fe.Ascent + fe.Descent); + rFld.Left += foldHSpace; + } + if (closingNode) { + gr.MoveTo (rFld.Center.X + 0.5, y); + gr.LineTo (rFld.Center.X + 0.5, y + fe.Ascent / 2 + 0.5); + gr.LineTo (rFld.Center.X + 0.5 + foldSize / 2, y + fe.Ascent / 2 + 0.5); + closingNode = false; + } + //gr.SetDash (new double[]{ 1.5 },0.0); + gr.SetSourceColor (Color.Grey); + gr.Stroke (); + //gr.SetDash (new double[]{}, 0.0); + + if (cl.IsFoldable) { + gr.Rectangle (rFld); + gr.SetSourceColor (Color.White); + gr.Fill(); + gr.SetSourceColor (Color.Black); + gr.Rectangle (rFld, 1.0); + if (cl.IsFolded) { + gr.MoveTo (rFld.Center.X + 0.5, rFld.Y + 2); + gr.LineTo (rFld.Center.X + 0.5, rFld.Bottom - 2); + }else + currentNode = cl.SyntacticNode; + + gr.MoveTo (rFld.Left + 2, rFld.Center.Y + 0.5); + gr.LineTo (rFld.Right - 2, rFld.Center.Y + 0.5); + gr.Stroke (); + } + } + + gr.SetSourceColor (Foreground); + x += leftMargin; + + if (cl.Tokens == null) + drawRawCodeLine (gr, x, y, i, lineIndex); + else + drawParsedCodeLine (gr, x, y, i, lineIndex); + } + Node currentNode = null; +// void drawParsed(Context gr){ +// if (PrintedLines == null) +// return; +// +// gr.SelectFontFace (Font.Name, Font.Slant, Font.Wheight); +// gr.SetFontSize (Font.Size); +// gr.FontOptions = Interface.FontRenderingOptions; +// gr.Antialias = Interface.Antialias; +// +// Rectangle cb = ClientRectangle; +// gr.Save (); +// CairoHelpers.CairoRectangle (gr, cb, CornerRadius); +// gr.Clip (); +// +// bool selectionInProgress = false; +// +// Foreground.SetAsSource (gr); +// +// #region draw text cursor +// if (SelBegin != SelRelease) +// selectionInProgress = true; +// else if (HasFocus){ +// gr.LineWidth = 1.0; +// double cursorX = + leftMargin + cb.X + (CurrentColumn - ScrollX) * fe.MaxXAdvance; +// gr.MoveTo (0.5 + cursorX, cb.Y + printedCurrentLine * (fe.Ascent+fe.Descent)); +// gr.LineTo (0.5 + cursorX, cb.Y + (printedCurrentLine + 1) * (fe.Ascent+fe.Descent)); +// gr.Stroke(); +// } +// #endregion +// +// for (int i = 0; i < PrintedLines.Count; i++) +// drawTokenLine (gr, i, selectionInProgress, cb); +// +// gr.Restore (); +// } + void drawRawCodeLine(Context gr, double x, double y, int i, int lineIndex) { + string lstr = buffer[lineIndex].PrintableContent; + if (ScrollX < lstr.Length) + lstr = lstr.Substring (ScrollX); + else + lstr = ""; + + gr.MoveTo (x, y + fe.Ascent); + gr.ShowText (lstr); + gr.Fill (); + + if (!buffer.SelectionIsEmpty && lineIndex >= buffer.SelectionStart.Y && lineIndex <= buffer.SelectionEnd.Y) { + double rLineX = x, + rLineY = y, + rLineW = lstr.Length * fe.MaxXAdvance; + + //System.Diagnostics.Debug.WriteLine ("sel start: " + buffer.SelectionStart + " sel end: " + buffer.SelectionEnd); + if (lineIndex == buffer.SelectionStart.Y) { + rLineX += (selStartCol - ScrollX) * fe.MaxXAdvance; + rLineW -= selStartCol * fe.MaxXAdvance; + } + if (lineIndex == buffer.SelectionEnd.Y) + rLineW -= (lstr.Length - selEndCol) * fe.MaxXAdvance; + + gr.Save (); + gr.Operator = Operator.Source; + gr.Rectangle (rLineX, rLineY, rLineW, (fe.Ascent+fe.Descent)); + gr.SetSourceColor (SelectionBackground); + gr.FillPreserve (); + gr.Clip (); + gr.Operator = Operator.Over; + gr.SetSourceColor (SelectionForeground); + gr.MoveTo (x, y + fe.Ascent); + gr.ShowText (lstr); + gr.Fill (); + gr.Restore (); + } + } + void drawParsedCodeLine (Context gr, double x, double y, int i, int lineIndex) { + int lPtr = 0; + CodeLine cl = PrintedLines[i]; + + for (int t = 0; t < cl.Tokens.Count; t++) { + string lstr = cl.Tokens [t].PrintableContent; + if (lPtr < ScrollX) { + if (lPtr - ScrollX + lstr.Length <= 0) { + lPtr += lstr.Length; + continue; + } + lstr = lstr.Substring (ScrollX - lPtr); + lPtr += ScrollX - lPtr; + } + Color bg = this.Background; + Color fg = this.Foreground; + Color selbg = this.SelectionBackground; + Color selfg = this.SelectionForeground; + FontSlant fts = FontSlant.Normal; + FontWeight ftw = FontWeight.Normal; + + if (formatting.ContainsKey ((int)cl.Tokens [t].Type)) { + TextFormatting tf = formatting [(int)cl.Tokens [t].Type]; + bg = tf.Background; + fg = tf.Foreground; + if (tf.Bold) + ftw = FontWeight.Bold; + if (tf.Italic) + fts = FontSlant.Italic; + } + + gr.FontFace = Font.Name; + gr.SetSourceColor (fg); + + gr.MoveTo (x, y + fe.Ascent); + gr.ShowText (lstr); + gr.Fill (); + + if (buffer.SelectionInProgress && lineIndex >= buffer.SelectionStart.Y && lineIndex <= buffer.SelectionEnd.Y && + !(lineIndex == buffer.SelectionStart.Y && lPtr + lstr.Length <= selStartCol) && + !(lineIndex == buffer.SelectionEnd.Y && selEndCol <= lPtr)) { + + double rLineX = x, + rLineY = y, + rLineW = lstr.Length * fe.MaxXAdvance; + double startAdjust = 0.0; + + if ((lineIndex == buffer.SelectionStart.Y) && (selStartCol < lPtr + lstr.Length) && (selStartCol > lPtr)) + startAdjust = (selStartCol - lPtr) * fe.MaxXAdvance; + rLineX += startAdjust; + if ((lineIndex == buffer.SelectionEnd.Y) && (selEndCol < lPtr + lstr.Length)) + rLineW = (selEndCol - lPtr) * fe.MaxXAdvance; + rLineW -= startAdjust; + + gr.Save (); + gr.Operator = Operator.Source; + gr.Rectangle (rLineX, rLineY, rLineW, (fe.Ascent+fe.Descent)); + gr.SetSourceColor (selbg); + gr.FillPreserve (); + gr.Clip (); + gr.Operator = Operator.Over; + gr.SetSourceColor (selfg); + gr.MoveTo (x, y + fe.Ascent); + gr.ShowText (lstr); + gr.Fill (); + gr.Restore (); + } + x += (int)lstr.Length * fe.MaxXAdvance; + lPtr += lstr.Length; + } + } + + #endregion + + #region GraphicObject overrides + public override Font Font { + get { return base.Font; } + set { + base.Font = value; + /* + using (ImageSurface img = new ImageSurface (Format.Argb32, 1, 1)) { + using (Context gr = new Context (img)) { + gr.SelectFontFace (Font.Name, Font.Slant, Font.Wheight); + gr.SetFontSize (Font.Size); + + fe = gr.FontExtents; + } + }*/ + MaxScrollY = 0; + RegisterForGraphicUpdate (); + } + } + protected override int measureRawSize(LayoutingType lt) + { + if (lt == LayoutingType.Height) + return (int)Math.Ceiling((fe.Ascent+fe.Descent) * buffer.LineCount) + Margin * 2; + + return (int)(fe.MaxXAdvance * buffer.longestLineCharCount) + Margin * 2 + leftMargin; + } + public override void OnLayoutChanges (LayoutingType layoutType) + { + base.OnLayoutChanges (layoutType); + + if (layoutType == LayoutingType.Height) + updateVisibleLines (); + else if (layoutType == LayoutingType.Width) + updateVisibleColumns (); + } + + protected override void onDraw (Context gr) + { + base.onDraw (gr); + + gr.FontFace = Font.Name; + gr.FontSize = (uint)Font.Size; + + Rectangle cb = ClientRectangle; + + Foreground.SetAsSource (gr); + + buffer.editMutex.EnterReadLock (); + editorMutex.EnterReadLock (); + + #region draw text cursor + if (buffer.SelectionInProgress){ + selStartCol = getTabulatedColumn (buffer.SelectionStart); + selEndCol = getTabulatedColumn (buffer.SelectionEnd); + }else if (HasFocus && printedCurrentLine >= 0){ + gr.LineWidth = 1.0; + double cursorX = cb.X + (getTabulatedColumn(buffer.CurrentPosition) - ScrollX) * fe.MaxXAdvance + leftMargin; + gr.MoveTo (0.5 + cursorX, cb.Y + (printedCurrentLine) * (fe.Ascent+fe.Descent)); + gr.LineTo (0.5 + cursorX, cb.Y + (printedCurrentLine + 1) * (fe.Ascent+fe.Descent)); + gr.Stroke(); + } + #endregion + + if (PrintedLines?.Count > 0) { + int unfoldedLines = buffer.UnfoldedLines; + currentNode = null; + CodeLine cl = PrintedLines[0]; + int idx0 = buffer.IndexOf(cl); + int li = idx0-1; + while (li >= 0) { + if (buffer [li].IsFoldable && !buffer [li].IsFolded) { + if (buffer.IndexOf(buffer [li].SyntacticNode.EndLine) > idx0){ + currentNode = buffer [li].SyntacticNode; + break; + } + } + li--; + } + + for (int i = 0; i < visibleLines; i++) { + if (i + ScrollY >= unfoldedLines)//TODO:need optimize + break; + drawLine (gr, cb, i); + } + } + + editorMutex.ExitReadLock (); + + buffer.editMutex.ExitReadLock (); + + } + #endregion + + #region Mouse handling + + int hoverLine = -1; + public int HoverLine { + get { return hoverLine; } + set { + if (hoverLine == value) + return; + hoverLine = value; + NotifyValueChanged ("HoverLine", hoverLine); + NotifyValueChanged ("HoverError", buffer [hoverLine].exception); + } + } + void updateHoverLine () { + if (PrintedLines.Count > 0) { + int hvl = (int)Math.Max (0, Math.Floor (mouseLocalPos.Y / (fe.Ascent + fe.Descent))); + hvl = Math.Min (PrintedLines.Count - 1, hvl); + HoverLine = buffer.IndexOf (PrintedLines [hvl]); + } else + HoverLine = 0; + } + void updateCurrentPosFromMouseLocalPos(){ + PrintedCurrentLine = (int)Math.Max (0, Math.Floor (mouseLocalPos.Y / (fe.Ascent+fe.Descent))); + int curVisualCol = ScrollX + (int)Math.Round ((mouseLocalPos.X - leftMargin) / fe.MaxXAdvance); + + int i = 0; + int buffCol = 0; + while (i < curVisualCol && buffCol < buffer.CurrentCodeLine.Length) { + if (buffer.CurrentCodeLine[buffCol] == '\t') + i += Interface.TabSize; + else + i++; + buffCol++; + } + buffer.CurrentColumn = buffCol; + } + public override void onMouseEnter (object sender, MouseMoveEventArgs e) + { + base.onMouseEnter (sender, e); + if (e.X - ScreenCoordinates(Slot).X < leftMargin + ClientRectangle.X) + IFace.MouseCursor = MouseCursor.Arrow; + else + IFace.MouseCursor = MouseCursor.IBeam; + } + public override void onMouseLeave (object sender, MouseMoveEventArgs e) + { + base.onMouseLeave (sender, e); + IFace.MouseCursor = MouseCursor.Arrow; + } + public override void onMouseMove (object sender, MouseMoveEventArgs e) + { + base.onMouseMove (sender, e); + + mouseLocalPos = e.Position - ScreenCoordinates(Slot).TopLeft - ClientRectangle.TopLeft; + + updateHoverLine (); + + if (!e.Mouse.IsButtonDown (MouseButton.Left)) { + if (mouseLocalPos.X < leftMargin) + IFace.MouseCursor = MouseCursor.Arrow; + else + IFace.MouseCursor = MouseCursor.IBeam; + return; + } + + if (!HasFocus || !buffer.SelectionInProgress) + return; + + //mouse is down + updateCurrentPosFromMouseLocalPos(); + buffer.SetSelEndPos (); + } + public override void onMouseDown (object sender, MouseButtonEventArgs e) + { + if (!this.Focusable) + return; + + if (mouseLocalPos.X >= leftMargin) + base.onMouseDown (sender, e); + + if (doubleClicked) { + doubleClicked = false; + return; + } + + if (mouseLocalPos.X < leftMargin) { + toogleFolding (buffer.IndexOf (PrintedLines [(int)Math.Max (0, Math.Floor (mouseLocalPos.Y / (fe.Ascent+fe.Descent)))])); + return; + } + + updateCurrentPosFromMouseLocalPos (); + buffer.SetSelStartPos (); + } + public override void onMouseUp (object sender, MouseButtonEventArgs e) + { + base.onMouseUp (sender, e); + + if (buffer.SelectionIsEmpty) + buffer.ResetSelection (); + } + + public override void onMouseDoubleClick (object sender, MouseButtonEventArgs e) + { + doubleClicked = true; + base.onMouseDoubleClick (sender, e); + + buffer.GotoWordStart (); + buffer.SetSelStartPos (); + buffer.GotoWordEnd (); + buffer.SetSelEndPos (); + } + public void MakeSelection (int lineStart, int colStart, int lineEnd, int colEnd) { + buffer.CurrentLine = lineStart; + buffer.CurrentColumn = colStart; + buffer.SetSelStartPos (); + buffer.CurrentLine = lineEnd; + buffer.CurrentColumn = colEnd; + buffer.SetSelEndPos (); + } + public override void onMouseWheel (object sender, MouseWheelEventArgs e) + { + base.onMouseWheel (sender, e); + } + #endregion + + #region Keyboard handling + public override void onKeyDown (object sender, KeyEventArgs e) + { + //base.onKeyDown (sender, e); + + Key key = e.Key; + + if (IFace.Ctrl) { + switch (key) { + case Key.S: + projFile.Save (); + break; + case Key.W: + editorMutex.EnterWriteLock (); + if (IFace.Shift) + projFile.Redo (null); + else + projFile.Undo (null); + editorMutex.ExitWriteLock (); + break; + default: + Console.WriteLine (""); + break; + } + } + + switch (key) + { + case Key.Backspace: + buffer.DeleteChar (); + break; + case Key.Delete: + if (buffer.SelectionIsEmpty) + MoveRight (); + else if (IFace.Shift) + IFace.Clipboard = buffer.SelectedText; + buffer.DeleteChar (); + break; + case Key.Enter: + case Key.KeypadEnter: + if (!buffer.SelectionIsEmpty) + buffer.DeleteChar (); + buffer.InsertLineBreak (); + break; + case Key.Escape: + buffer.ResetSelection (); + break; + case Key.Home: + if (IFace.Shift) { + if (buffer.SelectionIsEmpty) + buffer.SetSelStartPos (); + if (IFace.Ctrl) + buffer.CurrentLine = 0; + buffer.CurrentColumn = 0; + buffer.SetSelEndPos (); + break; + } + buffer.ResetSelection (); + if (IFace.Ctrl) + buffer.CurrentLine = 0; + buffer.CurrentColumn = 0; + break; + case Key.End: + if (IFace.Shift) { + if (buffer.SelectionIsEmpty) + buffer.SetSelStartPos (); + if (IFace.Ctrl) + buffer.CurrentLine = int.MaxValue; + buffer.CurrentColumn = int.MaxValue; + buffer.SetSelEndPos (); + break; + } + buffer.ResetSelection (); + if (IFace.Ctrl) + buffer.CurrentLine = int.MaxValue; + buffer.CurrentColumn = int.MaxValue; + break; + case Key.Insert: + if (IFace.Shift) + buffer.Insert (IFace.Clipboard); + else if (IFace.Ctrl && !buffer.SelectionIsEmpty) + IFace.Clipboard = buffer.SelectedText; + break; + case Key.Left: + if (IFace.Shift) { + if (buffer.SelectionIsEmpty) + buffer.SetSelStartPos (); + if (IFace.Ctrl) + buffer.GotoWordStart (); + else + MoveLeft (); + buffer.SetSelEndPos (); + break; + } + buffer.ResetSelection (); + if (IFace.Ctrl) + buffer.GotoWordStart (); + else + MoveLeft(); + break; + case Key.Right: + if (IFace.Shift) { + if (buffer.SelectionIsEmpty) + buffer.SetSelStartPos (); + if (IFace.Ctrl) + buffer.GotoWordEnd (); + else + MoveRight (); + buffer.SetSelEndPos (); + break; + } + buffer.ResetSelection (); + if (IFace.Ctrl) + buffer.GotoWordEnd (); + else + MoveRight (); + break; + case Key.Up: + if (IFace.Shift) { + if (buffer.SelectionIsEmpty) + buffer.SetSelStartPos (); + PrintedCurrentLine--; + buffer.SetSelEndPos (); + break; + } + buffer.ResetSelection (); + PrintedCurrentLine--; + break; + case Key.Down: + if (IFace.Shift) { + if (buffer.SelectionIsEmpty) + buffer.SetSelStartPos (); + PrintedCurrentLine++; + buffer.SetSelEndPos (); + break; + } + buffer.ResetSelection (); + PrintedCurrentLine++; + break; + case Key.Menu: + break; + case Key.NumLock: + break; + case Key.PageDown: + if (IFace.Shift) { + if (buffer.SelectionIsEmpty) + buffer.SetSelStartPos (); + PrintedCurrentLine += visibleLines; + buffer.SetSelEndPos (); + break; + } + buffer.ResetSelection (); + PrintedCurrentLine += visibleLines; + break; + case Key.PageUp: + if (IFace.Shift) { + if (buffer.SelectionIsEmpty) + buffer.SetSelStartPos (); + PrintedCurrentLine -= visibleLines; + buffer.SetSelEndPos (); + break; + } + buffer.ResetSelection (); + PrintedCurrentLine -= visibleLines; + break; + case Key.Tab: + if (IFace.Shift) { + if (buffer.SelectionIsEmpty || + (buffer.SelectionStart.Y == buffer.SelectionEnd.Y)) { + //TODO + break; + } + for (int i = buffer.SelectionStart.Y; i <= buffer.SelectionEnd.Y; i++) + buffer.RemoveLeadingTab (i); + buffer.SetSelectionOnFullLines (); + } else { + if (buffer.SelectionIsEmpty || + (buffer.SelectionStart.Y == buffer.SelectionEnd.Y)) { + buffer.Insert ("\t"); + break; + } + for (int i = buffer.SelectionStart.Y; i <= buffer.SelectionEnd.Y; i++) { + buffer.UpdateLine (i, "\t" + buffer [i].Content); + } + } + + break; + case Key.F8: + toogleFolding (buffer.CurrentLine); + break; + default: + break; + } + RegisterForGraphicUpdate(); + } + public override void onKeyPress (object sender, KeyPressEventArgs e) + { + base.onKeyPress (sender, e); + + buffer.Insert (e.KeyChar.ToString()); + buffer.ResetSelection (); + } + #endregion + } +}
\ No newline at end of file diff --git a/Samples/CrowIDE/src/Editors/SvgEditor.cs b/Samples/CrowIDE/src/Editors/SvgEditor.cs new file mode 100644 index 00000000..d81b1154 --- /dev/null +++ b/Samples/CrowIDE/src/Editors/SvgEditor.cs @@ -0,0 +1,140 @@ +// +// SvgEditor.cs +// +// Author: +// Jean-Philippe Bruyère <jp_bruyere@hotmail.com> +// +// Copyright (c) 2013-2017 Jean-Philippe Bruyère +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. +using System; +using System.ComponentModel; +using vkvg; + +namespace Crow.Coding +{ + public class SvgEditor : Editor + { + SvgPicture _pic = new SvgPicture(); + + int zoom; + + [DefaultValue(100)] + public int Zoom { + get { return zoom; } + set { + if (zoom == value) + return; + zoom = value; + NotifyValueChanged ("Zoom", zoom); + updateMaxScrolls (); + RegisterForGraphicUpdate (); + } + } + + void updateMaxScrolls() { + MaxScrollX = Math.Max(0, _pic.Dimensions.Width * zoom / 100 - Slot.Width); + MaxScrollY = Math.Max(0, _pic.Dimensions.Height * zoom / 100 - Slot.Height); + + if (Slot.Width + MaxScrollX > 0) + NotifyValueChanged ("ChildWidthRatio", Slot.Width * Slot.Width / (Slot.Width + MaxScrollX)); + else + NotifyValueChanged ("ChildWidthRatio", 0); + + if (Slot.Height + MaxScrollY > 0) + NotifyValueChanged ("ChildHeightRatio", Slot.Height * Slot.Height / (Slot.Height + MaxScrollY)); + else + NotifyValueChanged ("ChildHeightRatio", 0); + } + #region editor overrides + protected override void updateEditorFromProjFile () + { + Error = null; + try { + editorMutex.EnterWriteLock(); + _pic.LoadSvgFragment (projFile.Source); + _pic.Scaled = true; + _pic.KeepProportions = true; + } catch (Exception ex) { + Error = ex; + } + editorMutex.ExitWriteLock (); + updateMaxScrolls (); + RegisterForGraphicUpdate (); + } + protected override void updateProjFileFromEditor () + { + throw new NotImplementedException (); + } + protected override bool EditorIsDirty { + get { return false; } + set { + throw new NotImplementedException (); + } + } + protected override bool IsReady { + get { return projFile != null; } + } + #endregion + + #region GraphicObject overrides + protected override int measureRawSize (LayoutingType lt) + { + if (_pic == null) + return 2 * Margin; + //_pic = "#Crow.Images.Icons.IconAlerte.svg"; + //TODO:take scalling in account + if (lt == LayoutingType.Width) + return _pic.Dimensions.Width + 2 * Margin; + else + return _pic.Dimensions.Height + 2 * Margin; + } + protected override void onDraw (Context gr) + { + base.onDraw (gr); + + Rectangle r = ClientRectangle; + Foreground.SetAsSource (gr, r); + gr.Rectangle (r, 0.1); + gr.Stroke (); + + r.Width = _pic.Dimensions.Width * zoom / 100; + r.Height = _pic.Dimensions.Height * zoom / 100; + + gr.Save (); + + editorMutex.EnterReadLock (); + + gr.Translate (-ScrollX, -ScrollY); + if (_pic != null) + _pic.Paint (gr, r); + editorMutex.ExitReadLock (); + + gr.Restore (); + } + public override void OnLayoutChanges (LayoutingType layoutType) + { + base.OnLayoutChanges (layoutType); + if ((layoutType | LayoutingType.Sizing) > 0) + updateMaxScrolls (); + } + #endregion + } +} + diff --git a/Samples/CrowIDE/src/Extensions.cs b/Samples/CrowIDE/src/Extensions.cs new file mode 100644 index 00000000..86c5834f --- /dev/null +++ b/Samples/CrowIDE/src/Extensions.cs @@ -0,0 +1,45 @@ +// +// Extensions.cs +// +// Author: +// Jean-Philippe Bruyère <jp.bruyere@hotmail.com> +// +// Copyright (c) 2016 jp +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see <http://www.gnu.org/licenses/>. +using System; +using System.Collections.Generic; + +namespace Crow +{ + public static partial class Extensions + { + public static string GetIcon(this Widget go){ + return "#CrowIDE.icons.toolbox." + go.GetType().FullName + ".svg"; + } + public static List<Widget> GetChildren(this Widget go){ + Type goType = go.GetType(); + if (typeof (Group).IsAssignableFrom (goType)) + return (go as Group).Children; + if (typeof(Container).IsAssignableFrom (goType)) + return new List<Widget>( new Widget[] { (go as Container).Child }); + if (typeof(TemplatedContainer).IsAssignableFrom (goType)) + return new List<Widget>( new Widget[] { (go as TemplatedContainer).Content }); + if (typeof(TemplatedGroup).IsAssignableFrom (goType)) + return (go as TemplatedGroup).Items; + + return new List<Widget>(); + } + } +} diff --git a/Samples/CrowIDE/src/GraphicObjectDesignContainer.cs b/Samples/CrowIDE/src/GraphicObjectDesignContainer.cs new file mode 100644 index 00000000..166181d8 --- /dev/null +++ b/Samples/CrowIDE/src/GraphicObjectDesignContainer.cs @@ -0,0 +1,85 @@ +// +// GraphicObjectDesignContainer.cs +// +// Author: +// Jean-Philippe Bruyère <jp_bruyere@hotmail.com> +// +// Copyright (c) 2013-2017 Jean-Philippe Bruyère +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. +using System; + +namespace Crow.Coding +{ + public class GraphicObjectDesignContainer + { + #region CTOR + public GraphicObjectDesignContainer (Type crowType) + { + CrowType = crowType; + } + #endregion + + int dragIconSize = 32; + public Type CrowType; + + public string IconPath { + get { return "#CrowIDE.icons.toolbox." + CrowType.FullName + ".svg"; } + } + public string DisplayName { + get { return CrowType.Name; } + } + void onStartDrag (object sender, EventArgs e) + { + /* + Widget go = sender as Widget; + + lock (go.IFace.UpdateMutex) { + go.IFace.DragImageHeight = dragIconSize; + go.IFace.DragImageWidth = dragIconSize; + SvgPicture pic = new SvgPicture (IconPath); + //pic.Load (go.IFace, IconPath); + ImageSurface img = new ImageSurface (Format.Argb32, dragIconSize, dragIconSize); + using (Context ctx = new Context (img)) { + Rectangle r = new Rectangle (0, 0, dragIconSize, dragIconSize); + pic.Paint (ctx, r); + ctx.Operator = Operator.In; + ctx.SetSourceRGBA (1.0, 1.0, 1.0, 1.0); + ctx.Rectangle (r); + ctx.Fill (); + + } + go.IFace.DragImage = img; + }*/ + } + void onEndDrag (object sender, DragDropEventArgs e) + { + (sender as Widget).IFace.ClearDragImage (); + + } + void onDrop (object sender, DragDropEventArgs e) + { + ImlVisualEditor imlVE = e.DropTarget as ImlVisualEditor; + if (imlVE != null) + imlVE.ClearDraggedObj (false); + (sender as Widget).IFace.ClearDragImage (); + } + } +} + diff --git a/Samples/CrowIDE/src/INetProject.cs b/Samples/CrowIDE/src/INetProject.cs new file mode 100644 index 00000000..53d81a1f --- /dev/null +++ b/Samples/CrowIDE/src/INetProject.cs @@ -0,0 +1,35 @@ +// +// INetProject.cs +// +// Author: +// Jean-Philippe Bruyère <jp_bruyere@hotmail.com> +// +// Copyright (c) 2013-2017 Jean-Philippe Bruyère +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. +using System; + +namespace Crow.Coding +{ + public interface INetProject + { + + } +} + diff --git a/Samples/CrowIDE/src/MemberView/CategoryContainer.cs b/Samples/CrowIDE/src/MemberView/CategoryContainer.cs new file mode 100644 index 00000000..fbf3fe2c --- /dev/null +++ b/Samples/CrowIDE/src/MemberView/CategoryContainer.cs @@ -0,0 +1,65 @@ +// +// CategoryContainer.cs +// +// Author: +// Jean-Philippe Bruyère <jp_bruyere@hotmail.com> +// +// Copyright (c) 2013-2017 Jean-Philippe Bruyère +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. +using System; + +namespace Crow.Coding +{ + public class CategoryContainer : IValueChange + { + #region IValueChange implementation + public event EventHandler<ValueChangeEventArgs> ValueChanged; + public virtual void NotifyValueChanged(string MemberName, object _value) + { + ValueChanged.Raise(this, new ValueChangeEventArgs(MemberName, _value)); + } + #endregion + + bool _isExpanded = true; + + public PropertyContainer[] Properties; + public string Name; + + public bool IsExpanded + { + get { return _isExpanded; } + set + { + if (value == _isExpanded) + return; + + _isExpanded = value; + + NotifyValueChanged ("IsExpanded", _isExpanded); + } + } + + public CategoryContainer (string categoryName, PropertyContainer[] properties){ + Name = categoryName; + Properties = properties; + } + } +} + diff --git a/Samples/CrowIDE/src/MemberView/MembersView.cs b/Samples/CrowIDE/src/MemberView/MembersView.cs new file mode 100644 index 00000000..b8dad3d0 --- /dev/null +++ b/Samples/CrowIDE/src/MemberView/MembersView.cs @@ -0,0 +1,139 @@ +// +// MembersView.cs +// +// Author: +// Jean-Philippe Bruyère <jp.bruyere@hotmail.com> +// +// Copyright (c) 2016 jp +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see <http://www.gnu.org/licenses/>. +using System; +using Crow; +using System.Xml.Serialization; +using System.ComponentModel; +using System.Reflection; +using System.Collections.Generic; +using System.Linq; + +namespace Crow.Coding +{ + public class MembersView : ListBox + { + object instance; + ImlProjectItem projFile; + + public MembersView () : base() {} + + //cache property containers per type + //Dictionary<string,PropertyContainer[]> propContainersCache = new Dictionary<string, PropertyContainer[]>(); + Dictionary<string,List<CategoryContainer>> categoryContainersCache = new Dictionary<string,List<CategoryContainer>> (); + + [DefaultValue(null)] + public virtual object Instance { + get { return instance; } + set { + if (instance == value) + return; + object lastInst = instance; + + instance = value; + NotifyValueChanged ("Instance", instance); + + if (Instance is Widget) { + NotifyValueChanged ("SelectedItemName", Instance.GetType().Name + (Instance as Widget).design_id + + ":" + (Instance as Widget).design_imlPath ); + }else + NotifyValueChanged ("SelectedItemName", ""); + + if (instance == null) { + Data = null; + return; + } + + Type it = instance.GetType (); + if (!categoryContainersCache.ContainsKey (it.FullName)) { + MemberInfo[] members = it.GetMembers (BindingFlags.Public | BindingFlags.Instance); + List<PropertyContainer> props = new List<PropertyContainer> (); + foreach (MemberInfo m in members) { + if (m.MemberType == MemberTypes.Property) { + PropertyInfo pi = m as PropertyInfo; + if (!pi.CanWrite) + continue; + if (pi.GetCustomAttribute (typeof(XmlIgnoreAttribute)) != null) + continue; + props.Add (new PropertyContainer (this, pi)); + } + } + //propContainersCache.Add (it.FullName, props.OrderBy (p => p.Name).ToArray ()); + List<CategoryContainer> categories = new List<CategoryContainer> (); + + foreach (IGrouping<string,PropertyContainer> ig in props.OrderBy (p => p.Name).GroupBy(pc=>pc.DesignCategory)) { + categories.Add(new CategoryContainer(ig.Key, ig.ToArray())); + } + categoryContainersCache.Add (it.FullName, categories); + } + + + Data = categoryContainersCache[it.FullName]; + + if (lastInst != instance) { + foreach (CategoryContainer cc in categoryContainersCache [it.FullName]) { + foreach (PropertyContainer pc in cc.Properties) { + pc.NotifyValueChanged ("Value", pc.Value); + pc.NotifyValueChanged ("LabForeground", pc.LabForeground); + } + } + } + } + } + public ImlProjectItem ProjectNode { + get { return projFile; } + set { + if (projFile == value) + return; + +// if (projFile != null) +// projFile.UnregisterEditor (this); + + projFile = value; + +// if (projFile != null) +// projFile.RegisterEditor (this); + + NotifyValueChanged ("ProjectNode", projFile); + } + } + +// public void updateSource () { +// if (projFile == null) +// return; +// projFile.UpdateSource (this, (Instance as GraphicObject).GetIML ()); +// } + +// public override void Paint (ref Context ctx) +// { +// base.Paint (ref ctx); +// +// if (SelectedIndex < 0) +// return; +// +// Rectangle r = Parent.ContextCoordinates(Items [SelectedIndex].Slot); +// ctx.SetSourceRGB (0, 0, 1); +// ctx.Rectangle (r); +// ctx.LineWidth = 2; +// ctx.Stroke (); +// } + + } +} diff --git a/Samples/CrowIDE/src/MemberView/PropertyContainer.cs b/Samples/CrowIDE/src/MemberView/PropertyContainer.cs new file mode 100644 index 00000000..4d043ab4 --- /dev/null +++ b/Samples/CrowIDE/src/MemberView/PropertyContainer.cs @@ -0,0 +1,222 @@ +// +// PropertyContainer.cs +// +// Author: +// Jean-Philippe Bruyère <jp_bruyere@hotmail.com> +// +// Copyright (c) 2013-2017 Jean-Philippe Bruyère +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. +using System; +using System.Reflection; +using System.Linq; +using System.Collections.Generic; +using System.Diagnostics; +using System.ComponentModel; + +namespace Crow.Coding +{ + public class PropertyContainer : IValueChange + { + #region IValueChange implementation + public event EventHandler<ValueChangeEventArgs> ValueChanged; + public virtual void NotifyValueChanged(string MemberName, object _value) + { + ValueChanged.Raise(this, new ValueChangeEventArgs(MemberName, _value)); + } + #endregion + + PropertyInfo pi; + MembersView mview; + Command cmdReset, cmdGoToStyle; + + public List<Crow.Command> Commands; + + #region CTOR + public PropertyContainer(MembersView mv, PropertyInfo prop){ + mview = mv; + pi = prop; + + cmdReset = new Crow.Command (new Action (() => Reset ())) { Caption = "Reset to default" }; + cmdGoToStyle = new Crow.Command (new Action (() => GotoStyle ())) { Caption = "Goto style" }; + + Commands = new List<Crow.Command> (new Crow.Command[] { cmdReset, cmdGoToStyle }); + } + #endregion + + public string DesignCategory { + get { + DesignCategory dca = (DesignCategory)pi.GetCustomAttribute (typeof(DesignCategory)); + return dca == null ? "Divers" : dca.Name; + } + } + public string Name { get { return pi.Name; }} + public object Value { + get { + return mview.ProjectNode?.SelectedItem == null ? null : pi.GetValue(mview.ProjectNode.SelectedItem); + } + set { + try { + if (value == Value) + return; + Widget g = Instance; + string valstr = null, oldval = null; + + if (value != null) + valstr = value.ToString(); + + if (HasStyling) + oldval = g.design_style_values[Name]; + else if (HasDefaultValue) + oldval = DefaultValue?.ToString(); + else if (IsSetByIML) + oldval = g.design_iml_values [Name]; + + if (valstr == oldval){ + if (IsSetByIML){ + g.design_iml_values.Remove(Name); + Debug.WriteLine("iml attrib removed {0}.{1}", g.Name, Name); + }else + return; + }else{ + if (IsSetByIML){ + g.design_iml_values [Name] = valstr; + Debug.WriteLine("iml update {0}.{1} = {2}", g.Name, Name, valstr); + }else{ + g.design_iml_values.Add(Name,valstr); + Debug.WriteLine("iml add {0}.{1} = {2}", g.Name, Name, valstr); + } + } + + if (!pi.PropertyType.IsAssignableFrom(value.GetType()) && pi.PropertyType != typeof(string)){ + if (pi.PropertyType.IsEnum) { + if (value is string) { + pi.SetValue (g, Enum.Parse (pi.PropertyType, (string)value)); + }else + pi.SetValue (g, value); + } else { + MethodInfo me = pi.PropertyType.GetMethod + ("Parse", BindingFlags.Static | BindingFlags.Public, + System.Type.DefaultBinder, new Type [] {typeof (string)},null); + pi.SetValue (g, me.Invoke (null, new object[] { value }), null); + } + }else + pi.SetValue(g, value); + + Debug.WriteLine("\t\tPropContainer set design_dirty to instance"); + + mview.ProjectNode.Instance.design_HasChanged = true; + NotifyValueChanged ("Value", value); + NotifyValueChanged ("LabForeground", LabForeground); + } catch (Exception ex) { + Debug.WriteLine ("Error setting property:"+ ex.ToString()); + } + // + } + } + /// <summary> + /// for style attribute which is a string, return Style as type + /// </summary> + public string Type { get { return pi.PropertyType.IsEnum ? + "System.Enum" + : pi.Name == "Style" ? "Style" : pi.PropertyType.FullName; }} + + public object[] Choices { + get { + return pi.PropertyType.IsEnum ? + Enum.GetValues (pi.PropertyType).Cast<object>().ToArray() : + mview.ProjectNode.Project.solution.AvailaibleStyles; + } + } + /// <summary> + /// Current graphicobject instance + /// </summary> + public Widget Instance { + get { return mview.ProjectNode.SelectedItem as Widget; } + } + public object DefaultValue { + get { return ((DefaultValueAttribute)(pi.GetCustomAttribute (typeof (DefaultValueAttribute)))).Value; } + } + public bool HasDefaultValue { + get { return pi.GetCustomAttribute (typeof(DefaultValueAttribute))!=null; } + } + /// <summary> + /// return true if current value comes from IML attributes + /// </summary> + public bool IsSetByIML { + get { return Instance.design_iml_values.ContainsKey (Name); } + } + /// <summary> + /// return true if member default value comes from style + /// </summary> + public bool HasStyling { + get { return Instance.design_style_locations.ContainsKey(Name); } + } + /// <summary> + /// Return true if current value comes from styling + /// </summary> + public bool IsSetByStyling { + get { return IsSetByIML ? false : HasStyling; } + } + + + public Fill LabForeground { + get { return IsSetByIML ? Color.DarkBlue : HasStyling ? Color.Black : Color.Grey;} + } + + /// <summary> + /// reset to default value + /// </summary> + public void Reset () { + Widget inst = mview.ProjectNode.SelectedItem as Widget; + if (!inst.design_iml_values.ContainsKey (Name)) + return; + inst.design_iml_values.Remove (Name); + + NotifyValueChanged ("LabForeground", LabForeground); + mview.ProjectNode.UpdateSource(this, mview.ProjectNode.Instance.GetIML()); + //mview.ProjectNode.Instance.design_HasChanged = true; + //should reinstantiate to get default + } + public void GotoStyle(){ + Widget g = Instance; + if (!g.design_style_locations.ContainsKey (Name)) + return; + FileLocation fl = g.design_style_locations [Name]; + ProjectFile pf; + if (!mview.ProjectNode.Project.TryGetProjectFileFromPath ("#" + fl.FilePath, out pf)) + return; + + if (!pf.IsOpened) + pf.Open (); + + pf.CurrentLine = fl.Line; + pf.CurrentColumn = fl.Column; + + pf.IsSelected = true; + + } + + public override string ToString () + { + return string.Format ("{0} = {1}", Name, Value); + } + } +} + diff --git a/Samples/CrowIDE/src/Project.cs b/Samples/CrowIDE/src/Project.cs new file mode 100644 index 00000000..a3ffa636 --- /dev/null +++ b/Samples/CrowIDE/src/Project.cs @@ -0,0 +1,519 @@ +// +// Project.cs +// +// Author: +// jp <> +// +// Copyright (c) 2013-2017 Jean-Philippe Bruyère +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. +using System; +using System.Xml; +using System.IO; +using System.Collections.Generic; +using System.Linq; +using Microsoft.CSharp; +using System.CodeDom.Compiler; +using Crow; +using System.Text.RegularExpressions; + +namespace Crow.Coding { + public class Project : IValueChange { + #region IValueChange implementation + public event EventHandler<ValueChangeEventArgs> ValueChanged; + public virtual void NotifyValueChanged (string MemberName, object _value) { + ValueChanged.Raise (this, new ValueChangeEventArgs (MemberName, _value)); + } + #endregion + + bool isLoaded = false; + bool isExpanded; + XmlDocument xmlDoc; + XmlNode nodeProject; + XmlNode nodeProps; + XmlNodeList nodesItems; + SolutionProject solutionProject; + Crow.Command cmdSave, cmdOpen, cmdCompile, cmdSetAsStartProj, cmdNewFile; + + #region CTOR + public Project (Solution sol, SolutionProject sp) { + solutionProject = sp; + + solution = sol; + + cmdSave = new Crow.Command (new Action (() => Save ())) { Caption = "Save", Icon = new SvgPicture ("#CrowIDE.icons.save.svg"), CanExecute = true }; + cmdOpen = new Crow.Command (new Action (() => Load ())) { Caption = "Open", Icon = new SvgPicture ("#CrowIDE.icons.open.svg"), CanExecute = false }; + cmdCompile = new Crow.Command (new Action (() => Compile ())) { + Caption = "Compile", + Icon = "#CrowIDE.icons.compile.svg" + }; + cmdSetAsStartProj = new Crow.Command (new Action (() => setAsStartupProject ())) { + Caption = "Set as Startup Project" + }; + cmdNewFile = new Crow.Command (new Action (() => AddNewFile ())) { + Caption = "Add New File", + Icon = new SvgPicture ("#CrowIDE.icons.blank-file.svg"), + CanExecute = true + }; + + Commands = new List<Crow.Command> (new Crow.Command[] { cmdOpen, cmdSave, cmdSetAsStartProj, cmdCompile, cmdNewFile }); + + Load (); + } + #endregion + + public Solution solution; + public List<Crow.Command> Commands; + public CompilerResults CompilationResults; + public List<Project> dependantProjects = new List<Project> (); + public Project ParentProject = null; + List<ProjectNode> rootItems; + List<ProjectNode> flattenNodes; + + public string Name { + get { return solutionProject.ProjectName; } + } + public bool IsLoaded { + get { return isLoaded; } + set { + if (isLoaded == value) + return; + isLoaded = value; + NotifyValueChanged ("IsLoaded", isLoaded); + } + } + public bool IsExpanded { + get { return isExpanded; } + set { + if (value == isExpanded) + return; + isExpanded = value; + NotifyValueChanged ("IsExpanded", isExpanded); + } + } + public bool IsStartupProject { + get { return solution.StartupProject == this; } + } + public string Path { + get { return System.IO.Path.Combine (solution.SolutionFolder, solutionProject.RelativePath.Replace ('\\', '/')); } + } + public string RootDir { + get { return System.IO.Path.GetDirectoryName (Path); } + } + + + + public List<ProjectNode> RootItems { + get { return rootItems; } + } + + void buildTreeNodes () { + ProjectNode root = new ProjectNode (this, ItemType.VirtualGroup, RootNamespace); + List<ProjectItem> items = new List<ProjectItem> (); + foreach (XmlNode i in nodesItems) { + foreach (XmlNode f in i.ChildNodes) { + items.Add (new ProjectItem (this, f)); + } + } + + flattenNodes = new List<ProjectNode> (); + + ProjectNode refs = new ProjectNode (this, ItemType.ReferenceGroup, "References"); + root.AddChild (refs); + + foreach (ProjectItem pn in items) { + switch (pn.Type) { + case ItemType.Reference: + refs.AddChild (pn); + flattenNodes.Add (pn); + break; + case ItemType.ProjectReference: + ProjectReference pr = new ProjectReference (pn); + refs.AddChild (pr); + flattenNodes.Add (pr); + break; + case ItemType.Compile: + case ItemType.None: + case ItemType.EmbeddedResource: + ProjectNode curNode = root; + string[] folds = pn.Path.Split ('/'); + for (int i = 0; i < folds.Length - 1; i++) { + ProjectNode nextNode = curNode.ChildNodes.FirstOrDefault (n => n.DisplayName == folds[i] && n.Type == ItemType.VirtualGroup); + if (nextNode == null) { + nextNode = new ProjectNode (this, ItemType.VirtualGroup, folds[i]); + curNode.AddChild (nextNode); + } + curNode = nextNode; + } + ProjectNode f = null; + switch (pn.Extension) { + /*case ".cs": + f = new CSProjectFile (pn); + break;*/ + case ".crow": + case ".template": + case ".goml": + case ".itemp": + case ".imtl": + f = new ImlProjectItem (pn); + break; + case ".style": + f = new StyleProjectItem (pn); + break; + default: + f = new ProjectFile (pn); + break; + } + curNode.AddChild (f); + flattenNodes.Add (f); + break; + } + } + root.SortChilds (); + + rootItems = root.ChildNodes; + } + + #region Project properties + public string ToolsVersion { + get { return nodeProject?.Attributes["ToolsVersion"]?.Value; } + } + public string DefaultTargets { + get { return nodeProject?.Attributes["DefaultTargets"]?.Value; } + } + public string ProjectGuid { + get { return solutionProject.ProjectGuid; } + } + public string AssemblyName { + get { return nodeProps["AssemblyName"]?.InnerText; } + } + public string OutputType { + get { return nodeProps["OutputType"]?.InnerText; } + } + public string RootNamespace { + get { return nodeProps["RootNamespace"]?.InnerText; } + } + public bool AllowUnsafeBlocks { + get { + return nodeProps["AllowUnsafeBlocks"] == null ? false : + bool.Parse (nodeProps["AllowUnsafeBlocks"]?.InnerText); + } + } + public bool NoStdLib { + get { + return nodeProps["NoStdLib"] == null ? false : + bool.Parse (nodeProps["NoStdLib"]?.InnerText); + } + } + public bool TreatWarningsAsErrors { + get { + return nodeProps["TreatWarningsAsErrors"] == null ? false : + bool.Parse (nodeProps["TreatWarningsAsErrors"]?.InnerText); + } + } + public bool SignAssembly { + get { return bool.Parse (nodeProps["SignAssembly"]?.InnerText); } + } + public string TargetFrameworkVersion { + get { return nodeProps["TargetFrameworkVersion"]?.InnerText; } + } + public string Description { + get { return nodeProps["Description"]?.InnerText; } + } + public string OutputPath { + get { return nodeProps["OutputPath"]?.InnerText; } + } + public string IntermediateOutputPath { + get { return nodeProps["IntermediateOutputPath"]?.InnerText; } + } + public string StartupObject { + get { return nodeProps["StartupObject"]?.InnerText; } + } + public bool DebugSymbols { + get { return nodeProps["DebugSymbols"] == null ? false : bool.Parse (nodeProps["DebugSymbols"]?.InnerText); } + } + public int WarningLevel { + get { return nodeProps["WarningLevel"] == null ? 0 : int.Parse (nodeProps["WarningLevel"]?.InnerText); } + } + + #endregion + + + public void AddNewFile () { + Window.Show (CrowIDE.MainIFace, "#CrowIDE.ui.NewFile.crow", true).DataSource = this; + } + + public void Load () { + + xmlDoc = new XmlDocument (); + using (Stream ins = new FileStream (this.Path, FileMode.Open)) { + xmlDoc.Load (new XmlTextReader (ins) { Namespaces = false }); + } + + nodeProject = xmlDoc.SelectSingleNode ("Project"); + XmlNodeList nodesProps = xmlDoc.SelectNodes ("/Project/PropertyGroup"); + + foreach (XmlNode n in nodesProps) { + if (n.Attributes["Condition"] == null) + nodeProps = n; + } + nodesItems = xmlDoc.SelectNodes ("/Project/ItemGroup"); + + if (ProjectGuid != solutionProject.ProjectGuid) + throw new Exception ("Project GUID not matching with solution"); + + buildTreeNodes (); + + IsLoaded = true; + } + + public void Save () { + + } + + void setAsStartupProject () { + solution.StartupProject = this; + } + static Regex regexDirTokens = new Regex (@"\$\(([^\)]*)\)|([^\$]*)"); + + string getDirectoryWithTokens (string dir) { + Match m = regexDirTokens.Match (dir); + string tmp = ""; + while (m.Success) { + if (m.Value == @"$(SolutionDir)") + tmp = System.IO.Path.Combine (tmp, solution.SolutionFolder); + else if (m.Value == @"$(Configuration)") + tmp = System.IO.Path.Combine (tmp, "Debug"); + else + tmp = System.IO.Path.Combine (tmp, m.Value); + + if (tmp.EndsWith (@"\") || tmp.EndsWith (@"/")) + tmp = tmp.Remove (tmp.Length - 1); + + m = m.NextMatch (); + } + return tmp; + } + public string Compile () { + if (ParentProject != null) + ParentProject.Compile (); + + CSharpCodeProvider cp = new CSharpCodeProvider (); + CompilerParameters parameters = new CompilerParameters (); + + foreach (ProjectReference pr in flattenNodes.OfType<ProjectReference> ()) { + Project p = solution.Projects.FirstOrDefault (pp => pp.ProjectGuid == pr.ProjectGUID); + if (p == null) + throw new Exception ("referenced project not found"); + parameters.ReferencedAssemblies.Add (p.Compile ()); + } + + string outputDir = getDirectoryWithTokens (this.OutputPath); + string objDir = getDirectoryWithTokens (this.IntermediateOutputPath); + + Directory.CreateDirectory (outputDir); + Directory.CreateDirectory (objDir); + + parameters.OutputAssembly = System.IO.Path.Combine (outputDir, this.AssemblyName); + + // True - exe file generation, false - dll file generation + if (this.OutputType == "Library") { + parameters.GenerateExecutable = false; + parameters.CompilerOptions += " /target:library"; + parameters.OutputAssembly += ".dll"; + } else { + parameters.GenerateExecutable = true; + parameters.CompilerOptions += " /target:exe"; + parameters.OutputAssembly += ".exe"; + parameters.MainClass = this.StartupObject; + } + + parameters.GenerateInMemory = false; + parameters.IncludeDebugInformation = this.DebugSymbols; + parameters.TreatWarningsAsErrors = this.TreatWarningsAsErrors; + parameters.WarningLevel = this.WarningLevel; + parameters.CompilerOptions += " /noconfig"; + if (this.AllowUnsafeBlocks) + parameters.CompilerOptions += " /unsafe"; + parameters.CompilerOptions += " /delaysign+"; + parameters.CompilerOptions += " /debug:full /debug+"; + parameters.CompilerOptions += " /optimize-"; + parameters.CompilerOptions += " /define:\"DEBUG;TRACE\""; + parameters.CompilerOptions += " /nostdlib"; + + + + foreach (ProjectItem pi in flattenNodes.Where (p => p.Type == ItemType.Reference)) { + + if (string.IsNullOrEmpty (pi.HintPath)) { + parameters.CompilerOptions += " /reference:/usr/lib/mono/4.5/" + pi.Path + ".dll"; + continue; + } + parameters.ReferencedAssemblies.Add (pi.Path); + string fullHintPath = System.IO.Path.GetFullPath (System.IO.Path.Combine (RootDir, pi.HintPath.Replace ('\\', '/'))); + if (File.Exists (fullHintPath)) { + string outPath = System.IO.Path.Combine (outputDir, System.IO.Path.GetFileName (fullHintPath)); + if (!File.Exists (outPath)) + File.Copy (fullHintPath, outPath); + } + } + parameters.CompilerOptions += " /reference:/usr/lib/mono/4.5/System.Core.dll"; + parameters.CompilerOptions += " /reference:/usr/lib/mono/4.5/mscorlib.dll"; + //parameters.ReferencedAssemblies.Add ("System.Core"); + //parameters.ReferencedAssemblies.Add ("mscorlib.dll"); + + + IEnumerable<ProjectFile> pfs = flattenNodes.OfType<ProjectFile> (); + + foreach (ProjectFile pi in pfs.Where (p => p.Type == ItemType.EmbeddedResource)) { + + string absPath = pi.AbsolutePath; + string logicName = pi.LogicalName; + if (string.IsNullOrEmpty (logicName)) + parameters.CompilerOptions += string.Format (" /resource:{0},{1}", absPath, this.Name + "." + pi.Path.Replace ('/', '.')); + else + parameters.CompilerOptions += string.Format (" /resource:{0},{1}", absPath, logicName); + } + foreach (ProjectFile pi in pfs.Where (p => p.Type == ItemType.None)) { + if (pi.CopyToOutputDirectory == CopyToOutputState.Never) + continue; + string source = pi.AbsolutePath; + string target = System.IO.Path.Combine (outputDir, pi.Path); + Directory.CreateDirectory (System.IO.Path.GetDirectoryName (target)); + + if (File.Exists (target)) { + if (pi.CopyToOutputDirectory == CopyToOutputState.PreserveNewest) { + if (DateTime.Compare ( + System.IO.File.GetLastWriteTime (source), + System.IO.File.GetLastWriteTime (target)) < 0) + continue; + } + File.Delete (target); + } + System.Diagnostics.Debug.WriteLine ("copy " + source + " to " + target); + File.Copy (source, target); + } + string[] files = pfs.Where (p => p.Type == ItemType.Compile).Select (p => p.AbsolutePath).ToArray (); + + System.Diagnostics.Debug.WriteLine ("---- start compilation of :" + parameters.OutputAssembly); + System.Diagnostics.Debug.WriteLine (parameters.CompilerOptions); + + CompilationResults = cp.CompileAssemblyFromFile (parameters, files); + + solution.UpdateErrorList (); + + return parameters.OutputAssembly; + } + + public bool TryGetProjectFileFromAbsolutePath (string absolutePath, out ProjectFile pi) { + pi = flattenNodes.OfType<ProjectFile> ().FirstOrDefault + (pp => pp.AbsolutePath == absolutePath); + return pi != null; + } + public bool TryGetProjectFileFromPath (string path, out ProjectFile pi) { + if (path.StartsWith ("#", StringComparison.Ordinal)) + pi = flattenNodes.OfType<ProjectFile> ().FirstOrDefault + (pp => pp.Type == ItemType.EmbeddedResource && pp.ResourceID == path.Substring (1)); + else + pi = flattenNodes.OfType<ProjectFile> ().FirstOrDefault (pp => pp.Path == path); + + if (pi != null) + return true; + + foreach (ProjectReference pr in flattenNodes.OfType<ProjectReference> ()) { + Project p = solution.Projects.FirstOrDefault (pp => pp.ProjectGuid == pr.ProjectGUID); + if (p == null) + throw new Exception ("referenced project not found"); + if (p.TryGetProjectFileFromPath (path, out pi)) + return true; + } + //TODO: search referenced assemblies + return false; + } + + public void GetDefaultTemplates () { + IEnumerable<ProjectFile> tmpFiles = + flattenNodes.OfType<ProjectFile> ().Where (pp => pp.Extension == ".template"); + + foreach (ProjectFile pi in tmpFiles.Where ( + pp => pp.Type == ItemType.None && pp.CopyToOutputDirectory != CopyToOutputState.Never)) { + + string clsName = System.IO.Path.GetFileNameWithoutExtension (pi.Path); + if (solution.DefaultTemplates.ContainsKey (clsName)) + continue; + solution.DefaultTemplates[clsName] = pi.AbsolutePath; + } + foreach (ProjectFile pi in tmpFiles.Where (pp => pp.Type == ItemType.EmbeddedResource)) { + string resId = pi.ResourceID; + string clsName = resId.Substring (0, resId.Length - 9); + if (solution.DefaultTemplates.ContainsKey (clsName)) + continue; + solution.DefaultTemplates[clsName] = pi.Path; + } + + foreach (Project p in ReferencedProjects) + p.GetDefaultTemplates (); + } + // void searchTemplatesIn(Assembly assembly){ + // if (assembly == null) + // return; + // foreach (string resId in assembly + // .GetManifestResourceNames () + // .Where (r => r.EndsWith (".template", StringComparison.OrdinalIgnoreCase))) { + // string clsName = resId.Substring (0, resId.Length - 9); + // if (DefaultTemplates.ContainsKey (clsName)) + // continue; + // DefaultTemplates[clsName] = "#" + resId; + // } + // } + + public List<Project> ReferencedProjects { + get { + List<Project> tmp = new List<Project> (); + foreach (ProjectReference pr in flattenNodes.OfType<ProjectReference> ()) { + Project p = solution.Projects.FirstOrDefault (pp => pp.ProjectGuid == pr.ProjectGUID); + if (p != null) + tmp.Add (p); + } + return tmp; + } + } + + public void GetStyling () { + try { + foreach (ProjectFile pi in flattenNodes.OfType<ProjectFile> ().Where (pp => pp.Type == ItemType.EmbeddedResource && pp.Extension == ".style")) { + using (Stream s = new MemoryStream (System.Text.Encoding.UTF8.GetBytes (pi.Source))) { + new StyleReader (solution.Styling, s, pi.ResourceID); + } + } + } catch (Exception ex) { + Console.WriteLine (ex.ToString ()); + } + foreach (ProjectReference pr in flattenNodes.OfType<ProjectReference> ()) { + Project p = solution.Projects.FirstOrDefault (pp => pp.ProjectGuid == pr.ProjectGUID); + if (p == null) + throw new Exception ("referenced project not found"); + p.GetStyling (); + } + + //TODO:get styling from referenced assemblies + } + } +} + diff --git a/Samples/CrowIDE/src/ProjectTree/CSProjectFile.cs b/Samples/CrowIDE/src/ProjectTree/CSProjectFile.cs new file mode 100644 index 00000000..586e2261 --- /dev/null +++ b/Samples/CrowIDE/src/ProjectTree/CSProjectFile.cs @@ -0,0 +1,72 @@ +// +// ProjectNodes.cs +// +// Author: +// Jean-Philippe Bruyère <jp_bruyere@hotmail.com> +// +// Copyright (c) 2013-2017 Jean-Philippe Bruyère +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. +using System; +using Microsoft.CodeAnalysis; +using Microsoft.CodeAnalysis.CSharp; +using Microsoft.CodeAnalysis.CSharp.Syntax; + +namespace Crow.Coding +{ + public class CSProjectFile : ProjectFile + { + CSharpSyntaxTree tree; + + + #region CTOR + public CSProjectFile (ProjectItem pi) : base (pi){ + } + #endregion + + public override void UpdateSource(object sender, string newSrc) + { + base.UpdateSource(sender, newSrc); + + tree = (CSharpSyntaxTree)CSharpSyntaxTree.ParseText (Source, CSharpParseOptions.Default); + } + + public override void Open () { + base.Open (); + + tree = (CSharpSyntaxTree)CSharpSyntaxTree.ParseText (Source, CSharpParseOptions.Default); + + CompilationUnitSyntax root = (CompilationUnitSyntax)tree.GetRoot (); + MemberDeclarationSyntax firstMember = root.Members [0]; + + Console.WriteLine ( firstMember.GetType().FullName); + + SyntaxToken tok = root.GetFirstToken(); + + while (tok.Value != null) { + Console.Write (tok.Text); + tok = tok.GetNextToken (true,true); + } + Console.Out.Flush (); + } + + + } +} + diff --git a/Samples/CrowIDE/src/ProjectTree/ImlProjectItem.cs b/Samples/CrowIDE/src/ProjectTree/ImlProjectItem.cs new file mode 100644 index 00000000..8487f838 --- /dev/null +++ b/Samples/CrowIDE/src/ProjectTree/ImlProjectItem.cs @@ -0,0 +1,89 @@ +// +// ProjectNodes.cs +// +// Author: +// Jean-Philippe Bruyère <jp_bruyere@hotmail.com> +// +// Copyright (c) 2013-2017 Jean-Philippe Bruyère +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. +using System; +using System.Collections.Generic; +using System.Linq; +using System.Xml; +using System.IO; +using Crow; +using System.Threading; + +namespace Crow.Coding +{ + public class ImlProjectItem : ProjectFile + { + #region CTOR + public ImlProjectItem (ProjectItem pi) : base (pi){ + } + #endregion + + Widget instance; + Measure designWidth, designHeight; + + /// <summary> + /// instance created with an instantiator from the source by a DesignInterface, + /// for now, the one in ImlVisualEditor + /// </summary> + public Widget Instance { + get { return instance; } + set { + if (instance == value) + return; + instance = value; + NotifyValueChanged ("Instance", instance); + } + } + + public Measure DesignWidth { + get { return designWidth; } + set { + if (designWidth == value) + return; + designWidth = value; + NotifyValueChanged ("DesignWidth", designWidth); + } + } + public Measure DesignHeight { + get { return designHeight; } + set { + if (designHeight == value) + return; + designHeight = value; + NotifyValueChanged ("DesignHeight", designHeight); + } + } + + + public List<Widget> GraphicTree { + get { return new List<Widget> (new Widget[] {instance}); } + } + + void GTView_SelectedItemChanged (object sender, SelectionChangeEventArgs e){ + SelectedItem = e.NewValue; + } + } +} + diff --git a/Samples/CrowIDE/src/ProjectTree/ProjectFile.cs b/Samples/CrowIDE/src/ProjectTree/ProjectFile.cs new file mode 100644 index 00000000..294a28f5 --- /dev/null +++ b/Samples/CrowIDE/src/ProjectTree/ProjectFile.cs @@ -0,0 +1,323 @@ +// +// ProjectNodes.cs +// +// Author: +// Jean-Philippe Bruyère <jp_bruyere@hotmail.com> +// +// Copyright (c) 2013-2017 Jean-Philippe Bruyère +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Threading; +using System.Xml; + +namespace Crow.Coding { + public class ProjectFile : ProjectItem { + bool isOpened = false; + DateTime accessTime; + string source; + string origSource; + object selectedItem; + int curLine, curColumn; + + internal ReaderWriterLockSlim srcEditMtx = new ReaderWriterLockSlim(); + + public Dictionary<object, bool> RegisteredEditors = new Dictionary<object, bool>(); + List<String> undoStack = new List<string>(); + List<String> redoStack = new List<string>(); + + public Crow.Command cmdSave, cmdSaveAs, cmdOpen, cmdClose, cmdUndo, cmdRedo; + + void initCommands (){ + cmdSave = new Crow.Command (new Action (() => Save ())) + { Caption = "Save", Icon = new SvgPicture ("#CrowIDE.icons.save.svg"), CanExecute = false }; + cmdSaveAs = new Crow.Command (new Action (() => SaveAs ())) + { Caption = "Save As ..", Icon = new SvgPicture ("#CrowIDE.icons.save.svg"), CanExecute = false }; + cmdOpen = new Crow.Command (new Action (() => Open ())) + { Caption = "Open", Icon = new SvgPicture ("#CrowIDE.icons.open.svg"), CanExecute = true }; + cmdClose = new Crow.Command (new Action (() => OnQueryClose (this,null))) + { Caption = "Close", Icon = new SvgPicture ("#CrowIDE.icons.open.svg"), CanExecute = false }; + cmdUndo = new Crow.Command (new Action (() => Undo (null))) + { Caption = "Undo", Icon = new SvgPicture ("#CrowIDE.icons.undo.svg"), CanExecute = false }; + cmdRedo = new Crow.Command (new Action (() => Redo (null))) + { Caption = "Redo", Icon = new SvgPicture ("#CrowIDE.icons.redo.svg"), CanExecute = false }; + + Commands.Insert (0, cmdOpen); + Commands.Insert (1, cmdSave); + Commands.Insert (2, cmdSaveAs); + Commands.Insert (3, cmdUndo); + Commands.Insert (4, cmdRedo); + Commands.Add (cmdClose); + } + public ProjectFile () { + initCommands(); + } + public ProjectFile (ProjectItem pi) + : base (pi.Project, pi.node) { + initCommands (); + } + + public string ResourceID { + get { + return Type != ItemType.EmbeddedResource ? null : + node.SelectSingleNode ("LogicalName") == null ? + Project.Name + "." + Path.Replace ('/', '.') : + LogicalName; + } + } + public string LogicalName { + get { + return node.SelectSingleNode ("LogicalName")?.InnerText; + } + } + public bool IsOpened { + get { return isOpened; } + set { + if (isOpened == value) + return; + isOpened = value; + + cmdOpen.CanExecute = !isOpened; + cmdClose.CanExecute = isOpened; + cmdSave.CanExecute = isOpened && IsDirty; + + if (isOpened) + Project.solution.OpenItem (this); + else + Project.solution.CloseItem (this); + + NotifyValueChanged ("IsOpened", isOpened); + } + } + + public void UnregisterEditor (object editor){ + lock(RegisteredEditors){ + RegisteredEditors.Remove (editor); + } + } + public void RegisterEditor (object editor) { + lock(RegisteredEditors){ + RegisteredEditors.Add (editor, false); + } + } + public virtual void UpdateSource (object sender, string newSrc){ + System.Diagnostics.Debug.WriteLine ("update source by {0}", sender); + Source = newSrc; + signalOtherRegisteredEditors (sender); + } + public void SignalEditorOfType<T> (){ + lock (RegisteredEditors) { + object[] keys = RegisteredEditors.Keys.ToArray (); + foreach (object ed in keys) { + T editor = (T)ed; + if (editor == null) + continue; + RegisteredEditors [editor] = false; + break; + } + } + } + protected void signalOtherRegisteredEditors (object sender) { + lock (RegisteredEditors) { + object[] keys = RegisteredEditors.Keys.ToArray (); + foreach (object editor in keys) { + if (editor != sender) + RegisteredEditors [editor] = false; + } + } + } + public string Source { + get { + if (!IsOpened) { + using (StreamReader sr = new StreamReader (AbsolutePath)) + source = sr.ReadToEnd (); + + } else { + if (DateTime.Compare ( + accessTime, + System.IO.File.GetLastWriteTime (AbsolutePath)) < 0) + Console.WriteLine ("File has been modified outside CrowIDE"); + } + return source; + } + set { + if (source == value) + return; + + srcEditMtx.EnterWriteLock (); + + undoStack.Add (source); + cmdUndo.CanExecute = true; + redoStack.Clear (); + cmdRedo.CanExecute = false; + source = value; + + NotifyValueChanged ("Source", source); + NotifyValueChanged ("IsDirty", IsDirty); + + cmdSave.CanExecute = cmdSaveAs.CanExecute = IsDirty; + + srcEditMtx.ExitWriteLock (); + } + } + public bool IsDirty { + get { return source != origSource; } + } + public int CurrentColumn{ + get { return curColumn; } + set { + if (curColumn == value) + return; + curColumn = value; + NotifyValueChanged ("CurrentColumn", curColumn); + } + } + public int CurrentLine{ + get { return curLine; } + set { + if (curLine == value) + return; + curLine = value; + NotifyValueChanged ("CurrentLine", curLine); + } + } + + public object SelectedItem { + get { return selectedItem; } + set { + if (selectedItem == value) + return; + selectedItem= value; + Project.solution.SelectedItemElement = value; + NotifyValueChanged ("SelectedItem", selectedItem); + } + } + + public CopyToOutputState CopyToOutputDirectory { + get { + XmlNode xn = node.SelectSingleNode ("CopyToOutputDirectory"); + return xn == null ? CopyToOutputState.Never : + (CopyToOutputState)Enum.Parse (typeof(CopyToOutputState), xn.InnerText, true); + } + } + + public virtual void Open () { + accessTime = System.IO.File.GetLastWriteTime (AbsolutePath); + using (StreamReader sr = new StreamReader (AbsolutePath)) { + source = sr.ReadToEnd (); + } + origSource = source; + IsOpened = true; + NotifyValueChanged ("IsDirty", false); + } + public virtual void Save () { + if (!IsDirty) + return; + using (StreamWriter sw = new StreamWriter (AbsolutePath)) { + sw.Write (source); + } + origSource = source; + NotifyValueChanged ("IsDirty", false); + } + public virtual void SaveAs () { + if (!IsDirty) + return; + using (StreamWriter sw = new StreamWriter (AbsolutePath)) { + sw.Write (source); + } + origSource = source; + NotifyValueChanged ("IsDirty", false); + } + public void Close () { + origSource = source = null; + IsOpened = false; + } + public void Undo(object sender){ + undo(); + signalOtherRegisteredEditors (sender); + } + public void Redo(object sender){ + redo(); + signalOtherRegisteredEditors (sender); + } + + void undo () { + if (undoStack.Count == 0) + return; + + srcEditMtx.EnterWriteLock (); + string step = undoStack [undoStack.Count -1]; + redoStack.Add (source); + cmdRedo.CanExecute = true; + undoStack.RemoveAt(undoStack.Count -1); + + source = step; + + NotifyValueChanged ("Source", source); + NotifyValueChanged ("IsDirty", IsDirty); + cmdSave.CanExecute = IsDirty; + + if (undoStack.Count == 0) + cmdUndo.CanExecute = false; + srcEditMtx.ExitWriteLock (); + } + + void redo () { + if (redoStack.Count == 0) + return; + srcEditMtx.EnterWriteLock (); + string step = redoStack [redoStack.Count -1]; + undoStack.Add (source); + cmdUndo.CanExecute = true; + redoStack.RemoveAt(redoStack.Count -1); + source = step; + NotifyValueChanged ("Source", source); + NotifyValueChanged ("IsDirty", IsDirty); + cmdSave.CanExecute = IsDirty; + + if (redoStack.Count == 0) + cmdRedo.CanExecute = false; + srcEditMtx.ExitWriteLock (); + + } + + public void onDoubleClick (object sender, MouseButtonEventArgs e){ + if (IsOpened) + return; + Open (); + } + + public void onClick (object sender, MouseButtonEventArgs e){ + IsSelected = true; + } + public void OnQueryClose (object sender, EventArgs e){ + if (IsDirty) { + MessageBox mb = MessageBox.ShowModal (CrowIDE.MainIFace, + MessageBox.Type.YesNoCancel, $"{DisplayName} has unsaved changes.\nSave it now?"); + mb.Yes += (object _sender, EventArgs _e) => { Save (); Close (); }; + mb.No += (object _sender, EventArgs _e) => Close(); + } else + Close (); + } + } +} + diff --git a/Samples/CrowIDE/src/ProjectTree/ProjectItem.cs b/Samples/CrowIDE/src/ProjectTree/ProjectItem.cs new file mode 100644 index 00000000..afa3e3ed --- /dev/null +++ b/Samples/CrowIDE/src/ProjectTree/ProjectItem.cs @@ -0,0 +1,116 @@ +// +// ProjectNodes.cs +// +// Author: +// Jean-Philippe Bruyère <jp_bruyere@hotmail.com> +// +// Copyright (c) 2013-2017 Jean-Philippe Bruyère +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. +using System; +using System.Collections.Generic; +using System.Linq; +using System.Xml; +using System.IO; +using Crow; +using System.Threading; + +namespace Crow.Coding +{ + public class ProjectItem : ProjectNode { + #region CTOR + public ProjectItem() {} + public ProjectItem (Project project, XmlNode _node) : base (project){ + node = _node; + } + #endregion + + public XmlNode node; + + public override Picture Icon { + get { + switch (Extension) + { + case ".cs": + return new SvgPicture("#CrowIDE.icons.cs-file.svg"); + case ".crow": + return new SvgPicture("#CrowIDE.icons.xml-file.svg"); + case ".xml": + return new SvgPicture("#CrowIDE.icons.xml-file.svg"); + default: + return base.Icon; + } + } + } + + public string Extension { + get { return System.IO.Path.GetExtension (Path); } + } + public string Path { + get { + return node.Attributes["Include"]?.Value.Replace('\\','/'); + } + } + public string AbsolutePath { + get { + return System.IO.Path.Combine (Project.RootDir, Path); + } + } + public override ItemType Type { + get { + return (ItemType)Enum.Parse (typeof(ItemType), node.Name, true); + } + } + public override string DisplayName { + get { + return Type == ItemType.Reference ? + Path : + Path.Split ('/').LastOrDefault(); + } + } + public string HintPath { + get { return node.SelectSingleNode ("HintPath")?.InnerText; } + } + + public override bool IsSelected { + get { + return isSelected; + } + set { + if (value == isSelected) + return; + + isSelected = value; + + NotifyValueChanged ("IsSelected", isSelected); + + if (isSelected) { + Project.solution.SelectedItem = this; + Project.IsExpanded = true; + ProjectNode pn = Parent; + while (pn != null) { + pn.IsExpanded = true; + pn = pn.Parent; + } + } + } + } + } +} + diff --git a/Samples/CrowIDE/src/ProjectTree/ProjectNodes.cs b/Samples/CrowIDE/src/ProjectTree/ProjectNodes.cs new file mode 100644 index 00000000..bafb9cbd --- /dev/null +++ b/Samples/CrowIDE/src/ProjectTree/ProjectNodes.cs @@ -0,0 +1,159 @@ +// +// ProjectNodes.cs +// +// Author: +// Jean-Philippe Bruyère <jp_bruyere@hotmail.com> +// +// Copyright (c) 2013-2017 Jean-Philippe Bruyère +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. +using System; +using System.Collections.Generic; +using System.Linq; +using System.Xml; +using System.IO; +using Crow; +using System.Threading; + +namespace Crow.Coding +{ + public enum ItemType { + ReferenceGroup, + Reference, + ProjectReference, + VirtualGroup, + Folder, + None, + Compile, + EmbeddedResource, + } + public enum CopyToOutputState { + Never, + Always, + PreserveNewest + } + public class ProjectNode : IValueChange + { + #region IValueChange implementation + public event EventHandler<ValueChangeEventArgs> ValueChanged; + public virtual void NotifyValueChanged(string MemberName, object _value) + { + ValueChanged.Raise(this, new ValueChangeEventArgs(MemberName, _value)); + } + #endregion + + #region CTOR + public ProjectNode (Project project, ItemType _type, string _name) : this(project){ + type = _type; + name = _name; + initCommands (); + } + public ProjectNode (Project project){ + Project = project; + initCommands (); + } + public ProjectNode (){ + initCommands (); + } + #endregion + + void initCommands () { + Commands = new List<Crow.Command> (); + } + + ProjectNode parent; + bool isExpanded; + protected bool isSelected; + ItemType type; + string name; + List<ProjectNode> childNodes = new List<ProjectNode>(); + + public Project Project; + public List<Crow.Command> Commands;//list of command available for that node + + public virtual Crow.Picture Icon { + get { + switch (Type) { + case ItemType.Reference: + return new SvgPicture ("#Crow.Icons.assembly.svg"); + case ItemType.ProjectReference: + return new SvgPicture("#Crow.Icons.projectRef.svg"); + default: + return new SvgPicture("#CrowIDE.icons.blank-file.svg"); + } + } + } + public ProjectNode Parent { + get { return parent; } + set { parent = value; } + } + public virtual ItemType Type { + get { return type; } + } + public virtual string DisplayName { + get { return name; } + } + public List<ProjectNode> ChildNodes { + get { return childNodes; } + } + public void AddChild (ProjectNode pn) { + childNodes.Add(pn); + pn.Parent = this; + } + public void RemoveChild (ProjectNode pn){ + pn.Parent = null; + childNodes.Remove (pn); + } + public void SortChilds () { + foreach (ProjectNode pn in childNodes) + pn.SortChilds (); + childNodes = childNodes.OrderBy(c=>c.Type).ThenBy(cn=>cn.DisplayName).ToList(); + } + + public bool IsExpanded + { + get { return isExpanded; } + set + { + if (value == isExpanded) + return; + isExpanded = value; + NotifyValueChanged ("IsExpanded", isExpanded); + } + } + public virtual bool IsSelected + { + get { return isSelected; } + set + { + if (value == isSelected) + return; + + isSelected = value; + + NotifyValueChanged ("IsSelected", isSelected); + } + } + public override string ToString () + { + return DisplayName; + } + } +} + diff --git a/Samples/CrowIDE/src/ProjectTree/ProjectReference.cs b/Samples/CrowIDE/src/ProjectTree/ProjectReference.cs new file mode 100644 index 00000000..84870746 --- /dev/null +++ b/Samples/CrowIDE/src/ProjectTree/ProjectReference.cs @@ -0,0 +1,51 @@ +// +// ProjectNodes.cs +// +// Author: +// Jean-Philippe Bruyère <jp_bruyere@hotmail.com> +// +// Copyright (c) 2013-2017 Jean-Philippe Bruyère +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. +using System; +using System.Collections.Generic; +using System.Linq; +using System.Xml; +using System.IO; +using Crow; +using System.Threading; + +namespace Crow.Coding +{ + public class ProjectReference : ProjectItem { + public ProjectReference (ProjectItem pi) : base (pi.Project, pi.node){ + } + public string ProjectGUID { + get { + return node.SelectSingleNode ("Project")?.InnerText; + } + } + public override string DisplayName { + get { + return node.SelectSingleNode ("Name").InnerText; + } + } + } +} + diff --git a/Samples/CrowIDE/src/ProjectTree/StyleProjectItem.cs b/Samples/CrowIDE/src/ProjectTree/StyleProjectItem.cs new file mode 100644 index 00000000..1de77cd7 --- /dev/null +++ b/Samples/CrowIDE/src/ProjectTree/StyleProjectItem.cs @@ -0,0 +1,50 @@ +// +// ProjectNodes.cs +// +// Author: +// Jean-Philippe Bruyère <jp_bruyere@hotmail.com> +// +// Copyright (c) 2013-2017 Jean-Philippe Bruyère +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. +using System; +using System.Collections.Generic; +using System.Linq; +using System.Xml; +using System.IO; +using Crow; +using System.Threading; + +namespace Crow.Coding +{ + public class StyleProjectItem : ProjectFile + { + #region CTOR + public StyleProjectItem (ProjectItem pi) : base (pi){ + } + #endregion + + public override void UpdateSource (object sender, string newSrc) + { + base.UpdateSource (sender, newSrc); + Project.solution.ReloadStyling (); + } + } +} + diff --git a/Samples/CrowIDE/src/Solution.cs b/Samples/CrowIDE/src/Solution.cs new file mode 100644 index 00000000..c6b1fbc1 --- /dev/null +++ b/Samples/CrowIDE/src/Solution.cs @@ -0,0 +1,541 @@ +// +// Solution.cs +// +//code taken in project https://sourceforge.net/projects/syncproj/ +// no licence info was included, I took the liberty to modify it. +// Author: +// tarmopikaro +// 2018 Jean-Philippe Bruyère +//MIT-licenced + +using Microsoft.Win32; +using System; +using System.Collections.Generic; +using System.Diagnostics.CodeAnalysis; +using System.Globalization; +using System.IO; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Text.RegularExpressions; +using System.Xml.Serialization; +using Crow; + +namespace Crow.Coding{ + public class SolutionProject { + public string ProjectHostGuid; + public string ProjectName; + public string RelativePath; + public string ProjectGuid; + } + public class StyleItemContainer { + public object Value; + public string Name; + public StyleItemContainer(string name, object _value){ + Name = name; + Value = _value; + } + } + public class StyleContainer : IValueChange { + #region IValueChange implementation + public event EventHandler<ValueChangeEventArgs> ValueChanged; + public virtual void NotifyValueChanged(string MemberName, object _value) + { + ValueChanged.Raise(this, new ValueChangeEventArgs(MemberName, _value)); + } + #endregion + + Style style; + bool isExpanded; + + public string Name; + public List<StyleItemContainer> Items; + public bool IsExpanded + { + get { return isExpanded; } + set + { + if (value == isExpanded) + return; + isExpanded = value; + NotifyValueChanged ("IsExpanded", isExpanded); + } + } + public StyleContainer(string name, Style _style){ + Name = name; + style = _style; + + Items = new List<StyleItemContainer> (); + foreach (string k in style.Keys) { + Items.Add(new StyleItemContainer(k, style[k])); + } + } + } + + + /// <summary> +/// .sln loaded into class. +/// </summary> + public class Solution: IValueChange + { + #region IValueChange implementation + public event EventHandler<ValueChangeEventArgs> ValueChanged; + public virtual void NotifyValueChanged(string MemberName, object _value) + { + ValueChanged.Raise(this, new ValueChangeEventArgs(MemberName, _value)); + } + #endregion + + ProjectItem selectedItem = null; + object selectedItemElement = null; + ObservableList<ProjectItem> openedItems = new ObservableList<ProjectItem>(); + ObservableList<GraphicObjectDesignContainer> toolboxItems; + + public Dictionary<string, Style> Styling; + public Dictionary<string, string> DefaultTemplates; + + public List<Style> Styles { get { return Styling.Values.ToList(); }} + public List<StyleContainer> StylingContainers; + //TODO: check project dependencies if no startup proj + + public void ReloadStyling () { + Styling = new Dictionary<string, Style> (); + if (StartupProject != null) + StartupProject.GetStyling (); +// StylingContainers = new List<StyleContainer> (); +// foreach (string k in Styling.Keys) { +// StylingContainers.Add (new StyleContainer (k, Styling [k])); +// } + foreach (ImlProjectItem pf in openedItems.OfType<ImlProjectItem>()) { + pf.SignalEditorOfType<ImlVisualEditor> (); + } + } + public string[] AvailaibleStyles { + get { return Styling == null ? new string[] {} : Styling.Keys.ToArray();} + } + public void ReloadDefaultTemplates () { + DefaultTemplates = new Dictionary<string, string>(); + if (StartupProject != null) + StartupProject.GetDefaultTemplates (); + } + public void updateToolboxItems () { + Type[] crowItems = AppDomain.CurrentDomain.GetAssemblies () + .SelectMany (t => t.GetTypes ()) + .Where (t => t.IsClass && !t.IsAbstract && t.IsPublic && + t.Namespace == "Crow" && t.IsSubclassOf(typeof(Widget)) && + t.GetCustomAttribute<DesignIgnore>(false) == null).ToArray (); + ToolboxItems = new ObservableList<GraphicObjectDesignContainer> (); + foreach (Type ci in crowItems) { + toolboxItems.AddElement(new GraphicObjectDesignContainer(ci)); + } + } + public bool GetProjectFileFromPath (string path, out ProjectFile pi){ + pi = null; + return StartupProject == null ? false : + StartupProject.TryGetProjectFileFromPath (path, out pi); + } + + public ObservableList<ProjectItem> OpenedItems { + get { return openedItems; } + set { + if (openedItems == value) + return; + openedItems = value; + NotifyValueChanged ("OpenedItems", openedItems); + } + } + + public ObservableList<GraphicObjectDesignContainer> ToolboxItems { + get { return toolboxItems; } + set { + if (toolboxItems == value) + return; + toolboxItems = value; + NotifyValueChanged ("ToolboxItems", toolboxItems); + } + } + public ProjectItem SelectedItem { + get { return selectedItem; } + set { + if (selectedItem == value) + return; + if (SelectedItem != null) + SelectedItem.IsSelected = false; + selectedItem = value; + if (SelectedItem != null) + SelectedItem.IsSelected = true; + + UserConfig.Set ("SelectedProjItems", SelectedItem?.AbsolutePath); + + NotifyValueChanged ("SelectedItem", selectedItem); + } + } + public object SelectedItemElement { + get { return selectedItemElement; } + set { + if (selectedItemElement == value) + return; + selectedItemElement = value; + NotifyValueChanged ("SelectedItemElement", selectedItemElement); + } + } + public string DisplayName { + get { return name; } + } + /// <summary> + /// Gets solution path + /// </summary> + public String SolutionFolder + { + get { return Path.GetDirectoryName (path); } + } + +// public System.CodeDom.Compiler.CompilerErrorCollection CompilationErrors { +// get { +// System.CodeDom.Compiler.CompilerErrorCollection tmp = Projects.SelectMany<Project> +// (p => p.CompilationResults.Errors); +// return tmp; +// } +// } + public List<System.CodeDom.Compiler.CompilerError> CompilerErrors { + get { + int errCount = 0; + for (int i = 0; i < Projects.Count; i++) { + if (Projects [i].CompilationResults != null) + errCount += Projects [i].CompilationResults.Errors.Count; + } + System.CodeDom.Compiler.CompilerError[] tmp = new System.CodeDom.Compiler.CompilerError[errCount]; + + int ptr = 0; + for (int i = 0; i < Projects.Count; i++) { + if (Projects [i].CompilationResults == null) + continue; + Projects [i].CompilationResults.Errors.CopyTo (tmp,ptr); + ptr += Projects [i].CompilationResults.Errors.Count; + } + return new List<System.CodeDom.Compiler.CompilerError>(tmp); + } + } + + public void UpdateErrorList () { + NotifyValueChanged ("CompilerErrors", CompilerErrors); + } + + void saveOpenedItemsInUserConfig (){ + if (openedItems.Count == 0) + UserConfig.Set ("OpenedItems", ""); + else + UserConfig.Set ("OpenedItems", openedItems.Select(o => o.AbsolutePath).Aggregate((a,b)=>a + ";" + b)); + } + public void ReopenItemsSavedInUserConfig () { + string tmp = UserConfig.Get<string> ("OpenedItems"); + string sel = UserConfig.Get<string> ("SelectedProjItems"); + ProjectFile selItem = null; + if (string.IsNullOrEmpty (tmp)) + return; + foreach (string f in tmp.Split(';')) { + foreach (Project p in Projects) { + ProjectFile pi; + if (p.TryGetProjectFileFromAbsolutePath (f, out pi)) { + pi.Open (); + if (pi.AbsolutePath == sel) + selItem = pi; + break; + } + } + } + if (selItem == null) + return; + selItem.IsSelected = true; + } + + /*void onSelectedItemChanged (object sender, SelectionChangeEventArgs e){ + SelectedItem = e.NewValue as ProjectItem; + UserConfig.Set ("SelectedProjItems", SelectedItem?.AbsolutePath); + }*/ + + public void OpenItem (ProjectItem pi) { + if (!openedItems.Contains (pi)) { + openedItems.AddElement (pi); + saveOpenedItemsInUserConfig (); + } + } + public void CloseItem (ProjectItem pi) { + openedItems.RemoveElement (pi); + saveOpenedItemsInUserConfig (); + } + + public void CloseSolution () { + while (openedItems.Count > 0) { + openedItems.RemoveElement (openedItems [0]); + } + while (toolboxItems.Count > 0) { + toolboxItems.RemoveElement (toolboxItems [0]); + } + NotifyValueChanged ("Projects", null); + } + /// <summary> + /// Solution name + /// </summary> + String name; + /// <summary> + /// File path from where solution was loaded. + /// </summary> + [XmlIgnore] + String path; + + /// <summary> + /// Solution name for debugger. + /// </summary> + [ExcludeFromCodeCoverage] + public override string ToString() + { + return "Solution: " + name; + } + + #region Solution properties + double slnVer; // 11.00 - vs2010, 12.00 - vs2015 + + /// <summary> + /// Visual studio version information used for generation, for example 2010, 2012, 2015 and so on... + /// </summary> + public int fileFormatVersion; + + /// <summary> + /// null for old visual studio's + /// </summary> + public String VisualStudioVersion; + + /// <summary> + /// null for old visual studio's + /// </summary> + public String MinimumVisualStudioVersion; + + /// <summary> + /// List of project included into solution. + /// </summary> + public List<Project> Projects = new List<Project>(); + + /// <summary> + /// List of configuration list, in form "{Configuration}|{Platform}", for example "Release|Win32". + /// To extract individual platforms / configuration list, use following functions. + /// </summary> + public List<String> configurations = new List<string>(); + + /// <summary> + /// Extracts platfroms supported by solution + /// </summary> + public IEnumerable<String> getPlatforms() + { + return configurations.Select(x => x.Split('|')[1]).Distinct(); + } + + /// <summary> + /// Extracts configuration names supported by solution + /// </summary> + public IEnumerable<String> getConfigurations() + { + return configurations.Select(x => x.Split('|')[0]).Distinct(); + } + #endregion + + public Configuration UserConfig; + + public Project StartupProject { + get { return Projects?.FirstOrDefault (p => p.ProjectGuid == UserConfig.Get<string> ("StartupProject")); } + set { + if (value == StartupProject) + return; + if (value == null) + UserConfig.Set ("StartupProject", ""); + else { + UserConfig.Set ("StartupProject", value.ProjectGuid); + value.NotifyValueChanged("IsStartupProject", true); + } + NotifyValueChanged ("StartupProject", StartupProject); + ReloadStyling (); + ReloadDefaultTemplates (); + } + } + + #region CTOR + /// <summary> + /// Creates new solution. + /// </summary> + public Solution() { + } + + #endregion + + + #region Loading from SLN file + /// <summary> + /// Loads visual studio .sln solution + /// </summary> + /// <exception cref="System.IO.FileNotFoundException">The file specified in path was not found.</exception> + static public Solution LoadSolution(string path) + { + Solution s = new Solution(); + s.path = path; + + String slnTxt = File.ReadAllText(path); + // + // Extra line feed is used by Visual studio, cmake does not generate extra line feed. + // + s.slnVer = Double.Parse(Regex.Match(slnTxt, "[\r\n]?Microsoft Visual Studio Solution File, Format Version ([0-9.]+)", RegexOptions.Multiline).Groups[1].Value, CultureInfo.InvariantCulture); + + int vsNumber = Int32.Parse(Regex.Match(slnTxt, "^\\# Visual Studio (Express )?([0-9]+)", RegexOptions.Multiline).Groups[2].Value); + if (vsNumber > 2000) + s.fileFormatVersion = vsNumber; + else + s.fileFormatVersion = vsNumber - 14 + 2015; // Visual Studio 14 => vs2015, formula might not be applicable for future vs versions. + + foreach (String line in new String[] { "VisualStudioVersion", "MinimumVisualStudioVersion" }) + { + var m = Regex.Match(slnTxt, "^" + line + " = ([0-9.]+)", RegexOptions.Multiline); + String v = null; + if (m.Success) + v = m.Groups[1].Value; + + s.GetType().GetField(line).SetValue(s, v); + } + + Regex reProjects = new Regex( + "Project\\(\"(?<ProjectHostGuid>{[A-F0-9-]+})\"\\) = \"(?<ProjectName>.*?)\", \"(?<RelativePath>.*?)\", \"(?<ProjectGuid>{[A-F0-9-]+})\"[\r\n]*(?<dependencies>.*?)EndProject[\r\n]+", + RegexOptions.Singleline); + + + reProjects.Replace(slnTxt, new MatchEvaluator(m => + { + SolutionProject p = new SolutionProject (); + + foreach (String g in reProjects.GetGroupNames()) + { + if (g == "0") //"0" - RegEx special kind of group + continue; + + // + // ProjectHostGuid, ProjectName, RelativePath, ProjectGuid fields/properties are set here. + // + String v = m.Groups[g].ToString(); + if (g != "dependencies") + { + FieldInfo fi = p.GetType().GetField(g); + if (fi != null) + { + fi.SetValue(p, v); + } + else + { + p.GetType().GetProperty(g).SetValue(p, v); + } + continue; + } + + if (v == "") // No dependencies set + continue; + + String depsv = new Regex("ProjectSection\\(ProjectDependencies\\)[^\r\n]*?[\r\n]+" + "(.*?)" + "EndProjectSection", RegexOptions.Singleline).Match(v).Groups[1].Value; + + // + // key is always equal to it's value. + // http://stackoverflow.com/questions/5629981/question-about-visual-studio-sln-file-format + // + var ProjectDependencies = new Regex("\\s*?({[A-F0-9-]+}) = ({[A-F0-9-]+})[\r\n]+", RegexOptions.Multiline).Matches(depsv).Cast<Match>().Select(x => x.Groups[1].Value).ToList(); + } //foreach + s.Projects.Add(new Project (s, p)); + return ""; + } + ) + ); + + new Regex("GlobalSection\\(SolutionConfigurationPlatforms\\).*?[\r\n]+(.*?)EndGlobalSection[\r\n]+", RegexOptions.Singleline).Replace(slnTxt, new MatchEvaluator(m2 => + { + s.configurations = new Regex("\\s*(.*)\\s+=").Matches(m2.Groups[1].ToString()).Cast<Match>().Select(x => x.Groups[1].Value).ToList(); + return ""; + } + )); + + Console.WriteLine ("******** CONFIG ***************"); + + new Regex("GlobalSection\\(ProjectConfigurationPlatforms\\).*?[\r\n]+(.*?)EndGlobalSection[\r\n]+", RegexOptions.Singleline).Replace(slnTxt, new MatchEvaluator(m2 => + { + foreach (Match m3 in new Regex("\\s*({[A-F0-9-]+})\\.(.*?)\\.(.*?)\\s+=\\s+(.*?)[\r\n]+").Matches(m2.Groups[1].ToString())) + { + String guid = m3.Groups[1].Value; + String solutionConfig = m3.Groups[2].Value; + String action = m3.Groups[3].Value; + String projectConfig = m3.Groups[4].Value; + + Project p = s.Projects.Where(x => x.ProjectGuid == guid).FirstOrDefault(); + if (p == null) + continue; + + Console.WriteLine ("{0},{1},{2},{3}",guid,solutionConfig,action,projectConfig); + + int iConfigIndex = s.configurations.IndexOf(solutionConfig); + if (iConfigIndex == -1) + continue; + +// while (p.slnConfigurations.Count < s.configurations.Count) +// { +// p.slnConfigurations.Add(null); +// p.slnBuildProject.Add(false); +// } +// +// if (action == "ActiveCfg") +// { +// p.slnConfigurations[iConfigIndex] = projectConfig; +// } +// else +// { +// if (action.StartsWith("Build")) +// { +// p.slnBuildProject[iConfigIndex] = true; +// } +// else +// { +// if (action.StartsWith("Deploy")) +// { +// if (p.slnDeployProject == null) p.slnDeployProject = new List<bool?>(); +// +// while (p.slnDeployProject.Count < s.configurations.Count) +// p.slnDeployProject.Add(null); +// +// p.slnDeployProject[iConfigIndex] = true; +// } +// } +// } //if-esle + } + return ""; + } + )); + + // + // Initializes parent-child relationship. + // + new Regex("GlobalSection\\(NestedProjects\\).*?[\r\n]+(.*?)EndGlobalSection[\r\n]+", RegexOptions.Singleline).Replace(slnTxt, new MatchEvaluator(m4 => + { + String v = m4.Groups[1].Value; + new Regex("\\s*?({[A-F0-9-]+}) = ({[A-F0-9-]+})[\r\n]+", RegexOptions.Multiline).Replace(v, new MatchEvaluator(m5 => + { + String[] args = m5.Groups.Cast<System.Text.RegularExpressions.Group>().Skip(1).Select(x => x.Value).ToArray(); + Project child = s.Projects.Where(x => args[0] == x.ProjectGuid).FirstOrDefault(); + Project parent = s.Projects.Where(x => args[1] == x.ProjectGuid).FirstOrDefault(); + parent.dependantProjects.Add(child); + child.ParentProject = parent; + return ""; + })); + return ""; + } + )); + + s.UserConfig = new Configuration (s.path + ".user"); + s.ReloadStyling (); + s.ReloadDefaultTemplates (); + s.updateToolboxItems (); + return s; + } //LoadSolution + #endregion + } +} diff --git a/Samples/CrowIDE/src/SolutionControler.cs b/Samples/CrowIDE/src/SolutionControler.cs new file mode 100644 index 00000000..edb6b0dd --- /dev/null +++ b/Samples/CrowIDE/src/SolutionControler.cs @@ -0,0 +1,37 @@ +// +// SolutionControler.cs +// +// Author: +// Jean-Philippe Bruyère <jp_bruyere@hotmail.com> +// +// Copyright (c) 2013-2017 Jean-Philippe Bruyère +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. +using System; + +namespace Crow.Coding +{ + public class SolutionControler + { + public SolutionControler () + { + } + } +} + diff --git a/Samples/CrowIDE/src/VerticalLine.cs b/Samples/CrowIDE/src/VerticalLine.cs new file mode 100644 index 00000000..f03b311e --- /dev/null +++ b/Samples/CrowIDE/src/VerticalLine.cs @@ -0,0 +1,58 @@ +// +// VerticalLine.cs +// +// Author: +// jp <> +// +// Copyright (c) 2013-2017 Jean-Philippe Bruyère +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. +using System; +using Crow; +using vkvg; + +namespace Crow.Coding +{ + public class VerticalLine : Widget + { + public VerticalLine () : base() + { + } + + protected override void onDraw (Context gr) + { + base.onDraw (gr); + Foreground.SetAsSource (gr); + Rectangle r = ClientRectangle; + double x = r.Center.X - 0.5; + double y; + gr.LineWidth = 1; + gr.MoveTo (x, r.Y); + gr.LineTo (x, r.Bottom-8); + + for (y = 8.5+r.Y; y < r.Bottom; y += 18) { + gr.MoveTo (x, y); + gr.LineTo (x * 2, y); + } + + gr.Stroke (); + } + } +} + diff --git a/Samples/CrowIDE/ui/CategoryExp.template b/Samples/CrowIDE/ui/CategoryExp.template new file mode 100755 index 00000000..d3732aee --- /dev/null +++ b/Samples/CrowIDE/ui/CategoryExp.template @@ -0,0 +1,21 @@ +<?xml version="1.0"?> +<Expandable Caption="{Name}" IsExpanded="{IsExpanded}" Background="Grey" Foreground="Black"> + <Template> + <VerticalStack> + <HorizontalStack Spacing="1" Height="Fit" MouseDoubleClick="./onClickForExpand" Background="Grey"> + <Container Margin="1" Width="9" Height="9" Focusable="true" MouseDown="./onClickForExpand" + MouseEnter="{Background=LightGrey}" + MouseLeave="{Background=Transparent}"> + <Image + Path="#Crow.Icons.expandable.svg" + Visible="{./IsExpandable}" + SvgSub="{./IsExpanded}"/> + </Container> + <Label Foreground="White" Text="{./Caption}"/> + </HorizontalStack> + <Container Name="Content" Visible="false"/> + </VerticalStack> + </Template> + <VerticalStack Spacing="1" Height="Fit" Name="ItemsContainer" + Margin="0" VerticalAlignment="Top"/> +</Expandable>
\ No newline at end of file diff --git a/Samples/CrowIDE/ui/CrowIDE.crow b/Samples/CrowIDE/ui/CrowIDE.crow new file mode 100644 index 00000000..4295287d --- /dev/null +++ b/Samples/CrowIDE/ui/CrowIDE.crow @@ -0,0 +1,58 @@ +<?xml version="1.0"?> +<!--<Window Height="Stretched" Width="Stretched" >--> + <VerticalStack DataSourceType="CrowIDE"> + <Menu> + <MenuItem Caption="File" Width="Fit" PopWidth="120" DataSource="{CurrentSolution}"> + <MenuItem Command="{CMDNew}" /> + <MenuItem Command="{CMDOpen}" /> + <MenuItem Command="{cmdCloseSolution}" /> + <MenuItem DataSource="{SelectedItem}" Command="{cmdSave}" /> + <MenuItem DataSource="{SelectedItem}" Command="{cmdSaveAs}" /> + <MenuItem Command="{CMDQuit}" /> + </MenuItem> + <MenuItem Caption="Edit" Name="edit" Width="Fit" PopWidth="100" DataSource="{CurrentSolution}"> + <MenuItem DataSource="{SelectedItem}" Command="{cmdUndo}" /> + <MenuItem DataSource="{SelectedItem}" Command="{cmdRedo}" /> + <MenuItem Command="{CMDCut}" /> + <MenuItem Command="{CMDCopy}" /> + <MenuItem Command="{CMDPaste}" /> + <MenuItem Command="{CMDOptions}"/> + </MenuItem> + <MenuItem Caption="View" Fit="true" PopWidth="150"> + <MenuItem Command="{CMDViewSolution}"/> + <MenuItem Command="{CMDViewEditor}"/> + <MenuItem Command="{CMDViewProperties}"/> + <MenuItem Command="{CMDViewDesign}"/> + <MenuItem Command="{CMDViewStyling}"/> + <MenuItem Command="{CMDViewToolbox}"/> + <MenuItem Command="{CMDViewErrors}"/> + <MenuItem Command="{CMDViewGTExp}"/> + <MenuItem Command="{CMDViewSchema}"/> + </MenuItem> + <MenuItem Caption="Project" Fit="true" PopWidth="120"> + <MenuItem Command="{CMDCompile}"/> + <MenuItem Command="{CMDViewProjProps}"/> + </MenuItem> + <MenuItem Caption="Help" Width="Fit" PopWidth="60"> + <MenuItem Caption="About"/> + <MenuItem Command="{CMDHelp}"/> + </MenuItem> + </Menu> +<!-- <Label DataSource="{CurrentSolution}" Text="{SelectedItemElement}" Width="Stretched"/>--> +<!-- <Docker >--> + <DockStack Name="mainDock"/> +<!-- <DockWindow DataSource="{CurrentSolution}" Name="winEditor" Caption="Edit View" Width="70%" Height="80%"> + <Template> + <Border BorderWidth="1" Foreground="DimGrey" CornerRadius="{./CornerRadius}" + Background="{./Background}" + MouseEnter="./onBorderMouseEnter" + MouseLeave="./onBorderMouseLeave"> + <Container Name="Content" MinimumSize="50,50"/> + </Border> + </Template> + <EditPane SelectedItem="{²SelectedItem}" SelectedItemElement="{²SelectedItemElement}" Data="{OpenedItems}" DataTest="Extension" + ItemTemplate="#Crow.Coding.ui.EditPaneItems.template"/> + </DockWindow>--> +<!-- </Docker>--> + </VerticalStack> +<!--</Window>--> diff --git a/Samples/CrowIDE/ui/DockWindows/GTreeExpITemp.crow b/Samples/CrowIDE/ui/DockWindows/GTreeExpITemp.crow new file mode 100644 index 00000000..fb044b36 --- /dev/null +++ b/Samples/CrowIDE/ui/DockWindows/GTreeExpITemp.crow @@ -0,0 +1,29 @@ +<?xml version="1.0"?> +<Expandable IsExpanded="{²IsExpanded}" MouseDoubleClick="/onClickForExpand"> + <Template> + <VerticalStack> + <Border CornerRadius="2" Margin="0" Height="Fit" + Foreground="Transparent" + MouseEnter="{Foreground=DimGrey}" + MouseLeave="{Foreground=Transparent}"> + <HorizontalStack Spacing="1"> + <Image Margin="1" Width="9" Height="9" Focusable="true" MouseDown="./onClickForExpand" + Path="{./Image}" + Visible="{./IsExpandable}" + SvgSub="{./IsExpanded}" + MouseEnter="{Background=LightGrey}" + MouseLeave="{Background=Transparent}"/> + <Border Width="16" Height="16" Foreground="Black" Background="DimGrey"> + <Image Margin="2" Path="{GetIcon}" /> + </Border> + <Label Text="{DesignName}"/> + </HorizontalStack> + </Border> + <Container Name="Content" Visible="false"/> + </VerticalStack> + </Template> + <HorizontalStack Height="Fit"> + <Widget Width="8" Height="10"/> + <VerticalStack Height="Fit" Name="ItemsContainer"/> + </HorizontalStack> +</Expandable> diff --git a/Samples/CrowIDE/ui/DockWindows/WinSchemaItem.template b/Samples/CrowIDE/ui/DockWindows/WinSchemaItem.template new file mode 100755 index 00000000..2832a327 --- /dev/null +++ b/Samples/CrowIDE/ui/DockWindows/WinSchemaItem.template @@ -0,0 +1,13 @@ +<?xml version="1.0"?> +<Border BorderWidth="1" Foreground="Black" CornerRadius="10" + Background="Grey" + MouseEnter="./onBorderMouseEnter" + MouseLeave="./onBorderMouseLeave"> + <VerticalStack Spacing="0"> + <HorizontalStack Background="MediumSeaGreen" Margin="0" Spacing="0" Height="Fit" Width="Stretched"> + <Label Width="Stretched" Margin="0" TextAlignment="Center" Text="{./Caption}" /> + </HorizontalStack> + <Widget Background="Black" Height="1"/> + <Container Margin="5" Name="Content" Width="Fit"/> + </VerticalStack> +</Border> diff --git a/Samples/CrowIDE/ui/DockWindows/toolboxBut.template b/Samples/CrowIDE/ui/DockWindows/toolboxBut.template new file mode 100644 index 00000000..0729a387 --- /dev/null +++ b/Samples/CrowIDE/ui/DockWindows/toolboxBut.template @@ -0,0 +1,7 @@ +<?xml version="1.0"?> +<Border Background="{./Background}" Name="Content" + Foreground="Transparent" CornerRadius="{./CornerRadius}" BorderWidth="1" + MouseDown="{Foreground=vgradient|0:Black|0.05:Grey|0.85:Grey|1:White}" + MouseUp="{Foreground=vgradient|0:White|0.2:Grey|0.9:Grey|1:Black}"> + <Image Path="{./Caption}" Margin="2" Width="20" Height="20" /> +</Border> diff --git a/Samples/CrowIDE/ui/DockWindows/winDesign.crow b/Samples/CrowIDE/ui/DockWindows/winDesign.crow new file mode 100644 index 00000000..4b5125b9 --- /dev/null +++ b/Samples/CrowIDE/ui/DockWindows/winDesign.crow @@ -0,0 +1,10 @@ +<?xml version="1.0"?> +<DockWindow DataSource="{CurrentSolution}" Name="winDesign" Caption="Design" Width="200" Height="50%"> + <VerticalStack DataSource="{SelectedItemElement}"> + <ColorPicker SelectedColor="{²Background}"/> + <Group Fit="true"> + <Border Foreground="Black" Left="25" Top="12" Width="34" Height="21" Background="{Background}"/> + <Border Foreground="Black" Left="1" Top="1" Width="34" Height="21" Background="{Foreground}"/> + </Group> + </VerticalStack> +</DockWindow> diff --git a/Samples/CrowIDE/ui/DockWindows/winEditor.crow b/Samples/CrowIDE/ui/DockWindows/winEditor.crow new file mode 100644 index 00000000..461a2606 --- /dev/null +++ b/Samples/CrowIDE/ui/DockWindows/winEditor.crow @@ -0,0 +1,6 @@ +<?xml version="1.0"?> +<DockWindow Name="winEditor" Caption="Edit View"> + <EditPane DataSource="{CurrentSolution}" + SelectedItemElement="{²SelectedItemElement}" Data="{OpenedItems}" DataTest="Extension" + ItemTemplate="#Crow.Coding.EditPaneItems.template"/> +</DockWindow> diff --git a/Samples/CrowIDE/ui/DockWindows/winErrors.crow b/Samples/CrowIDE/ui/DockWindows/winErrors.crow new file mode 100644 index 00000000..82ecc170 --- /dev/null +++ b/Samples/CrowIDE/ui/DockWindows/winErrors.crow @@ -0,0 +1,15 @@ +<?xml version="1.0"?> +<DockWindow DataSource="{CurrentSolution}" Name="winErrors" Caption="Errors" Width="20%"> + <ListBox Width="Stretched" Data="{CompilerErrors}"> + <ItemTemplate> + <HorizontalStack Height="Fit" Margin="0" Focusable="true" Spacing="10" + MouseEnter="{Background=SteelBlue}" + MouseLeave="{Background=Transparent}"> + <Image Width="10" Height="10" Path="#Crow.Icons.compiler_error.svg" SvgSub="{IsWarning}"/> + <Label Text="{Line}" Width="25" TextAlignment="Right"/> + <Label Text="{ErrorText}" Width="60%"/> + <Label Text="{FileName}" Width="Fit"/> + </HorizontalStack> + </ItemTemplate> + </ListBox> +</DockWindow> diff --git a/Samples/CrowIDE/ui/DockWindows/winGTExplorer.crow b/Samples/CrowIDE/ui/DockWindows/winGTExplorer.crow new file mode 100644 index 00000000..62c7b9bb --- /dev/null +++ b/Samples/CrowIDE/ui/DockWindows/winGTExplorer.crow @@ -0,0 +1,28 @@ +<?xml version="1.0"?> +<DockWindow Name="winGTExplorer" Caption="Edit View" Width="40%" Height="80%"> + <VerticalStack Name="vstack" DataSource="{CurrentSolution}"> + <Button Caption="Expand All" MouseClick="../treeView.onExpandAll_MouseClick"/> + <TreeView DataSource="{SelectedItem}" IsRoot="true" Name="treeView" Data="{GraphicTree}" + SelectedItemChanged="../../vstack.DataSource.GTView_SelectedItemChanged"> + <ItemTemplate> + <Border Width="Stretched" Focusable="true" Foreground="Transparent"> + <HorizontalStack Spacing="5"> + <Widget Width="5" Height="5"/> + <Border Width="16" Height="16" Foreground="Black" Background="DimGrey"> + <Image Margin="2" Path="{GetIcon}" /> + </Border> + <Label Text="{DesignName}" Width="Stretched"/> + </HorizontalStack> + </Border> + </ItemTemplate> + <ItemTemplate DataType="Crow.Group" Data="GetChildren" + Path="#Crow.Coding.ui.DockWindows.GTreeExpITemp.crow"/> + <ItemTemplate DataType="Crow.Container" Data="GetChildren" + Path="#Crow.Coding.ui.DockWindows.GTreeExpITemp.crow"/> + <ItemTemplate DataType="Crow.TemplatedContainer" Data="GetChildren" + Path="#Crow.Coding.ui.DockWindows.GTreeExpITemp.crow"/> + <ItemTemplate DataType="Crow.TemplatedGroup" Data="GetChildren" + Path="#Crow.Coding.ui.DockWindows.GTreeExpITemp.crow"/> + </TreeView> + </VerticalStack> +</DockWindow> diff --git a/Samples/CrowIDE/ui/DockWindows/winProperties.crow b/Samples/CrowIDE/ui/DockWindows/winProperties.crow new file mode 100644 index 00000000..2ef5f6e0 --- /dev/null +++ b/Samples/CrowIDE/ui/DockWindows/winProperties.crow @@ -0,0 +1,7 @@ +<?xml version="1.0"?> +<DockWindow Name="winProperties" Caption="Properties" Width="20%"> + <MembersView DataSource="{CurrentSolution}" ProjectNode="{SelectedItem}" + Instance="{SelectedItemElement}" DataTest="Type" + ItemTemplate="#Crow.Coding.MembersItem.template"/> +</DockWindow> + diff --git a/Samples/CrowIDE/ui/DockWindows/winSchema.crow b/Samples/CrowIDE/ui/DockWindows/winSchema.crow new file mode 100644 index 00000000..cd842490 --- /dev/null +++ b/Samples/CrowIDE/ui/DockWindows/winSchema.crow @@ -0,0 +1,18 @@ +<?xml version="1.0"?> +<DockWindow DataSource="{CurrentSolution}" Name="winSchema" Caption="IML Schematic View" Height="60%" Width="80%"> + <ImlSchematicEditor DataSource="{SelectedItem}" Data="{GraphicTree}"> + <Template> + <Group Name="ItemsContainer"/> + </Template> + <ItemTemplate DataType="Crow.Widget"> + <Window Style="WinSchema" Caption="{Name}"> + <Label Text="test"/> + </Window> + </ItemTemplate> + <ItemTemplate DataType="Crow.Container" > + <Window Style="WinSchema" Caption="{Name}"> + <Label Text="test"/> + </Window> + </ItemTemplate> + </ImlSchematicEditor> +</DockWindow> diff --git a/Samples/CrowIDE/ui/DockWindows/winSolution.crow b/Samples/CrowIDE/ui/DockWindows/winSolution.crow new file mode 100644 index 00000000..e33a2006 --- /dev/null +++ b/Samples/CrowIDE/ui/DockWindows/winSolution.crow @@ -0,0 +1,6 @@ +<?xml version="1.0"?> +<DockWindow Name="winSolution" Caption="Solution" Width="20%"> + <TreeView Name="treeview" IsRoot="true" DataSource="{CurrentSolution}" + Data="{Projects}" SelectedItemChanged="onSelectedItemChanged" + ItemTemplate="#Crow.Coding.ProjectTree.template"/> +</DockWindow> diff --git a/Samples/CrowIDE/ui/DockWindows/winStyleView.crow b/Samples/CrowIDE/ui/DockWindows/winStyleView.crow new file mode 100644 index 00000000..a86343e4 --- /dev/null +++ b/Samples/CrowIDE/ui/DockWindows/winStyleView.crow @@ -0,0 +1,16 @@ +<?xml version="1.0"?> +<DockWindow DataSource="{CurrentSolution}" Name="winStyle" Caption="Styling" Width="20%"> + <TreeView Data="{StylingContainers}"> + <Template> + <VerticalStack Name="ItemsContainer" Spacing="1"/> + </Template> + <ItemTemplate DataType="Crow.Coding.StyleItemContainer"> + <HorizontalStack Height="Fit" Spacing="1"> + <Label Background="White" Foreground="Jet" Text="{Name}" Width="40%"/> + <Label Background="White" Foreground="Jet" Text="{Value}" Width="Stretched"/> + </HorizontalStack> + </ItemTemplate> + <ItemTemplate Path="#Crow.Coding.ui.CategoryExp.template" DataType="Crow.Coding.StyleContainer" Data="Items"/> + </TreeView> +</DockWindow> + diff --git a/Samples/CrowIDE/ui/DockWindows/winToolbox.crow b/Samples/CrowIDE/ui/DockWindows/winToolbox.crow new file mode 100644 index 00000000..615488e8 --- /dev/null +++ b/Samples/CrowIDE/ui/DockWindows/winToolbox.crow @@ -0,0 +1,18 @@ +<?xml version="1.0"?> +<DockWindow DataSource="{CurrentSolution}" Name="winToolbox" Caption="Toolbox" Width="60"> + <ListBox Margin="3" Data="{ToolboxItems}" SelectionBackground="SkyBlue"> + <Template> + <Wrapper Name="ItemsContainer" Orientation="Vertical" Spacing="0"/> + </Template> + <ItemTemplate> + <Container Fit="true" Focusable="true" Tooltip="{DisplayName}" Margin="2" AllowDrag="true" + StartDrag="onStartDrag" EndDrag="onEndDrag" Drop="onDrop"> + <Border Foreground="Black" Background="DimGrey" Margin="0" BorderWidth="1" + MouseEnter="{Foreground=White}" + MouseLeave="{Foreground=Black}"> + <Image Path="{IconPath}" Margin="3" Width="20" Height="20" /> + </Border> + </Container> + </ItemTemplate> + </ListBox> +</DockWindow> diff --git a/Samples/CrowIDE/ui/IcoBut.template b/Samples/CrowIDE/ui/IcoBut.template new file mode 100644 index 00000000..ef84670d --- /dev/null +++ b/Samples/CrowIDE/ui/IcoBut.template @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<Border Background="{./Background}" Name="Content" + BorderWidth="1" BorderStyle="Normal" + MouseDown="{BorderStyle=Sunken}" + MouseUp="{BorderStyle=Normal}"> + <Image Margin="1" Path="#icons.blank-file" /> +</Border> diff --git a/Samples/CrowIDE/ui/ItemTemplates/Enum.template b/Samples/CrowIDE/ui/ItemTemplates/Enum.template new file mode 100755 index 00000000..9ee2b60c --- /dev/null +++ b/Samples/CrowIDE/ui/ItemTemplates/Enum.template @@ -0,0 +1,47 @@ +<?xml version="1.0"?> +<HorizontalStack Style="MemberViewHStack" ContextCommands="{Commands}" DataSourceType="PropertyContainer"> + <Label Style="MemberViewLabel" Text="{Name}" Foreground = "{LabForeground}"/> + <ComboBox Margin="0" Height="Stretched" Width="50%" Data="{Choices}" + SelectedItem="{²Value}"> + <Template> + <Popper Name="popper" PopDirection="Bottom"> + <Template> + <CheckBox Caption="{./Caption}" IsChecked="{²./IsPopped}" Foreground="{./Foreground}" Background="{./Background}"> + <Template> + <Border CornerRadius="0" Foreground="LightGrey" Background="White"> + <HorizontalStack Margin="0" Spacing="1"> + <Label Width="Stretched" MinimumSize="80,10" Margin="1" Foreground = "{LabForeground}" Background="White" + Text="{../../../../../SelectedItem}"/> + <Button Width="12" Height="12" Focusable="false" + Template="#Crow.ArrowBut.template"> + <Image Margin="1" Path="#Crow.Icons.updown.svg" SvgSub="down"/> + </Button> + </HorizontalStack> + </Border> + </Template> + </CheckBox> + </Template> + <Border Background="White" BorderWidth="1" Margin="1" Foreground="Black" + MinimumSize="{../../MinimumPopupSize}" Fit="true"> + <Scroller Name="scroller1" Margin="2" + MaximumSize="0,200" + HorizontalAlignment="Left"> + <VerticalStack LayoutChanged="../../../../_list_LayoutChanged" + MouseClick="../../../onMouseClick" Focusable="True" + Height="Fit" Name="ItemsContainer" Margin="0" + HorizontalAlignment="Left" + VerticalAlignment="Top"/> + </Scroller> + </Border> + </Popper> + </Template> + <ItemTemplate> + <Container Fit="true" Margin="0" Focusable="true" + HorizontalAlignment="Left" + MouseEnter="{Background=SteelBlue}" + MouseLeave="{Background=Transparent}"> + <Label Text="{}" Foreground="Black"/> + </Container> + </ItemTemplate> + </ComboBox> +</HorizontalStack> diff --git a/Samples/CrowIDE/ui/ItemTemplates/Fill.template b/Samples/CrowIDE/ui/ItemTemplates/Fill.template new file mode 100755 index 00000000..56d4a4d4 --- /dev/null +++ b/Samples/CrowIDE/ui/ItemTemplates/Fill.template @@ -0,0 +1,19 @@ +<?xml version="1.0"?> +<HorizontalStack Style="MemberViewHStack" ContextCommands="{Commands}"> + <Label Style="MemberViewLabel" Text="{Name}" Foreground = "{LabForeground}"/> + <Popper Height="Stretched" Caption="{Value}"> + <Template> + <CheckBox Caption="{./Caption}" IsChecked="{²./IsPopped}"> + <Template> + <HorizontalStack Margin="1" Height="Stretched" Spacing="3" Background="White"> + <Border Foreground="{LabForeground}" Width="18" Height="12" CornerRadius="3" + Background="{Value}"> + </Border> + <Label Width="Stretched" Text="{./Caption}" Foreground="{LabForeground}"/> + </HorizontalStack> + </Template> + </CheckBox> + </Template> + <ColorPicker SelectedColor="{²Value}" Background="DimGrey" Margin="5" Fit="True" /> + </Popper> +</HorizontalStack>
\ No newline at end of file diff --git a/Samples/CrowIDE/ui/LQIsExplorer.crow b/Samples/CrowIDE/ui/LQIsExplorer.crow new file mode 100644 index 00000000..2994db6a --- /dev/null +++ b/Samples/CrowIDE/ui/LQIsExplorer.crow @@ -0,0 +1,65 @@ +<?xml version="1.0"?> +<Window Width="50%" Height="50%" Background="DimGrey"> + <TreeView IsRoot="true" Name="treeView" Data="{LQIs}"> + <ItemTemplate DataType="Crow.LayoutingQueueItem" Data="triggeredLQIs"> + <Expandable> + <Template> + <VerticalStack Height="{./HeightPolicy}" Width="{./WidthPolicy}"> + <VerticalStack Fit="true" Margin="3" Background="DimGrey" + HorizontalAlignment="Left" + MouseEnter="{Background=hgradient|0:RoyalBlue|1:Transparent}" + MouseLeave="{Background=DimGrey}"> + <Label Text="{FullName}" Font="droid, 8" Background="LightGrey" Foreground="Black"/> + <HorizontalStack Fit="true" Spacing="10"> + <Label Text="{LayoutingTries}" Foreground="SkyBlue"/> + <Label Text="{DiscardCount}" Foreground="Red"/> + <Label Text="{Name}" Font="droid bold"/> + <Label Text="{LayoutType}" Foreground="Maize"/> + <Label Text="{Width}"/> + <Label Text="{Height}"/> + </HorizontalStack> + + <HorizontalStack Fit="true"> + <Label Text="{Slot}"/> + <Label Text=" => "/> + <Label Text="{NewSlot}"/> + </HorizontalStack> + <Widget Background="SeaGreen" Height="3" Visible="{HasTriggeredLQIs}"/> + </VerticalStack> + <Container Name="Content" Visible="false" HorizontalAlignment="Left" + Fit="true"/> + </VerticalStack> + </Template> + <HorizontalStack Height="Fit" Width="Fit"> + <Widget Width="20" Height="10"/> + <TreeView Name="List" Height="Fit" Width="Fit" + Template="#Crow.Templates.treeList.crow" /> + </HorizontalStack> + </Expandable> + </ItemTemplate> + <ItemTemplate DataType="Crow.LQIList" Data="GetRootLQIs"> + <Expandable Caption="{}" > + <Template> + <VerticalStack Height="{./HeightPolicy}" Width="{./WidthPolicy}"> + <HorizontalStack Spacing="1" Height="Fit" Width="{./WidthPolicy}" + MouseEnter="{Background=hgradient|0:RoyalBlue|1:Transparent}" + MouseLeave="{Background=Transparent}"> + <Image Margin="2" Width="12" Height="12" + + Path="{./Image}" + SvgSub="{./IsExpanded}"/> + <Label Text="{./Caption}" Width="{./WidthPolicy}"/> + </HorizontalStack> + <Container Name="Content" Visible="false" + Height="{./HeightPolicy}" Width="{./WidthPolicy}"/> + </VerticalStack> + </Template> + <HorizontalStack Height="Fit" Width="{./WidthPolicy}"> + <Widget Width="12" Height="10"/> + <TreeView Name="List" Height="Fit" Width="{./WidthPolicy}" + Template="#Crow.Templates.treeList.crow" /> + </HorizontalStack> + </Expandable> + </ItemTemplate> + </TreeView> +</Window> diff --git a/Samples/CrowIDE/ui/MemberView.crow b/Samples/CrowIDE/ui/MemberView.crow new file mode 100644 index 00000000..170a3fcb --- /dev/null +++ b/Samples/CrowIDE/ui/MemberView.crow @@ -0,0 +1,5 @@ +<?xml version="1.0"?> +<Window Caption="Properties" Width="30%" Height="60%" AlwaysOnTop="true"> + <MembersView Instance="{SelectedItem}" DataTest="Type" + ItemTemplate="#Crow.Coding.ui.MembersItem.template"/> +</Window>
\ No newline at end of file diff --git a/Samples/CrowIDE/ui/MembersItem.template b/Samples/CrowIDE/ui/MembersItem.template new file mode 100755 index 00000000..b552e920 --- /dev/null +++ b/Samples/CrowIDE/ui/MembersItem.template @@ -0,0 +1,19 @@ +<?xml version="1.0"?> +<ItemTemplate> + <HorizontalStack Style="MemberViewHStack" ContextCommands="{Commands}" DataSourceType="PropertyContainer"> + <Label Style="MemberViewLabel" Text="{Name}" Foreground = "{LabForeground}"/> + <TextBox Margin="1" Text="{²Value}" Height="Fit" Foreground = "{LabForeground}"/> + </HorizontalStack> +</ItemTemplate> +<ItemTemplate Path="#Crow.Coding.CategoryExp.template" DataType="Crow.Coding.CategoryContainer" + Data="Properties" DataTest="Type"/> +<ItemTemplate DataType="System.Boolean" > + <HorizontalStack Style="MemberViewHStack" ContextCommands="{Commands}"> + <Label Style="MemberViewLabel" Text="{Name}" Foreground = "{LabForeground}" /> + <CheckBox Background="White" Foreground = "{LabForeground}" Height="Stretched" Caption="" IsChecked="{²Value}"/> + </HorizontalStack> +</ItemTemplate> +<ItemTemplate Path="#Crow.Coding.Enum.template" DataType="System.Enum" /> +<ItemTemplate Path="#Crow.Coding.Enum.template" DataType="Style" /> +<!--<ItemTemplate Path="#Crow.Coding.ui.ItemTemplates.Fill.template" DataType="Crow.Fill"/>--> +
\ No newline at end of file diff --git a/Samples/CrowIDE/ui/MembersView.template b/Samples/CrowIDE/ui/MembersView.template new file mode 100755 index 00000000..046049eb --- /dev/null +++ b/Samples/CrowIDE/ui/MembersView.template @@ -0,0 +1,19 @@ +<?xml version="1.0"?> +<VerticalStack> + <Border Height="Fit"> + <Label TextAlignment="Left" Text="{./SelectedItemName}" Width="Stretched"/> + </Border> + <HorizontalStack> + <Scroller Name="scroller1" Margin="1" + Background="{./Background}"> + <VerticalStack Spacing="1" + Height="Fit" Name="ItemsContainer" Margin="0" VerticalAlignment="Top"/> + </Scroller> + <ScrollBar + Name="scrollbar1" Orientation="Vertical" + LargeIncrement="{../scroller1.PageHeight}" SmallIncrement="30" + CursorSize="{../scroller1.ChildHeightRatio}" + Value="{²../scroller1.ScrollY}" + Maximum="{../scroller1.MaxScrollY}"/> + </HorizontalStack> +</VerticalStack> diff --git a/Samples/CrowIDE/ui/NewFile.crow b/Samples/CrowIDE/ui/NewFile.crow new file mode 100644 index 00000000..ffee5fe3 --- /dev/null +++ b/Samples/CrowIDE/ui/NewFile.crow @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<Window Caption="Add New File..." Height="60%" Width="70%"> + <Label/> +</Window> + diff --git a/Samples/CrowIDE/ui/Options.crow b/Samples/CrowIDE/ui/Options.crow new file mode 100644 index 00000000..7d401e05 --- /dev/null +++ b/Samples/CrowIDE/ui/Options.crow @@ -0,0 +1,24 @@ +<?xml version="1.0"?> +<Window Caption="Crow IDE Options" Width="80%" Height="70%" Background="DimGrey" Modal="true"> + <TabView> + <TabItem Caption="IML Visual Editor"> + <VerticalStack Margin="10"> + <CheckBox Caption="Print Line Numbers" IsChecked="True"/> + <CheckBox Caption="Print Line Numbers" IsChecked="True"/> + <CheckBox Caption="Print Line Numbers" IsChecked="True"/> + <CheckBox Caption="Print Line Numbers" IsChecked="True"/> + <CheckBox Caption="Print Line Numbers" IsChecked="True"/> + </VerticalStack> + </TabItem> + <TabItem Caption="Text Editor"> + <VerticalStack Margin="10"> + <CheckBox Caption="Print Line Numbers" IsChecked="True"/> + <CheckBox Caption="Print Line Numbers" IsChecked="True"/> + <CheckBox Caption="Print Line Numbers" IsChecked="True"/> + <CheckBox Caption="Print Line Numbers" IsChecked="True"/> + <CheckBox Caption="Print Line Numbers" IsChecked="True"/> + </VerticalStack> + </TabItem> + + </TabView> +</Window> diff --git a/Samples/CrowIDE/ui/ProjectProperties.crow b/Samples/CrowIDE/ui/ProjectProperties.crow new file mode 100644 index 00000000..9a6ba39b --- /dev/null +++ b/Samples/CrowIDE/ui/ProjectProperties.crow @@ -0,0 +1,66 @@ +<?xml version="1.0"?> +<Window Caption="Project Properties" Width="60%" Height="70%" Modal="true"> + <HorizontalStack> + <VerticalStack Height="Fit" Width="50%"> + <HorizontalStack> + <Label Text="Tools Version" Width="30%"/> + <Label Text="{ToolsVersion}" IsEnabled="false" Width="70%"/> + </HorizontalStack> + <HorizontalStack> + <Label Text="Default Targets" Width="30%"/> + <Label Text="{DefaultTargets}" IsEnabled="false" Width="70%"/> + </HorizontalStack> + <HorizontalStack> + <Label Text="Project Guid" Width="30%"/> + <Label Text="{ProjectGuid}" IsEnabled="false" Width="70%"/> + </HorizontalStack> + <HorizontalStack> + <Label Text="Output Type" Width="30%"/> + <Label Text="{OutputType}" IsEnabled="false" Width="70%"/> + </HorizontalStack> + <HorizontalStack> + <Label Text="Root Namespace" Width="30%"/> + <Label Text="{RootNamespace}" IsEnabled="false" Width="70%"/> + </HorizontalStack> + <HorizontalStack> + <Label Text="Assembly Name" Width="30%"/> + <Label Text="{AssemblyName}" IsEnabled="false" Width="70%"/> + </HorizontalStack> + <HorizontalStack> + <Label Text="Allow Unsafe Blocks" Width="30%"/> + <CheckBox IsChecked="{AllowUnsafeBlocks}" Width="70%"/> + </HorizontalStack> + <HorizontalStack> + <Label Text="No Std Lib" Width="30%"/> + <CheckBox IsChecked="{NoStdLib}" Width="70%"/> + </HorizontalStack> + <HorizontalStack> + <Label Text="Treat Warnings As Errors" Width="30%"/> + <CheckBox IsChecked="{TreatWarningsAsErrors}" Width="70%"/> + </HorizontalStack> + <HorizontalStack> + <Label Text="Sign Assembly" Width="30%"/> + <CheckBox IsChecked="{SignAssembly}" Width="70%"/> + </HorizontalStack> + <HorizontalStack> + <Label Text="Target Framework" Width="30%"/> + <Label Text="{TargetFrameworkVersion}" IsEnabled="false" Width="70%"/> + </HorizontalStack> + <HorizontalStack> + <Label Text="Description" Width="30%"/> + <Label Text="{Description}" IsEnabled="false" Width="70%"/> + </HorizontalStack> + <HorizontalStack> + <Label Text="Output Path" Width="30%"/> + <Label Text="{OutputPath}" IsEnabled="false" Width="70%"/> + </HorizontalStack> + <HorizontalStack> + <Label Text="Intermediate Output Path" Width="30%"/> + <Label Text="{IntermediateOutputPath}" IsEnabled="false" Width="70%"/> + </HorizontalStack> + </VerticalStack> + <TreeView Width="50%" IsRoot="true" Name="treeView" Data="{RootItems}" DataTest="Type" + ItemTemplate="#Crow.Coding.ui.ProjectTree.template"> + </TreeView> + </HorizontalStack> +</Window> diff --git a/Samples/CrowIDE/ui/ProjectTree.template b/Samples/CrowIDE/ui/ProjectTree.template new file mode 100644 index 00000000..8ffb17ba --- /dev/null +++ b/Samples/CrowIDE/ui/ProjectTree.template @@ -0,0 +1,65 @@ +<?xml version="1.0"?> +<ItemTemplate> + <Border DataSourceType="ProjectItem" Style="TreeItemBorder" ContextCommands="{Commands}" Focusable="true" MouseDown="onClick" MouseDoubleClick="onDoubleClick"> + <Group> + <Widget Height="Stretched" Background="RoyalBlue" Visible="{IsSelected}"/> + <HorizontalStack> + <Widget Width="5" Height="5"/> + <Image Style="TreeIcon" Picture="{Icon}"/> + <Label Text="{DisplayName}" Width="Stretched"/> + </HorizontalStack> + </Group> + </Border> +</ItemTemplate> +<ItemTemplate DataType="Crow.Coding.Project" Data="RootItems" DataTest="Type"> + <Expandable DataSourceType="Project" Caption="{Name}" ContextCommands="{Commands}" IsExpanded="{²IsExpanded}" MouseDoubleClick="/onClickForExpand"> + <Template> + <VerticalStack> + <Border Style="TreeItemBorder" > + <HorizontalStack Spacing="1"> + <Image Margin="1" Width="9" Height="9" Focusable="true" MouseDown="./onClickForExpand" + Path="{./Image}" + Visible="{./IsExpandable}" + SvgSub="{./IsExpanded}" + MouseEnter="{Background=LightGrey}" + MouseLeave="{Background=Transparent}"/> + <Image Style="TreeIcon" + Path="#Crow.Icons.crowproj.svg"/> + <Widget Width="4" Height="9" Background="Green" Visible="{IsStartupProject}"/> + <Label Text="{./Caption}"/> + </HorizontalStack> + </Border> + <Container Name="Content" Visible="false"/> + </VerticalStack> + </Template> + <HorizontalStack Height="Fit"> + <Widget Width="8" Height="10"/> + <VerticalStack Height="Fit" Name="ItemsContainer"/> + </HorizontalStack> + </Expandable> +</ItemTemplate> +<ItemTemplate DataSourceType="ProjectNode" DataType="ReferenceGroup" Data="ChildNodes" DataTest="Type" > + <Expandable Caption="{DisplayName}" Template="#Crow.Coding.TreeExpandable.template" IsExpanded="{²IsExpanded}"> + <HorizontalStack Height="Fit"> + <Widget Width="8" Height="10"/> + <VerticalStack Height="Fit" Name="ItemsContainer"/> + </HorizontalStack> + </Expandable> +</ItemTemplate> +<ItemTemplate DataType="VirtualGroup" Data="ChildNodes" DataTest="Type"> + <Expandable DataSourceType="ProjectNode" Caption="{DisplayName}" Template="#Crow.Coding.TreeExpandable.template" IsExpanded="{²IsExpanded}"> + <HorizontalStack Height="Fit"> + <Widget Width="8" Height="10"/> + <VerticalStack Height="Fit" Name="ItemsContainer"/> + </HorizontalStack> + </Expandable> +</ItemTemplate> +<ItemTemplate DataType="Folder" DataTest="Type"> + <Border DataSourceType="ProjectNode" Style="TreeItemBorder" ContextCommands="{Commands}"> + <HorizontalStack> + <Image Style="ProjTreeIcon" + Path="#Crow.Icons.folder.svg"/> + <Label Text="{DisplayName}" Width="Stretched"/> + </HorizontalStack> + </Border> +</ItemTemplate> diff --git a/Samples/CrowIDE/ui/TreeExpandable.template b/Samples/CrowIDE/ui/TreeExpandable.template new file mode 100644 index 00000000..f945f781 --- /dev/null +++ b/Samples/CrowIDE/ui/TreeExpandable.template @@ -0,0 +1,17 @@ +<?xml version="1.0"?> +<VerticalStack> + <Border Style="TreeItemBorder" > + <HorizontalStack Spacing="5" Focusable="true" MouseDoubleClick="./onClickForExpand"> + <Image Margin="1" Width="9" Height="9" Focusable="true" MouseDown="./onClickForExpand" + Path="{./Image}" + Visible="{./IsExpandable}" + SvgSub="{./IsExpanded}" + MouseEnter="{Background=LightGrey}" + MouseLeave="{Background=Transparent}"/> + <Image Style="TreeIcon" + Path="#Crow.Icons.folder.svg" SvgSub="{./IsExpanded}"/> + <Label Text="{./Caption}"/> + </HorizontalStack> + </Border> + <Container Name="Content" Visible="false"/> +</VerticalStack> diff --git a/Samples/CrowIDE/ui/editors/EditPane.template b/Samples/CrowIDE/ui/editors/EditPane.template new file mode 100644 index 00000000..f6eb0f81 --- /dev/null +++ b/Samples/CrowIDE/ui/editors/EditPane.template @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<TabView SelectedTab="{²./SelectedIndex}" Name="ItemsContainer" Orientation="Horizontal"/> diff --git a/Samples/CrowIDE/ui/editors/EditPaneItems.template b/Samples/CrowIDE/ui/editors/EditPaneItems.template new file mode 100644 index 00000000..d9f253e1 --- /dev/null +++ b/Samples/CrowIDE/ui/editors/EditPaneItems.template @@ -0,0 +1,18 @@ +<?xml version="1.0"?> +<ItemTemplate> + <TabItem Caption="{DisplayName}" QueryClose="OnQueryClose"> + <Label Text="Error" Background="Red"/> + </TabItem> +</ItemTemplate> +<ItemTemplate Path="#CrowIDE.ui.editors.SvgEdit.itemp" DataType=".svg"/> +<ItemTemplate Path="#CrowIDE.ui.editors.SrcEdit.itemp" DataType=".cs"/> +<ItemTemplate Path="#CrowIDE.ui.editors.SrcEdit.itemp" DataType=".style"/> +<ItemTemplate Path="#CrowIDE.ui.editors.IMLEdit.itemp" DataType=".crow"/> +<ItemTemplate Path="#CrowIDE.ui.editors.IMLEdit.itemp" DataType=".itemp"/> +<ItemTemplate Path="#CrowIDE.ui.editors.IMLEdit.itemp" DataType=".template"/> +<ItemTemplate DataType=".goml"> + <TabItem Caption="{DisplayName}" QueryClose="OnQueryClose"> + <IMLContainer Path="#CrowIDE.ui.editors.TextEditor.crow"/> + </TabItem> +</ItemTemplate> + diff --git a/Samples/CrowIDE/ui/editors/EditTabItem.template b/Samples/CrowIDE/ui/editors/EditTabItem.template new file mode 100644 index 00000000..b082c06e --- /dev/null +++ b/Samples/CrowIDE/ui/editors/EditTabItem.template @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<GenericStack Orientation="Vertical" Spacing="0" DataSourceType="ProjectFile" + MouseEnter="{caption.Font=hack bold, 10}" + MouseLeave="{caption.Font=hack, 10}"> + <HorizontalStack Margin="2" Left="{./TabOffset}" + Name="TabTitle" + HorizontalAlignment="Left" + Height="{./TabHeight}" + Width="{./TabWidth}"> + <Widget Width="5" Height="5" Background="Blue" Visible="{IsDirty}"/> + <Label Name="caption" Text="{DisplayName}" Foreground="Black" Width="Stretched"/> + <Border CornerRadius="5" BorderWidth="1" Foreground="Transparent" Height="12" Width="12" + MouseEnter="{Foreground=Black}" MouseLeave="{Foreground=Transparent}"> + <Image Focusable="true" Name="Image" Margin="0" Width="Stretched" Height="Stretched" Path="#Crow.Icons.exit2.svg" + MouseClick="./butCloseTabClick"/> + </Border> + </HorizontalStack> + <Container Name="Content"/> +</GenericStack>
\ No newline at end of file diff --git a/Samples/CrowIDE/ui/editors/IMLEdit.itemp b/Samples/CrowIDE/ui/editors/IMLEdit.itemp new file mode 100644 index 00000000..4ee3aba9 --- /dev/null +++ b/Samples/CrowIDE/ui/editors/IMLEdit.itemp @@ -0,0 +1,54 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<TabItem DataSourceType="ImlProjectItem" QueryClose="OnQueryClose" IsSelected="{²IsSelected}" Template="#Crow.Coding.EditTabItem.template"> + <VerticalStack> + <VerticalStack Height="60%"> + <Label DataSource="{../editor.HoverWidget}" Width="Stretched" Margin="2" Text="{Name}"/> + <VerticalStack Width="Stretched" Margin="0" MinimumSize="10,10"> + <HorizontalStack> + <Scroller Name="scroller1" Margin="2" > + <ImlVisualEditor Foreground="SkyBlue" Name="editor" Background="Grey" + VerticalAlignment="Top" HorizontalAlignment="Left" Margin="4" + ContextCommands="{/Commands}" + AllowDrop="true" AllowDrag="true" Focusable="true" + UpdateEnabled="{IsSelected}" + ProjectNode="{}" SelectedItem="{²SelectedItem}"/> + </Scroller> + <ScrollBar Name="scrollbar1" Orientation="Vertical" + Value="{²../scroller1.ScrollY}" Maximum="{../scroller1.MaxScrollY}" + CursorSize="{../scroller1.ChildHeightRatio}" + LargeIncrement="{../scroller1.PageHeight}" SmallIncrement="30" + /> + </HorizontalStack> + <ScrollBar Style="HScrollBar" Name="scrollbarX" Orientation="Horizontal" + Value="{²../scroller1.ScrollX}" Maximum="{../scroller1.MaxScrollX}" + CursorSize="{../scroller1.ChildWidthRatio}" + LargeIncrement="{../scroller1.PageWidth}" SmallIncrement="30"/> + </VerticalStack> + <HorizontalStack Height="Fit" Margin="2" Spacing="5" Background="vgradient|0:0.8,0.8,0.8,1|1:Grey"> + <HorizontalStack Width="Fit" Spacing="1"> + <Label Text="Design Size:"/> + <TextBox Text="{²../../../editor.DesignWidth}" Width="40" TextAlignment="Right"/> + <Label Text="X"/> + <TextBox Text="{²../../../editor.DesignHeight}" Width="40" TextAlignment="Right"/> + </HorizontalStack> + <HorizontalStack Width="Fit" Spacing="1"> + <Label Text="Zoom:"/> + <Slider Value="{²../../../editor.Zoom}" Width="100" Height="10" Minimum="10" Maximum="200" SmallIncrement="10" LargeIncrement="50"/> + <Label Text="{../../../editor.Zoom}"/> + </HorizontalStack> + <HorizontalStack Width="Fit" Spacing="1"> + <Label Text="Grid Spacing:"/> + <Slider Value="{²../../../editor.GridSpacing}" Width="100" Height="10" Minimum="5" Maximum="100" SmallIncrement="5" LargeIncrement="20"/> + <TextBox Text="{../../../editor.GridSpacing}"/> + </HorizontalStack> + </HorizontalStack> + </VerticalStack> + <Splitter/> + <IMLContainer Path="#CrowIDE.ui.editors.SourceEditor.crow"/> + <Splitter Visible="{../editor.HasError}"/> + <Label DataSource="{../editor.Error}" Text="{}" + Visible="{../editor.HasError}" + Height="Fit" Width="Stretched" Background="DarkRed" Foreground="White" + TextAlignment="TopLeft" Multiline="true"/> + </VerticalStack> +</TabItem> diff --git a/Samples/CrowIDE/ui/editors/SourceEditor.crow b/Samples/CrowIDE/ui/editors/SourceEditor.crow new file mode 100644 index 00000000..17d3b1ec --- /dev/null +++ b/Samples/CrowIDE/ui/editors/SourceEditor.crow @@ -0,0 +1,32 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<VerticalStack> + <HorizontalStack > + <SourceEditor Focusable="true" Name="editor" Font="monospace, 12" VerticalAlignment="Top" Margin="2" + CurrentLine="{²CurrentLine}" CurrentColumn="{²CurrentColumn}" HasFocus="{IsSelected}" + Foreground="Jet" Background="White" Width="Stretched" Height="Stretched" + ProjectNode="{}" KeyDown="textView_KeyDown"/> + <ScrollBar Name="scrollbarY" Value="{²../editor.ScrollY}" + LargeIncrement="{../editor.VisibleLines}" + CursorSize="{../editor.ChildHeightRatio}" + Maximum="{../editor.MaxScrollY}" Orientation="Vertical"/> + </HorizontalStack> + <ScrollBar Style="HScrollBar" Name="scrollbarX" Value="{²../editor.ScrollX}" + Maximum="{../editor.MaxScrollX}" Orientation="Horizontal" + LargeIncrement="{../editor.VisibleColumns}" + CursorSize="{../editor.ChildWidthRatio}"/> + <HorizontalStack Height="Fit"> + <Label Text="{../../editor.HoverError}" Width="Stretched"/> + <Widget Background="Red" Width="5" Height="5" Visible="{IsDirty}"/> + <Label Text="Hover Line:" Foreground="Grey"/> + <Label Text="{../../editor.HoverLine}"/> + <Widget Height="5" Width="10"/> + <Label Text="Line:" Foreground="Grey"/> + <Label Text="{CurrentLine}"/> + <Widget Height="5" Width="10"/> + <Label Text="column:" Foreground="Grey"/> + <Label Text="{CurrentColumn}"/> + <Widget Height="5" Width="10"/> + <Label Text="ScrollX:" Foreground="Grey"/> + <Label Text="{../../editor.ScrollX}"/> + </HorizontalStack> +</VerticalStack> diff --git a/Samples/CrowIDE/ui/editors/SrcEdit.itemp b/Samples/CrowIDE/ui/editors/SrcEdit.itemp new file mode 100644 index 00000000..330dac64 --- /dev/null +++ b/Samples/CrowIDE/ui/editors/SrcEdit.itemp @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<TabItem QueryClose="OnQueryClose" IsSelected="{²IsSelected}" Template="#Crow.Coding.EditTabItem.template"> + <IMLContainer Path="#CrowIDE.ui.editors.SourceEditor.crow"/> +</TabItem>
\ No newline at end of file diff --git a/Samples/CrowIDE/ui/editors/SvgEdit.itemp b/Samples/CrowIDE/ui/editors/SvgEdit.itemp new file mode 100644 index 00000000..e7318b8c --- /dev/null +++ b/Samples/CrowIDE/ui/editors/SvgEdit.itemp @@ -0,0 +1,30 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<TabItem QueryClose="OnQueryClose" IsSelected="{²IsSelected}" Template="#Crow.Coding.EditTabItem.template"> + <VerticalStack> + <VerticalStack Height="50%"> + <HorizontalStack > + <SvgEditor Margin="10" ProjectNode="{}" Focusable="true" Name="editor" MouseWheelSpeed="20" Foreground="Black"/> + <ScrollBar Name="scrollbarY" Value="{²../editor.ScrollY}" + LargeIncrement="10" + CursorSize="{../editor.ChildHeightRatio}" + Maximum="{../editor.MaxScrollY}" Orientation="Vertical"/> + </HorizontalStack> + <ScrollBar Style="HScrollBar" Name="scrollbarX" Value="{²../editor.ScrollX}" + Maximum="{../editor.MaxScrollX}" Orientation="Horizontal" + LargeIncrement="10" + CursorSize="{../editor.ChildWidthRatio}"/> + <HorizontalStack Height="Fit" Margin="3"> + <Label Text="Zoom:"/> + <Label Text="{../../editor.Zoom}" Fit="true"/> + <!--<Spinner Name="sldZoom" Value="{²../../editor.Zoom}" Maximum="800" Minimum="1" SmallIncrement="10" LargeIncrement="50" Width="40" />--> + <Slider Value="{²../../editor.Zoom}" CursorSize="2" Height="8" Maximum="800" Minimum="1" SmallIncrement="1" LargeIncrement="10" Width="100" /> + </HorizontalStack> + </VerticalStack> + <Splitter/> + <IMLContainer Path="#Crow.Coding.ui.editors.SourceEditor.crow"/> + <Label DataSource="{../editor.Error}" Text="{Message}" + Visible="{../editor.HasError}" + Height="Fit" Width="Stretched" Background="DarkRed" Foreground="White" + TextAlignment="TopLeft" Multiline="true"/> + </VerticalStack> +</TabItem>
\ No newline at end of file diff --git a/Samples/CrowIDE/ui/editors/TextEditor.crow b/Samples/CrowIDE/ui/editors/TextEditor.crow new file mode 100644 index 00000000..a87d4acf --- /dev/null +++ b/Samples/CrowIDE/ui/editors/TextEditor.crow @@ -0,0 +1,29 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<VerticalStack> + <HorizontalStack > + <TextEditor Focusable="true" Name="editor" Font="monospace, 12" VerticalAlignment="Top" Margin="1" + CurrentLine="{²CurrentLine}" CurrentColumn="{²CurrentColumn}" + Foreground="DimGrey" Background="White" Width="Stretched" Height="Stretched" + ProjectNode="{}" KeyDown="textView_KeyDown"/> + <ScrollBar Name="scrollbarY" Value="{²../editor.ScrollY}" + LargeIncrement="{../editor.VisibleLines}" + CursorSize="{../editor.ChildHeightRatio}" + Maximum="{../editor.MaxScrollY}" Orientation="Vertical"/> + </HorizontalStack> + <ScrollBar Style="HScrollBar" Name="scrollbarX" Value="{²../editor.ScrollX}" + Maximum="{../editor.MaxScrollX}" Orientation="Horizontal" + LargeIncrement="{../editor.VisibleColumns}" + CursorSize="{../editor.ChildWidthRatio}"/> + <HorizontalStack Height="Fit"> + <Widget Height="5" Width="Stretched"/> + <Widget Background="Red" Width="5" Height="5" Visible="{IsDirty}"/> + <Label Text="Line:" Foreground="Grey"/> + <Label Text="{CurrentLine}"/> + <Widget Height="5" Width="10"/> + <Label Text="column:" Foreground="Grey"/> + <Label Text="{CurrentColumn}"/> + <Widget Height="5" Width="10"/> + <Label Text="ScrollX:" Foreground="Grey"/> + <Label Text="{../../editor.ScrollX}"/> + </HorizontalStack> +</VerticalStack> diff --git a/Samples/CrowIDE/ui/test.crow b/Samples/CrowIDE/ui/test.crow new file mode 100644 index 00000000..37d4bdd1 --- /dev/null +++ b/Samples/CrowIDE/ui/test.crow @@ -0,0 +1,4 @@ +<Container Margin="20" Background="DimGrey"> + <ImlVisualEditor Width="80%" Height="80%" Margin="0" MinimumSize="10,10" Foreground="SkyBlue" + Name="crowContainer" Background="DimGrey"/> +</Container> |