2024-10-13 21:17:09 -04:00
```julia
using Gadfly
```
2024-10-21 21:55:59 -04:00
# Athena/Phoenix Simulation
2024-10-13 21:17:09 -04:00
## Underlying simulation
In order to price the autocallable bonds, we need to simulate the underlying assets. Let's go ahead and set up the simulation first, as this lays the foundation for what we're trying to do. We're going to use [JNJ ](http://finance.yahoo.com/q?s=jnj ) as the basis for our simulation. This implies the following parameters:
- $S_0$ = \$102.2 (as of time of writing)
- $q$ = 2.84%
- $r$ = [.49, .9, 1.21, 1.45, 1.69] (term structure as of time of writing, linear interpolation)
- $\mu$ = $r - q$ (note that this implies a negative drift because of current low rates)
- $\sigma$ = $\sigma_{imp}$ = 15.62% (from VIX implied volatility)
We additionally define some parameters for simulation:
- `T` : The number of years to simulate
- `m` : The number of paths to simulate
- `n` : The number of steps to simulate in a year
```julia
S0 = 102.2
nominal = 100
q = 2.84 / 100
σ = 15.37 / 100
term = [0, .49, .9, 1.21, 1.45, 1.69] / 100 + 1
###
# Potential: Based on PEP
# S0 = 100.6
# σ = 14.86
# q = 2.7
###
# Simulation parameters
T = 5 # Using years as the unit of time
n = 250 # simulations per year
m = 100000 # paths
num_simulations = 5; # simulation rounds per price
```
2024-10-21 21:55:59 -04:00
5
2024-10-13 21:17:09 -04:00
### Defining the simulation
To make things simpler, we simulate a single year at a time. This allows us to easily add in a dividend policy without too much difficulty, and update the simulation every year to match the term structure. The underlying uses GBM for simulation between years.
```julia
simulate_gbm = function(S0, μ, σ , T, n)
# Set the initial state
m = length(S0)
t = T / n
motion = zeros(m, n)
motion[:,1] = S0
# Build out all states
for i=1:(n-1)
motion[:,i+1] = motion[:,i] .* exp((μ - σ ^2/2)*t) .* exp(sqrt(t) * σ .* randn(m))
end
return motion
end
function display_motion(motion, T)
# Given a matrix of paths, display the motion
n = length(motion[1,:])
m = length(motion[:,1])
x = repmat(1:n, m)
# Calculate the ticks we're going to use. We'd like to
# have an xtick every month, so calculate where those
# ticks will actually be at.
if (T > 3)
num_ticks = T
xlabel = "Years"
else
num_ticks = T * 12
xlabel = "Months"
end
tick_width = n / num_ticks
x_ticks = []
for i=1:round(num_ticks)
x_ticks = vcat(x_ticks, i*tick_width)
end
# Use one color for each path. I'm not sure if there's
# a better way to do this without going through DataFrames
colors = []
for i = 1:m
colors = vcat(colors, ones(n)*i)
end
plot(x=x, y=motion', color=colors, Geom.line,
Guide.xticks(ticks=x_ticks, label=false),
Guide.xlabel(xlabel),
Guide.ylabel("Value"))
end;
```
### Example simulation
Let's go ahead and run a sample simulation to see what the functions got us!
```julia
initial = ones(5) * S0
# Using μ=0, T=.25 for now, we'll use the proper values later
motion = simulate_gbm(initial, 0, σ , .25, 200)
display_motion(motion, .25)
```
2024-10-21 21:55:59 -04:00
<?xml version="1.0" encoding="UTF-8"?>
< svg xmlns = "http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:gadfly="http://www.gadflyjl.org/ns"
version="1.2"
width="141.42mm" height="100mm" viewBox="0 0 141.42 100"
stroke="none"
fill="#000000"
stroke-width="0.3"
font-size="3.88"
id="fig-3a6dd25ad25c4037a166889ee51bb151">
< g class = "plotroot xscalable yscalable" id = "fig-3a6dd25ad25c4037a166889ee51bb151-element-1" >
< g font-size = "3.88" font-family = "'PT Sans','Helvetica Neue','Helvetica',sans-serif" fill = "#564A55" stroke = "#000000" stroke-opacity = "0.000" id = "fig-3a6dd25ad25c4037a166889ee51bb151-element-2" >
< text x = "73.61" y = "88.39" text-anchor = "middle" dy = "0.6em" > Months< / text >
< / g >
< g class = "guide colorkey" id = "fig-3a6dd25ad25c4037a166889ee51bb151-element-3" >
< g font-size = "2.82" font-family = "'PT Sans','Helvetica Neue','Helvetica',sans-serif" fill = "#4C404B" id = "fig-3a6dd25ad25c4037a166889ee51bb151-element-4" >
< text x = "131.9" y = "66.46" dy = "0.35em" > 1< / text >
< text x = "131.9" y = "39.15" dy = "0.35em" > 5< / text >
< text x = "131.9" y = "59.63" dy = "0.35em" > 2< / text >
< text x = "131.9" y = "52.81" dy = "0.35em" > 3< / text >
< text x = "131.9" y = "45.98" dy = "0.35em" > 4< / text >
< / g >
< g shape-rendering = "crispEdges" stroke = "#000000" stroke-opacity = "0.000" id = "fig-3a6dd25ad25c4037a166889ee51bb151-element-5" >
< rect x = "129.58" y = "65.78" width = "1.31" height = "0.68" fill = "#004D84" / >
< rect x = "129.58" y = "65.1" width = "1.31" height = "0.68" fill = "#005B8D" / >
< rect x = "129.58" y = "64.41" width = "1.31" height = "0.68" fill = "#006995" / >
< rect x = "129.58" y = "63.73" width = "1.31" height = "0.68" fill = "#00769D" / >
< rect x = "129.58" y = "63.05" width = "1.31" height = "0.68" fill = "#0083A3" / >
< rect x = "129.58" y = "62.36" width = "1.31" height = "0.68" fill = "#278FA9" / >
< rect x = "129.58" y = "61.68" width = "1.31" height = "0.68" fill = "#409BAF" / >
< rect x = "129.58" y = "61" width = "1.31" height = "0.68" fill = "#55A7B5" / >
< rect x = "129.58" y = "60.32" width = "1.31" height = "0.68" fill = "#69B2BA" / >
< rect x = "129.58" y = "59.63" width = "1.31" height = "0.68" fill = "#7BBCC0" / >
< rect x = "129.58" y = "58.95" width = "1.31" height = "0.68" fill = "#8DC6C5" / >
< rect x = "129.58" y = "58.27" width = "1.31" height = "0.68" fill = "#9ED0CB" / >
< rect x = "129.58" y = "57.59" width = "1.31" height = "0.68" fill = "#A5CFC7" / >
< rect x = "129.58" y = "56.9" width = "1.31" height = "0.68" fill = "#ABCEC4" / >
< rect x = "129.58" y = "56.22" width = "1.31" height = "0.68" fill = "#B1CCC2" / >
< rect x = "129.58" y = "55.54" width = "1.31" height = "0.68" fill = "#B5CCC1" / >
< rect x = "129.58" y = "54.85" width = "1.31" height = "0.68" fill = "#B7CBBF" / >
< rect x = "129.58" y = "54.17" width = "1.31" height = "0.68" fill = "#B9CBBD" / >
< rect x = "129.58" y = "53.49" width = "1.31" height = "0.68" fill = "#BBCBBB" / >
< rect x = "129.58" y = "52.81" width = "1.31" height = "0.68" fill = "#BDCABA" / >
< rect x = "129.58" y = "52.12" width = "1.31" height = "0.68" fill = "#BFCAB8" / >
< rect x = "129.58" y = "51.44" width = "1.31" height = "0.68" fill = "#C2C9B7" / >
< rect x = "129.58" y = "50.76" width = "1.31" height = "0.68" fill = "#C4C9B6" / >
< rect x = "129.58" y = "50.07" width = "1.31" height = "0.68" fill = "#C6C8B5" / >
< rect x = "129.58" y = "49.39" width = "1.31" height = "0.68" fill = "#C9C7B4" / >
< rect x = "129.58" y = "48.71" width = "1.31" height = "0.68" fill = "#CCC7B2" / >
< rect x = "129.58" y = "48.03" width = "1.31" height = "0.68" fill = "#CFC6AE" / >
< rect x = "129.58" y = "47.34" width = "1.31" height = "0.68" fill = "#D4C5AA" / >
< rect x = "129.58" y = "46.66" width = "1.31" height = "0.68" fill = "#D8C3A6" / >
< rect x = "129.58" y = "45.98" width = "1.31" height = "0.68" fill = "#D3B79A" / >
< rect x = "129.58" y = "45.3" width = "1.31" height = "0.68" fill = "#CDAB8E" / >
< rect x = "129.58" y = "44.61" width = "1.31" height = "0.68" fill = "#C89E82" / >
< rect x = "129.58" y = "43.93" width = "1.31" height = "0.68" fill = "#C19177" / >
< rect x = "129.58" y = "43.25" width = "1.31" height = "0.68" fill = "#BA836C" / >
< rect x = "129.58" y = "42.56" width = "1.31" height = "0.68" fill = "#B27563" / >
< rect x = "129.58" y = "41.88" width = "1.31" height = "0.68" fill = "#AA665A" / >
< rect x = "129.58" y = "41.2" width = "1.31" height = "0.68" fill = "#A05752" / >
< rect x = "129.58" y = "40.52" width = "1.31" height = "0.68" fill = "#96484A" / >
< rect x = "129.58" y = "39.83" width = "1.31" height = "0.68" fill = "#8B3844" / >
< rect x = "129.58" y = "39.15" width = "1.31" height = "0.68" fill = "#7E273E" / >
< g stroke = "#FFFFFF" stroke-width = "0.2" id = "fig-3a6dd25ad25c4037a166889ee51bb151-element-6" >
< path fill = "none" d = "M129.58,66.46 L 130.9 66.46" / >
< path fill = "none" d = "M129.58,39.15 L 130.9 39.15" / >
< path fill = "none" d = "M129.58,59.63 L 130.9 59.63" / >
< path fill = "none" d = "M129.58,52.81 L 130.9 52.81" / >
< path fill = "none" d = "M129.58,45.98 L 130.9 45.98" / >
< / g >
< / g >
< g fill = "#362A35" font-size = "3.88" font-family = "'PT Sans','Helvetica Neue','Helvetica',sans-serif" stroke = "#000000" stroke-opacity = "0.000" id = "fig-3a6dd25ad25c4037a166889ee51bb151-element-7" >
< text x = "129.58" y = "35.15" > Color< / text >
< / g >
< / g >
< g clip-path = "url(#fig-3a6dd25ad25c4037a166889ee51bb151-element-9)" id = "fig-3a6dd25ad25c4037a166889ee51bb151-element-8" >
< g pointer-events = "visible" opacity = "1" fill = "#000000" fill-opacity = "0.000" stroke = "#000000" stroke-opacity = "0.000" class = "guide background" id = "fig-3a6dd25ad25c4037a166889ee51bb151-element-10" >
< rect x = "19.63" y = "5" width = "107.95" height = "80.39" / >
< / g >
< g class = "guide ygridlines xfixed" stroke-dasharray = "0.5,0.5" stroke-width = "0.2" stroke = "#D0D0E0" id = "fig-3a6dd25ad25c4037a166889ee51bb151-element-11" >
< path fill = "none" d = "M19.63,175.05 L 127.58 175.05" visibility = "hidden" gadfly:scale = "1.0" / >
< path fill = "none" d = "M19.63,159.78 L 127.58 159.78" visibility = "hidden" gadfly:scale = "1.0" / >
< path fill = "none" d = "M19.63,144.5 L 127.58 144.5" visibility = "hidden" gadfly:scale = "1.0" / >
< path fill = "none" d = "M19.63,129.22 L 127.58 129.22" visibility = "hidden" gadfly:scale = "1.0" / >
< path fill = "none" d = "M19.63,113.94 L 127.58 113.94" visibility = "hidden" gadfly:scale = "1.0" / >
< path fill = "none" d = "M19.63,98.67 L 127.58 98.67" visibility = "hidden" gadfly:scale = "1.0" / >
< path fill = "none" d = "M19.63,83.39 L 127.58 83.39" visibility = "visible" gadfly:scale = "1.0" / >
< path fill = "none" d = "M19.63,68.11 L 127.58 68.11" visibility = "visible" gadfly:scale = "1.0" / >
< path fill = "none" d = "M19.63,52.83 L 127.58 52.83" visibility = "visible" gadfly:scale = "1.0" / >
< path fill = "none" d = "M19.63,37.56 L 127.58 37.56" visibility = "visible" gadfly:scale = "1.0" / >
< path fill = "none" d = "M19.63,22.28 L 127.58 22.28" visibility = "visible" gadfly:scale = "1.0" / >
< path fill = "none" d = "M19.63,7 L 127.58 7" visibility = "visible" gadfly:scale = "1.0" / >
< path fill = "none" d = "M19.63,-8.28 L 127.58 -8.28" visibility = "hidden" gadfly:scale = "1.0" / >
< path fill = "none" d = "M19.63,-23.56 L 127.58 -23.56" visibility = "hidden" gadfly:scale = "1.0" / >
< path fill = "none" d = "M19.63,-38.83 L 127.58 -38.83" visibility = "hidden" gadfly:scale = "1.0" / >
< path fill = "none" d = "M19.63,-54.11 L 127.58 -54.11" visibility = "hidden" gadfly:scale = "1.0" / >
< path fill = "none" d = "M19.63,-69.39 L 127.58 -69.39" visibility = "hidden" gadfly:scale = "1.0" / >
< path fill = "none" d = "M19.63,-84.67 L 127.58 -84.67" visibility = "hidden" gadfly:scale = "1.0" / >
< path fill = "none" d = "M19.63,159.78 L 127.58 159.78" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,156.72 L 127.58 156.72" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,153.67 L 127.58 153.67" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,150.61 L 127.58 150.61" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,147.55 L 127.58 147.55" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,144.5 L 127.58 144.5" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,141.44 L 127.58 141.44" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,138.39 L 127.58 138.39" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,135.33 L 127.58 135.33" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,132.28 L 127.58 132.28" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,129.22 L 127.58 129.22" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,126.17 L 127.58 126.17" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,123.11 L 127.58 123.11" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,120.05 L 127.58 120.05" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,117 L 127.58 117" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,113.94 L 127.58 113.94" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,110.89 L 127.58 110.89" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,107.83 L 127.58 107.83" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,104.78 L 127.58 104.78" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,101.72 L 127.58 101.72" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,98.67 L 127.58 98.67" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,95.61 L 127.58 95.61" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,92.55 L 127.58 92.55" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,89.5 L 127.58 89.5" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,86.44 L 127.58 86.44" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,83.39 L 127.58 83.39" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,80.33 L 127.58 80.33" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,77.28 L 127.58 77.28" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,74.22 L 127.58 74.22" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,71.17 L 127.58 71.17" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,68.11 L 127.58 68.11" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,65.06 L 127.58 65.06" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,62 L 127.58 62" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,58.94 L 127.58 58.94" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,55.89 L 127.58 55.89" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,52.83 L 127.58 52.83" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,49.78 L 127.58 49.78" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,46.72 L 127.58 46.72" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,43.67 L 127.58 43.67" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,40.61 L 127.58 40.61" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,37.56 L 127.58 37.56" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,34.5 L 127.58 34.5" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,31.44 L 127.58 31.44" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,28.39 L 127.58 28.39" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,25.33 L 127.58 25.33" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,22.28 L 127.58 22.28" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,19.22 L 127.58 19.22" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,16.17 L 127.58 16.17" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,13.11 L 127.58 13.11" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,10.06 L 127.58 10.06" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,7 L 127.58 7" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,3.94 L 127.58 3.94" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,0.89 L 127.58 0.89" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,-2.17 L 127.58 -2.17" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,-5.22 L 127.58 -5.22" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,-8.28 L 127.58 -8.28" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,-11.33 L 127.58 -11.33" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,-14.39 L 127.58 -14.39" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,-17.44 L 127.58 -17.44" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,-20.5 L 127.58 -20.5" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,-23.56 L 127.58 -23.56" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,-26.61 L 127.58 -26.61" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,-29.67 L 127.58 -29.67" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,-32.72 L 127.58 -32.72" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,-35.78 L 127.58 -35.78" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,-38.83 L 127.58 -38.83" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,-41.89 L 127.58 -41.89" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,-44.94 L 127.58 -44.94" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,-48 L 127.58 -48" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,-51.06 L 127.58 -51.06" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,-54.11 L 127.58 -54.11" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,-57.17 L 127.58 -57.17" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,-60.22 L 127.58 -60.22" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,-63.28 L 127.58 -63.28" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,-66.33 L 127.58 -66.33" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,-69.39 L 127.58 -69.39" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,220.89 L 127.58 220.89" visibility = "hidden" gadfly:scale = "0.5" / >
< path fill = "none" d = "M19.63,68.11 L 127.58 68.11" visibility = "hidden" gadfly:scale = "0.5" / >
< path fill = "none" d = "M19.63,-84.67 L 127.58 -84.67" visibility = "hidden" gadfly:scale = "0.5" / >
< path fill = "none" d = "M19.63,159.78 L 127.58 159.78" visibility = "hidden" gadfly:scale = "5.0" / >
< path fill = "none" d = "M19.63,153.67 L 127.58 153.67" visibility = "hidden" gadfly:scale = "5.0" / >
< path fill = "none" d = "M19.63,147.55 L 127.58 147.55" visibility = "hidden" gadfly:scale = "5.0" / >
< path fill = "none" d = "M19.63,141.44 L 127.58 141.44" visibility = "hidden" gadfly:scale = "5.0" / >
< path fill = "none" d = "M19.63,135.33 L 127.58 135.33" visibility = "hidden" gadfly:scale = "5.0" / >
< path fill = "none" d = "M19.63,129.22 L 127.58 129.22" visibility = "hidden" gadfly:scale = "5.0" / >
< path fill = "none" d = "M19.63,123.11 L 127.58 123.11" visibility = "hidden" gadfly:scale = "5.0" / >
< path fill = "none" d = "M19.63,117 L 127.58 117" visibility = "hidden" gadfly:scale = "5.0" / >
< path fill = "none" d = "M19.63,110.89 L 127.58 110.89" visibility = "hidden" gadfly:scale = "5.0" / >
< path fill = "none" d = "M19.63,104.78 L 127.58 104.78" visibility = "hidden" gadfly:scale = "5.0" / >
< path fill = "none" d = "M19.63,98.67 L 127.58 98.67" visibility = "hidden" gadfly:scale = "5.0" / >
< path fill = "none" d = "M19.63,92.55 L 127.58 92.55" visibility = "hidden" gadfly:scale = "5.0" / >
< path fill = "none" d = "M19.63,86.44 L 127.58 86.44" visibility = "hidden" gadfly:scale = "5.0" / >
< path fill = "none" d = "M19.63,80.33 L 127.58 80.33" visibility = "hidden" gadfly:scale = "5.0" / >
< path fill = "none" d = "M19.63,74.22 L 127.58 74.22" visibility = "hidden" gadfly:scale = "5.0" / >
< path fill = "none" d = "M19.63,68.11 L 127.58 68.11" visibility = "hidden" gadfly:scale = "5.0" / >
< path fill = "none" d = "M19.63,62 L 127.58 62" visibility = "hidden" gadfly:scale = "5.0" / >
< path fill = "none" d = "M19.63,55.89 L 127.58 55.89" visibility = "hidden" gadfly:scale = "5.0" / >
< path fill = "none" d = "M19.63,49.78 L 127.58 49.78" visibility = "hidden" gadfly:scale = "5.0" / >
< path fill = "none" d = "M19.63,43.67 L 127.58 43.67" visibility = "hidden" gadfly:scale = "5.0" / >
< path fill = "none" d = "M19.63,37.56 L 127.58 37.56" visibility = "hidden" gadfly:scale = "5.0" / >
< path fill = "none" d = "M19.63,31.44 L 127.58 31.44" visibility = "hidden" gadfly:scale = "5.0" / >
< path fill = "none" d = "M19.63,25.33 L 127.58 25.33" visibility = "hidden" gadfly:scale = "5.0" / >
< path fill = "none" d = "M19.63,19.22 L 127.58 19.22" visibility = "hidden" gadfly:scale = "5.0" / >
< path fill = "none" d = "M19.63,13.11 L 127.58 13.11" visibility = "hidden" gadfly:scale = "5.0" / >
< path fill = "none" d = "M19.63,7 L 127.58 7" visibility = "hidden" gadfly:scale = "5.0" / >
< path fill = "none" d = "M19.63,0.89 L 127.58 0.89" visibility = "hidden" gadfly:scale = "5.0" / >
< path fill = "none" d = "M19.63,-5.22 L 127.58 -5.22" visibility = "hidden" gadfly:scale = "5.0" / >
< path fill = "none" d = "M19.63,-11.33 L 127.58 -11.33" visibility = "hidden" gadfly:scale = "5.0" / >
< path fill = "none" d = "M19.63,-17.44 L 127.58 -17.44" visibility = "hidden" gadfly:scale = "5.0" / >
< path fill = "none" d = "M19.63,-23.56 L 127.58 -23.56" visibility = "hidden" gadfly:scale = "5.0" / >
< path fill = "none" d = "M19.63,-29.67 L 127.58 -29.67" visibility = "hidden" gadfly:scale = "5.0" / >
< path fill = "none" d = "M19.63,-35.78 L 127.58 -35.78" visibility = "hidden" gadfly:scale = "5.0" / >
< path fill = "none" d = "M19.63,-41.89 L 127.58 -41.89" visibility = "hidden" gadfly:scale = "5.0" / >
< path fill = "none" d = "M19.63,-48 L 127.58 -48" visibility = "hidden" gadfly:scale = "5.0" / >
< path fill = "none" d = "M19.63,-54.11 L 127.58 -54.11" visibility = "hidden" gadfly:scale = "5.0" / >
< path fill = "none" d = "M19.63,-60.22 L 127.58 -60.22" visibility = "hidden" gadfly:scale = "5.0" / >
< path fill = "none" d = "M19.63,-66.33 L 127.58 -66.33" visibility = "hidden" gadfly:scale = "5.0" / >
< path fill = "none" d = "M19.63,-72.44 L 127.58 -72.44" visibility = "hidden" gadfly:scale = "5.0" / >
< / g >
< g class = "guide xgridlines yfixed" stroke-dasharray = "0.5,0.5" stroke-width = "0.2" stroke = "#D0D0E0" id = "fig-3a6dd25ad25c4037a166889ee51bb151-element-12" >
< path fill = "none" d = "M55.93,5 L 55.93 85.39" visibility = "visible" gadfly:scale = "1.0" / >
< path fill = "none" d = "M90.76,5 L 90.76 85.39" visibility = "visible" gadfly:scale = "1.0" / >
< path fill = "none" d = "M125.58,5 L 125.58 85.39" visibility = "visible" gadfly:scale = "1.0" / >
< / g >
< g class = "plotpanel" id = "fig-3a6dd25ad25c4037a166889ee51bb151-element-13" >
< g stroke-width = "0.3" fill = "#000000" fill-opacity = "0.000" stroke-dasharray = "none" id = "fig-3a6dd25ad25c4037a166889ee51bb151-element-14" >
< path fill = "none" d = "M21.63,61.39 L 22.15 63.01 22.68 64.88 23.2 65.75 23.72 65.53 24.24 66.19 24.77 65.44 25.29 64.6 25.81 62.6 26.33 64.24 26.86 63.14 27.38 62.41 27.9 61.76 28.42 60.15 28.94 59.51 29.47 59.43 29.99 57.05 30.51 57.31 31.03 58.76 31.56 60.04 32.08 59.29 32.6 56.95 33.12 58.64 33.65 58.8 34.17 60.04 34.69 61.19 35.21 60.49 35.74 58.06 36.26 59.33 36.78 59.15 37.3 60.03 37.83 57.9 38.35 60.9 38.87 60.47 39.39 61.8 39.91 62.99 40.44 62.59 40.96 62.85 41.48 61.37 42 60.8 42.53 60.36 43.05 61.74 43.57 59.57 44.09 63.47 44.62 65.21 45.14 64.53 45.66 61.4 46.18 60.13 46.71 58.91 47.23 57.72 47.75 55.68 48.27 54.24 48.8 52.75 49.32 51.15 49.84 51.7 50.36 51.13 50.88 50.26 51.41 50.58 51.93 49.94 52.45 49.43 52.97 47.26 53.5 47.63 54.02 43.28 54.54 41.73 55.06 38.71 55.59 36.85 56.11 38.83 56.63 40.76 57.15 40.38 57.68 38.32 58.2 40.53 58.72 41.71 59.24 45.53 59.77 44.75 60.29 42.69 60.81 43.54 61.33 47.48 61.85 46.26 62.38 49.17 62.9 51.72 63.42 51.08 63.94 48.32 64.47 49.22 64.99 46.99 65.51 45.37 66.03 44.84 66.56 49.23 67.08 49.47 67.6 48.5 68.12 48.55 68.65 50.2 69.17 52.04 69.69 48.28 70.21 49.14 70.74 47.87 71.26 44.77 71.78 45.94 72.3 46.46 72.82 48.27 73.35 45.57 73.87 44.73 74.39 44.69 74.91 41.97 75.44 42.75 75.96 42.73 76.48 42.15 77 42.15 77.53 42.06 78.05 42.3 78.57 42.05 79.09 38.58 79.62 37.43 80.14 37.45 80.66 37.58 81.18 37.02 81.71 37.77 82.23 34.18 82.75 34.92 83.27 34.3 83.79 31.3 84.32 30.74 84.84 31.04 85.36 33.45 85.88 37.48 86.41 40.9 86.93 38.85 87.45 40.71 87.97 39.53 88.5 37.84 89.02 35.57 89.54 34.28 90.06 32.61 90.59 31.25 91.11 31.69 91.63 30.35 92.15 28.63 92.67 32.02 93.2 31.58 93.72 31.03 94.24 30.32 94.76 33.63 95.29 37.51 95.81 38.21 96.33 38.63 96.85 39 97.38 38.02 97.9 39.92 98.42 41.11 98.94 41.89 99.47 40.85 99.99 39.33 100.51 36.48 101.03 37.12 101.56 33.6 102.08 33.78 102.6 30.27 103.12 29.93 103.64 26.12 104.17 26.05 104.69 24.24 105.21 25.87 105.73 27.08 106.26 25.68 106.78 28.93 107.3 28.27 107.82 29.74 108.35 29.07 108.87 27.61 109.39 28.83 109.91 27.94 110.44 24.59 110.96 21.98 111.48 23.57 112 22.27 112.53 23.76 113.05 24.49 113.57 24.01 114.09 27.19 114.61 29.62 115.14 30.47 115.66 31.48 116.18 34.04 116.7 29.61 117.23 29.29 117.75 31.04 118.27 29.64 118.79 32.69 119.32 33.45 119.84 35.26 120.36 36.97 120.88 36.6 121.41 37.29 121.93 39.06 122.45 38.48 122.97 39.26 123.5 39.98 124.02 38.69 124.54 38.15 125.06 37.06 125.58 39.61" class = "geometry color_" stroke = "#004D84" / >
< path fill = "none" d = "M21.63,61.39 L 22.15 61.55 22.68 59.53 23.2 62.63 23.72 61.1 24.24 60.87 24.77 63.38 25.29 63.77 25.81 65.57 26.33 63.22 26.86 63.73 27.38 63.29 27.9 60.76 28.42 60.09 28.94 60 29.47 58.56 29.99 59.7 30.51 59.73 31.03 57.99 31.56 58.25 32.08 60.02 32.6 63.02 33.12 63.52 33.65 64.28 34.17 63.56 34.69 65.89 35.21 65.14 35.74 64.68 36.26 61.26 36.78 60.1 37.3 58.77 37.83 58.54 38.35 59.44 38.87 61.08 39.39 59.79 39.91 59.06 40.44 59.77 40.96 58.28 41.48 60.23 42 59.88 42.53 55.28 43.05 58.62 43.57 58.51 44.09 58.98 44.62 56.77 45.14 54.9 45.66 55.78 46.18 55.1 46.71 56.55 47.23 58.27 47.75 56.82 48.27 56.24 48.8 54.06 49.32 56.41 49.84 55.68 50.36 58.5 50.88 57.87 51.41 58.81 51.93 59.87 52.45 61.56 52.97 65.32 53.5 65.49 54.02 65.91 54.54 67.73 55.06 66.87 55.59 67.38 56.11 64.09 56.63 63.02 57.15 63.89 57.68 62.49 58.2 61.84 58.72 63.22 59.24 62.02 59.77 62.72 60.29 62.27 60.81 62.55 61.33 58.97 61.85 57.07 62.38 60.9 62.9 61.93 63.42 61.82 63.94 61.85 64.47 61.73 64.99 62.68 65.51 64.04 66.03 61.26 66.56 62.96 67.08 64.38 67.6 65.88 68.12 66.68 68.65 68.22 69.17 67.78 69.69 69.38 70.21 70.75 70.74 72.39 71.26 70.94 71.78 72.08 72.3 72.27 72.82 73.58 73.35 73.74 73.87 72.35 74.39 72.22 74.91 74.12 75.44 75.3 75.96 74.87 76.48 75.32 77 74.8 77.53 74.11 78.05 74.5 78.57 69.69 79.09 72.14 79.62 69.69 80.14 69.75 80.66 69.51 81.18 71.33 81.71 73.9 82.23 72.82 82.75 70.59 83.27 71.59 83.79 71.58 84.32 71.71 84.84 69.86 85.36 70.05 85.88 69.15 86.41 72.2 86.93 69.53 87.45 70.69 87.97 70.15 88.5 69.51 89.02 67.76 89.54 67.41 90.06 67.64 90.59 67.5 91.11 68.27 91.63 68.42 92.15 68.23 92.67 68.39 93.2 68.47 93.72 69.07 94.24 71.95 94.76 74.34 95.29 75.63 95.81 74.08 96.33 71.92 96.85 71.36 97.38 71.17 97.9 68.55 98.42 70.43 98.94 71.01 99.47 70.5 99.99 69.72 100.51 69.93 101.03 66.34 101.56 64.29 102.08 67.1 102.6 68.99 103.12 70.73 103.64 67.44 104.17 68.72 104.69 71.08 105.21 70.44 105.73 71.41 106.26 69.46 106.78 67.03 107.3 66.86 107.82 68.11 108.35 67.18 108.87 67.67 109.39 66.77 109.91 67.01 110.44 65.42 110.96 66.32 111.48 68.51 112 68.31 112.53 66.43 113.05 67.65 113.57 68.46 114.09 67.9 114.61 69.27 115.14 65.25 115.66 63.92 116.18 63.66 116.7 62.69 117.23 62.57 117.75 63.19 118.27 64.28 118.79 61.75 119.32 62.08 119.84 62.38 120.36 62.89 120.88 61.83 121.41 60.06 121.93 58.9 122.45 57.83 122.97 56.53 123.5 58.83 124.02 57.9 124.54 59.82 125.06 59.66 125.58 60.89" class = "geometry color_" stroke = "#7E273E" / >
< path fill = "none" d = "M21.63,61.39 L 22.15 62.01 22.68 62.12 23.2 64.62 23.72 64.89 24.24 60.83 24.77 58.38 25.29 57.87 25.81 59.4 26.33 59.29 26.86 58.42 27.38 58.88 27.9 61.48 28.42 61.57 28.94 63.47 29.47 63.35 29.99 64.6 30.51 66.75 31.03 67.31 31.56 66.27 32.08 66.88 32.6 66.7 33.12 68.45 33.65 68.23 34.17 69.78 34.69 70.71 35.21 68.96 35.74 71.3 36.26 71.51 36.78 72.6 37.3 71.53 37.83 68.39 38.35 67.9 38.87 68.04 39.39 66.79 39.91 65.4 40.44 66.69 40.96 66.18 41.48 65.4 42 63.44 42.53 61.3 43.05 63.19 43.57 61.69 44.09 58.24 44.62 57.65 45.14 56.99 45.66 58.92 46.18 58.42 46.71 57.78 47.23 56.04 47.75 55.47 48.27 53.63 48.8 50.38 49.32 50.16 49.84 47.49 50.36 46.04 50.88 45.37 51.41 45.88 51.93 46.2 52.45 48.8 52.97 46.81 53.5 47.41 54.02 44.95 54.54 42.2 55.06 40.28 55.59 40.95 56.11 41.25 56.63 42.26 57.15 45.49 57.68 49.57 58.2 51.75 58.72 51.28 59.24 50.92 59.77 50.58 60.29 49.25 60.81 48.75 61.33 50.04 61.85 51.83 62.38 56.12 62.9 58.24 63.42 53.76 63.94 48.49 64.47 49.53 64.99 48.91 65.51 47.5 66.03 44.98 66.56 45.34 67.08 45.47 67.6 47.09 68.12 45.28 68.65 46.64 69.17 46.73 69.69 47.31 70.21 41.61 70.74 40.78 71.26 39.14 71.78 38.12 72.3 38.34 72.82 38.18 73.35 38.73 73.87 38.42 74.39 38.55 74.91 38.09 75.44 37.59 75.96 37.78 76.48 35.41 77 31.8 77.53 33.17 78.05 33.1 78.57 31.68 79.09 33.07 79.62 34.53 80.14 34.08 80.66 33.6 81.18 32.97 81.71 32.22 82.23 32.64 82.75 35.43 83.27 36.8 83.79 37.78 84.32 39.79 84.84 40.84 85.36 40.79 85.88 37.93 86.41 34.02 86.93 33.81 87.45 34.55 87.97 32.24 88.5 29.77 89.02 29.49 89.54 34.31 90.06 34.92 90.59 36.37 91.11 33.74 91.63 37.64 92.15 36.01 92.67 39.21 93.2 39.67 93.72 38.94 94.24 41.03 94.76 42.02 95.29 41.38 95.81 40.65 96.33 41.11 96.85 42.33 97.38 41.38 97.9 39.81 98.42 37.69 98.94 38.54 99.47 35.99 99.99 35.41 100.51 38.56 101.03 38.77 101.56 40.05 102.08 42.32 102.6 43.14 103.12 43.52 103.64 46.7 104.17 45.1 104.69 43.26 105.21 42.06 105.73 45.01 106.26 44.86 106.78 43.66 107.3 43.57 107.82 43.53 108.35 44.76 108.87 44.65 109.39 46.06 109.91 44.57 110.44 49.26 110.96 49.18 111.48 51.74 112 51.36 112.53 52.06 113.05 55.72 113.57 57.48 114.09 59.83 114.61 61.84 115.14 63.48 115.66 63.61 116.18 62.01 116.7 62.46 117.23 62.32 117.75 63.34 118.27 61.52 118.79 61.6 119.32 59.09 119.84 61.22 120.36 62.07 120.88 62.68 121.41 64.73 121.93 65.46 122.45 63.95 122.97 63.8 123.5 65.66 124.02 63.97 124.54 62.93 125.06 62.62 125.58 59.34" class = "geometry color_" stroke = "#88C4C4" / >
< path fill = "none" d = "M21.63,61.39 L 22.15 61.13 22.68 60.81 23.2 62.02 23.72 62.26 24.24 60.5 24.77 57.82 25.29 56.74 25.81 56.51 26.33 58.2 26.86 60.28 27.38 61.78 27.9 58.53 28.42 57.05 28.94 57.46 29.47 56.25 29.99 55.53 30.51 56.65 31.03 57.59 31.56 54.25 32.08 55.32 32.6 56.21 33.12 59.52 33.65 59.2 34.17 60.8 34.69 62.11 35.21 62.65 35.74 63.18 36.26 65.53 36.78 62.71 37.3 61.28 37.83 62.17 38.35 64.09 38.87 65.57 39.39 68.22 39.91 69.83 40.44 71.7 40.96 72.83 41.48 72.38 42 73.06 42.53 75.36 43.05 74.31 43.57 72.7 44.09 72.32 44.62 72.66 45.14 71.6 45.66 70.6 46.18 71.62 46.71 70.85 47.23 71.92 47.75 72.63 48.27 70.05 48.8 70.08 49.32 66.73 49.84 67.47 50.36 66.88 50.88 69.37 51.41 68.11 51.93 68.23 52.45 68.51 52.97 68.65 53.5 68.56 54.02 70.73 54.54 69.14 55.06 69.57 55.59 69.92 56.11 72.37 56.63 73.95 57.15 73.32 57.68 73.92 58.2 73.39 58.72 73.43 59.24 73.68 59.77 74.47 60.29 72.03 60.81 72.45 61.33 73.14 61.85 73.15 62.38 71.74 62.9 69.85 63.42 70.7 63.94 71.26 64.47 72.88 64.99 74.1 65.51 70.79 66.03 70.7 66.56 70.99 67.08 70.58 67.6 69.57 68.12 68.88 68.65 70.25 69.17 68.44 69.69 66.43 70.21 66.82 70.74 67.93 71.26 66.66 71.78 68.22 72.3 67.71 72.82 70.26 73.35 69.76 73.87 70.48 74.39 68.83 74.91 69.78 75.44 69.89 75.96 73.59 76.48 67.68 77 68.15 77.53 64.77 78.05 62.61 78.57 63.48 79.09 64.13 79.62 63.34 80.14 64.97 80.66 66.9 81.18 67.84 81.71 65.25 82.23 65.96 82.75 68.01 83.27 67.94 83.79 67.69 84.32 67.66 84.84 65.74 85.36 66.5 85.88 66.92 86.41 66.41 86.93 68.51 87.45 71.01 87.97 71.21 88.5 72.5 89.02 73.18 89.54 70.08 90.06 72.06 90.59 74.8 91.11 74.42 91.63 75.56 92.15 73.31 92.67 74.09 93.2 75.35 93.72 74.34 94.24 77.32 94.76 74.76 95.29 72.97 95.81 71.55 96.33 72.98 96.85 75.64 97.38 75.6 97.9 76.73 98.42 74.28 98.94 73.56 99.47 73.22 99.99 74.74 100.51 74.37 101.03 73.72 101.56 75.73 102.08 76.29 102.6 75.49 103.12 74.57 103.64 76.28 104.17 75.11 104.69 74.66 105.21 77.83 105.73 80.01 106.26 78.94 106.78 80.86 107.3 81.08 107.82 80.19 108.35 77.17 108.87 79.12 109.39 82.08 109.91 80.5 110.44 78.48 110.96 77.93 111.48 77.62 112 77.35 112.53 78.06 113.05 78 113.57 78.5 114.09 77.21 114.61 78.04 115.14 78.9 115.66 78.49 116.18 78.9 116.7 76.42 117.23 75.58 117.75 76.93 118.27 75.55 118.79 72.22 119.32 71.57 119.84 70.44 120.36 70.09 120.88 73.61 121.41 72.94 121.93 70.79 122.45 73.21 122.97 75.36 123.5 75.87 124.02 78.45 124.54 78.19 125.06 79.03 125.58 75.53" class = "geometry color_" stroke = "#BECAB9" / >
< path fill = "none" d = "M21.63,61.39 L 22.15 62.55 22.68 62.37 23.2 63.25 23.72 63.25 24.24 64.02 24.77 65.99 25.29 69.66 25.81 71.24 26.33 70.93 26.86 70.19 27.38 71.55 27.9 73.13 28.42 70.7 28.94 73.34 29.47 72.47 29.99 71.56 30.51 71.95 31.03 71.63 31.56 71.16 32.08 73.57 32.6 73.55 33.12 76.27 33.65 73.77 34.17 73.68 34.69 73.68 35.21 76.32 35.74 78.54 36.26 78.59 36.78 78.96 37.3 79.49 37.83 81.13 38.35 81.3 38.87 81.14 39.39 82.98 39.91 80.8 40.44 80.57 40.96 79.64 41.48 81.32 42 78.97 42.53 79.94 43.05 82.18 43.57 81.76 44.09 80.36 44.62 79.69 45.14 78.74 45.66 76.71 46.18 74.35 46.71 73.54 47.23 75.11 47.75 75.3 48.27 72.13 48.8 71.57 49.32 73.81 49.84 70.57 50.36 70.7 50.88 69.51 51.41 67.7 51.93 68.7 52.45 68.49 52.97 67.36 53.5 68.38 54.02 68.57 54.54 69.48 55.06 67.24 55.59 67.91 56.11 68.49 56.63 69.85 57.15 70.98 57.68 72.27 58.2 72.59 58.72 72.89 59.24 71.74 59.77 74.72 60.29 75.85 60.81 76.74 61.33 76.47 61.85 78.94 62.38 80.68 62.9 79.33 63.42 79.29 63.94 80.75 64.47 78.89 64.99 75.99 65.51 76.3 66.03 75.83 66.56 74.26 67.08 73.28 67.6 73.07 68.12 76.32 68.65 79.61 69.17 78.24 69.69 79.84 70.21 78.28 70.74 79.19 71.26 80.4 71.78 82.76 72.3 81.01 72.82 78.82 73.35 80.8 73.87 79.4 74.39 79.97 74.91 79.62 75.44 78.4 75.96 80.89 76.48 80.82 77 80.98 77.53 78.76 78.05 78.89 78.57 78.74 79.09 78.77 79.62 79.58 80.14 80.03 80.66 79.16 81.18 78.87 81.71 77.29 82.23 79.92 82.75 80.48 83.27 76.93 83.79 74.47 84.32 75.54 84.84 73.87 85.36 72.13 85.88 69.8 86.41 70.82 86.93 71.83 87.45 73.26 87.97 72.86 88.5 74.19 89.02 72.37 89.54 70.28 90.06 70.37 90.59 71.36 91.11 69.93 91.63 67.03 92.15 69.87 92.67 66.08 93.2 65.76 93.72 65.11 94.24 65.89 94.76 66.82 95.29 67.4 95.81 66.67 96.33 65.37 96.85 66.11 97.38 66.54 97.9 68.48 98.42 69.86 98.94 66.92 99.47 66.68 99.99 68.42 100.51 71.29 101.03 69.59 101.56 67.99 102.08 67.6 102.6 68.79 103.12 68.83 103.64 72.71 104.17 69.46 104.69 68.62 105.21 64.75 105.73 66.78 106.26 64.76 106.78 67.81 107.3 70.4 107.82 70.97 108.35 72.14 108.87 72.67 109.39 72.77 109.91 74.44 110.44 75.67 110.96 77.33 111.48 76.89 112 75.27 112.53 73.3 113.05 75.32 113.57 74.37 114.09 76.24 114.61 75.89 115.14 72.65 115.66 72.29 116.18 70.49 116.7 71.87 117.23 69.1 117.75 70.16 118.27 66.35 118.79 65.95 119.32 67.92 119.84 67.88 120.36 68.62 120.88 69.89 121.41 68.68 121.93 65.93 122.45 64.6 122.97 64.63 123.5 64.11 124.02 65.81 124.54 63.74 125.06 61.66 125.58 61.11" class = "geometry color_" stroke = "#D2B497" / >
< / g >
< / g >
< g opacity = "0" class = "guide zoomslider" stroke = "#000000" stroke-opacity = "0.000" id = "fig-3a6dd25ad25c4037a166889ee51bb151-element-15" >
< g fill = "#EAEAEA" stroke-width = "0.3" stroke-opacity = "0" stroke = "#6A6A6A" id = "fig-3a6dd25ad25c4037a166889ee51bb151-element-16" >
< rect x = "120.58" y = "8" width = "4" height = "4" / >
< g class = "button_logo" fill = "#6A6A6A" id = "fig-3a6dd25ad25c4037a166889ee51bb151-element-17" >
< path d = "M121.38,9.6 L 122.18 9.6 122.18 8.8 122.98 8.8 122.98 9.6 123.78 9.6 123.78 10.4 122.98 10.4 122.98 11.2 122.18 11.2 122.18 10.4 121.38 10.4 z" / >
< / g >
< / g >
< g fill = "#EAEAEA" id = "fig-3a6dd25ad25c4037a166889ee51bb151-element-18" >
< rect x = "101.08" y = "8" width = "19" height = "4" / >
< / g >
< g class = "zoomslider_thumb" fill = "#6A6A6A" id = "fig-3a6dd25ad25c4037a166889ee51bb151-element-19" >
< rect x = "109.58" y = "8" width = "2" height = "4" / >
< / g >
< g fill = "#EAEAEA" stroke-width = "0.3" stroke-opacity = "0" stroke = "#6A6A6A" id = "fig-3a6dd25ad25c4037a166889ee51bb151-element-20" >
< rect x = "96.58" y = "8" width = "4" height = "4" / >
< g class = "button_logo" fill = "#6A6A6A" id = "fig-3a6dd25ad25c4037a166889ee51bb151-element-21" >
< path d = "M97.38,9.6 L 99.78 9.6 99.78 10.4 97.38 10.4 z" / >
< / g >
< / g >
< / g >
< / g >
< g class = "guide ylabels" font-size = "2.82" font-family = "'PT Sans Caption','Helvetica Neue','Helvetica',sans-serif" fill = "#6C606B" id = "fig-3a6dd25ad25c4037a166889ee51bb151-element-22" >
< text x = "18.63" y = "175.05" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "1.0" > 65< / text >
< text x = "18.63" y = "159.78" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "1.0" > 70< / text >
< text x = "18.63" y = "144.5" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "1.0" > 75< / text >
< text x = "18.63" y = "129.22" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "1.0" > 80< / text >
< text x = "18.63" y = "113.94" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "1.0" > 85< / text >
< text x = "18.63" y = "98.67" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "1.0" > 90< / text >
< text x = "18.63" y = "83.39" text-anchor = "end" dy = "0.35em" visibility = "visible" gadfly:scale = "1.0" > 95< / text >
< text x = "18.63" y = "68.11" text-anchor = "end" dy = "0.35em" visibility = "visible" gadfly:scale = "1.0" > 100< / text >
< text x = "18.63" y = "52.83" text-anchor = "end" dy = "0.35em" visibility = "visible" gadfly:scale = "1.0" > 105< / text >
< text x = "18.63" y = "37.56" text-anchor = "end" dy = "0.35em" visibility = "visible" gadfly:scale = "1.0" > 110< / text >
< text x = "18.63" y = "22.28" text-anchor = "end" dy = "0.35em" visibility = "visible" gadfly:scale = "1.0" > 115< / text >
< text x = "18.63" y = "7" text-anchor = "end" dy = "0.35em" visibility = "visible" gadfly:scale = "1.0" > 120< / text >
< text x = "18.63" y = "-8.28" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "1.0" > 125< / text >
< text x = "18.63" y = "-23.56" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "1.0" > 130< / text >
< text x = "18.63" y = "-38.83" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "1.0" > 135< / text >
< text x = "18.63" y = "-54.11" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "1.0" > 140< / text >
< text x = "18.63" y = "-69.39" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "1.0" > 145< / text >
< text x = "18.63" y = "-84.67" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "1.0" > 150< / text >
< text x = "18.63" y = "159.78" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 70< / text >
< text x = "18.63" y = "156.72" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 71< / text >
< text x = "18.63" y = "153.67" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 72< / text >
< text x = "18.63" y = "150.61" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 73< / text >
< text x = "18.63" y = "147.55" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 74< / text >
< text x = "18.63" y = "144.5" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 75< / text >
< text x = "18.63" y = "141.44" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 76< / text >
< text x = "18.63" y = "138.39" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 77< / text >
< text x = "18.63" y = "135.33" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 78< / text >
< text x = "18.63" y = "132.28" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 79< / text >
< text x = "18.63" y = "129.22" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 80< / text >
< text x = "18.63" y = "126.17" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 81< / text >
< text x = "18.63" y = "123.11" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 82< / text >
< text x = "18.63" y = "120.05" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 83< / text >
< text x = "18.63" y = "117" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 84< / text >
< text x = "18.63" y = "113.94" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 85< / text >
< text x = "18.63" y = "110.89" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 86< / text >
< text x = "18.63" y = "107.83" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 87< / text >
< text x = "18.63" y = "104.78" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 88< / text >
< text x = "18.63" y = "101.72" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 89< / text >
< text x = "18.63" y = "98.67" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 90< / text >
< text x = "18.63" y = "95.61" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 91< / text >
< text x = "18.63" y = "92.55" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 92< / text >
< text x = "18.63" y = "89.5" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 93< / text >
< text x = "18.63" y = "86.44" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 94< / text >
< text x = "18.63" y = "83.39" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 95< / text >
< text x = "18.63" y = "80.33" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 96< / text >
< text x = "18.63" y = "77.28" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 97< / text >
< text x = "18.63" y = "74.22" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 98< / text >
< text x = "18.63" y = "71.17" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 99< / text >
< text x = "18.63" y = "68.11" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 100< / text >
< text x = "18.63" y = "65.06" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 101< / text >
< text x = "18.63" y = "62" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 102< / text >
< text x = "18.63" y = "58.94" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 103< / text >
< text x = "18.63" y = "55.89" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 104< / text >
< text x = "18.63" y = "52.83" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 105< / text >
< text x = "18.63" y = "49.78" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 106< / text >
< text x = "18.63" y = "46.72" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 107< / text >
< text x = "18.63" y = "43.67" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 108< / text >
< text x = "18.63" y = "40.61" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 109< / text >
< text x = "18.63" y = "37.56" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 110< / text >
< text x = "18.63" y = "34.5" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 111< / text >
< text x = "18.63" y = "31.44" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 112< / text >
< text x = "18.63" y = "28.39" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 113< / text >
< text x = "18.63" y = "25.33" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 114< / text >
< text x = "18.63" y = "22.28" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 115< / text >
< text x = "18.63" y = "19.22" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 116< / text >
< text x = "18.63" y = "16.17" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 117< / text >
< text x = "18.63" y = "13.11" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 118< / text >
< text x = "18.63" y = "10.06" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 119< / text >
< text x = "18.63" y = "7" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 120< / text >
< text x = "18.63" y = "3.94" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 121< / text >
< text x = "18.63" y = "0.89" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 122< / text >
< text x = "18.63" y = "-2.17" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 123< / text >
< text x = "18.63" y = "-5.22" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 124< / text >
< text x = "18.63" y = "-8.28" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 125< / text >
< text x = "18.63" y = "-11.33" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 126< / text >
< text x = "18.63" y = "-14.39" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 127< / text >
< text x = "18.63" y = "-17.44" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 128< / text >
< text x = "18.63" y = "-20.5" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 129< / text >
< text x = "18.63" y = "-23.56" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 130< / text >
< text x = "18.63" y = "-26.61" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 131< / text >
< text x = "18.63" y = "-29.67" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 132< / text >
< text x = "18.63" y = "-32.72" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 133< / text >
< text x = "18.63" y = "-35.78" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 134< / text >
< text x = "18.63" y = "-38.83" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 135< / text >
< text x = "18.63" y = "-41.89" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 136< / text >
< text x = "18.63" y = "-44.94" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 137< / text >
< text x = "18.63" y = "-48" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 138< / text >
< text x = "18.63" y = "-51.06" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 139< / text >
< text x = "18.63" y = "-54.11" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 140< / text >
< text x = "18.63" y = "-57.17" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 141< / text >
< text x = "18.63" y = "-60.22" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 142< / text >
< text x = "18.63" y = "-63.28" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 143< / text >
< text x = "18.63" y = "-66.33" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 144< / text >
< text x = "18.63" y = "-69.39" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 145< / text >
< text x = "18.63" y = "220.89" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "0.5" > 50< / text >
< text x = "18.63" y = "68.11" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "0.5" > 100< / text >
< text x = "18.63" y = "-84.67" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "0.5" > 150< / text >
< text x = "18.63" y = "159.78" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "5.0" > 70< / text >
< text x = "18.63" y = "153.67" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "5.0" > 72< / text >
< text x = "18.63" y = "147.55" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "5.0" > 74< / text >
< text x = "18.63" y = "141.44" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "5.0" > 76< / text >
< text x = "18.63" y = "135.33" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "5.0" > 78< / text >
< text x = "18.63" y = "129.22" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "5.0" > 80< / text >
< text x = "18.63" y = "123.11" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "5.0" > 82< / text >
< text x = "18.63" y = "117" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "5.0" > 84< / text >
< text x = "18.63" y = "110.89" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "5.0" > 86< / text >
< text x = "18.63" y = "104.78" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "5.0" > 88< / text >
< text x = "18.63" y = "98.67" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "5.0" > 90< / text >
< text x = "18.63" y = "92.55" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "5.0" > 92< / text >
< text x = "18.63" y = "86.44" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "5.0" > 94< / text >
< text x = "18.63" y = "80.33" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "5.0" > 96< / text >
< text x = "18.63" y = "74.22" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "5.0" > 98< / text >
< text x = "18.63" y = "68.11" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "5.0" > 100< / text >
< text x = "18.63" y = "62" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "5.0" > 102< / text >
< text x = "18.63" y = "55.89" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "5.0" > 104< / text >
< text x = "18.63" y = "49.78" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "5.0" > 106< / text >
< text x = "18.63" y = "43.67" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "5.0" > 108< / text >
< text x = "18.63" y = "37.56" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "5.0" > 110< / text >
< text x = "18.63" y = "31.44" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "5.0" > 112< / text >
< text x = "18.63" y = "25.33" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "5.0" > 114< / text >
< text x = "18.63" y = "19.22" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "5.0" > 116< / text >
< text x = "18.63" y = "13.11" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "5.0" > 118< / text >
< text x = "18.63" y = "7" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "5.0" > 120< / text >
< text x = "18.63" y = "0.89" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "5.0" > 122< / text >
< text x = "18.63" y = "-5.22" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "5.0" > 124< / text >
< text x = "18.63" y = "-11.33" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "5.0" > 126< / text >
< text x = "18.63" y = "-17.44" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "5.0" > 128< / text >
< text x = "18.63" y = "-23.56" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "5.0" > 130< / text >
< text x = "18.63" y = "-29.67" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "5.0" > 132< / text >
< text x = "18.63" y = "-35.78" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "5.0" > 134< / text >
< text x = "18.63" y = "-41.89" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "5.0" > 136< / text >
< text x = "18.63" y = "-48" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "5.0" > 138< / text >
< text x = "18.63" y = "-54.11" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "5.0" > 140< / text >
< text x = "18.63" y = "-60.22" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "5.0" > 142< / text >
< text x = "18.63" y = "-66.33" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "5.0" > 144< / text >
< text x = "18.63" y = "-72.44" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "5.0" > 146< / text >
< / g >
< g font-size = "3.88" font-family = "'PT Sans','Helvetica Neue','Helvetica',sans-serif" fill = "#564A55" stroke = "#000000" stroke-opacity = "0.000" id = "fig-3a6dd25ad25c4037a166889ee51bb151-element-23" >
< text x = "8.81" y = "43.19" text-anchor = "middle" dy = "0.35em" transform = "rotate(-90, 8.81, 45.19)" > Value< / text >
< / g >
< / g >
< defs >
< clipPath id = "fig-3a6dd25ad25c4037a166889ee51bb151-element-9" >
< path d = "M19.63,5 L 127.58 5 127.58 85.39 19.63 85.39" / >
< /clipPath
>< / defs >
< script > < ! [ C D A T A [
(function(N){var k=/[\.\/]/,L=/\s*,\s*/,C=function(a,d){return a-d},a,v,y={n:{}},M=function(){for(var a=0,d=this.length;a< d ; a ++) if (" undefined "!= typeof this [ a ]) return this [ a ]}, A = function(){for(var a = this.length;--a;)if("undefined"!=typeof this [ a ]) return this [ a ]}, w = function(k,d){k=String(k);var f = v,n=Array.prototype.slice.call(arguments,2),u=w.listeners(k),p=0,b,q=[],e={},l=[],r=a;l.firstDefined=M;l.lastDefined=A;a=k;for(var s = v=0,x=u.length;s<x;s++)"zIndex"in u [ s ]&&( q . push ( u [ s ]. zIndex ), 0 > u[s].zIndex&&
(e[u[s].zIndex]=u[s]));for(q.sort(C);0>q[p];)if(b=e[q[p++] ],l.push(b.apply(d,n)),v)return v=f,l;for(s=0;s< x ; s + + ) if ( b = u[s],"zIndex"in b ) if ( b . zIndex = =q[p]){l.push(b.apply(d,n));if(v)break;do if ( p + + , ( b = e[q[p] ] ) & & l . push ( b . apply ( d , n ) ) , v ) break ; while ( b ) } else e [ b . zIndex ] = b ; else if ( l . push ( b . apply ( d , n ) ) , v ) break ; v = f;a=r;return l } ; w . _events = y;w.listeners=function(a){a=a.split(k);var d = y,f,n,u,p,b,q,e,l=[d],r=[];u=0;for(p=a.length;u<p;u++){e=[];b=0;for(q=l.length;b<q;b++)for(d=l[b].n,f=[d[a[u] ] , d [ " * " ] ] , n = 2;n--;)if(d=
f[n])e.push(d),r=r.concat(d.f||[]);l=e}return r};w.on=function(a,d){a=String(a);if("function"!=typeof d)return function(){};for(var f=a.split(L),n=0,u=f.length;n< u ; n + + ) ( function ( a ) { a = a.split(k);for(var b = y,f,e=0,l=a.length;e<l;e++)b=b.n,b=b.hasOwnProperty(a[e])&&b[a[e] ] | | ( b [ a [ e ] ] = { n: { } } ) ; b . f = b.f||[];e=0;for(l=b.f.length;e<l;e++)if(b.f[e]==d){f=!0;break}!f&&b.f.push(d)})(f[n]);return function ( a ) { + a = =+a&&(d.zIndex=+a)}};w.f=function(a){var d = [].slice.call(arguments,1);return function ( ) { w . apply ( null ,
[a,null].concat(d).concat([].slice.call(arguments,0)))}};w.stop=function(){v=1};w.nt=function(k){return k?(new RegExp("(?:\\.|\\/|^)"+k+"(?:\\.|\\/|$)")).test(a):a};w.nts=function(){return a.split(k)};w.off=w.unbind=function(a,d){if(a){var f=a.split(L);if(1< f.length ) for ( var n = 0,u=f.length;n<u;n++)w.off(f[n],d);else{for(var f = a.split(k),p,b,q,e,l=[y],n=0,u=f.length;n<u;n++)for(e=0;e<l.length;e+=q.length-2){q=[e,1];p=l[e].n;if("*"!=f[n])p[f[n] ]&& q . push ( p [ f [ n ] ]); else for ( b in p ) p . hasOwnProperty ( b )&&
q.push(p[b]);l.splice.apply(l,q)}n=0;for(u=l.length;n< u ; n + + ) for ( p = l[n];p.n;){if(d){if(p.f){e=0;for(f=p.f.length;e<f;e++)if(p.f[e]==d){p.f.splice(e,1);break}!p.f.length&&delete p . f } for ( b in p . n ) if ( p . n . hasOwnProperty ( b ) & & p . n [ b ] . f ) { q = p.n[b].f;e=0;for(f=q.length;e<f;e++)if(q[e]==d){q.splice(e,1);break}!q.length&&delete p . n [ b ] . f } } else for ( b in delete p . f , p . n ) p . n . hasOwnProperty ( b ) & & p . n [ b ] . f & & delete p . n [ b ] . f ; p = p.n}}}else w . _events = y={n:{}}};w.once=function(a,d){var f = function(){w.unbind(a,f);return d . apply ( this ,
arguments)};return w.on(a,f)};w.version="0.4.2";w.toString=function(){return"You are running Eve 0.4.2"};"undefined"!=typeof module& & module.exports?module.exports=w:"function"===typeof define& & define.amd?define("eve",[],function(){return w}):N.eve=w})(this);
(function(N,k){"function"===typeof define& & define.amd?define("Snap.svg",["eve"],function(L){return k(N,L)}):k(N,N.eve)})(this,function(N,k){var L=function(a){var k={},y=N.requestAnimationFrame||N.webkitRequestAnimationFrame||N.mozRequestAnimationFrame||N.oRequestAnimationFrame||N.msRequestAnimationFrame||function(a){setTimeout(a,16)},M=Array.isArray||function(a){return a instanceof Array||"[object Array]"==Object.prototype.toString.call(a)},A=0,w="M"+(+new Date).toString(36),z=function(a){if(null==
a)return this.s;var b=this.s-a;this.b+=this.dur*b;this.B+=this.dur*b;this.s=a},d=function(a){if(null==a)return this.spd;this.spd=a},f=function(a){if(null==a)return this.dur;this.s=this.s*a/this.dur;this.dur=a},n=function(){delete k[this.id];this.update();a("mina.stop."+this.id,this)},u=function(){this.pdif||(delete k[this.id],this.update(),this.pdif=this.get()-this.b)},p=function(){this.pdif& & (this.b=this.get()-this.pdif,delete this.pdif,k[this.id]=this)},b=function(){var a;if(M(this.start)){a=[];
for(var b=0,e=this.start.length;b< e ; b + + ) a [ b ] = + this . start [ b ] + ( this . end [ b ] -this . start [ b ] ) * this . easing ( this . s ) } else a = +this.start+(this.end-this.start)*this.easing(this.s);this.set(a)},q=function(){var l = 0,b;for(b in k ) if ( k . hasOwnProperty ( b ) ) { var e = k[b],f=e.get();l++;e.s=(f-e.b)/(e.dur/e.spd);1<=e.s&&(delete k [ b ] , e . s = 1,l--,function(b){setTimeout(function(){a("mina.finish."+b.id,b)})}(e));e.update()}l&&y(q)},e=function(a,r,s,x,G,h,J){a={id:w+(A++).toString(36),start:a,end:r,b:s,s:0,dur:x-s,spd:1,get:G,
set:h,easing:J||e.linear,status:z,speed:d,duration:f,stop:n,pause:u,resume:p,update:b};k[a.id]=a;r=0;for(var K in k)if(k.hasOwnProperty(K)&&(r++,2==r))break; 1==r&&y(q); return a};e.time=Date.now||function(){return+new Date};e.getById=function(a){return k[a]||null};e.linear=function(a){return a};e.easeout=function(a){return Math.pow(a,1.7)};e.easein=function(a){return Math.pow(a,0.48)};e.easeinout=function(a){if(1==a)return 1;if(0==a)return 0;var b=0.48-a/1.04,e=Math.sqrt(0.1734+b*b);a=e-b;a=Math.pow(Math.abs(a),
1/3)*(0>a?-1:1);b=-e-b;b=Math.pow(Math.abs(b),1/3)*(0>b?-1:1);a=a+b+0.5;return 3*(1-a)*a*a+a*a*a};e.backin=function(a){return 1==a?1:a*a*(2.70158*a-1.70158)};e.backout=function(a){if(0==a)return 0;a-=1;return a*a*(2.70158*a+1.70158)+1};e.elastic=function(a){return a==!!a?a:Math.pow(2,-10*a)*Math.sin(2*(a-0.075)*Math.PI/0.3)+1};e.bounce=function(a){a< 1 / 2 . 75 ? a * = 7 . 5625 * a:a < 2 / 2 . 75 ? ( a- = 1.5/2.75,a=7.5625*a*a+0.75):a<2.5/2.75?(a-=2.25/2.75,a=7.5625*a*a+0.9375):(a-=2.625/2.75,a=7.5625*a*a+0.984375);return a } ;
return N.mina=e}("undefined"==typeof k?function(){}:k),C=function(){function a(c,t){if(c){if(c.tagName)return x(c);if(y(c,"array")& & a.set)return a.set.apply(a,c);if(c instanceof e)return c;if(null==t)return c=G.doc.querySelector(c),x(c)}return new s(null==c?"100%":c,null==t?"100%":t)}function v(c,a){if(a){"#text"==c&&(c=G.doc.createTextNode(a.text||"")); "string"==typeof c&&(c=v(c)); if("string"==typeof a)return"xlink:"==a.substring(0,6)?c.getAttributeNS(m,a.substring(6)):"xml:"==a.substring(0,4)?c.getAttributeNS(la,
a.substring(4)):c.getAttribute(a);for(var da in a)if(a[h](da)){var b=J(a[da]);b?"xlink:"==da.substring(0,6)?c.setAttributeNS(m,da.substring(6),b):"xml:"==da.substring(0,4)?c.setAttributeNS(la,da.substring(4),b):c.setAttribute(da,b):c.removeAttribute(da)}}else c=G.doc.createElementNS(la,c);return c}function y(c,a){a=J.prototype.toLowerCase.call(a);return"finite"==a?isFinite(c):"array"==a& & (c instanceof Array||Array.isArray& & Array.isArray(c))?!0:"null"==a& & null===c||a==typeof c& & null!==c||"object"==
a&& c===Object(c)||$.call(c).slice(8,-1).toLowerCase()==a}function M(c){if("function"==typeof c||Object(c)!==c)return c;var a=new c.constructor,b;for(b in c)c[h](b)&&(a[b]=M(c[b])); return a}function A(c,a,b){function m(){var e=Array.prototype.slice.call(arguments,0),f=e.join("\u2400"),d=m.cache=m.cache||{},l=m.count=m.count||[];if(d[h](f)){a:for(var e=l,l=f,B=0,H=e.length;B< H ; B ++) if ( e [ B ]=== l ){ e . push ( e . splice ( B , 1 )[ 0 ]); break a } return b ? b ( d [ f ]) :d [ f ]} 1E3 <= l . length && delete d [ l . shift ()]; l . push ( f ); d [ f ]= c . apply ( a ,
e);return b?b(d[f]):d[f]}return m}function w(c,a,b,m,e,f){return null==e?(c-=b,a-=m,c||a?(180*I.atan2(-a,-c)/C+540)%360:0):w(c,a,e,f)-w(b,m,e,f)}function z(c){return c%360*C/180}function d(c){var a=[];c=c.replace(/(?:^|\s)(\w+)\(([^)]+)\)/g,function(c,b,m){m=m.split(/\s*,\s*|\s+/);"rotate"==b&&1==m.length&&m.push(0,0); "scale"==b&&(2<m.length?m=m.slice(0,2):2==m.length&&m.push(0,0),1==m.length&&m.push(m[0],0,0)); "skewX"==b?a.push(["m",1,0,I.tan(z(m[0])),1,0,0]):"skewY"==b?a.push(["m",1,I.tan(z(m[0])),
0,1,0,0]):a.push([b.charAt(0)].concat(m));return c});return a}function f(c,t){var b=O(c),m=new a.Matrix;if(b)for(var e=0,f=b.length;e< f ; e + + ) { var h = b[e],d=h.length,B=J(h[0]).toLowerCase(),H=h[0]!=B,l=H?m.invert():0,E;"t"==B&&2==d?m.translate(h[1],0):"t"==B&&3==d?H?(d=l.x(0,0),B=l.y(0,0),H=l.x(h[1],h[2]),l=l.y(h[1],h[2]),m.translate(H-d,l-B)):m.translate(h[1],h[2]):"r"==B?2==d?(E=E||t,m.rotate(h[1],E.x+E.width/2,E.y+E.height/2)):4==d&&(H?(H=l.x(h[2],h[3]),l=l.y(h[2],h[3]),m.rotate(h[1],H,l)):m.rotate(h[1],
h[2],h[3])):"s"==B?2==d||3==d?(E=E||t,m.scale(h[1],h[d-1],E.x+E.width/2,E.y+E.height/2)):4==d?H?(H=l.x(h[2],h[3]),l=l.y(h[2],h[3]),m.scale(h[1],h[1],H,l)):m.scale(h[1],h[1],h[2],h[3]):5==d& & (H?(H=l.x(h[3],h[4]),l=l.y(h[3],h[4]),m.scale(h[1],h[2],H,l)):m.scale(h[1],h[2],h[3],h[4])):"m"==B& & 7==d& & m.add(h[1],h[2],h[3],h[4],h[5],h[6])}return m}function n(c,t){if(null==t){var m=!0;t="linearGradient"==c.type||"radialGradient"==c.type?c.node.getAttribute("gradientTransform"):"pattern"==c.type?c.node.getAttribute("patternTransform"):
c.node.getAttribute("transform");if(!t)return new a.Matrix;t=d(t)}else t=a._.rgTransform.test(t)?J(t).replace(/\.{3}|\u2026/g,c._.transform||aa):d(t),y(t,"array")&&(t=a.path?a.path.toString.call(t):J(t)),c._.transform=t; var b=f(t,c.getBBox(1));if(m)return b;c.matrix=b}function u(c){c=c.node.ownerSVGElement&&x(c.node.ownerSVGElement)||c.node.parentNode&&x(c.node.parentNode)||a.select("svg")||a(0,0); var t=c.select("defs"),t=null==t?!1:t.node;t||(t=r("defs",c.node).node);return t}function p(c){return c.node.ownerSVGElement&&
x(c.node.ownerSVGElement)||a.select("svg")}function b(c,a,m){function b(c){if(null==c)return aa;if(c==+c)return c;v(B,{width:c});try{return B.getBBox().width}catch(a){return 0}}function h(c){if(null==c)return aa;if(c==+c)return c;v(B,{height:c});try{return B.getBBox().height}catch(a){return 0}}function e(b,B){null==a?d[b]=B(c.attr(b)||0):b==a& & (d=B(null==m?c.attr(b)||0:m))}var f=p(c).node,d={},B=f.querySelector(".svg---mgr");B||(B=v("rect"),v(B,{x:-9E9,y:-9E9,width:10,height:10,"class":"svg---mgr",
fill:"none"}),f.appendChild(B));switch(c.type){case "rect":e("rx",b),e("ry",h);case "image":e("width",b),e("height",h);case "text":e("x",b);e("y",h);break;case "circle":e("cx",b);e("cy",h);e("r",b);break;case "ellipse":e("cx",b);e("cy",h);e("rx",b);e("ry",h);break;case "line":e("x1",b);e("x2",b);e("y1",h);e("y2",h);break;case "marker":e("refX",b);e("markerWidth",b);e("refY",h);e("markerHeight",h);break;case "radialGradient":e("fx",b);e("fy",h);break;case "tspan":e("dx",b);e("dy",h);break;default:e(a,
b)}f.removeChild(B);return d}function q(c){y(c,"array")||(c=Array.prototype.slice.call(arguments,0));for(var a=0,b=0,m=this.node;this[a];)delete this[a++];for(a=0;a< c.length ; a + + ) " set " = = c [ a ] . type ? c [ a ] . forEach ( function ( c ) { m . appendChild ( c . node ) } ) :m . appendChild ( c [ a ] . node ) ; for ( var h = m.childNodes,a=0;a<h.length;a++)this[b++]=x(h[a]);return this } function e ( c ) { if ( c . snap in E ) return E [ c . snap ] ; var a = this.id=V(),b;try{b=c.ownerSVGElement}catch(m){}this.node=c;b&&(this.paper=new s ( b ) ) ; this . type = c.tagName;this.anims=
{};this._={transform:[]};c.snap=a;E[a]=this;"g"==this.type&&(this.add=q); if(this.type in{g:1,mask:1,pattern:1})for(var e in s.prototype)s.prototype[h](e)& & (this[e]=s.prototype[e])}function l(c){this.node=c}function r(c,a){var b=v(c);a.appendChild(b);return x(b)}function s(c,a){var b,m,f,d=s.prototype;if(c& & "svg"==c.tagName){if(c.snap in E)return E[c.snap];var l=c.ownerDocument;b=new e(c);m=c.getElementsByTagName("desc")[0];f=c.getElementsByTagName("defs")[0];m||(m=v("desc"),m.appendChild(l.createTextNode("Created with Snap")),
b.node.appendChild(m));f||(f=v("defs"),b.node.appendChild(f));b.defs=f;for(var ca in d)d[h](ca)&&(b[ca]=d[ca]); b.paper=b.root=b}else b=r("svg",G.doc.body),v(b.node,{height:a,version:1.1,width:c,xmlns:la});return b}function x(c){return!c||c instanceof e||c instanceof l?c:c.tagName& & "svg"==c.tagName.toLowerCase()?new s(c):c.tagName& & "object"==c.tagName.toLowerCase()& & "image/svg+xml"==c.type?new s(c.contentDocument.getElementsByTagName("svg")[0]):new e(c)}a.version="0.3.0";a.toString=function(){return"Snap v"+
this.version};a._={};var G={win:N,doc:N.document};a._.glob=G;var h="hasOwnProperty",J=String,K=parseFloat,U=parseInt,I=Math,P=I.max,Q=I.min,Y=I.abs,C=I.PI,aa="",$=Object.prototype.toString,F=/^\s*((#[a-f\d]{6})|(#[a-f\d]{3})|rgba?\(\s*([\d\.]+%?\s*,\s*[\d\.]+%?\s*,\s*[\d\.]+%?(?:\s*,\s*[\d\.]+%?)?)\s*\)|hsba?\(\s*([\d\.]+(?:deg|\xb0|%)?\s*,\s*[\d\.]+%?\s*,\s*[\d\.]+(?:%?\s*,\s*[\d\.]+)?%?)\s*\)|hsla?\(\s*([\d\.]+(?:deg|\xb0|%)?\s*,\s*[\d\.]+%?\s*,\s*[\d\.]+(?:%?\s*,\s*[\d\.]+)?%?)\s*\))\s*$/i;a._.separator=
RegExp("[,\t\n\x0B\f\r \u00a0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]+");var S=RegExp("[\t\n\x0B\f\r \u00a0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,[\t\n\x0B\f\r \u00a0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*"),X={hs:1,rg:1},W=RegExp("([a-z])[\t\n\x0B\f\r \u00a0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029,]*((-?\\d*\\.?\\d*(?:e[\\-+]?\\d+)?[\t\n\x0B\f\r \u00a0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,?[\t\n\x0B\f\r \u00a0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*)+)",
"ig"),ma=RegExp("([rstm])[\t\n\x0B\f\r \u00a0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029,]*((-?\\d*\\.?\\d*(?:e[\\-+]?\\d+)?[\t\n\x0B\f\r \u00a0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,?[\t\n\x0B\f\r \u00a0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*)+)","ig"),Z=RegExp("(-?\\d*\\.?\\d*(?:e[\\-+]?\\d+)?)[\t\n\x0B\f\r \u00a0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,?[\t\n\x0B\f\r \u00a0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*",
"ig"),na=0,ba="S"+(+new Date).toString(36),V=function(){return ba+(na++).toString(36)},m="http://www.w3.org/1999/xlink",la="http://www.w3.org/2000/svg",E={},ca=a.url=function(c){return"url('#"+c+"')"};a._.$=v;a._.id=V;a.format=function(){var c=/\{([^\}]+)\}/g,a=/(?:(?:^|\.)(.+?)(?=\[|\.|$|\()|\[('|")(.+?)\2\])(\(\))?/g,b=function(c,b,m){var h=m;b.replace(a,function(c,a,b,m,t){a=a||m;h&& (a in h&& (h=h[a]),"function"==typeof h&&t&&(h=h()))}); return h=(null==h||h==m?c:h)+""};return function(a,m){return J(a).replace(c,
function(c,a){return b(c,a,m)})}}();a._.clone=M;a._.cacher=A;a.rad=z;a.deg=function(c){return 180*c/C%360};a.angle=w;a.is=y;a.snapTo=function(c,a,b){b=y(b,"finite")?b:10;if(y(c,"array"))for(var m=c.length;m--;){if(Y(c[m]-a)< =b)return c[m]}else{c=+c;m=a%c;if(m< b ) return a-m ; if ( m > c-b)return a-m+c}return a};a.getRGB=A(function(c){if(!c||(c=J(c)).indexOf("-")+1)return{r:-1,g:-1,b:-1,hex:"none",error:1,toString:ka};if("none"==c)return{r:-1,g:-1,b:-1,hex:"none",toString:ka};!X[h](c.toLowerCase().substring(0,
2))&&"#"!=c.charAt()&&(c=T(c)); if(!c)return{r:-1,g:-1,b:-1,hex:"none",error:1,toString:ka};var b,m,e,f,d;if(c=c.match(F)){c[2]&&(e=U(c[2].substring(5),16),m=U(c[2].substring(3,5),16),b=U(c[2].substring(1,3),16)); c[3]&&(e=U((d=c[3].charAt(3))+d,16),m=U((d=c[3].charAt(2))+d,16),b=U((d=c[3].charAt(1))+d,16)); c[4]& & (d=c[4].split(S),b=K(d[0]),"%"==d[0].slice(-1)& & (b*=2.55),m=K(d[1]),"%"==d[1].slice(-1)& & (m*=2.55),e=K(d[2]),"%"==d[2].slice(-1)& & (e*=2.55),"rgba"==c[1].toLowerCase().slice(0,4)& & (f=K(d[3])),
d[3]&&"%"==d[3].slice(-1)&&(f/=100)); if(c[5])return d=c[5].split(S),b=K(d[0]),"%"==d[0].slice(-1)&&(b/=100),m=K(d[1]),"%"==d[1].slice(-1)&&(m/=100),e=K(d[2]),"%"==d[2].slice(-1)&&(e/=100),"deg"!=d[0].slice(-3)&&" \u00b0"!=d[0].slice(-1)||(b/=360),"hsba"==c[1].toLowerCase().slice(0,4)&&(f=K(d[3])),d[3]&&"%"==d[3].slice(-1)&&(f/=100),a.hsb2rgb(b,m,e,f); if(c[6])return d=c[6].split(S),b=K(d[0]),"%"==d[0].slice(-1)&& (b/=100),m=K(d[1]),"%"==d[1].slice(-1)&& (m/=100),e=K(d[2]),"%"==d[2].slice(-1)&& (e/=100),
"deg"!=d[0].slice(-3)&&" \u00b0"!=d[0].slice(-1)||(b/=360),"hsla"==c[1].toLowerCase().slice(0,4)&&(f=K(d[3])),d[3]&&"%"==d[3].slice(-1)&&(f/=100),a.hsl2rgb(b,m,e,f); b=Q(I.round(b),255);m=Q(I.round(m),255);e=Q(I.round(e),255);f=Q(P(f,0),1);c={r:b,g:m,b:e,toString:ka};c.hex="#"+(16777216|e|m< < 8 | b << 16 ). toString ( 16 ). slice ( 1 ); c . opacity = y(f,"finite")?f:1;return c } return { r:-1 , g:-1 , b:-1 , hex: " none ", error:1 , toString:ka }}, a ); a . hsb = A(function(c,b,m){return a . hsb2rgb ( c , b , m ). hex }); a . hsl = A(function(c,b,m){return a . hsl2rgb ( c ,
b,m).hex});a.rgb=A(function(c,a,b,m){if(y(m,"finite")){var e=I.round;return"rgba("+[e(c),e(a),e(b),+m.toFixed(2)]+")"}return"#"+(16777216|b|a< < 8 | c < < 16 ) . toString ( 16 ) . slice ( 1 ) } ) ; var T = function(c){var a = G.doc.getElementsByTagName("head")[0]||G.doc.getElementsByTagName("svg")[0];T=A(function(c){if("red"==c.toLowerCase())return"rgb(255, 0 , 0 ) " ; a . style . color = "rgb(255, 0, 0)" ; a . style . color = c;c=G.doc.defaultView.getComputedStyle(a,aa).getPropertyValue("color");return"rgb(255, 0 , 0 ) " = = c ? null:c } ) ; return T ( c ) } ,
qa=function(){return"hsb("+[this.h,this.s,this.b]+")"},ra=function(){return"hsl("+[this.h,this.s,this.l]+")"},ka=function(){return 1==this.opacity||null==this.opacity?this.hex:"rgba("+[this.r,this.g,this.b,this.opacity]+")"},D=function(c,b,m){null==b& & y(c,"object")& & "r"in c& & "g"in c& & "b"in c&&(m=c.b,b=c.g,c=c.r); null==b&&y(c,string)&&(m=a.getRGB(c),c=m.r,b=m.g,m=m.b); if(1< c | | 1 < b | | 1 < m ) c / = 255 , b / = 255 , m / = 255 ; return [ c , b , m ] } , oa = function(c,b,m,e){c=I.round(255*c);b=I.round(255*b);m=I.round(255*m);c={r:c,
g:b,b:m,opacity:y(e,"finite")?e:1,hex:a.rgb(c,b,m),toString:ka};y(e,"finite")&&(c.opacity=e); return c};a.color=function(c){var b;y(c,"object")& & "h"in c& & "s"in c& & "b"in c?(b=a.hsb2rgb(c),c.r=b.r,c.g=b.g,c.b=b.b,c.opacity=1,c.hex=b.hex):y(c,"object")& & "h"in c& & "s"in c& & "l"in c?(b=a.hsl2rgb(c),c.r=b.r,c.g=b.g,c.b=b.b,c.opacity=1,c.hex=b.hex):(y(c,"string")& & (c=a.getRGB(c)),y(c,"object")& & "r"in c& & "g"in c& & "b"in c& & !("error"in c)?(b=a.rgb2hsl(c),c.h=b.h,c.s=b.s,c.l=b.l,b=a.rgb2hsb(c),c.v=b.b):(c={hex:"none"},
c.r=c.g=c.b=c.h=c.s=c.v=c.l=-1,c.error=1));c.toString=ka;return c};a.hsb2rgb=function(c,a,b,m){y(c,"object")& & "h"in c& & "s"in c& & "b"in c&&(b=c.b,a=c.s,c=c.h,m=c.o); var e,h,d;c=360*c%360/60;d=b*a;a=d*(1-Y(c%2-1));b=e=h=b-d;c=~~c;b+=[d,a,0,0,a,d][c];e+=[a,d,d,a,0,0][c];h+=[0,0,a,d,d,a][c];return oa(b,e,h,m)};a.hsl2rgb=function(c,a,b,m){y(c,"object")& & "h"in c& & "s"in c& & "l"in c&&(b=c.l,a=c.s,c=c.h); if(1< c | | 1 < a | | 1 < b ) c / = 360 , a / = 100 , b / = 100 ; var e , h , d ; c = 360*c%360/60;d=2*a*(0.5 > b?b:1-b);a=d*(1-Y(c%2-1));b=e=
h=b-d/2;c=~~c;b+=[d,a,0,0,a,d][c];e+=[a,d,d,a,0,0][c];h+=[0,0,a,d,d,a][c];return oa(b,e,h,m)};a.rgb2hsb=function(c,a,b){b=D(c,a,b);c=b[0];a=b[1];b=b[2];var m,e;m=P(c,a,b);e=m-Q(c,a,b);c=((0==e?0:m==c?(a-b)/e:m==a?(b-c)/e+2:(c-a)/e+4)+360)%6*60/360;return{h:c,s:0==e?0:e/m,b:m,toString:qa}};a.rgb2hsl=function(c,a,b){b=D(c,a,b);c=b[0];a=b[1];b=b[2];var m,e,h;m=P(c,a,b);e=Q(c,a,b);h=m-e;c=((0==h?0:m==c?(a-b)/h:m==a?(b-c)/h+2:(c-a)/h+4)+360)%6*60/360;m=(m+e)/2;return{h:c,s:0==h?0:0.5>m?h/(2*m):h/(2-2*
m),l:m,toString:ra}};a.parsePathString=function(c){if(!c)return null;var b=a.path(c);if(b.arr)return a.path.clone(b.arr);var m={a:7,c:6,o:2,h:1,l:2,m:2,r:4,q:4,s:4,t:2,v:1,u:3,z:0},e=[];y(c,"array")&&y(c[0],"array")&&(e=a.path.clone(c)); e.length||J(c).replace(W,function(c,a,b){var h=[];c=a.toLowerCase();b.replace(Z,function(c,a){a&&h.push(+a)}); "m"==c&&2<h.length&&(e.push([a].concat(h.splice(0,2))),c="l",a="m"==a?"l":"L"); "o"==c& & 1==h.length& & e.push([a,h[0] ]);if("r"==c)e.push([a].concat(h));else for(;h.length>=
m[c]&&(e.push([a].concat(h.splice(0,m[c]))),m[c]); );});e.toString=a.path.toString;b.arr=a.path.clone(e);return e};var O=a.parseTransformString=function(c){if(!c)return null;var b=[];y(c,"array")&&y(c[0],"array")&&(b=a.path.clone(c)); b.length||J(c).replace(ma,function(c,a,m){var e=[];a.toLowerCase();m.replace(Z,function(c,a){a&&e.push(+a)}); b.push([a].concat(e))});b.toString=a.path.toString;return b};a._.svgTransform2string=d;a._.rgTransform=RegExp("^[a-z][\t\n\x0B\f\r \u00a0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*-?\\.?\\d",
"i");a._.transform2matrix=f;a._unit2px=b;a._.getSomeDefs=u;a._.getSomeSVG=p;a.select=function(c){return x(G.doc.querySelector(c))};a.selectAll=function(c){c=G.doc.querySelectorAll(c);for(var b=(a.set||Array)(),m=0;m< c.length ; m + + ) b . push ( x ( c [ m ] ) ) ; return b } ; setInterval ( function ( ) { for ( var c in E ) if ( E [ h ] ( c ) ) { var a = E[c],b=a.node;("svg"!=a.type&&!b.ownerSVGElement||"svg"==a.type&&(!b.parentNode||"ownerSVGElement"in b . parentNode & & ! b . ownerSVGElement ) ) & & delete E [ c ] } } , 1E4 ) ; ( function ( c ) { function m ( c ) { function a ( c ,
b){var m=v(c.node,b);(m=(m=m&& m.match(d))&& m[2])&& "#"==m.charAt()&& (m=m.substring(1))&& (f[m]=(f[m]||[]).concat(function(a){var m={};m[b]=ca(a);v(c.node,m)}))}function b(c){var a=v(c.node,"xlink:href");a&& "#"==a.charAt()&& (a=a.substring(1))&& (f[a]=(f[a]||[]).concat(function(a){c.attr("xlink:href","#"+a)}))}var e=c.selectAll("*"),h,d=/^\s*url\(("|'|)(.*)\1\)\s*$/;c=[];for(var f={},l=0,E=e.length;l< E ; l ++){ h = e[l];a(h,"fill");a(h,"stroke");a(h,"filter");a(h,"mask");a(h,"clip-path");b(h);var t = v(h.node,
"id");t&&(v(h.node,{id:h.id}),c.push({old:t,id:h.id}))}l=0; for(E=c.length;l< E ; l ++) if ( e = f[c[l].old])for(h=0,t=e.length;h<t;h++)e[h](c[l].id)}function e ( c , a , b ){ return function ( m ){ m = m.slice(c,a);1==m.length&&(m=m[0]);return b ? b ( m ) :m }} function d ( c ){ return function (){ var a = c?"<"+this.type:"",b=this.node.attributes,m=this.node.childNodes;if(c)for(var e = 0,h=b.length;e<h;e++)a+=" "+ b [ e ]. name +'="'+ b [ e ]. value . replace (/"/ g ,' \\"')+'"'; if ( m . length ){ c &&( a +=" > ");e=0;for(h=m.length;e< h ; e ++) 3 = =m[e].nodeType?a+=m[e].nodeValue:
1==m[e].nodeType&&(a+=x(m[e]).toString()); c& & (a+="< /"+this.type+">")}else c&&(a+="/>"); return a}}c.attr=function(c,a){if(!c)return this;if(y(c,"string"))if(1< arguments.length ) { var b = {};b[c]=a;c=b}else return k ( " snap . util . getattr . " + c , this ) . firstDefined ( ) ; for ( var m in c ) c [ h ] ( m ) & & k ( " snap . util . attr . " + m , this , c [ m ] ) ; return this } ; c . getBBox = function(c){if(!a.Matrix||!a.path)return this . node . getBBox ( ) ; var b = this,m=new a . Matrix ; if ( b . removed ) return a . _ . box ( ) ; for ( ; " use " = = b . type ; ) if ( c | | ( m = m.add(b.transform().localMatrix.translate(b.attr("x")||
0,b.attr("y")||0))),b.original)b=b.original;else var e=b.attr("xlink:href"),b=b.original=b.node.ownerDocument.getElementById(e.substring(e.indexOf("#")+1));var e=b._,h=a.path.get[b.type]||a.path.get.deflt;try{if(c)return e.bboxwt=h?a.path.getBBox(b.realPath=h(b)):a._.box(b.node.getBBox()),a._.box(e.bboxwt);b.realPath=h(b);b.matrix=b.transform().localMatrix;e.bbox=a.path.getBBox(a.path.map(b.realPath,m.add(b.matrix)));return a._.box(e.bbox)}catch(d){return a._.box()}};var f=function(){return this.string};
c.transform=function(c){var b=this._;if(null==c){var m=this;c=new a.Matrix(this.node.getCTM());for(var e=n(this),h=[e],d=new a.Matrix,l=e.toTransformString(),b=J(e)==J(this.matrix)?J(b.transform):l;"svg"!=m.type&&(m=m.parent()); )h.push(n(m));for(m=h.length;m--;)d.add(h[m]);return{string:b,globalMatrix:c,totalMatrix:d,localMatrix:e,diffMatrix:c.clone().add(e.invert()),global:c.toTransformString(),total:d.toTransformString(),local:l,toString:f}}c instanceof a.Matrix?this.matrix=c:n(this,c);this.node& &
("linearGradient"==this.type||"radialGradient"==this.type?v(this.node,{gradientTransform:this.matrix}):"pattern"==this.type?v(this.node,{patternTransform:this.matrix}):v(this.node,{transform:this.matrix}));return this};c.parent=function(){return x(this.node.parentNode)};c.append=c.add=function(c){if(c){if("set"==c.type){var a=this;c.forEach(function(c){a.add(c)});return this}c=x(c);this.node.appendChild(c.node);c.paper=this.paper}return this};c.appendTo=function(c){c&&(c=x(c),c.append(this)); return this};
c.prepend=function(c){if(c){if("set"==c.type){var a=this,b;c.forEach(function(c){b?b.after(c):a.prepend(c);b=c});return this}c=x(c);var m=c.parent();this.node.insertBefore(c.node,this.node.firstChild);this.add&&this.add(); c.paper=this.paper;this.parent()&&this.parent().add(); m& & m.add()}return this};c.prependTo=function(c){c=x(c);c.prepend(this);return this};c.before=function(c){if("set"==c.type){var a=this;c.forEach(function(c){var b=c.parent();a.node.parentNode.insertBefore(c.node,a.node);b&&b.add()});
this.parent().add();return this}c=x(c);var b=c.parent();this.node.parentNode.insertBefore(c.node,this.node);this.parent()&&this.parent().add(); b&&b.add(); c.paper=this.paper;return this};c.after=function(c){c=x(c);var a=c.parent();this.node.nextSibling?this.node.parentNode.insertBefore(c.node,this.node.nextSibling):this.node.parentNode.appendChild(c.node);this.parent()&&this.parent().add(); a&&a.add(); c.paper=this.paper;return this};c.insertBefore=function(c){c=x(c);var a=this.parent();c.node.parentNode.insertBefore(this.node,
c.node);this.paper=c.paper;a&&a.add(); c.parent()&&c.parent().add(); return this};c.insertAfter=function(c){c=x(c);var a=this.parent();c.node.parentNode.insertBefore(this.node,c.node.nextSibling);this.paper=c.paper;a&&a.add(); c.parent()&&c.parent().add(); return this};c.remove=function(){var c=this.parent();this.node.parentNode&&this.node.parentNode.removeChild(this.node); delete this.paper;this.removed=!0;c&&c.add(); return this};c.select=function(c){return x(this.node.querySelector(c))};c.selectAll=
function(c){c=this.node.querySelectorAll(c);for(var b=(a.set||Array)(),m=0;m< c.length ; m ++) b . push ( x ( c [ m ])); return b }; c . asPX = function(c,a){null==a&&(a=this.attr(c));return+b(this,c,a)};c.use=function(){var c , a = this.node.id;a||(a=this.id,v(this.node,{id:a}));c="linearGradient"==this.type||"radialGradient"==this.type||"pattern"==this.type?r(this.type,this.node.parentNode):r("use",this.node.parentNode);v(c.node,{"xlink:href":"#"+a});c.original=this;return c }; var l = / \S+/g;c.addClass=function(c){var a = (c||
"").match(l)||[];c=this.node;var b=c.className.baseVal,m=b.match(l)||[],e,h,d;if(a.length){for(e=0;d=a[e++];)h=m.indexOf(d),~h||m.push(d);a=m.join(" ");b!=a& & (c.className.baseVal=a)}return this};c.removeClass=function(c){var a=(c||"").match(l)||[];c=this.node;var b=c.className.baseVal,m=b.match(l)||[],e,h;if(m.length){for(e=0;h=a[e++];)h=m.indexOf(h),~h&&m.splice(h,1); a=m.join(" ");b!=a& & (c.className.baseVal=a)}return this};c.hasClass=function(c){return!!~(this.node.className.baseVal.match(l)||[]).indexOf(c)};
c.toggleClass=function(c,a){if(null!=a)return a?this.addClass(c):this.removeClass(c);var b=(c||"").match(l)||[],m=this.node,e=m.className.baseVal,h=e.match(l)||[],d,f,E;for(d=0;E=b[d++];)f=h.indexOf(E),~f?h.splice(f,1):h.push(E);b=h.join(" ");e!=b&&(m.className.baseVal=b); return this};c.clone=function(){var c=x(this.node.cloneNode(!0));v(c.node,"id")&&v(c.node,{id:c.id}); m(c);c.insertAfter(this);return c};c.toDefs=function(){u(this).appendChild(this.node);return this};c.pattern=c.toPattern=function(c,
a,b,m){var e=r("pattern",u(this));null==c&&(c=this.getBBox()); y(c,"object")& & "x"in c&&(a=c.y,b=c.width,m=c.height,c=c.x); v(e.node,{x:c,y:a,width:b,height:m,patternUnits:"userSpaceOnUse",id:e.id,viewBox:[c,a,b,m].join(" ")});e.node.appendChild(this.node);return e};c.marker=function(c,a,b,m,e,h){var d=r("marker",u(this));null==c&&(c=this.getBBox()); y(c,"object")& & "x"in c&&(a=c.y,b=c.width,m=c.height,e=c.refX||c.cx,h=c.refY||c.cy,c=c.x); v(d.node,{viewBox:[c,a,b,m].join(" "),markerWidth:b,markerHeight:m,
orient:"auto",refX:e||0,refY:h||0,id:d.id});d.node.appendChild(this.node);return d};var E=function(c,a,b,m){"function"!=typeof b||b.length||(m=b,b=L.linear);this.attr=c;this.dur=a;b&&(this.easing=b); m&&(this.callback=m)}; a._.Animation=E;a.animation=function(c,a,b,m){return new E(c,a,b,m)};c.inAnim=function(){var c=[],a;for(a in this.anims)this.anims[h](a)& & function(a){c.push({anim:new E(a._attrs,a.dur,a.easing,a._callback),mina:a,curStatus:a.status(),status:function(c){return a.status(c)},stop:function(){a.stop()}})}(this.anims[a]);
return c};a.animate=function(c,a,b,m,e,h){"function"!=typeof e||e.length||(h=e,e=L.linear);var d=L.time();c=L(c,a,d,d+m,L.time,b,e);h&&k.once("mina.finish."+c.id,h); return c};c.stop=function(){for(var c=this.inAnim(),a=0,b=c.length;a< b ; a + + ) c [ a ] . stop ( ) ; return this } ; c . animate = function(c,a,b,m){"function"!=typeof b | | b . length | | ( m = b,b=L.linear);c instanceof E & & ( m = c.callback,b=c.easing,a=b.dur,c=c.attr);var d = [],f=[],l={},t,ca,n,T=this,q;for(q in c ) if ( c [ h ] ( q ) ) { T . equal ? ( n = T.equal(q,J(c[q])),t=n.from,ca=
n.to,n=n.f):(t=+T.attr(q),ca=+c[q]);var la=y(t,"array")?t.length:1;l[q]=e(d.length,d.length+la,n);d=d.concat(t);f=f.concat(ca)}t=L.time();var p=L(d,f,t,t+a,L.time,function(c){var a={},b;for(b in l)l[h](b)&&(a[b]=l[b](c)); T.attr(a)},b);T.anims[p.id]=p;p._attrs=c;p._callback=m;k("snap.animcreated."+T.id,p);k.once("mina.finish."+p.id,function(){delete T.anims[p.id];m&&m.call(T)}); k.once("mina.stop."+p.id,function(){delete T.anims[p.id]});return T};var T={};c.data=function(c,b){var m=T[this.id]=T[this.id]||
{};if(0==arguments.length)return k("snap.data.get."+this.id,this,m,null),m;if(1==arguments.length){if(a.is(c,"object")){for(var e in c)c[h](e)&&this.data(e,c[e]); return this}k("snap.data.get."+this.id,this,m[c],c);return m[c]}m[c]=b;k("snap.data.set."+this.id,this,b,c);return this};c.removeData=function(c){null==c?T[this.id]={}:T[this.id]& & delete T[this.id][c];return this};c.outerSVG=c.toString=d(1);c.innerSVG=d()})(e.prototype);a.parse=function(c){var a=G.doc.createDocumentFragment(),b=!0,m=G.doc.createElement("div");
c=J(c);c.match(/^\s*< \s*svg(?:\s|>)/)||(c="< svg > "+c+"</ svg > ",b=!1);m.innerHTML=c;if(c=m.getElementsByTagName("svg")[0])if(b)a=c;else for(;c.firstChild;)a.appendChild(c.firstChild);m.innerHTML=aa;return new l(a)};l.prototype.select=e.prototype.select;l.prototype.selectAll=e.prototype.selectAll;a.fragment=function(){for(var c=Array.prototype.slice.call(arguments,0),b=G.doc.createDocumentFragment(),m=0,e=c.length;m< e ; m ++){ var h = c[m];h.node&&h.node.nodeType&&b.appendChild(h.node);h.nodeType&&b.appendChild(h);
"string"==typeof h& & b.appendChild(a.parse(h).node)}return new l(b)};a._.make=r;a._.wrap=x;s.prototype.el=function(c,a){var b=r(c,this.node);a&&b.attr(a); return b};k.on("snap.util.getattr",function(){var c=k.nt(),c=c.substring(c.lastIndexOf(".")+1),a=c.replace(/[A-Z]/g,function(c){return"-"+c.toLowerCase()});return pa[h](a)?this.node.ownerDocument.defaultView.getComputedStyle(this.node,null).getPropertyValue(a):v(this.node,c)});var pa={"alignment-baseline":0,"baseline-shift":0,clip:0,"clip-path":0,
"clip-rule":0,color:0,"color-interpolation":0,"color-interpolation-filters":0,"color-profile":0,"color-rendering":0,cursor:0,direction:0,display:0,"dominant-baseline":0,"enable-background":0,fill:0,"fill-opacity":0,"fill-rule":0,filter:0,"flood-color":0,"flood-opacity":0,font:0,"font-family":0,"font-size":0,"font-size-adjust":0,"font-stretch":0,"font-style":0,"font-variant":0,"font-weight":0,"glyph-orientation-horizontal":0,"glyph-orientation-vertical":0,"image-rendering":0,kerning:0,"letter-spacing":0,
"lighting-color":0,marker:0,"marker-end":0,"marker-mid":0,"marker-start":0,mask:0,opacity:0,overflow:0,"pointer-events":0,"shape-rendering":0,"stop-color":0,"stop-opacity":0,stroke:0,"stroke-dasharray":0,"stroke-dashoffset":0,"stroke-linecap":0,"stroke-linejoin":0,"stroke-miterlimit":0,"stroke-opacity":0,"stroke-width":0,"text-anchor":0,"text-decoration":0,"text-rendering":0,"unicode-bidi":0,visibility:0,"word-spacing":0,"writing-mode":0};k.on("snap.util.attr",function(c){var a=k.nt(),b={},a=a.substring(a.lastIndexOf(".")+
1);b[a]=c;var m=a.replace(/-(\w)/gi,function(c,a){return a.toUpperCase()}),a=a.replace(/[A-Z]/g,function(c){return"-"+c.toLowerCase()});pa[h](a)?this.node.style[m]=null==c?aa:c:v(this.node,b)});a.ajax=function(c,a,b,m){var e=new XMLHttpRequest,h=V();if(e){if(y(a,"function"))m=b,b=a,a=null;else if(y(a,"object")){var d=[],f;for(f in a)a.hasOwnProperty(f)&&d.push(encodeURIComponent(f)+"="+encodeURIComponent(a[f])); a=d.join("&")}e.open(a?"POST":"GET",c,!0); a&& (e.setRequestHeader("X-Requested-With","XMLHttpRequest"),
e.setRequestHeader("Content-type","application/x-www-form-urlencoded"));b&&(k.once("snap.ajax."+h+".0",b),k.once("snap.ajax."+h+".200",b),k.once("snap.ajax."+h+".304",b)); e.onreadystatechange=function(){4==e.readyState&&k("snap.ajax."+h+"."+e.status,m,e)}; if(4==e.readyState)return e;e.send(a);return e}};a.load=function(c,b,m){a.ajax(c,function(c){c=a.parse(c.responseText);m?b.call(m,c):b(c)})};a.getElementByPoint=function(c,a){var b,m,e=G.doc.elementFromPoint(c,a);if(G.win.opera& & "svg"==e.tagName){b=
e;m=b.getBoundingClientRect();b=b.ownerDocument;var h=b.body,d=b.documentElement;b=m.top+(g.win.pageYOffset||d.scrollTop||h.scrollTop)-(d.clientTop||h.clientTop||0);m=m.left+(g.win.pageXOffset||d.scrollLeft||h.scrollLeft)-(d.clientLeft||h.clientLeft||0);h=e.createSVGRect();h.x=c-m;h.y=a-b;h.width=h.height=1;b=e.getIntersectionList(h,null);b.length& & (e=b[b.length-1])}return e?x(e):null};a.plugin=function(c){c(a,e,s,G,l)};return G.win.Snap=a}();C.plugin(function(a,k,y,M,A){function w(a,d,f,b,q,e){null==
d& & "[object SVGMatrix]"==z.call(a)?(this.a=a.a,this.b=a.b,this.c=a.c,this.d=a.d,this.e=a.e,this.f=a.f):null!=a?(this.a=+a,this.b=+d,this.c=+f,this.d=+b,this.e=+q,this.f=+e):(this.a=1,this.c=this.b=0,this.d=1,this.f=this.e=0)}var z=Object.prototype.toString,d=String,f=Math;(function(n){function k(a){return a[0]*a[0]+a[1]*a[1]}function p(a){var d=f.sqrt(k(a));a[0]&&(a[0]/=d); a[1]& & (a[1]/=d)}n.add=function(a,d,e,f,n,p){var k=[[],[],[] ],u=[[this.a,this.c,this.e],[this.b,this.d,this.f],[0,0,1] ];d=[[a,
e,n],[d,f,p],[0,0,1] ];a& & a instanceof w& & (d=[[a.a,a.c,a.e],[a.b,a.d,a.f],[0,0,1] ]);for(a=0;3>a;a++)for(e=0;3>e;e++){for(f=n=0;3>f;f++)n+=u[a][f]*d[f][e];k[a][e]=n}this.a=k[0][0];this.b=k[1][0];this.c=k[0][1];this.d=k[1][1];this.e=k[0][2];this.f=k[1][2];return this};n.invert=function(){var a=this.a*this.d-this.b*this.c;return new w(this.d/a,-this.b/a,-this.c/a,this.a/a,(this.c*this.f-this.d*this.e)/a,(this.b*this.e-this.a*this.f)/a)};n.clone=function(){return new w(this.a,this.b,this.c,this.d,this.e,
this.f)};n.translate=function(a,d){return this.add(1,0,0,1,a,d)};n.scale=function(a,d,e,f){null==d&&(d=a); (e||f)&&this.add(1,0,0,1,e,f); this.add(a,0,0,d,0,0);(e||f)&&this.add(1,0,0,1,-e,-f); return this};n.rotate=function(b,d,e){b=a.rad(b);d=d||0;e=e||0;var l=+f.cos(b).toFixed(9);b=+f.sin(b).toFixed(9);this.add(l,b,-b,l,d,e);return this.add(1,0,0,1,-d,-e)};n.x=function(a,d){return a*this.a+d*this.c+this.e};n.y=function(a,d){return a*this.b+d*this.d+this.f};n.get=function(a){return+this[d.fromCharCode(97+
a)].toFixed(4)};n.toString=function(){return"matrix("+[this.get(0),this.get(1),this.get(2),this.get(3),this.get(4),this.get(5)].join()+")"};n.offset=function(){return[this.e.toFixed(4),this.f.toFixed(4)]};n.determinant=function(){return this.a*this.d-this.b*this.c};n.split=function(){var b={};b.dx=this.e;b.dy=this.f;var d=[[this.a,this.c],[this.b,this.d] ];b.scalex=f.sqrt(k(d[0]));p(d[0]);b.shear=d[0][0]*d[1][0]+d[0][1]*d[1][1];d[1]=[d[1][0]-d[0][0]*b.shear,d[1][1]-d[0][1]*b.shear];b.scaley=f.sqrt(k(d[1]));
p(d[1]);b.shear/=b.scaley;0>this.determinant()&&(b.scalex=-b.scalex); var e=-d[0][1],d=d[1][1];0>d?(b.rotate=a.deg(f.acos(d)),0>e&&(b.rotate=360-b.rotate)):b.rotate=a.deg(f.asin(e)); b.isSimple=!+b.shear.toFixed(9)&&(b.scalex.toFixed(9)==b.scaley.toFixed(9)||!b.rotate); b.isSuperSimple=!+b.shear.toFixed(9)&&b.scalex.toFixed(9)==b.scaley.toFixed(9)&&!b.rotate; b.noRotation=!+b.shear.toFixed(9)&&!b.rotate; return b};n.toTransformString=function(a){a=a||this.split();if(+a.shear.toFixed(9))return"m"+[this.get(0),
this.get(1),this.get(2),this.get(3),this.get(4),this.get(5)];a.scalex=+a.scalex.toFixed(4);a.scaley=+a.scaley.toFixed(4);a.rotate=+a.rotate.toFixed(4);return(a.dx||a.dy?"t"+[+a.dx.toFixed(4),+a.dy.toFixed(4)]:"")+(1!=a.scalex||1!=a.scaley?"s"+[a.scalex,a.scaley,0,0]:"")+(a.rotate?"r"+[+a.rotate.toFixed(4),0,0]:"")}})(w.prototype);a.Matrix=w;a.matrix=function(a,d,f,b,k,e){return new w(a,d,f,b,k,e)}});C.plugin(function(a,v,y,M,A){function w(h){return function(d){k.stop();d instanceof A& & 1==d.node.childNodes.length& &
("radialGradient"==d.node.firstChild.tagName||"linearGradient"==d.node.firstChild.tagName||"pattern"==d.node.firstChild.tagName)&&(d=d.node.firstChild,b(this).appendChild(d),d=u(d)); if(d instanceof v)if("radialGradient"==d.type||"linearGradient"==d.type||"pattern"==d.type){d.node.id||e(d.node,{id:d.id});var f=l(d.node.id)}else f=d.attr(h);else f=a.color(d),f.error?(f=a(b(this).ownerSVGElement).gradient(d))?(f.node.id||e(f.node,{id:f.id}),f=l(f.node.id)):f=d:f=r(f);d={};d[h]=f;e(this.node,d);this.node.style[h]=
x}}function z(a){k.stop();a==+a&&(a+="px"); this.node.style.fontSize=a}function d(a){var b=[];a=a.childNodes;for(var e=0,f=a.length;e< f ; e ++){ var l = a[e];3==l.nodeType&&b.push(l.nodeValue);"tspan"==l.tagName&&(1==l.childNodes.length&&3==l.firstChild.nodeType?b.push(l.firstChild.nodeValue):b.push(d(l)))}return b } function f (){ k . stop (); return this . node . style . fontSize } var n = a._.make,u=a._.wrap,p=a.is,b=a._.getSomeDefs,q=/^url \(#?([^)]+) \)$/,e=a._.$,l=a.url,r=String,s=a._.separator,x="";k.on("snap.util.attr.mask",
function(a){if(a instanceof v||a instanceof A){k.stop();a instanceof A&&1==a.node.childNodes.length&&(a=a.node.firstChild,b(this).appendChild(a),a=u(a)); if("mask"==a.type)var d=a;else d=n("mask",b(this)),d.node.appendChild(a.node);!d.node.id&&e(d.node,{id:d.id}); e(this.node,{mask:l(d.id)})}});(function(a){k.on("snap.util.attr.clip",a);k.on("snap.util.attr.clip-path",a);k.on("snap.util.attr.clipPath",a)})(function(a){if(a instanceof v||a instanceof A){k.stop();if("clipPath"==a.type)var d=a;else d=
n("clipPath",b(this)),d.node.appendChild(a.node),!d.node.id&&e(d.node,{id:d.id}); e(this.node,{"clip-path":l(d.id)})}});k.on("snap.util.attr.fill",w("fill"));k.on("snap.util.attr.stroke",w("stroke"));var G=/^([lr])(?:\(([^)]*)\))?(.*)$/i;k.on("snap.util.grad.parse",function(a){a=r(a);var b=a.match(G);if(!b)return null;a=b[1];var e=b[2],b=b[3],e=e.split(/\s*,\s*/).map(function(a){return+a==a?+a:a});1==e.length&&0==e[0]&&(e=[]); b=b.split("-");b=b.map(function(a){a=a.split(":");var b={color:a[0]};a[1]&&
(b.offset=parseFloat(a[1]));return b});return{type:a,params:e,stops:b}});k.on("snap.util.attr.d",function(b){k.stop();p(b,"array")&&p(b[0],"array")&&(b=a.path.toString.call(b)); b=r(b);b.match(/[ruo]/i)&&(b=a.path.toAbsolute(b)); e(this.node,{d:b})})(-1);k.on("snap.util.attr.#text",function(a){k.stop();a=r(a);for(a=M.doc.createTextNode(a);this.node.firstChild;)this.node.removeChild(this.node.firstChild);this.node.appendChild(a)})(-1);k.on("snap.util.attr.path",function(a){k.stop();this.attr({d:a})})(-1);
k.on("snap.util.attr.class",function(a){k.stop();this.node.className.baseVal=a})(-1);k.on("snap.util.attr.viewBox",function(a){a=p(a,"object")& & "x"in a?[a.x,a.y,a.width,a.height].join(" "):p(a,"array")?a.join(" "):a;e(this.node,{viewBox:a});k.stop()})(-1);k.on("snap.util.attr.transform",function(a){this.transform(a);k.stop()})(-1);k.on("snap.util.attr.r",function(a){"rect"==this.type&&(k.stop(),e(this.node,{rx:a,ry:a}))})(-1); k.on("snap.util.attr.textpath",function(a){k.stop();if("text"==this.type){var d,
f;if(!a&&this.textPath){for(a=this.textPath; a.node.firstChild;)this.node.appendChild(a.node.firstChild);a.remove();delete this.textPath}else if(p(a,"string")?(d=b(this),a=u(d.parentNode).path(a),d.appendChild(a.node),d=a.id,a.attr({id:d})):(a=u(a),a instanceof v&&(d=a.attr("id"),d||(d=a.id,a.attr({id:d})))),d)if(a=this.textPath,f=this.node,a)a.attr({"xlink:href":"#"+d}); else{for(a=e("textPath",{"xlink:href":"#"+d});f.firstChild;)a.appendChild(f.firstChild);f.appendChild(a);this.textPath=u(a)}}})(-1);
k.on("snap.util.attr.text",function(a){if("text"==this.type){for(var b=this.node,d=function(a){var b=e("tspan");if(p(a,"array"))for(var f=0;f< a.length ; f + + ) b . appendChild ( d ( a [ f ] ) ) ; else b . appendChild ( M . doc . createTextNode ( a ) ) ; b . normalize & & b . normalize ( ) ; return b } ; b . firstChild ; ) b . removeChild ( b . firstChild ) ; for ( a = d(a);a.firstChild;)b.appendChild(a.firstChild)}k.stop()})(-1);k.on("snap.util.attr.fontSize",z)(-1);k.on("snap.util.attr.font-size",z)(-1);k.on("snap.util.getattr.transform",function(){k.stop();
return this.transform()})(-1);k.on("snap.util.getattr.textpath",function(){k.stop();return this.textPath})(-1);(function(){function b(d){return function(){k.stop();var b=M.doc.defaultView.getComputedStyle(this.node,null).getPropertyValue("marker-"+d);return"none"==b?b:a(M.doc.getElementById(b.match(q)[1]))}}function d(a){return function(b){k.stop();var d="marker"+a.charAt(0).toUpperCase()+a.substring(1);if(""==b||!b)this.node.style[d]="none";else if("marker"==b.type){var f=b.node.id;f||e(b.node,{id:b.id});
this.node.style[d]=l(f)}}}k.on("snap.util.getattr.marker-end",b("end"))(-1);k.on("snap.util.getattr.markerEnd",b("end"))(-1);k.on("snap.util.getattr.marker-start",b("start"))(-1);k.on("snap.util.getattr.markerStart",b("start"))(-1);k.on("snap.util.getattr.marker-mid",b("mid"))(-1);k.on("snap.util.getattr.markerMid",b("mid"))(-1);k.on("snap.util.attr.marker-end",d("end"))(-1);k.on("snap.util.attr.markerEnd",d("end"))(-1);k.on("snap.util.attr.marker-start",d("start"))(-1);k.on("snap.util.attr.markerStart",
d("start"))(-1);k.on("snap.util.attr.marker-mid",d("mid"))(-1);k.on("snap.util.attr.markerMid",d("mid"))(-1)})();k.on("snap.util.getattr.r",function(){if("rect"==this.type& & e(this.node,"rx")==e(this.node,"ry"))return k.stop(),e(this.node,"rx")})(-1);k.on("snap.util.getattr.text",function(){if("text"==this.type||"tspan"==this.type){k.stop();var a=d(this.node);return 1==a.length?a[0]:a}})(-1);k.on("snap.util.getattr.#text",function(){return this.node.textContent})(-1);k.on("snap.util.getattr.viewBox",
function(){k.stop();var b=e(this.node,"viewBox");if(b)return b=b.split(s),a._.box(+b[0],+b[1],+b[2],+b[3])})(-1);k.on("snap.util.getattr.points",function(){var a=e(this.node,"points");k.stop();if(a)return a.split(s)})(-1);k.on("snap.util.getattr.path",function(){var a=e(this.node,"d");k.stop();return a})(-1);k.on("snap.util.getattr.class",function(){return this.node.className.baseVal})(-1);k.on("snap.util.getattr.fontSize",f)(-1);k.on("snap.util.getattr.font-size",f)(-1)});C.plugin(function(a,v,y,
M,A){function w(a){return a}function z(a){return function(b){return+b.toFixed(3)+a}}var d={"+":function(a,b){return a+b},"-":function(a,b){return a-b},"/":function(a,b){return a/b},"*":function(a,b){return a*b}},f=String,n=/[a-z]+$/i,u=/^\s*([+\-\/*])\s*=\s*([\d.eE+\-]+)\s*([^\d\s]+)?\s*$/;k.on("snap.util.attr",function(a){if(a=f(a).match(u)){var b=k.nt(),b=b.substring(b.lastIndexOf(".")+1),q=this.attr(b),e={};k.stop();var l=a[3]||"",r=q.match(n),s=d[a[1] ];r&& r==l?a=s(parseFloat(q),+a[2]):(q=this.asPX(b),
a=s(this.asPX(b),this.asPX(b,a[2]+l)));isNaN(q)||isNaN(a)||(e[b]=a,this.attr(e))}})(-10);k.on("snap.util.equal",function(a,b){var q=f(this.attr(a)||""),e=f(b).match(u);if(e){k.stop();var l=e[3]||"",r=q.match(n),s=d[e[1] ];if(r&&r==l)return{from:parseFloat(q),to:s(parseFloat(q),+e[2]),f:z(r)}; q=this.asPX(a);return{from:q,to:s(q,this.asPX(a,e[2]+l)),f:w}}})(-10)});C.plugin(function(a,v,y,M,A){var w=y.prototype,z=a.is;w.rect=function(a,d,k,p,b,q){var e;null==q&&(q=b); z(a,"object")& & "[object Object]"==
a?e=a:null!=a&&(e={x:a,y:d,width:k,height:p},null!=b&&(e.rx=b,e.ry=q)); return this.el("rect",e)};w.circle=function(a,d,k){var p;z(a,"object")& & "[object Object]"==a?p=a:null!=a&&(p={cx:a,cy:d,r:k}); return this.el("circle",p)};var d=function(){function a(){this.parentNode.removeChild(this)}return function(d,k){var p=M.doc.createElement("img"),b=M.doc.body;p.style.cssText="position:absolute;left:-9999em;top:-9999em";p.onload=function(){k.call(p);p.onload=p.onerror=null;b.removeChild(p)};p.onerror=a;
b.appendChild(p);p.src=d}}();w.image=function(f,n,k,p,b){var q=this.el("image");if(z(f,"object")& & "src"in f)q.attr(f);else if(null!=f){var e={"xlink:href":f,preserveAspectRatio:"none"};null!=n&&null!=k&&(e.x=n,e.y=k); null!=p&&null!=b?(e.width=p,e.height=b):d(f,function(){a._.$(q.node,{width:this.offsetWidth,height:this.offsetHeight})}); a._.$(q.node,e)}return q};w.ellipse=function(a,d,k,p){var b;z(a,"object")& & "[object Object]"==a?b=a:null!=a&&(b={cx:a,cy:d,rx:k,ry:p}); return this.el("ellipse",b)};
w.path=function(a){var d;z(a,"object")&&!z(a,"array")?d=a:a&&(d={d:a}); return this.el("path",d)};w.group=w.g=function(a){var d=this.el("g");1==arguments.length&&a&&!a.type?d.attr(a):arguments.length&&d.add(Array.prototype.slice.call(arguments,0)); return d};w.svg=function(a,d,k,p,b,q,e,l){var r={};z(a,"object")&&null==d?r=a:(null!=a&&(r.x=a),null!=d&&(r.y=d),null!=k&&(r.width=k),null!=p&&(r.height=p),null!=b&&null!=q&&null!=e&&null!=l&&(r.viewBox=[b,q,e,l])); return this.el("svg",r)};w.mask=function(a){var d=
this.el("mask");1==arguments.length&&a&&!a.type?d.attr(a):arguments.length&&d.add(Array.prototype.slice.call(arguments,0)); return d};w.ptrn=function(a,d,k,p,b,q,e,l){if(z(a,"object"))var r=a;else arguments.length?(r={},null!=a&&(r.x=a),null!=d&&(r.y=d),null!=k&&(r.width=k),null!=p&&(r.height=p),null!=b&&null!=q&&null!=e&&null!=l&&(r.viewBox=[b,q,e,l])):r={patternUnits:"userSpaceOnUse"}; return this.el("pattern",r)};w.use=function(a){return null!=a?(make("use",this.node),a instanceof v& & (a.attr("id")||
a.attr({id:ID()}),a=a.attr("id")),this.el("use",{"xlink:href":a})):v.prototype.use.call(this)};w.text=function(a,d,k){var p={};z(a,"object")?p=a:null!=a&&(p={x:a,y:d,text:k||""}); return this.el("text",p)};w.line=function(a,d,k,p){var b={};z(a,"object")?b=a:null!=a&&(b={x1:a,x2:k,y1:d,y2:p}); return this.el("line",b)};w.polyline=function(a){1< arguments.length & & ( a = Array.prototype.slice.call(arguments,0));var d = {};z(a,"object")&&!z(a,"array")?d=a:null!=a&&(d={points:a});return this . el ( " polyline " , d ) } ;
w.polygon=function(a){1< arguments.length & & ( a = Array.prototype.slice.call(arguments,0));var d = {};z(a,"object")&&!z(a,"array")?d=a:null!=a&&(d={points:a});return this . el ( " polygon " , d ) } ; ( function ( ) { function d ( ) { return this . selectAll ( " stop " ) } function n ( b , d ) { var f = e("stop"),k={offset:+d+"%"};b=a.color(b);k["stop-color"]=b.hex;1 > b.opacity&&(k["stop-opacity"]=b.opacity); e(f,k);this.node.appendChild(f);return this}function u(){if("linearGradient"==this.type){var b=e(this.node,"x1")||0,d=e(this.node,"x2")||
1,f=e(this.node,"y1")||0,k=e(this.node,"y2")||0;return a._.box(b,f,math.abs(d-b),math.abs(k-f))}b=this.node.r||0;return a._.box((this.node.cx||0.5)-b,(this.node.cy||0.5)-b,2*b,2*b)}function p(a,d){function f(a,b){for(var d=(b-u)/(a-w),e=w;e< a ; e + + ) h [ e ] . offset = +(+u+d*(e-w)).toFixed(2);w=a;u=b}var n = k("snap.util.grad.parse",null,d).firstDefined(),p;if(!n)return null ; n . params . unshift ( a ) ; p = "l" = = n . type . toLowerCase ( ) ? b . apply ( 0 , n . params ) :q . apply ( 0 , n . params ) ; n . type ! = n . type . toLowerCase ( ) & & e ( p . node , { gradientUnits: " userSpaceOnUse " } ) ;
var h=n.stops,n=h.length,u=0,w=0;n--;for(var v=0;v< n ; v + + ) " offset " in h [ v ] & & f ( v , h [ v ] . offset ) ; h [ n ] . offset = h[n].offset||100;f(n,h[n].offset);for(v=0;v<=n;v++){var y = h[v];p.addStop(y.color,y.offset)}return p } function b ( b , k , p , q , w ) { b = a._.make("linearGradient",b);b.stops=d;b.addStop=n;b.getBBox=u;null!=k&&e(b.node,{x1:k,y1:p,x2:q,y2:w});return b } function q ( b , k , p , q , w , h ) { b = a._.make("radialGradient",b);b.stops=d;b.addStop=n;b.getBBox=u;null!=k&&e(b.node,{cx:k,cy:p,r:q});null!=w&&null!=h&&e(b.node,{fx:w,fy:h});
return b}var e=a._.$;w.gradient=function(a){return p(this.defs,a)};w.gradientLinear=function(a,d,e,f){return b(this.defs,a,d,e,f)};w.gradientRadial=function(a,b,d,e,f){return q(this.defs,a,b,d,e,f)};w.toString=function(){var b=this.node.ownerDocument,d=b.createDocumentFragment(),b=b.createElement("div"),e=this.node.cloneNode(!0);d.appendChild(b);b.appendChild(e);a._.$(e,{xmlns:"http://www.w3.org/2000/svg"});b=b.innerHTML;d.removeChild(d.firstChild);return b};w.clear=function(){for(var a=this.node.firstChild,
b;a;)b=a.nextSibling,"defs"!=a.tagName?a.parentNode.removeChild(a):w.clear.call({node:a}),a=b}})()});C.plugin(function(a,k,y,M){function A(a){var b=A.ps=A.ps||{};b[a]?b[a].sleep=100:b[a]={sleep:100};setTimeout(function(){for(var d in b)b[L](d)& & d!=a& & (b[d].sleep--,!b[d].sleep& & delete b[d])});return b[a]}function w(a,b,d,e){null==a&&(a=b=d=e=0); null==b&&(b=a.y,d=a.width,e=a.height,a=a.x); return{x:a,y:b,width:d,w:d,height:e,h:e,x2:a+d,y2:b+e,cx:a+d/2,cy:b+e/2,r1:F.min(d,e)/2,r2:F.max(d,e)/2,r0:F.sqrt(d*
d+e*e)/2,path:s(a,b,d,e),vb:[a,b,d,e].join(" ")}}function z(){return this.join(",").replace(N,"$1")}function d(a){a=C(a);a.toString=z;return a}function f(a,b,d,h,f,k,l,n,p){if(null==p)return e(a,b,d,h,f,k,l,n);if(0>p||e(a,b,d,h,f,k,l,n)< p ) p = void 0 ; else { var q = 0.5,O=1-q,s;for(s=e(a,b,d,h,f,k,l,n,O);0.01<Z(s-p);)q/=2,O+=(s<p?1:-1)*q,s=e(a,b,d,h,f,k,l,n,O);p=O}return u ( a , b , d , h , f , k , l , n , p ) } function n ( b , d ) { function e ( a ) { return + ( + a ) . toFixed ( 3 ) } return a . _ . cacher ( function ( a , h , l ) { a instanceof k & & ( a = a.attr("d"));
a=I(a);for(var n,p,D,q,O="",s={},c=0,t=0,r=a.length;t< r ; t + + ) { D = a[t];if("M"==D[0])n=+D[1],p=+D[2];else{q=f(n,p,D[1],D[2],D[3],D[4],D[5],D[6]);if(c+q > h){if(d&&!s.start){n=f(n,p,D[1],D[2],D[3],D[4],D[5],D[6],h-c); O+=["C"+e(n.start.x),e(n.start.y),e(n.m.x),e(n.m.y),e(n.x),e(n.y)];if(l)return O;s.start=O;O=["M"+e(n.x),e(n.y)+"C"+e(n.n.x),e(n.n.y),e(n.end.x),e(n.end.y),e(D[5]),e(D[6])].join();c+=q;n=+D[5];p=+D[6];continue}if(!b& & !d)return n=f(n,p,D[1],D[2],D[3],D[4],D[5],D[6],h-c)}c+=q;n=+D[5];p=+D[6]}O+=
D.shift()+D}s.end=O;return n=b?c:d?s:u(n,p,D[0],D[1],D[2],D[3],D[4],D[5],1)},null,a._.clone)}function u(a,b,d,e,h,f,k,l,n){var p=1-n,q=ma(p,3),s=ma(p,2),c=n*n,t=c*n,r=q*a+3*s*n*d+3*p*n*n*h+t*k,q=q*b+3*s*n*e+3*p*n*n*f+t*l,s=a+2*n*(d-a)+c*(h-2*d+a),t=b+2*n*(e-b)+c*(f-2*e+b),x=d+2*n*(h-d)+c*(k-2*h+d),c=e+2*n*(f-e)+c*(l-2*f+e);a=p*a+n*d;b=p*b+n*e;h=p*h+n*k;f=p*f+n*l;l=90-180*F.atan2(s-x,t-c)/S;return{x:r,y:q,m:{x:s,y:t},n:{x:x,y:c},start:{x:a,y:b},end:{x:h,y:f},alpha:l}}function p(b,d,e,h,f,n,k,l){a.is(b,
"array")||(b=[b,d,e,h,f,n,k,l]);b=U.apply(null,b);return w(b.min.x,b.min.y,b.max.x-b.min.x,b.max.y-b.min.y)}function b(a,b,d){return b>=a.x& & b< =a.x+a.width& & d>=a.y& & d< =a.y+a.height}function q(a,d){a=w(a);d=w(d);return b(d,a.x,a.y)||b(d,a.x2,a.y)||b(d,a.x,a.y2)||b(d,a.x2,a.y2)||b(a,d.x,d.y)||b(a,d.x2,d.y)||b(a,d.x,d.y2)||b(a,d.x2,d.y2)||(a.x< d.x2 & & a . x > d.x||d.x< a.x2 & & d . x > a.x)& & (a.y< d.y2 & & a . y > d.y||d.y< a.y2 & & d . y > a.y)}function e(a,b,d,e,h,f,n,k,l){null==l&&(l=1); l=(1< l ? 1:0 > l?0:l)/2;for(var p=[-0.1252,
0.1252,-0.3678,0.3678,-0.5873,0.5873,-0.7699,0.7699,-0.9041,0.9041,-0.9816,0.9816],q=[0.2491,0.2491,0.2335,0.2335,0.2032,0.2032,0.1601,0.1601,0.1069,0.1069,0.0472,0.0472],s=0,c=0;12>c;c++)var t=l*p[c]+l,r=t*(t*(-3*a+9*d-9*h+3*n)+6*a-12*d+6*h)-3*a+3*d,t=t*(t*(-3*b+9*e-9*f+3*k)+6*b-12*e+6*f)-3*b+3*e,s=s+q[c]*F.sqrt(r*r+t*t);return l*s}function l(a,b,d){a=I(a);b=I(b);for(var h,f,l,n,k,s,r,O,x,c,t=d?0:[],w=0,v=a.length;w< v ; w + + ) if ( x = a[w],"M"==x[0])h=k=x[1],f=s=x[2];else{"C"==x[0]?(x=[h,f].concat(x.slice(1)),
h=x[6],f=x[7]):(x=[h,f,h,f,k,s,k,s],h=k,f=s);for(var G=0,y=b.length;G< y ; G + + ) if ( c = b[G],"M"==c[0])l=r=c[1],n=O=c[2];else{"C"==c[0]?(c=[l,n].concat(c.slice(1)),l=c[6],n=c[7]):(c=[l,n,l,n,r,O,r,O],l=r,n=O);var z ; var K = x,B=c;z=d;var H = p(K),J=p(B);if(q(H,J)){for(var H = e.apply(0,K),J=e.apply(0,B),H=~~(H/8),J=~~(J/8),U=[],A=[],F={},M=z?0:[],P=0;P<H+1;P++){var C = u.apply(0,K.concat(P/H));U.push({x:C.x,y:C.y,t:P/H})}for(P=0;P<J+1;P++)C=u.apply(0,B.concat(P/J)),A.push({x:C.x,y:C.y,t:P/J});for(P=0;P<H;P++)for(K=
0;K< J ; K + + ) { var Q = U[P],L=U[P+1],B=A[K],C=A[K+1],N=0.001 > Z(L.x-Q.x)?"y":"x",S=0.001>Z(C.x-B.x)?"y":"x",R;R=Q.x;var Y=Q.y,V=L.x,ea=L.y,fa=B.x,ga=B.y,ha=C.x,ia=C.y;if(W(R,V)< X ( fa , ha ) | | X ( R , V ) > W(fa,ha)||W(Y,ea)< X ( ga , ia ) | | X ( Y , ea ) > W(ga,ia))R=void 0;else{var $=(R*ea-Y*V)*(fa-ha)-(R-V)*(fa*ia-ga*ha),aa=(R*ea-Y*V)*(ga-ia)-(Y-ea)*(fa*ia-ga*ha),ja=(R-V)*(ga-ia)-(Y-ea)*(fa-ha);if(ja){var $=$/ja,aa=aa/ja,ja=+$.toFixed(2),ba=+aa.toFixed(2);R=ja< +X(R,V).toFixed(2)||ja>+W(R,V).toFixed(2)||ja< +X(fa,ha).toFixed(2)||
ja>+W(fa,ha).toFixed(2)||ba< +X(Y,ea).toFixed(2)||ba>+W(Y,ea).toFixed(2)||ba< +X(ga,ia).toFixed(2)||ba>+W(ga,ia).toFixed(2)?void 0:{x:$,y:aa}}else R=void 0}R& & F[R.x.toFixed(4)]!=R.y.toFixed(4)& & (F[R.x.toFixed(4)]=R.y.toFixed(4),Q=Q.t+Z((R[N]-Q[N])/(L[N]-Q[N]))*(L.t-Q.t),B=B.t+Z((R[S]-B[S])/(C[S]-B[S]))*(C.t-B.t),0< =Q& & 1>=Q& & 0< =B& & 1>=B& & (z?M++:M.push({x:R.x,y:R.y,t1:Q,t2:B})))}z=M}else z=z?0:[];if(d)t+=z;else{H=0;for(J=z.length;H< J ; H + + ) z [ H ] . segment1 = w,z[H].segment2=G,z[H].bez1=x,z[H].bez2=c;t=t.concat(z)}}}return t }
function r(a){var b=A(a);if(b.bbox)return C(b.bbox);if(!a)return w();a=I(a);for(var d=0,e=0,h=[],f=[],l,n=0,k=a.length;n< k ; n + + ) l = a[n],"M"==l[0]?(d=l[1],e=l[2],h.push(d),f.push(e)):(d=U(d,e,l[1],l[2],l[3],l[4],l[5],l[6]),h=h.concat(d.min.x,d.max.x),f=f.concat(d.min.y,d.max.y),d=l[5],e=l[6]);a=X.apply(0,h);l=X.apply(0,f);h=W.apply(0,h);f=W.apply(0,f);f=w(a,l,h-a,f-l);b.bbox=C(f);return f } function s ( a , b , d , e , h ) { if ( h ) return [ [ " M " , + a + + h , b ] , [ " l " , d-2 * h , 0 ] , [ " a " , h , h , 0 , 0 , 1 , h , h ] , [ " l " , 0 , e-2 * h ] , [ " a " , h , h , 0 , 0 , 1 ,
-h,h],["l",2*h-d,0],["a",h,h,0,0,1,-h,-h],["l",0,2*h-e],["a",h,h,0,0,1,h,-h],["z"] ];a=[["M",a,b],["l",d,0],["l",0,e],["l",-d,0],["z"] ];a.toString=z;return a}function x(a,b,d,e,h){null==h&&null==e&&(e=d); a=+a;b=+b;d=+d;e=+e;if(null!=h){var f=Math.PI/180,l=a+d*Math.cos(-e*f);a+=d*Math.cos(-h*f);var n=b+d*Math.sin(-e*f);b+=d*Math.sin(-h*f);d=[["M",l,n],["A",d,d,0,+(180< h-e ) , 0 , a , b ] ] } else d = [["M",a,b],["m",0,-e],["a",d,e,0,1,1,0,2*e],["a",d,e,0,1,1,0,-2*e],["z"] ] ; d . toString = z;return d } function G ( b ) { var e =
A(b);if(e.abs)return d(e.abs);Q(b,"array")&&Q(b&&b[0],"array")||(b=a.parsePathString(b)); if(!b||!b.length)return[["M",0,0] ];var h=[],f=0,l=0,n=0,k=0,p=0;"M"==b[0][0]&&(f=+b[0][1],l=+b[0][2],n=f,k=l,p++,h[0]=["M",f,l]); for(var q=3==b.length&&"M"==b[0][0]&&"R"==b[1][0].toUpperCase()&&"Z"==b[2][0].toUpperCase(),s,r,w=p,c=b.length; w< c ; w + + ) { h . push ( s = []);r=b[w];p=r[0];if(p!=p.toUpperCase())switch(s[0]=p.toUpperCase(),s[0]){case " A " :s [ 1 ] = r [ 1 ] ; s [ 2 ] = r [ 2 ] ; s [ 3 ] = r [ 3 ] ; s [ 4 ] = r [ 4 ] ; s [ 5 ] = r [ 5 ] ; s [ 6 ] = + r [ 6 ] + f ; s [ 7 ] = + r [ 7 ] +
l;break;case "V":s[1]=+r[1]+l;break;case "H":s[1]=+r[1]+f;break;case "R":for(var t=[f,l].concat(r.slice(1)),u=2,v=t.length;u< v ; u + + ) t [ u ] = + t [ u ] + f , t [ + + u ] = + t [ u ] + l ; h . pop ( ) ; h = h.concat(P(t,q));break;case " O " :h . pop ( ) ; t = x(f,l,r[1],r[2]);t.push(t[0]);h=h.concat(t);break;case " U " :h . pop ( ) ; h = h.concat(x(f,l,r[1],r[2],r[3]));s=["U"].concat(h[h.length-1].slice(-2));break;case " M " :n = +r[1]+f,k=+r[2]+l;default:for(u=1,v=r.length;u<v;u++)s[u]=+r[u]+(u%2?f:l)}else if ( " R " = = p ) t = [f,l].concat(r.slice(1)),h.pop(),h=h.concat(P(t,
q)),s=["R"].concat(r.slice(-2));else if("O"==p)h.pop(),t=x(f,l,r[1],r[2]),t.push(t[0]),h=h.concat(t);else if("U"==p)h.pop(),h=h.concat(x(f,l,r[1],r[2],r[3])),s=["U"].concat(h[h.length-1].slice(-2));else for(t=0,u=r.length;t< u ; t + + ) s [ t ] = r [ t ] ; p = p.toUpperCase();if("O"!=p)switch(s[0]){case " Z " :f = +n;l=+k;break;case " H " :f = s[1];break;case " V " :l = s[1];break;case " M " :n = s[s.length-2],k=s[s.length-1];default:f=s[s.length-2],l=s[s.length-1]}}h.toString=z;e.abs=d(h);return h } function h ( a , b , d , e ) { return [ a , b , d , e , d ,
e]}function J(a,b,d,e,h,f){var l=1/3,n=2/3;return[l*a+n*d,l*b+n*e,l*h+n*d,l*f+n*e,h,f]}function K(b,d,e,h,f,l,n,k,p,s){var r=120*S/180,q=S/180*(+f||0),c=[],t,x=a._.cacher(function(a,b,c){var d=a*F.cos(c)-b*F.sin(c);a=a*F.sin(c)+b*F.cos(c);return{x:d,y:a}});if(s)v=s[0],t=s[1],l=s[2],u=s[3];else{t=x(b,d,-q);b=t.x;d=t.y;t=x(k,p,-q);k=t.x;p=t.y;F.cos(S/180*f);F.sin(S/180*f);t=(b-k)/2;v=(d-p)/2;u=t*t/(e*e)+v*v/(h*h);1< u & & ( u = F.sqrt(u),e*=u,h*=u);var u = e*e,w=h*h,u=(l==n?-1:1)*F.sqrt(Z((u*w-u*v*v-w*t*t)/
(u*v*v+w*t*t)));l=u*e*v/h+(b+k)/2;var u=u*-h*t/e+(d+p)/2,v=F.asin(((d-u)/h).toFixed(9));t=F.asin(((p-u)/h).toFixed(9));v=b< l ? S-v:v ; t = k<l?S-t:t;0 > v&&(v=2*S+v); 0>t&&(t=2*S+t); n&&v>t&&(v-=2*S); !n& & t>v& & (t-=2*S)}if(Z(t-v)>r){var c=t,w=k,G=p;t=v+r*(n&&t>v?1:-1); k=l+e*F.cos(t);p=u+h*F.sin(t);c=K(k,p,e,h,f,0,n,w,G,[t,c,l,u])}l=t-v;f=F.cos(v);r=F.sin(v);n=F.cos(t);t=F.sin(t);l=F.tan(l/4);e=4/3*e*l;l*=4/3*h;h=[b,d];b=[b+e*r,d-l*f];d=[k+e*t,p-l*n];k=[k,p];b[0]=2*h[0]-b[0];b[1]=2*h[1]-b[1];if(s)return[b,d,k].concat(c);
c=[b,d,k].concat(c).join().split(",");s=[];k=0;for(p=c.length;k< p ; k + + ) s [ k ] = k % 2 ? x ( c [ k-1 ] , c [ k ] , q ) . y:x ( c [ k ] , c [ k + 1 ] , q ) . x ; return s } function U ( a , b , d , e , h , f , l , k ) { for ( var n = [],p=[[],[] ] , s , r , c , t , q = 0;2 > q;++q)0==q?(r=6*a-12*d+6*h,s=-3*a+9*d-9*h+3*l,c=3*d-3*a):(r=6*b-12*e+6*f,s=-3*b+9*e-9*f+3*k,c=3*e-3*b),1E-12>Z(s)?1E-12>Z(r)||(s=-c/r,0< s & & 1 > s&&n.push(s)):(t=r*r-4*c*s,c=F.sqrt(t),0>t||(t=(-r+c)/(2*s),0<t&&1>t&&n.push(t),s=(-r-c)/(2*s),0<s&&1>s&&n.push(s))); for(r=q=n.length;q--;)s=n[q],c=1-s,p[0][q]=c*c*c*a+3*
c*c*s*d+3*c*s*s*h+s*s*s*l,p[1][q]=c*c*c*b+3*c*c*s*e+3*c*s*s*f+s*s*s*k;p[0][r]=a;p[1][r]=b;p[0][r+1]=l;p[1][r+1]=k;p[0].length=p[1].length=r+2;return{min:{x:X.apply(0,p[0]),y:X.apply(0,p[1])},max:{x:W.apply(0,p[0]),y:W.apply(0,p[1])}}}function I(a,b){var e=!b&&A(a); if(!b& & e.curve)return d(e.curve);var f=G(a),l=b&&G(b),n={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},k={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},p=function(a,b,c){if(!a)return["C",b.x,b.y,b.x,b.y,b.x,b.y]; a[0]in{T:1,Q:1}||(b.qx=b.qy=null);
switch(a[0]){case "M":b.X=a[1];b.Y=a[2];break;case "A":a=["C"].concat(K.apply(0,[b.x,b.y].concat(a.slice(1))));break;case "S":"C"==c||"S"==c?(c=2*b.x-b.bx,b=2*b.y-b.by):(c=b.x,b=b.y);a=["C",c,b].concat(a.slice(1));break;case "T":"Q"==c||"T"==c?(b.qx=2*b.x-b.qx,b.qy=2*b.y-b.qy):(b.qx=b.x,b.qy=b.y);a=["C"].concat(J(b.x,b.y,b.qx,b.qy,a[1],a[2]));break;case "Q":b.qx=a[1];b.qy=a[2];a=["C"].concat(J(b.x,b.y,a[1],a[2],a[3],a[4]));break;case "L":a=["C"].concat(h(b.x,b.y,a[1],a[2]));break;case "H":a=["C"].concat(h(b.x,
b.y,a[1],b.y));break;case "V":a=["C"].concat(h(b.x,b.y,b.x,a[1]));break;case "Z":a=["C"].concat(h(b.x,b.y,b.X,b.Y))}return a},s=function(a,b){if(7< a [ b ] . length ) { a [ b ] . shift ( ) ; for ( var c = a[b];c.length;)q[b]="A",l&&(u[b]="A"),a.splice(b++,0,["C"].concat(c.splice(0,6)));a.splice(b,1);v=W(f.length,l&&l.length||0)}},r=function(a,b,c,d,e){a&&b&&"M"==a[e][0]&&"M"!=b[e][0]&&(b.splice(e,0,["M",d.x,d.y]),c.bx=0,c.by=0,c.x=a[e][1],c.y=a[e][2],v=W(f.length,l&&l.length||0))},q=[],u=[],c="",t="",x=0,v=W(f.length,
l&&l.length||0); for(;x< v ; x + + ) { f [ x ] & & ( c = f[x][0]);"C"!=c&&(q[x]=c,x&&(t=q[x-1]));f[x]=p(f[x],n,t);"A"!=q[x]&&"C"==c&&(q[x]="C");s(f,x);l&&(l[x]&&(c=l[x][0]),"C"!=c&&(u[x]=c,x&&(t=u[x-1])),l[x]=p(l[x],k,t),"A"!=u[x]&&"C"==c&&(u[x]="C"),s(l,x));r(f,l,n,k,x);r(l,f,k,n,x);var w = f[x],z=l&&l[x],y=w.length,U=l&&z.length;n.x=w[y-2];n.y=w[y-1];n.bx=$(w[y-4])||n.x;n.by=$(w[y-3])||n.y;k.bx=l&&($(z[U-4])||k.x);k.by=l&&($(z[U-3])||k.y);k.x=l&&z[U-2];k.y=l&&z[U-1]}l||(e.curve=d(f));return l ? [ f , l ] :f } function P ( a ,
b){for(var d=[],e=0,h=a.length;h-2*!b>e;e+=2){var f=[{x:+a[e-2],y:+a[e-1]},{x:+a[e],y:+a[e+1]},{x:+a[e+2],y:+a[e+3]},{x:+a[e+4],y:+a[e+5]}];b?e?h-4==e?f[3]={x:+a[0],y:+a[1]}:h-2==e&&(f[2]={x:+a[0],y:+a[1]},f[3]={x:+a[2],y:+a[3]}):f[0]={x:+a[h-2],y:+a[h-1]}:h-4==e?f[3]=f[2]:e||(f[0]={x:+a[e],y:+a[e+1]}); d.push(["C",(-f[0].x+6*f[1].x+f[2].x)/6,(-f[0].y+6*f[1].y+f[2].y)/6,(f[1].x+6*f[2].x-f[3].x)/6,(f[1].y+6*f[2].y-f[3].y)/6,f[2].x,f[2].y])}return d}y=k.prototype;var Q=a.is,C=a._.clone,L="hasOwnProperty",
N=/,?([a-z]),?/gi,$=parseFloat,F=Math,S=F.PI,X=F.min,W=F.max,ma=F.pow,Z=F.abs;M=n(1);var na=n(),ba=n(0,1),V=a._unit2px;a.path=A;a.path.getTotalLength=M;a.path.getPointAtLength=na;a.path.getSubpath=function(a,b,d){if(1E-6>this.getTotalLength(a)-d)return ba(a,b).end;a=ba(a,d,1);return b?ba(a,b).end:a};y.getTotalLength=function(){if(this.node.getTotalLength)return this.node.getTotalLength()};y.getPointAtLength=function(a){return na(this.attr("d"),a)};y.getSubpath=function(b,d){return a.path.getSubpath(this.attr("d"),
b,d)};a._.box=w;a.path.findDotsAtSegment=u;a.path.bezierBBox=p;a.path.isPointInsideBBox=b;a.path.isBBoxIntersect=q;a.path.intersection=function(a,b){return l(a,b)};a.path.intersectionNumber=function(a,b){return l(a,b,1)};a.path.isPointInside=function(a,d,e){var h=r(a);return b(h,d,e)& & 1==l(a,[["M",d,e],["H",h.x2+10] ],1)%2};a.path.getBBox=r;a.path.get={path:function(a){return a.attr("path")},circle:function(a){a=V(a);return x(a.cx,a.cy,a.r)},ellipse:function(a){a=V(a);return x(a.cx||0,a.cy||0,a.rx,
a.ry)},rect:function(a){a=V(a);return s(a.x||0,a.y||0,a.width,a.height,a.rx,a.ry)},image:function(a){a=V(a);return s(a.x||0,a.y||0,a.width,a.height)},line:function(a){return"M"+[a.attr("x1")||0,a.attr("y1")||0,a.attr("x2"),a.attr("y2")]},polyline:function(a){return"M"+a.attr("points")},polygon:function(a){return"M"+a.attr("points")+"z"},deflt:function(a){a=a.node.getBBox();return s(a.x,a.y,a.width,a.height)}};a.path.toRelative=function(b){var e=A(b),h=String.prototype.toLowerCase;if(e.rel)return d(e.rel);
a.is(b,"array")&&a.is(b&&b[0],"array")||(b=a.parsePathString(b)); var f=[],l=0,n=0,k=0,p=0,s=0;"M"==b[0][0]&&(l=b[0][1],n=b[0][2],k=l,p=n,s++,f.push(["M",l,n])); for(var r=b.length;s< r ; s + + ) { var q = f[s]=[],x=b[s];if(x[0]!=h.call(x[0]))switch(q[0]=h.call(x[0]),q[0]){case " a " :q [ 1 ] = x [ 1 ] ; q [ 2 ] = x [ 2 ] ; q [ 3 ] = x [ 3 ] ; q [ 4 ] = x [ 4 ] ; q [ 5 ] = x [ 5 ] ; q [ 6 ] = + ( x [ 6 ] -l ) . toFixed ( 3 ) ; q [ 7 ] = + ( x [ 7 ] -n ) . toFixed ( 3 ) ; break ; case " v " :q [ 1 ] = + ( x [ 1 ] -n ) . toFixed ( 3 ) ; break ; case " m " :k = x[1],p=x[2];default:for(var c = 1,t=x.length;c<t;c++)q[c]=+(x[c]-(c%2?l:
n)).toFixed(3)}else for(f[s]=[],"m"==x[0]&&(k=x[1]+l,p=x[2]+n),q=0,c=x.length; q< c ; q + + ) f [ s ] [ q ] = x [ q ] ; x = f[s].length;switch(f[s][0]){case " z " :l = k;n=p;break;case " h " :l + = + f [ s ] [ x-1 ] ; break ; case " v " :n + = + f [ s ] [ x-1 ] ; break ; default:l + = + f [ s ] [ x-2 ] , n + = + f [ s ] [ x-1 ] } } f . toString = z;e.rel=d(f);return f } ; a . path . toAbsolute = G;a.path.toCubic=I;a.path.map=function(a,b){if(!b)return a ; var d , e , h , f , l , n , k ; a = I(a);h=0;for(l=a.length;h<l;h++)for(k=a[h],f=1,n=k.length;f<n;f+=2)d=b.x(k[f],k[f+1]),e=b.y(k[f],k[f+1]),k[f]=d,k[f+1]=e;return a } ;
a.path.toString=z;a.path.clone=d});C.plugin(function(a,v,y,C){var A=Math.max,w=Math.min,z=function(a){this.items=[];this.bindings={};this.length=0;this.type="set";if(a)for(var f=0,n=a.length;f< n ; f + + ) a [ f ] & & ( this [ this . items . length ] = this . items [ this . items . length ] = a [ f ] , this . length + + ) } ; v = z.prototype;v.push=function(){for(var a , f , n = 0,k=arguments.length;n<k;n++)if(a=arguments[n])f=this.items.length,this[f]=this.items[f]=a,this.length++;return this } ; v . pop = function(){this.length&&delete this [ this . length-- ] ;
return this.items.pop()};v.forEach=function(a,f){for(var n=0,k=this.items.length;n< k & & ! 1 ! = = a . call ( f , this . items [ n ] , n ) ; n + + ) ; return this } ; v . animate = function(d,f,n,u){"function"!=typeof n | | n . length | | ( u = n,n=L.linear);d instanceof a . _ . Animation & & ( u = d.callback,n=d.easing,f=n.dur,d=d.attr);var p = arguments;if(a.is(d,"array")&&a.is(p[p.length-1],"array"))var b = !0;var q , e = function(){q?this.b=q:q=this.b},l=0,r=u&&function(){l++==this.length&&u.call(this)};return this . forEach ( function ( a , l ) { k . once ( " snap . animcreated . " +
a.id,e);b?p[l]&&a.animate.apply(a,p[l]):a.animate(d,f,n,r)})}; v.remove=function(){for(;this.length;)this.pop().remove();return this};v.bind=function(a,f,k){var u={};if("function"==typeof f)this.bindings[a]=f;else{var p=k||a;this.bindings[a]=function(a){u[p]=a;f.attr(u)}}return this};v.attr=function(a){var f={},k;for(k in a)if(this.bindings[k])this.bindings[k](a[k]);else f[k]=a[k];a=0;for(k=this.items.length;a< k ; a + + ) this . items [ a ] . attr ( f ) ; return this } ; v . clear = function(){for(;this.length;)this.pop()};
v.splice=function(a,f,k){a=0>a?A(this.length+a,0):a;f=A(0,w(this.length-a,f));var u=[],p=[],b=[],q;for(q=2;q< arguments.length ; q + + ) b . push ( arguments [ q ] ) ; for ( q = 0;q<f;q++)p.push(this[a+q]);for(;q<this.length-a;q++)u.push(this[a+q]);var e = b.length;for(q=0;q<e+u.length;q++)this.items[a+q]=this[a+q]=q<e?b[q]:u[q-e];for(q=this.items.length=this.length-=f-e;this[q];)delete this [ q + + ] ; return new z ( p ) } ; v . exclude = function(a){for(var f = 0,k=this.length;f<k;f++)if(this[f]==a)return this . splice ( f , 1 ) , ! 0 ; return ! 1 } ;
v.insertAfter=function(a){for(var f=this.items.length;f--;)this.items[f].insertAfter(a);return this};v.getBBox=function(){for(var a=[],f=[],k=[],u=[],p=this.items.length;p--;)if(!this.items[p].removed){var b=this.items[p].getBBox();a.push(b.x);f.push(b.y);k.push(b.x+b.width);u.push(b.y+b.height)}a=w.apply(0,a);f=w.apply(0,f);k=A.apply(0,k);u=A.apply(0,u);return{x:a,y:f,x2:k,y2:u,width:k-a,height:u-f,cx:a+(k-a)/2,cy:f+(u-f)/2}};v.clone=function(a){a=new z;for(var f=0,k=this.items.length;f< k ; f + + ) a . push ( this . items [ f ] . clone ( ) ) ;
return a};v.toString=function(){return"Snap\u2018s set"};v.type="set";a.set=function(){var a=new z;arguments.length&&a.push.apply(a,Array.prototype.slice.call(arguments,0)); return a}});C.plugin(function(a,v,y,C){function A(a){var b=a[0];switch(b.toLowerCase()){case "t":return[b,0,0];case "m":return[b,1,0,0,1,0,0];case "r":return 4==a.length?[b,0,a[2],a[3] ]:[b,0];case "s":return 5==a.length?[b,1,1,a[3],a[4] ]:3==a.length?[b,1,1]:[b,1]}}function w(b,d,f){d=q(d).replace(/\.{3}|\u2026/g,b);b=a.parseTransformString(b)||
[];d=a.parseTransformString(d)||[];for(var k=Math.max(b.length,d.length),p=[],v=[],h=0,w,z,y,I;h< k ; h + + ) { y = b[h]||A(d[h]);I=d[h]||A(y);if(y[0]!=I[0]||"r"==y[0].toLowerCase()&&(y[2]!=I[2]||y[3]!=I[3])||"s"==y[0].toLowerCase()&&(y[3]!=I[3]||y[4]!=I[4])){b=a._.transform2matrix(b,f());d=a._.transform2matrix(d,f());p=[["m",b.a,b.b,b.c,b.d,b.e,b.f] ] ; v = [["m",d.a,d.b,d.c,d.d,d.e,d.f] ] ; break } p [ h ] = [ ] ; v [ h ] = [ ] ; w = 0;for(z=Math.max(y.length,I.length);w<z;w++)w in y & & ( p [ h ] [ w ] = y [ w ] ) , w in I & & ( v [ h ] [ w ] = I [ w ] ) } return { from:u ( p ) ,
to:u(v),f:n(p)}}function z(a){return a}function d(a){return function(b){return+b.toFixed(3)+a}}function f(b){return a.rgb(b[0],b[1],b[2])}function n(a){var b=0,d,f,k,n,h,p,q=[];d=0;for(f=a.length;d< f ; d + + ) { h = "[" ; p = ['"'+a[d][0]+'"'];k=1;for(n=a[d].length;k<n;k++)p[k]="val["+b++ + " ] " ; h + = p + " ] " ; q [ d ] = h } return Function ( " val " , " return Snap . path . toString . call ( [ " + q + " ] ) " ) } function u ( a ) { for ( var b = [],d=0,f=a.length;d<f;d++)for(var k = 1,n=a[d].length;k<n;k++)b.push(a[d][k]);return b } var p = {},b=/[a-z]+$/i,q=String;
p.stroke=p.fill="colour";v.prototype.equal=function(a,b){return k("snap.util.equal",this,a,b).firstDefined()};k.on("snap.util.equal",function(e,k){var r,s;r=q(this.attr(e)||"");var x=this;if(r==+r&&k==+k)return{from:+r,to:+k,f:z}; if("colour"==p[e])return r=a.color(r),s=a.color(k),{from:[r.r,r.g,r.b,r.opacity],to:[s.r,s.g,s.b,s.opacity],f:f};if("transform"==e||"gradientTransform"==e||"patternTransform"==e)return k instanceof a.Matrix& & (k=k.toTransformString()),a._.rgTransform.test(k)||(k=a._.svgTransform2string(k)),
w(r,k,function(){return x.getBBox(1)});if("d"==e||"path"==e)return r=a.path.toCubic(r,k),{from:u(r[0]),to:u(r[1]),f:n(r[0])};if("points"==e)return r=q(r).split(a._.separator),s=q(k).split(a._.separator),{from:r,to:s,f:function(a){return a}};aUnit=r.match(b);s=q(k).match(b);return aUnit&&aUnit==s?{from:parseFloat(r),to:parseFloat(k),f:d(aUnit)}:{from:this.asPX(e),to:this.asPX(e,k),f:z}})}); C.plugin(function(a,v,y,C){var A=v.prototype,w="createTouch"in C.doc;v="click dblclick mousedown mousemove mouseout mouseover mouseup touchstart touchmove touchend touchcancel".split(" ");
var z={mousedown:"touchstart",mousemove:"touchmove",mouseup:"touchend"},d=function(a,b){var d="y"==a?"scrollTop":"scrollLeft",e=b&&b.node?b.node.ownerDocument:C.doc; return e[d in e.documentElement?"documentElement":"body"][d]},f=function(){this.returnValue=!1},n=function(){return this.originalEvent.preventDefault()},u=function(){this.cancelBubble=!0},p=function(){return this.originalEvent.stopPropagation()},b=function(){if(C.doc.addEventListener)return function(a,b,e,f){var k=w& & z[b]?z[b]:b,l=function(k){var l=
d("y",f),q=d("x",f);if(w& & z.hasOwnProperty(b))for(var r=0,u=k.targetTouches&&k.targetTouches.length; r< u ; r + + ) if ( k . targetTouches [ r ] . target = =a||a.contains(k.targetTouches[r].target)){u=k;k=k.targetTouches[r];k.originalEvent=u;k.preventDefault=n;k.stopPropagation=p;break}return e . call ( f , k , k . clientX + q , k . clientY + l ) } ; b ! = = k & & a . addEventListener ( b , l , ! 1 ) ; a . addEventListener ( k , l , ! 1 ) ; return function ( ) { b ! = = k & & a . removeEventListener ( b , l , ! 1 ) ; a . removeEventListener ( k , l , ! 1 ) ; return ! 0 } } ; if ( C . doc . attachEvent ) return function ( a ,
b,e,h){var k=function(a){a=a||h.node.ownerDocument.window.event;var b=d("y",h),k=d("x",h),k=a.clientX+k,b=a.clientY+b;a.preventDefault=a.preventDefault||f;a.stopPropagation=a.stopPropagation||u;return e.call(h,a,k,b)};a.attachEvent("on"+b,k);return function(){a.detachEvent("on"+b,k);return!0}}}(),q=[],e=function(a){for(var b=a.clientX,e=a.clientY,f=d("y"),l=d("x"),n,p=q.length;p--;){n=q[p];if(w)for(var r=a.touches&&a.touches.length,u; r--;){if(u=a.touches[r],u.identifier==n.el._drag.id||n.el.node.contains(u.target)){b=
u.clientX;e=u.clientY;(a.originalEvent?a.originalEvent:a).preventDefault();break}}else a.preventDefault();b+=l;e+=f;k("snap.drag.move."+n.el.id,n.move_scope||n.el,b-n.el._drag.x,e-n.el._drag.y,b,e,a)}},l=function(b){a.unmousemove(e).unmouseup(l);for(var d=q.length,f;d--;)f=q[d],f.el._drag={},k("snap.drag.end."+f.el.id,f.end_scope||f.start_scope||f.move_scope||f.el,b);q=[]};for(y=v.length;y--;)(function(d){a[d]=A[d]=function(e,f){a.is(e,"function")& & (this.events=this.events||[],this.events.push({name:d,
f:e,unbind:b(this.node||document,d,e,f||this)}));return this};a["un"+d]=A["un"+d]=function(a){for(var b=this.events||[],e=b.length;e--;)if(b[e].name==d&&(b[e].f==a||!a)){b[e].unbind(); b.splice(e,1);!b.length& & delete this.events;break}return this}})(v[y]);A.hover=function(a,b,d,e){return this.mouseover(a,d).mouseout(b,e||d)};A.unhover=function(a,b){return this.unmouseover(a).unmouseout(b)};var r=[];A.drag=function(b,d,f,h,n,p){function u(r,v,w){(r.originalEvent||r).preventDefault();this._drag.x=v;
this._drag.y=w;this._drag.id=r.identifier;!q.length&&a.mousemove(e).mouseup(l); q.push({el:this,move_scope:h,start_scope:n,end_scope:p});d&&k.on("snap.drag.start."+this.id,d); b&&k.on("snap.drag.move."+this.id,b); f&&k.on("snap.drag.end."+this.id,f); k("snap.drag.start."+this.id,n||h||this,v,w,r)}if(!arguments.length){var v;return this.drag(function(a,b){this.attr({transform:v+(v?"T":"t")+[a,b]})},function(){v=this.transform().local})}this._drag={};r.push({el:this,start:u});this.mousedown(u);return this};
A.undrag=function(){for(var b=r.length;b--;)r[b].el==this&&(this.unmousedown(r[b].start),r.splice(b,1),k.unbind("snap.drag.*."+this.id)); !r.length&&a.unmousemove(e).unmouseup(l); return this}});C.plugin(function(a,v,y,C){y=y.prototype;var A=/^\s*url\((.+)\)/,w=String,z=a._.$;a.filter={};y.filter=function(d){var f=this;"svg"!=f.type&&(f=f.paper); d=a.parse(w(d));var k=a._.id(),u=z("filter");z(u,{id:k,filterUnits:"userSpaceOnUse"});u.appendChild(d.node);f.defs.appendChild(u);return new v(u)};k.on("snap.util.getattr.filter",
function(){k.stop();var d=z(this.node,"filter");if(d)return(d=w(d).match(A))&&a.select(d[1])}); k.on("snap.util.attr.filter",function(d){if(d instanceof v&&"filter"==d.type){k.stop(); var f=d.node.id;f||(z(d.node,{id:d.id}),f=d.id);z(this.node,{filter:a.url(f)})}d&&"none"!=d||(k.stop(),this.node.removeAttribute("filter"))}); a.filter.blur=function(d,f){null==d&&(d=2); return a.format('< feGaussianBlur stdDeviation = "{def}" / > ',{def:null==f?d:[d,f]})};a.filter.blur.toString=function(){return this()};a.filter.shadow=
function(d,f,k,u,p){"string"==typeof k&&(p=u=k,k=4); "string"!=typeof u&&(p=u,u="#000"); null==k&&(k=4); null==p&&(p=1); null==d&&(d=0,f=2); null==f&&(f=d); u=a.color(u||"#000");return a.format('< feGaussianBlur in = "SourceAlpha" stdDeviation = "{blur}" / > < feOffset dx = "{dx}" dy = "{dy}" result = "offsetblur" / > < feFlood flood-color = "{color}" / > < feComposite in2 = "offsetblur" operator = "in" / > < feComponentTransfer > < feFuncA type = "linear" slope = "{opacity}" / > < / feComponentTransfer > < feMerge > < feMergeNode / > < feMergeNode in = "SourceGraphic" / > < / feMerge > ',
{color:u,dx:d,dy:f,blur:k,opacity:p})};a.filter.shadow.toString=function(){return this()};a.filter.grayscale=function(d){null==d&&(d=1); return a.format('< feColorMatrix type = "matrix" values = "{a} {b} {c} 0 0 {d} {e} {f} 0 0 {g} {b} {h} 0 0 0 0 0 1 0" / > ',{a:0.2126+0.7874*(1-d),b:0.7152-0.7152*(1-d),c:0.0722-0.0722*(1-d),d:0.2126-0.2126*(1-d),e:0.7152+0.2848*(1-d),f:0.0722-0.0722*(1-d),g:0.2126-0.2126*(1-d),h:0.0722+0.9278*(1-d)})};a.filter.grayscale.toString=function(){return this()};a.filter.sepia=
function(d){null==d&&(d=1); return a.format('< feColorMatrix type = "matrix" values = "{a} {b} {c} 0 0 {d} {e} {f} 0 0 {g} {h} {i} 0 0 0 0 0 1 0" / > ',{a:0.393+0.607*(1-d),b:0.769-0.769*(1-d),c:0.189-0.189*(1-d),d:0.349-0.349*(1-d),e:0.686+0.314*(1-d),f:0.168-0.168*(1-d),g:0.272-0.272*(1-d),h:0.534-0.534*(1-d),i:0.131+0.869*(1-d)})};a.filter.sepia.toString=function(){return this()};a.filter.saturate=function(d){null==d&&(d=1); return a.format('< feColorMatrix type = "saturate" values = "{amount}" / > ',{amount:1-
d})};a.filter.saturate.toString=function(){return this()};a.filter.hueRotate=function(d){return a.format('< feColorMatrix type = "hueRotate" values = "{angle}" / > ',{angle:d||0})};a.filter.hueRotate.toString=function(){return this()};a.filter.invert=function(d){null==d&&(d=1); return a.format('< feComponentTransfer > < feFuncR type = "table" tableValues = "{amount} {amount2}" / > < feFuncG type = "table" tableValues = "{amount} {amount2}" / > < feFuncB type = "table" tableValues = "{amount} {amount2}" / > < / feComponentTransfer > ',{amount:d,
amount2:1-d})};a.filter.invert.toString=function(){return this()};a.filter.brightness=function(d){null==d&&(d=1); return a.format('< feComponentTransfer > < feFuncR type = "linear" slope = "{amount}" / > < feFuncG type = "linear" slope = "{amount}" / > < feFuncB type = "linear" slope = "{amount}" / > < / feComponentTransfer > ',{amount:d})};a.filter.brightness.toString=function(){return this()};a.filter.contrast=function(d){null==d&&(d=1); return a.format('< feComponentTransfer > < feFuncR type = "linear" slope = "{amount}" intercept = "{amount2}" / > < feFuncG type = "linear" slope = "{amount}" intercept = "{amount2}" / > < feFuncB type = "linear" slope = "{amount}" intercept = "{amount2}" / > < / feComponentTransfer > ',
{amount:d,amount2:0.5-d/2})};a.filter.contrast.toString=function(){return this()}});return C});
]]> < / script >
< script > < ! [ C D A T A [
(function (glob, factory) {
// AMD support
if (typeof define === "function" & & define.amd) {
// Define as an anonymous module
define("Gadfly", ["Snap.svg"], function (Snap) {
return factory(Snap);
});
} else {
// Browser globals (glob is window)
// Snap adds itself to window
glob.Gadfly = factory(glob.Snap);
}
}(this, function (Snap) {
var Gadfly = {};
// Get an x/y coordinate value in pixels
var xPX = function(fig, x) {
var client_box = fig.node.getBoundingClientRect();
return x * fig.node.viewBox.baseVal.width / client_box.width;
};
var yPX = function(fig, y) {
var client_box = fig.node.getBoundingClientRect();
return y * fig.node.viewBox.baseVal.height / client_box.height;
};
Snap.plugin(function (Snap, Element, Paper, global) {
// Traverse upwards from a snap element to find and return the first
// note with the "plotroot" class.
Element.prototype.plotroot = function () {
var element = this;
while (!element.hasClass("plotroot") & & element.parent() != null) {
element = element.parent();
}
return element;
};
Element.prototype.svgroot = function () {
var element = this;
while (element.node.nodeName != "svg" & & element.parent() != null) {
element = element.parent();
}
return element;
};
Element.prototype.plotbounds = function () {
var root = this.plotroot()
var bbox = root.select(".guide.background").node.getBBox();
return {
x0: bbox.x,
x1: bbox.x + bbox.width,
y0: bbox.y,
y1: bbox.y + bbox.height
};
};
Element.prototype.plotcenter = function () {
var root = this.plotroot()
var bbox = root.select(".guide.background").node.getBBox();
return {
x: bbox.x + bbox.width / 2,
y: bbox.y + bbox.height / 2
};
};
// Emulate IE style mouseenter/mouseleave events, since Microsoft always
// does everything right.
// See: http://www.dynamic-tools.net/toolbox/isMouseLeaveOrEnter/
var events = ["mouseenter", "mouseleave"];
for (i in events) {
(function (event_name) {
var event_name = events[i];
Element.prototype[event_name] = function (fn, scope) {
if (Snap.is(fn, "function")) {
var fn2 = function (event) {
if (event.type != "mouseover" & & event.type != "mouseout") {
return;
}
var reltg = event.relatedTarget ? event.relatedTarget :
event.type == "mouseout" ? event.toElement : event.fromElement;
while (reltg & & reltg != this.node) reltg = reltg.parentNode;
if (reltg != this.node) {
return fn.apply(this, event);
}
};
if (event_name == "mouseenter") {
this.mouseover(fn2, scope);
} else {
this.mouseout(fn2, scope);
}
}
return this;
};
})(events[i]);
}
Element.prototype.mousewheel = function (fn, scope) {
if (Snap.is(fn, "function")) {
var el = this;
var fn2 = function (event) {
fn.apply(el, [event]);
};
}
this.node.addEventListener(
/Firefox/i.test(navigator.userAgent) ? "DOMMouseScroll" : "mousewheel",
fn2);
return this;
};
// Snap's attr function can be too slow for things like panning/zooming.
// This is a function to directly update element attributes without going
// through eve.
Element.prototype.attribute = function(key, val) {
if (val === undefined) {
return this.node.getAttribute(key);
} else {
this.node.setAttribute(key, val);
return this;
}
};
Element.prototype.init_gadfly = function() {
this.mouseenter(Gadfly.plot_mouseover)
.mouseleave(Gadfly.plot_mouseout)
.dblclick(Gadfly.plot_dblclick)
.mousewheel(Gadfly.guide_background_scroll)
.drag(Gadfly.guide_background_drag_onmove,
Gadfly.guide_background_drag_onstart,
Gadfly.guide_background_drag_onend);
this.mouseenter(function (event) {
init_pan_zoom(this.plotroot());
});
return this;
};
});
// When the plot is moused over, emphasize the grid lines.
Gadfly.plot_mouseover = function(event) {
var root = this.plotroot();
var keyboard_zoom = function(event) {
if (event.which == 187) { // plus
increase_zoom_by_position(root, 0.1, true);
} else if (event.which == 189) { // minus
increase_zoom_by_position(root, -0.1, true);
}
};
root.data("keyboard_zoom", keyboard_zoom);
window.addEventListener("keyup", keyboard_zoom);
var xgridlines = root.select(".xgridlines"),
ygridlines = root.select(".ygridlines");
xgridlines.data("unfocused_strokedash",
xgridlines.attribute("stroke-dasharray").replace(/(\d)(,|$)/g, "$1mm$2"));
ygridlines.data("unfocused_strokedash",
ygridlines.attribute("stroke-dasharray").replace(/(\d)(,|$)/g, "$1mm$2"));
// emphasize grid lines
var destcolor = root.data("focused_xgrid_color");
xgridlines.attribute("stroke-dasharray", "none")
.selectAll("path")
.animate({stroke: destcolor}, 250);
destcolor = root.data("focused_ygrid_color");
ygridlines.attribute("stroke-dasharray", "none")
.selectAll("path")
.animate({stroke: destcolor}, 250);
// reveal zoom slider
root.select(".zoomslider")
.animate({opacity: 1.0}, 250);
};
// Reset pan and zoom on double click
Gadfly.plot_dblclick = function(event) {
set_plot_pan_zoom(this.plotroot(), 0.0, 0.0, 1.0);
};
// Unemphasize grid lines on mouse out.
Gadfly.plot_mouseout = function(event) {
var root = this.plotroot();
window.removeEventListener("keyup", root.data("keyboard_zoom"));
root.data("keyboard_zoom", undefined);
var xgridlines = root.select(".xgridlines"),
ygridlines = root.select(".ygridlines");
var destcolor = root.data("unfocused_xgrid_color");
xgridlines.attribute("stroke-dasharray", xgridlines.data("unfocused_strokedash"))
.selectAll("path")
.animate({stroke: destcolor}, 250);
destcolor = root.data("unfocused_ygrid_color");
ygridlines.attribute("stroke-dasharray", ygridlines.data("unfocused_strokedash"))
.selectAll("path")
.animate({stroke: destcolor}, 250);
// hide zoom slider
root.select(".zoomslider")
.animate({opacity: 0.0}, 250);
};
var set_geometry_transform = function(root, tx, ty, scale) {
var xscalable = root.hasClass("xscalable"),
yscalable = root.hasClass("yscalable");
var old_scale = root.data("scale");
var xscale = xscalable ? scale : 1.0,
yscale = yscalable ? scale : 1.0;
tx = xscalable ? tx : 0.0;
ty = yscalable ? ty : 0.0;
var t = new Snap.Matrix().translate(tx, ty).scale(xscale, yscale);
root.selectAll(".geometry, image")
.forEach(function (element, i) {
element.transform(t);
});
bounds = root.plotbounds();
if (yscalable) {
var xfixed_t = new Snap.Matrix().translate(0, ty).scale(1.0, yscale);
root.selectAll(".xfixed")
.forEach(function (element, i) {
element.transform(xfixed_t);
});
root.select(".ylabels")
.transform(xfixed_t)
.selectAll("text")
.forEach(function (element, i) {
if (element.attribute("gadfly:inscale") == "true") {
var cx = element.asPX("x"),
cy = element.asPX("y");
var st = element.data("static_transform");
unscale_t = new Snap.Matrix();
unscale_t.scale(1, 1/scale, cx, cy).add(st);
element.transform(unscale_t);
var y = cy * scale + ty;
element.attr("visibility",
bounds.y0 < = y & & y < = bounds.y1 ? "visible" : "hidden");
}
});
}
if (xscalable) {
var yfixed_t = new Snap.Matrix().translate(tx, 0).scale(xscale, 1.0);
var xtrans = new Snap.Matrix().translate(tx, 0);
root.selectAll(".yfixed")
.forEach(function (element, i) {
element.transform(yfixed_t);
});
root.select(".xlabels")
.transform(yfixed_t)
.selectAll("text")
.forEach(function (element, i) {
if (element.attribute("gadfly:inscale") == "true") {
var cx = element.asPX("x"),
cy = element.asPX("y");
var st = element.data("static_transform");
unscale_t = new Snap.Matrix();
unscale_t.scale(1/scale, 1, cx, cy).add(st);
element.transform(unscale_t);
var x = cx * scale + tx;
element.attr("visibility",
bounds.x0 < = x & & x < = bounds.x1 ? "visible" : "hidden");
}
});
}
// we must unscale anything that is scale invariance: widths, raiduses, etc.
var size_attribs = ["font-size"];
var unscaled_selection = ".geometry, .geometry *";
if (xscalable) {
size_attribs.push("rx");
unscaled_selection += ", .xgridlines";
}
if (yscalable) {
size_attribs.push("ry");
unscaled_selection += ", .ygridlines";
}
root.selectAll(unscaled_selection)
.forEach(function (element, i) {
// circle need special help
if (element.node.nodeName == "circle") {
var cx = element.attribute("cx"),
cy = element.attribute("cy");
unscale_t = new Snap.Matrix().scale(1/xscale, 1/yscale,
cx, cy);
element.transform(unscale_t);
return;
}
for (i in size_attribs) {
var key = size_attribs[i];
var val = parseFloat(element.attribute(key));
if (val !== undefined & & val != 0 & & !isNaN(val)) {
element.attribute(key, val * old_scale / scale);
}
}
});
};
// Find the most appropriate tick scale and update label visibility.
var update_tickscale = function(root, scale, axis) {
if (!root.hasClass(axis + "scalable")) return;
var tickscales = root.data(axis + "tickscales");
var best_tickscale = 1.0;
var best_tickscale_dist = Infinity;
for (tickscale in tickscales) {
var dist = Math.abs(Math.log(tickscale) - Math.log(scale));
if (dist < best_tickscale_dist ) {
best_tickscale_dist = dist;
best_tickscale = tickscale;
}
}
if (best_tickscale != root.data(axis + "tickscale")) {
root.data(axis + "tickscale", best_tickscale);
var mark_inscale_gridlines = function (element, i) {
var inscale = element.attr("gadfly:scale") == best_tickscale;
element.attribute("gadfly:inscale", inscale);
element.attr("visibility", inscale ? "visible" : "hidden");
};
var mark_inscale_labels = function (element, i) {
var inscale = element.attr("gadfly:scale") == best_tickscale;
element.attribute("gadfly:inscale", inscale);
element.attr("visibility", inscale ? "visible" : "hidden");
};
root.select("." + axis + "gridlines").selectAll("path").forEach(mark_inscale_gridlines);
root.select("." + axis + "labels").selectAll("text").forEach(mark_inscale_labels);
}
};
var set_plot_pan_zoom = function(root, tx, ty, scale) {
var old_scale = root.data("scale");
var bounds = root.plotbounds();
var width = bounds.x1 - bounds.x0,
height = bounds.y1 - bounds.y0;
// compute the viewport derived from tx, ty, and scale
var x_min = -width * scale - (scale * width - width),
x_max = width * scale,
y_min = -height * scale - (scale * height - height),
y_max = height * scale;
var x0 = bounds.x0 - scale * bounds.x0,
y0 = bounds.y0 - scale * bounds.y0;
var tx = Math.max(Math.min(tx - x0, x_max), x_min),
ty = Math.max(Math.min(ty - y0, y_max), y_min);
tx += x0;
ty += y0;
// when the scale change, we may need to alter which set of
// ticks is being displayed
if (scale != old_scale) {
update_tickscale(root, scale, "x");
update_tickscale(root, scale, "y");
}
set_geometry_transform(root, tx, ty, scale);
root.data("scale", scale);
root.data("tx", tx);
root.data("ty", ty);
};
var scale_centered_translation = function(root, scale) {
var bounds = root.plotbounds();
var width = bounds.x1 - bounds.x0,
height = bounds.y1 - bounds.y0;
var tx0 = root.data("tx"),
ty0 = root.data("ty");
var scale0 = root.data("scale");
// how off from center the current view is
var xoff = tx0 - (bounds.x0 * (1 - scale0) + (width * (1 - scale0)) / 2),
yoff = ty0 - (bounds.y0 * (1 - scale0) + (height * (1 - scale0)) / 2);
// rescale offsets
xoff = xoff * scale / scale0;
yoff = yoff * scale / scale0;
// adjust for the panel position being scaled
var x_edge_adjust = bounds.x0 * (1 - scale),
y_edge_adjust = bounds.y0 * (1 - scale);
return {
x: xoff + x_edge_adjust + (width - width * scale) / 2,
y: yoff + y_edge_adjust + (height - height * scale) / 2
};
};
// Initialize data for panning zooming if it isn't already.
var init_pan_zoom = function(root) {
if (root.data("zoompan-ready")) {
return;
}
// The non-scaling-stroke trick. Rather than try to correct for the
// stroke-width when zooming, we force it to a fixed value.
var px_per_mm = root.node.getCTM().a;
// Drag events report deltas in pixels, which we'd like to convert to
// millimeters.
root.data("px_per_mm", px_per_mm);
root.selectAll("path")
.forEach(function (element, i) {
sw = element.asPX("stroke-width") * px_per_mm;
if (sw > 0) {
element.attribute("stroke-width", sw);
element.attribute("vector-effect", "non-scaling-stroke");
}
});
// Store ticks labels original tranformation
root.selectAll(".xlabels > text, .ylabels > text")
.forEach(function (element, i) {
var lm = element.transform().localMatrix;
element.data("static_transform",
new Snap.Matrix(lm.a, lm.b, lm.c, lm.d, lm.e, lm.f));
});
var xgridlines = root.select(".xgridlines");
var ygridlines = root.select(".ygridlines");
var xlabels = root.select(".xlabels");
var ylabels = root.select(".ylabels");
if (root.data("tx") === undefined) root.data("tx", 0);
if (root.data("ty") === undefined) root.data("ty", 0);
if (root.data("scale") === undefined) root.data("scale", 1.0);
if (root.data("xtickscales") === undefined) {
// index all the tick scales that are listed
var xtickscales = {};
var ytickscales = {};
var add_x_tick_scales = function (element, i) {
xtickscales[element.attribute("gadfly:scale")] = true;
};
var add_y_tick_scales = function (element, i) {
ytickscales[element.attribute("gadfly:scale")] = true;
};
if (xgridlines) xgridlines.selectAll("path").forEach(add_x_tick_scales);
if (ygridlines) ygridlines.selectAll("path").forEach(add_y_tick_scales);
if (xlabels) xlabels.selectAll("text").forEach(add_x_tick_scales);
if (ylabels) ylabels.selectAll("text").forEach(add_y_tick_scales);
root.data("xtickscales", xtickscales);
root.data("ytickscales", ytickscales);
root.data("xtickscale", 1.0);
}
var min_scale = 1.0, max_scale = 1.0;
for (scale in xtickscales) {
min_scale = Math.min(min_scale, scale);
max_scale = Math.max(max_scale, scale);
}
for (scale in ytickscales) {
min_scale = Math.min(min_scale, scale);
max_scale = Math.max(max_scale, scale);
}
root.data("min_scale", min_scale);
root.data("max_scale", max_scale);
// store the original positions of labels
if (xlabels) {
xlabels.selectAll("text")
.forEach(function (element, i) {
element.data("x", element.asPX("x"));
});
}
if (ylabels) {
ylabels.selectAll("text")
.forEach(function (element, i) {
element.data("y", element.asPX("y"));
});
}
// mark grid lines and ticks as in or out of scale.
var mark_inscale = function (element, i) {
element.attribute("gadfly:inscale", element.attribute("gadfly:scale") == 1.0);
};
if (xgridlines) xgridlines.selectAll("path").forEach(mark_inscale);
if (ygridlines) ygridlines.selectAll("path").forEach(mark_inscale);
if (xlabels) xlabels.selectAll("text").forEach(mark_inscale);
if (ylabels) ylabels.selectAll("text").forEach(mark_inscale);
// figure out the upper ond lower bounds on panning using the maximum
// and minum grid lines
var bounds = root.plotbounds();
var pan_bounds = {
x0: 0.0,
y0: 0.0,
x1: 0.0,
y1: 0.0
};
if (xgridlines) {
xgridlines
.selectAll("path")
.forEach(function (element, i) {
if (element.attribute("gadfly:inscale") == "true") {
var bbox = element.node.getBBox();
if (bounds.x1 - bbox.x < pan_bounds.x0 ) {
pan_bounds.x0 = bounds.x1 - bbox.x;
}
if (bounds.x0 - bbox.x > pan_bounds.x1) {
pan_bounds.x1 = bounds.x0 - bbox.x;
}
element.attr("visibility", "visible");
}
});
}
if (ygridlines) {
ygridlines
.selectAll("path")
.forEach(function (element, i) {
if (element.attribute("gadfly:inscale") == "true") {
var bbox = element.node.getBBox();
if (bounds.y1 - bbox.y < pan_bounds.y0 ) {
pan_bounds.y0 = bounds.y1 - bbox.y;
}
if (bounds.y0 - bbox.y > pan_bounds.y1) {
pan_bounds.y1 = bounds.y0 - bbox.y;
}
element.attr("visibility", "visible");
}
});
}
// nudge these values a little
pan_bounds.x0 -= 5;
pan_bounds.x1 += 5;
pan_bounds.y0 -= 5;
pan_bounds.y1 += 5;
root.data("pan_bounds", pan_bounds);
root.data("zoompan-ready", true)
};
// drag actions, i.e. zooming and panning
var pan_action = {
start: function(root, x, y, event) {
root.data("dx", 0);
root.data("dy", 0);
root.data("tx0", root.data("tx"));
root.data("ty0", root.data("ty"));
},
update: function(root, dx, dy, x, y, event) {
var px_per_mm = root.data("px_per_mm");
dx /= px_per_mm;
dy /= px_per_mm;
var tx0 = root.data("tx"),
ty0 = root.data("ty");
var dx0 = root.data("dx"),
dy0 = root.data("dy");
root.data("dx", dx);
root.data("dy", dy);
dx = dx - dx0;
dy = dy - dy0;
var tx = tx0 + dx,
ty = ty0 + dy;
set_plot_pan_zoom(root, tx, ty, root.data("scale"));
},
end: function(root, event) {
},
cancel: function(root) {
set_plot_pan_zoom(root, root.data("tx0"), root.data("ty0"), root.data("scale"));
}
};
var zoom_box;
var zoom_action = {
start: function(root, x, y, event) {
var bounds = root.plotbounds();
var width = bounds.x1 - bounds.x0,
height = bounds.y1 - bounds.y0;
var ratio = width / height;
var xscalable = root.hasClass("xscalable"),
yscalable = root.hasClass("yscalable");
var px_per_mm = root.data("px_per_mm");
x = xscalable ? x / px_per_mm : bounds.x0;
y = yscalable ? y / px_per_mm : bounds.y0;
var w = xscalable ? 0 : width;
var h = yscalable ? 0 : height;
zoom_box = root.rect(x, y, w, h).attr({
"fill": "#000",
"opacity": 0.25
});
zoom_box.data("ratio", ratio);
},
update: function(root, dx, dy, x, y, event) {
var xscalable = root.hasClass("xscalable"),
yscalable = root.hasClass("yscalable");
var px_per_mm = root.data("px_per_mm");
var bounds = root.plotbounds();
if (yscalable) {
y /= px_per_mm;
y = Math.max(bounds.y0, y);
y = Math.min(bounds.y1, y);
} else {
y = bounds.y1;
}
if (xscalable) {
x /= px_per_mm;
x = Math.max(bounds.x0, x);
x = Math.min(bounds.x1, x);
} else {
x = bounds.x1;
}
dx = x - zoom_box.attr("x");
dy = y - zoom_box.attr("y");
if (xscalable & & yscalable) {
var ratio = zoom_box.data("ratio");
var width = Math.min(Math.abs(dx), ratio * Math.abs(dy));
var height = Math.min(Math.abs(dy), Math.abs(dx) / ratio);
dx = width * dx / Math.abs(dx);
dy = height * dy / Math.abs(dy);
}
var xoffset = 0,
yoffset = 0;
if (dx < 0 ) {
xoffset = dx;
dx = -1 * dx;
}
if (dy < 0 ) {
yoffset = dy;
dy = -1 * dy;
}
if (isNaN(dy)) {
dy = 0.0;
}
if (isNaN(dx)) {
dx = 0.0;
}
zoom_box.transform("T" + xoffset + "," + yoffset);
zoom_box.attr("width", dx);
zoom_box.attr("height", dy);
},
end: function(root, event) {
var xscalable = root.hasClass("xscalable"),
yscalable = root.hasClass("yscalable");
var zoom_bounds = zoom_box.getBBox();
if (zoom_bounds.width * zoom_bounds.height < = 0) {
return;
}
var plot_bounds = root.plotbounds();
var zoom_factor = 1.0;
if (yscalable) {
zoom_factor = (plot_bounds.y1 - plot_bounds.y0) / zoom_bounds.height;
} else {
zoom_factor = (plot_bounds.x1 - plot_bounds.x0) / zoom_bounds.width;
}
var tx = (root.data("tx") - zoom_bounds.x) * zoom_factor + plot_bounds.x0,
ty = (root.data("ty") - zoom_bounds.y) * zoom_factor + plot_bounds.y0;
set_plot_pan_zoom(root, tx, ty, root.data("scale") * zoom_factor);
zoom_box.remove();
},
cancel: function(root) {
zoom_box.remove();
}
};
Gadfly.guide_background_drag_onstart = function(x, y, event) {
var root = this.plotroot();
var scalable = root.hasClass("xscalable") || root.hasClass("yscalable");
var zoomable = !event.altKey & & !event.ctrlKey & & event.shiftKey & & scalable;
var panable = !event.altKey & & !event.ctrlKey & & !event.shiftKey & & scalable;
var drag_action = zoomable ? zoom_action :
panable ? pan_action :
undefined;
root.data("drag_action", drag_action);
if (drag_action) {
var cancel_drag_action = function(event) {
if (event.which == 27) { // esc key
drag_action.cancel(root);
root.data("drag_action", undefined);
}
};
window.addEventListener("keyup", cancel_drag_action);
root.data("cancel_drag_action", cancel_drag_action);
drag_action.start(root, x, y, event);
}
};
Gadfly.guide_background_drag_onmove = function(dx, dy, x, y, event) {
var root = this.plotroot();
var drag_action = root.data("drag_action");
if (drag_action) {
drag_action.update(root, dx, dy, x, y, event);
}
};
Gadfly.guide_background_drag_onend = function(event) {
var root = this.plotroot();
window.removeEventListener("keyup", root.data("cancel_drag_action"));
root.data("cancel_drag_action", undefined);
var drag_action = root.data("drag_action");
if (drag_action) {
drag_action.end(root, event);
}
root.data("drag_action", undefined);
};
Gadfly.guide_background_scroll = function(event) {
if (event.shiftKey) {
increase_zoom_by_position(this.plotroot(), 0.001 * event.wheelDelta);
event.preventDefault();
}
};
Gadfly.zoomslider_button_mouseover = function(event) {
this.select(".button_logo")
.animate({fill: this.data("mouseover_color")}, 100);
};
Gadfly.zoomslider_button_mouseout = function(event) {
this.select(".button_logo")
.animate({fill: this.data("mouseout_color")}, 100);
};
Gadfly.zoomslider_zoomout_click = function(event) {
increase_zoom_by_position(this.plotroot(), -0.1, true);
};
Gadfly.zoomslider_zoomin_click = function(event) {
increase_zoom_by_position(this.plotroot(), 0.1, true);
};
Gadfly.zoomslider_track_click = function(event) {
// TODO
};
// Map slider position x to scale y using the function y = a*exp(b*x)+c.
// The constants a, b, and c are solved using the constraint that the function
// should go through the points (0; min_scale), (0.5; 1), and (1; max_scale).
var scale_from_slider_position = function(position, min_scale, max_scale) {
var a = (1 - 2 * min_scale + min_scale * min_scale) / (min_scale + max_scale - 2),
b = 2 * Math.log((max_scale - 1) / (1 - min_scale)),
c = (min_scale * max_scale - 1) / (min_scale + max_scale - 2);
return a * Math.exp(b * position) + c;
}
// inverse of scale_from_slider_position
var slider_position_from_scale = function(scale, min_scale, max_scale) {
var a = (1 - 2 * min_scale + min_scale * min_scale) / (min_scale + max_scale - 2),
b = 2 * Math.log((max_scale - 1) / (1 - min_scale)),
c = (min_scale * max_scale - 1) / (min_scale + max_scale - 2);
return 1 / b * Math.log((scale - c) / a);
}
var increase_zoom_by_position = function(root, delta_position, animate) {
var scale = root.data("scale"),
min_scale = root.data("min_scale"),
max_scale = root.data("max_scale");
var position = slider_position_from_scale(scale, min_scale, max_scale);
position += delta_position;
scale = scale_from_slider_position(position, min_scale, max_scale);
set_zoom(root, scale, animate);
}
var set_zoom = function(root, scale, animate) {
var min_scale = root.data("min_scale"),
max_scale = root.data("max_scale"),
old_scale = root.data("scale");
var new_scale = Math.max(min_scale, Math.min(scale, max_scale));
if (animate) {
Snap.animate(
old_scale,
new_scale,
function (new_scale) {
update_plot_scale(root, new_scale);
},
200);
} else {
update_plot_scale(root, new_scale);
}
}
var update_plot_scale = function(root, new_scale) {
var trans = scale_centered_translation(root, new_scale);
set_plot_pan_zoom(root, trans.x, trans.y, new_scale);
root.selectAll(".zoomslider_thumb")
.forEach(function (element, i) {
var min_pos = element.data("min_pos"),
max_pos = element.data("max_pos"),
min_scale = root.data("min_scale"),
max_scale = root.data("max_scale");
var xmid = (min_pos + max_pos) / 2;
var xpos = slider_position_from_scale(new_scale, min_scale, max_scale);
element.transform(new Snap.Matrix().translate(
Math.max(min_pos, Math.min(
max_pos, min_pos + (max_pos - min_pos) * xpos)) - xmid, 0));
});
};
Gadfly.zoomslider_thumb_dragmove = function(dx, dy, x, y, event) {
var root = this.plotroot();
var min_pos = this.data("min_pos"),
max_pos = this.data("max_pos"),
min_scale = root.data("min_scale"),
max_scale = root.data("max_scale"),
old_scale = root.data("old_scale");
var px_per_mm = root.data("px_per_mm");
dx /= px_per_mm;
dy /= px_per_mm;
var xmid = (min_pos + max_pos) / 2;
var xpos = slider_position_from_scale(old_scale, min_scale, max_scale) +
dx / (max_pos - min_pos);
// compute the new scale
var new_scale = scale_from_slider_position(xpos, min_scale, max_scale);
new_scale = Math.min(max_scale, Math.max(min_scale, new_scale));
update_plot_scale(root, new_scale);
event.stopPropagation();
};
Gadfly.zoomslider_thumb_dragstart = function(x, y, event) {
this.animate({fill: this.data("mouseover_color")}, 100);
var root = this.plotroot();
// keep track of what the scale was when we started dragging
root.data("old_scale", root.data("scale"));
event.stopPropagation();
};
Gadfly.zoomslider_thumb_dragend = function(event) {
this.animate({fill: this.data("mouseout_color")}, 100);
event.stopPropagation();
};
var toggle_color_class = function(root, color_class, ison) {
var guides = root.selectAll(".guide." + color_class + ",.guide ." + color_class);
var geoms = root.selectAll(".geometry." + color_class + ",.geometry ." + color_class);
if (ison) {
guides.animate({opacity: 0.5}, 250);
geoms.animate({opacity: 0.0}, 250);
} else {
guides.animate({opacity: 1.0}, 250);
geoms.animate({opacity: 1.0}, 250);
}
};
Gadfly.colorkey_swatch_click = function(event) {
var root = this.plotroot();
var color_class = this.data("color_class");
if (event.shiftKey) {
root.selectAll(".colorkey text")
.forEach(function (element) {
var other_color_class = element.data("color_class");
if (other_color_class != color_class) {
toggle_color_class(root, other_color_class,
element.attr("opacity") == 1.0);
}
});
} else {
toggle_color_class(root, color_class, this.attr("opacity") == 1.0);
}
};
return Gadfly;
}));
//@ sourceURL=gadfly.js
(function (glob, factory) {
// AMD support
if (typeof require === "function" & & typeof define === "function" & & define.amd) {
require(["Snap.svg", "Gadfly"], function (Snap, Gadfly) {
factory(Snap, Gadfly);
});
} else {
factory(glob.Snap, glob.Gadfly);
}
})(window, function (Snap, Gadfly) {
var fig = Snap("#fig-3a6dd25ad25c4037a166889ee51bb151");
fig.select("#fig-3a6dd25ad25c4037a166889ee51bb151-element-8")
.init_gadfly();
fig.select("#fig-3a6dd25ad25c4037a166889ee51bb151-element-11")
.plotroot().data("unfocused_ygrid_color", "#D0D0E0")
;
fig.select("#fig-3a6dd25ad25c4037a166889ee51bb151-element-11")
.plotroot().data("focused_ygrid_color", "#A0A0A0")
;
fig.select("#fig-3a6dd25ad25c4037a166889ee51bb151-element-12")
.plotroot().data("unfocused_xgrid_color", "#D0D0E0")
;
fig.select("#fig-3a6dd25ad25c4037a166889ee51bb151-element-12")
.plotroot().data("focused_xgrid_color", "#A0A0A0")
;
fig.select("#fig-3a6dd25ad25c4037a166889ee51bb151-element-16")
.data("mouseover_color", "#CD5C5C")
;
fig.select("#fig-3a6dd25ad25c4037a166889ee51bb151-element-16")
.data("mouseout_color", "#6A6A6A")
;
fig.select("#fig-3a6dd25ad25c4037a166889ee51bb151-element-16")
.click(Gadfly.zoomslider_zoomin_click)
.mouseenter(Gadfly.zoomslider_button_mouseover)
.mouseleave(Gadfly.zoomslider_button_mouseout)
;
fig.select("#fig-3a6dd25ad25c4037a166889ee51bb151-element-18")
.data("max_pos", 111.58)
;
fig.select("#fig-3a6dd25ad25c4037a166889ee51bb151-element-18")
.data("min_pos", 94.58)
;
fig.select("#fig-3a6dd25ad25c4037a166889ee51bb151-element-18")
.click(Gadfly.zoomslider_track_click);
fig.select("#fig-3a6dd25ad25c4037a166889ee51bb151-element-19")
.data("max_pos", 111.58)
;
fig.select("#fig-3a6dd25ad25c4037a166889ee51bb151-element-19")
.data("min_pos", 94.58)
;
fig.select("#fig-3a6dd25ad25c4037a166889ee51bb151-element-19")
.data("mouseover_color", "#CD5C5C")
;
fig.select("#fig-3a6dd25ad25c4037a166889ee51bb151-element-19")
.data("mouseout_color", "#6A6A6A")
;
fig.select("#fig-3a6dd25ad25c4037a166889ee51bb151-element-19")
.drag(Gadfly.zoomslider_thumb_dragmove,
Gadfly.zoomslider_thumb_dragstart,
Gadfly.zoomslider_thumb_dragend)
;
fig.select("#fig-3a6dd25ad25c4037a166889ee51bb151-element-20")
.data("mouseover_color", "#CD5C5C")
;
fig.select("#fig-3a6dd25ad25c4037a166889ee51bb151-element-20")
.data("mouseout_color", "#6A6A6A")
;
fig.select("#fig-3a6dd25ad25c4037a166889ee51bb151-element-20")
.click(Gadfly.zoomslider_zoomout_click)
.mouseenter(Gadfly.zoomslider_button_mouseover)
.mouseleave(Gadfly.zoomslider_button_mouseout)
;
});
]]> < / script >
< / svg >
2024-10-13 21:17:09 -04:00
### Computing the term structure
Now that we've got the basic motion set up, let's start making things a bit more sophisticated for the model. We're going to assume that the drift of the stock is the difference between the implied forward rate and the quarterly dividend rate.
We're given the yearly term structure, and need to calculate the quarterly forward rate to match this structure. The term structure is assumed to follow:
$d(0, t) = d(0,t-1)\cdot f_{i-1, i}$
Where $f_{i-1, i}$ is the quarterly forward rate.
```julia
forward_term = function(yearly_term)
# It is assumed that we have a yearly term structure passed in, and starts at year 0
# This implies a nominal rate above 0 for the first year!
years = length(term)-1 # because we start at 0
structure = [(term[i+1] / term[i]) for i=1:years]
end;
```
### Illustrating the term structure
Now that we've got our term structure, let's validate that we're getting the correct results! If we've done this correctly, then:
```
term[2] == term[1] * structure[1]
```
```julia
# Example term structure taken from:
# http://www.treasury.gov/resource-center/data-chart-center/interest-rates/Pages/TextView.aspx?data=yield
# Linear interpolation used years in-between periods, assuming real-dollar
# interest rates
forward_yield = forward_term(term)
calculated_term2 = term[1] * forward_yield[1]
println("Actual term[2]: $(term[2]); Calculated term[2]: $(calculated_term2)")
```
2024-10-21 21:55:59 -04:00
Actual term[2]: 1.0049; Calculated term[2]: 1.0049
2024-10-13 21:17:09 -04:00
### The full underlying simulation
Now that we have the term structure set up, we can actually start doing some real simulation! Let's construct some paths through the full 5-year time frame. In order to do this, we will simulate 1 year at a time, and use the forward rates at those times to compute the drift. Thus, there will be 5 total simulations batched together.
```julia
full_motion = ones(5) * S0
full_term = vcat(term[1], forward_yield)
for i=1:T
μ = (full_term[i] - 1 - q)
year_motion = simulate_gbm(full_motion[:,end], μ, σ , 1, n)
full_motion = hcat(full_motion, year_motion)
end
display_motion(full_motion, T)
```
2024-10-21 21:55:59 -04:00
<?xml version="1.0" encoding="UTF-8"?>
< svg xmlns = "http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:gadfly="http://www.gadflyjl.org/ns"
version="1.2"
width="141.42mm" height="100mm" viewBox="0 0 141.42 100"
stroke="none"
fill="#000000"
stroke-width="0.3"
font-size="3.88"
id="fig-0378e04b897742b597befd2e8e1c169e">
< g class = "plotroot xscalable yscalable" id = "fig-0378e04b897742b597befd2e8e1c169e-element-1" >
< g font-size = "3.88" font-family = "'PT Sans','Helvetica Neue','Helvetica',sans-serif" fill = "#564A55" stroke = "#000000" stroke-opacity = "0.000" id = "fig-0378e04b897742b597befd2e8e1c169e-element-2" >
< text x = "73.61" y = "88.39" text-anchor = "middle" dy = "0.6em" > Years< / text >
< / g >
< g class = "guide colorkey" id = "fig-0378e04b897742b597befd2e8e1c169e-element-3" >
< g font-size = "2.82" font-family = "'PT Sans','Helvetica Neue','Helvetica',sans-serif" fill = "#4C404B" id = "fig-0378e04b897742b597befd2e8e1c169e-element-4" >
< text x = "131.9" y = "66.46" dy = "0.35em" > 1< / text >
< text x = "131.9" y = "39.15" dy = "0.35em" > 5< / text >
< text x = "131.9" y = "59.63" dy = "0.35em" > 2< / text >
< text x = "131.9" y = "52.81" dy = "0.35em" > 3< / text >
< text x = "131.9" y = "45.98" dy = "0.35em" > 4< / text >
< / g >
< g shape-rendering = "crispEdges" stroke = "#000000" stroke-opacity = "0.000" id = "fig-0378e04b897742b597befd2e8e1c169e-element-5" >
< rect x = "129.58" y = "65.78" width = "1.31" height = "0.68" fill = "#004D84" / >
< rect x = "129.58" y = "65.1" width = "1.31" height = "0.68" fill = "#005B8D" / >
< rect x = "129.58" y = "64.41" width = "1.31" height = "0.68" fill = "#006995" / >
< rect x = "129.58" y = "63.73" width = "1.31" height = "0.68" fill = "#00769D" / >
< rect x = "129.58" y = "63.05" width = "1.31" height = "0.68" fill = "#0083A3" / >
< rect x = "129.58" y = "62.36" width = "1.31" height = "0.68" fill = "#278FA9" / >
< rect x = "129.58" y = "61.68" width = "1.31" height = "0.68" fill = "#409BAF" / >
< rect x = "129.58" y = "61" width = "1.31" height = "0.68" fill = "#55A7B5" / >
< rect x = "129.58" y = "60.32" width = "1.31" height = "0.68" fill = "#69B2BA" / >
< rect x = "129.58" y = "59.63" width = "1.31" height = "0.68" fill = "#7BBCC0" / >
< rect x = "129.58" y = "58.95" width = "1.31" height = "0.68" fill = "#8DC6C5" / >
< rect x = "129.58" y = "58.27" width = "1.31" height = "0.68" fill = "#9ED0CB" / >
< rect x = "129.58" y = "57.59" width = "1.31" height = "0.68" fill = "#A5CFC7" / >
< rect x = "129.58" y = "56.9" width = "1.31" height = "0.68" fill = "#ABCEC4" / >
< rect x = "129.58" y = "56.22" width = "1.31" height = "0.68" fill = "#B1CCC2" / >
< rect x = "129.58" y = "55.54" width = "1.31" height = "0.68" fill = "#B5CCC1" / >
< rect x = "129.58" y = "54.85" width = "1.31" height = "0.68" fill = "#B7CBBF" / >
< rect x = "129.58" y = "54.17" width = "1.31" height = "0.68" fill = "#B9CBBD" / >
< rect x = "129.58" y = "53.49" width = "1.31" height = "0.68" fill = "#BBCBBB" / >
< rect x = "129.58" y = "52.81" width = "1.31" height = "0.68" fill = "#BDCABA" / >
< rect x = "129.58" y = "52.12" width = "1.31" height = "0.68" fill = "#BFCAB8" / >
< rect x = "129.58" y = "51.44" width = "1.31" height = "0.68" fill = "#C2C9B7" / >
< rect x = "129.58" y = "50.76" width = "1.31" height = "0.68" fill = "#C4C9B6" / >
< rect x = "129.58" y = "50.07" width = "1.31" height = "0.68" fill = "#C6C8B5" / >
< rect x = "129.58" y = "49.39" width = "1.31" height = "0.68" fill = "#C9C7B4" / >
< rect x = "129.58" y = "48.71" width = "1.31" height = "0.68" fill = "#CCC7B2" / >
< rect x = "129.58" y = "48.03" width = "1.31" height = "0.68" fill = "#CFC6AE" / >
< rect x = "129.58" y = "47.34" width = "1.31" height = "0.68" fill = "#D4C5AA" / >
< rect x = "129.58" y = "46.66" width = "1.31" height = "0.68" fill = "#D8C3A6" / >
< rect x = "129.58" y = "45.98" width = "1.31" height = "0.68" fill = "#D3B79A" / >
< rect x = "129.58" y = "45.3" width = "1.31" height = "0.68" fill = "#CDAB8E" / >
< rect x = "129.58" y = "44.61" width = "1.31" height = "0.68" fill = "#C89E82" / >
< rect x = "129.58" y = "43.93" width = "1.31" height = "0.68" fill = "#C19177" / >
< rect x = "129.58" y = "43.25" width = "1.31" height = "0.68" fill = "#BA836C" / >
< rect x = "129.58" y = "42.56" width = "1.31" height = "0.68" fill = "#B27563" / >
< rect x = "129.58" y = "41.88" width = "1.31" height = "0.68" fill = "#AA665A" / >
< rect x = "129.58" y = "41.2" width = "1.31" height = "0.68" fill = "#A05752" / >
< rect x = "129.58" y = "40.52" width = "1.31" height = "0.68" fill = "#96484A" / >
< rect x = "129.58" y = "39.83" width = "1.31" height = "0.68" fill = "#8B3844" / >
< rect x = "129.58" y = "39.15" width = "1.31" height = "0.68" fill = "#7E273E" / >
< g stroke = "#FFFFFF" stroke-width = "0.2" id = "fig-0378e04b897742b597befd2e8e1c169e-element-6" >
< path fill = "none" d = "M129.58,66.46 L 130.9 66.46" / >
< path fill = "none" d = "M129.58,39.15 L 130.9 39.15" / >
< path fill = "none" d = "M129.58,59.63 L 130.9 59.63" / >
< path fill = "none" d = "M129.58,52.81 L 130.9 52.81" / >
< path fill = "none" d = "M129.58,45.98 L 130.9 45.98" / >
< / g >
< / g >
< g fill = "#362A35" font-size = "3.88" font-family = "'PT Sans','Helvetica Neue','Helvetica',sans-serif" stroke = "#000000" stroke-opacity = "0.000" id = "fig-0378e04b897742b597befd2e8e1c169e-element-7" >
< text x = "129.58" y = "35.15" > Color< / text >
< / g >
< / g >
< g clip-path = "url(#fig-0378e04b897742b597befd2e8e1c169e-element-9)" id = "fig-0378e04b897742b597befd2e8e1c169e-element-8" >
< g pointer-events = "visible" opacity = "1" fill = "#000000" fill-opacity = "0.000" stroke = "#000000" stroke-opacity = "0.000" class = "guide background" id = "fig-0378e04b897742b597befd2e8e1c169e-element-10" >
< rect x = "19.63" y = "5" width = "107.95" height = "80.39" / >
< / g >
< g class = "guide ygridlines xfixed" stroke-dasharray = "0.5,0.5" stroke-width = "0.2" stroke = "#D0D0E0" id = "fig-0378e04b897742b597befd2e8e1c169e-element-11" >
< path fill = "none" d = "M19.63,178.87 L 127.58 178.87" visibility = "hidden" gadfly:scale = "1.0" / >
< path fill = "none" d = "M19.63,159.78 L 127.58 159.78" visibility = "hidden" gadfly:scale = "1.0" / >
< path fill = "none" d = "M19.63,140.68 L 127.58 140.68" visibility = "hidden" gadfly:scale = "1.0" / >
< path fill = "none" d = "M19.63,121.58 L 127.58 121.58" visibility = "hidden" gadfly:scale = "1.0" / >
< path fill = "none" d = "M19.63,102.49 L 127.58 102.49" visibility = "hidden" gadfly:scale = "1.0" / >
< path fill = "none" d = "M19.63,83.39 L 127.58 83.39" visibility = "visible" gadfly:scale = "1.0" / >
< path fill = "none" d = "M19.63,64.29 L 127.58 64.29" visibility = "visible" gadfly:scale = "1.0" / >
< path fill = "none" d = "M19.63,45.19 L 127.58 45.19" visibility = "visible" gadfly:scale = "1.0" / >
< path fill = "none" d = "M19.63,26.1 L 127.58 26.1" visibility = "visible" gadfly:scale = "1.0" / >
< path fill = "none" d = "M19.63,7 L 127.58 7" visibility = "visible" gadfly:scale = "1.0" / >
< path fill = "none" d = "M19.63,-12.1 L 127.58 -12.1" visibility = "hidden" gadfly:scale = "1.0" / >
< path fill = "none" d = "M19.63,-31.19 L 127.58 -31.19" visibility = "hidden" gadfly:scale = "1.0" / >
< path fill = "none" d = "M19.63,-50.29 L 127.58 -50.29" visibility = "hidden" gadfly:scale = "1.0" / >
< path fill = "none" d = "M19.63,-69.39 L 127.58 -69.39" visibility = "hidden" gadfly:scale = "1.0" / >
< path fill = "none" d = "M19.63,-88.49 L 127.58 -88.49" visibility = "hidden" gadfly:scale = "1.0" / >
< path fill = "none" d = "M19.63,159.78 L 127.58 159.78" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,155.96 L 127.58 155.96" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,152.14 L 127.58 152.14" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,148.32 L 127.58 148.32" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,144.5 L 127.58 144.5" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,140.68 L 127.58 140.68" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,136.86 L 127.58 136.86" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,133.04 L 127.58 133.04" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,129.22 L 127.58 129.22" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,125.4 L 127.58 125.4" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,121.58 L 127.58 121.58" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,117.76 L 127.58 117.76" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,113.94 L 127.58 113.94" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,110.12 L 127.58 110.12" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,106.3 L 127.58 106.3" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,102.49 L 127.58 102.49" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,98.67 L 127.58 98.67" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,94.85 L 127.58 94.85" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,91.03 L 127.58 91.03" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,87.21 L 127.58 87.21" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,83.39 L 127.58 83.39" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,79.57 L 127.58 79.57" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,75.75 L 127.58 75.75" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,71.93 L 127.58 71.93" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,68.11 L 127.58 68.11" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,64.29 L 127.58 64.29" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,60.47 L 127.58 60.47" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,56.65 L 127.58 56.65" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,52.83 L 127.58 52.83" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,49.01 L 127.58 49.01" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,45.19 L 127.58 45.19" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,41.37 L 127.58 41.37" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,37.56 L 127.58 37.56" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,33.74 L 127.58 33.74" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,29.92 L 127.58 29.92" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,26.1 L 127.58 26.1" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,22.28 L 127.58 22.28" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,18.46 L 127.58 18.46" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,14.64 L 127.58 14.64" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,10.82 L 127.58 10.82" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,7 L 127.58 7" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,3.18 L 127.58 3.18" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,-0.64 L 127.58 -0.64" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,-4.46 L 127.58 -4.46" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,-8.28 L 127.58 -8.28" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,-12.1 L 127.58 -12.1" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,-15.92 L 127.58 -15.92" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,-19.74 L 127.58 -19.74" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,-23.56 L 127.58 -23.56" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,-27.37 L 127.58 -27.37" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,-31.19 L 127.58 -31.19" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,-35.01 L 127.58 -35.01" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,-38.83 L 127.58 -38.83" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,-42.65 L 127.58 -42.65" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,-46.47 L 127.58 -46.47" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,-50.29 L 127.58 -50.29" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,-54.11 L 127.58 -54.11" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,-57.93 L 127.58 -57.93" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,-61.75 L 127.58 -61.75" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,-65.57 L 127.58 -65.57" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,-69.39 L 127.58 -69.39" visibility = "hidden" gadfly:scale = "10.0" / >
< path fill = "none" d = "M19.63,159.78 L 127.58 159.78" visibility = "hidden" gadfly:scale = "0.5" / >
< path fill = "none" d = "M19.63,83.39 L 127.58 83.39" visibility = "hidden" gadfly:scale = "0.5" / >
< path fill = "none" d = "M19.63,7 L 127.58 7" visibility = "hidden" gadfly:scale = "0.5" / >
< path fill = "none" d = "M19.63,-69.39 L 127.58 -69.39" visibility = "hidden" gadfly:scale = "0.5" / >
< path fill = "none" d = "M19.63,159.78 L 127.58 159.78" visibility = "hidden" gadfly:scale = "5.0" / >
< path fill = "none" d = "M19.63,152.14 L 127.58 152.14" visibility = "hidden" gadfly:scale = "5.0" / >
< path fill = "none" d = "M19.63,144.5 L 127.58 144.5" visibility = "hidden" gadfly:scale = "5.0" / >
< path fill = "none" d = "M19.63,136.86 L 127.58 136.86" visibility = "hidden" gadfly:scale = "5.0" / >
< path fill = "none" d = "M19.63,129.22 L 127.58 129.22" visibility = "hidden" gadfly:scale = "5.0" / >
< path fill = "none" d = "M19.63,121.58 L 127.58 121.58" visibility = "hidden" gadfly:scale = "5.0" / >
< path fill = "none" d = "M19.63,113.94 L 127.58 113.94" visibility = "hidden" gadfly:scale = "5.0" / >
< path fill = "none" d = "M19.63,106.3 L 127.58 106.3" visibility = "hidden" gadfly:scale = "5.0" / >
< path fill = "none" d = "M19.63,98.67 L 127.58 98.67" visibility = "hidden" gadfly:scale = "5.0" / >
< path fill = "none" d = "M19.63,91.03 L 127.58 91.03" visibility = "hidden" gadfly:scale = "5.0" / >
< path fill = "none" d = "M19.63,83.39 L 127.58 83.39" visibility = "hidden" gadfly:scale = "5.0" / >
< path fill = "none" d = "M19.63,75.75 L 127.58 75.75" visibility = "hidden" gadfly:scale = "5.0" / >
< path fill = "none" d = "M19.63,68.11 L 127.58 68.11" visibility = "hidden" gadfly:scale = "5.0" / >
< path fill = "none" d = "M19.63,60.47 L 127.58 60.47" visibility = "hidden" gadfly:scale = "5.0" / >
< path fill = "none" d = "M19.63,52.83 L 127.58 52.83" visibility = "hidden" gadfly:scale = "5.0" / >
< path fill = "none" d = "M19.63,45.19 L 127.58 45.19" visibility = "hidden" gadfly:scale = "5.0" / >
< path fill = "none" d = "M19.63,37.56 L 127.58 37.56" visibility = "hidden" gadfly:scale = "5.0" / >
< path fill = "none" d = "M19.63,29.92 L 127.58 29.92" visibility = "hidden" gadfly:scale = "5.0" / >
< path fill = "none" d = "M19.63,22.28 L 127.58 22.28" visibility = "hidden" gadfly:scale = "5.0" / >
< path fill = "none" d = "M19.63,14.64 L 127.58 14.64" visibility = "hidden" gadfly:scale = "5.0" / >
< path fill = "none" d = "M19.63,7 L 127.58 7" visibility = "hidden" gadfly:scale = "5.0" / >
< path fill = "none" d = "M19.63,-0.64 L 127.58 -0.64" visibility = "hidden" gadfly:scale = "5.0" / >
< path fill = "none" d = "M19.63,-8.28 L 127.58 -8.28" visibility = "hidden" gadfly:scale = "5.0" / >
< path fill = "none" d = "M19.63,-15.92 L 127.58 -15.92" visibility = "hidden" gadfly:scale = "5.0" / >
< path fill = "none" d = "M19.63,-23.56 L 127.58 -23.56" visibility = "hidden" gadfly:scale = "5.0" / >
< path fill = "none" d = "M19.63,-31.19 L 127.58 -31.19" visibility = "hidden" gadfly:scale = "5.0" / >
< path fill = "none" d = "M19.63,-38.83 L 127.58 -38.83" visibility = "hidden" gadfly:scale = "5.0" / >
< path fill = "none" d = "M19.63,-46.47 L 127.58 -46.47" visibility = "hidden" gadfly:scale = "5.0" / >
< path fill = "none" d = "M19.63,-54.11 L 127.58 -54.11" visibility = "hidden" gadfly:scale = "5.0" / >
< path fill = "none" d = "M19.63,-61.75 L 127.58 -61.75" visibility = "hidden" gadfly:scale = "5.0" / >
< path fill = "none" d = "M19.63,-69.39 L 127.58 -69.39" visibility = "hidden" gadfly:scale = "5.0" / >
< / g >
< g class = "guide xgridlines yfixed" stroke-dasharray = "0.5,0.5" stroke-width = "0.2" stroke = "#D0D0E0" id = "fig-0378e04b897742b597befd2e8e1c169e-element-12" >
< path fill = "none" d = "M42.36,5 L 42.36 85.39" visibility = "visible" gadfly:scale = "1.0" / >
< path fill = "none" d = "M63.16,5 L 63.16 85.39" visibility = "visible" gadfly:scale = "1.0" / >
< path fill = "none" d = "M83.97,5 L 83.97 85.39" visibility = "visible" gadfly:scale = "1.0" / >
< path fill = "none" d = "M104.78,5 L 104.78 85.39" visibility = "visible" gadfly:scale = "1.0" / >
< path fill = "none" d = "M125.58,5 L 125.58 85.39" visibility = "visible" gadfly:scale = "1.0" / >
< / g >
< g class = "plotpanel" id = "fig-0378e04b897742b597befd2e8e1c169e-element-13" >
< g stroke-width = "0.3" fill = "#000000" fill-opacity = "0.000" stroke-dasharray = "none" id = "fig-0378e04b897742b597befd2e8e1c169e-element-14" >
< path fill = "none" d = "M21.63,44.35 L 21 . 71 44 . 35 21 . 8 43 . 97 21 . 88 43 . 58 21 . 96 44 . 11 22 . 05 44 . 51 22 . 13 44 . 36 22 . 21 43 . 9 22 . 3 44 . 9 22 . 38 44 . 41 22 . 46 44 . 06 22 . 55 43 . 83 22 . 63 44 . 27 22 . 71 44 . 77 22 . 8 44 . 85 22 . 88 44 . 96 22 . 96 44 . 81 23 . 05 45 . 52 23 . 13 45 . 7 23 . 21 45 . 09 23 . 29 45 . 27 23 . 38 45 . 88 23 . 46 46 . 09 23 . 54 46 . 47 23 . 63 45 . 86 23 . 71 45 . 27 23 . 79 45 . 01 23 . 88 44 . 75 23 . 96 44 . 61 24 . 04 44 . 64 24 . 13 44 . 75 24 . 21 44 . 8 24 . 29 45 . 12 24 . 38 44 . 86 24 . 46 45 . 63 24 . 54 45 . 85 24 . 63 46 . 03 24 . 71 45 . 9 24 . 79 45 . 22 24 . 88 45 . 34 24 . 96 45 . 71 25 . 04 45 . 72 25 . 12 45 . 84 25 . 21 46 . 02 25 . 29 45 . 46 25 . 37 45 . 01 25 . 46 44 . 94 25 . 54 45 . 14 25 . 62 45 . 23 25 . 71 44 . 89 25 . 79 45 . 17 25 . 87 45 . 36 25 . 96 45 . 31 26 . 04 45 . 25 26 . 12 44 . 97 26 . 21 45 . 44 26 . 29 45 . 37 26 . 37 45 . 85 26 . 46 45 . 95 26 . 54 45 . 81 26 . 62 46 . 66 26 . 7 46 . 33 26 . 79 46 . 39 26 . 87 46 . 7 26 . 95 47 27 . 04 46 . 99 27 . 12 46 . 75 27 . 2 47 . 2 27 . 29 46 . 74 27 . 37 46 . 01 27 . 45 46 . 22 27 . 54 46 . 23 27 . 62 46 . 67 27 . 7 46 . 96 27 . 79 46 . 84 27 . 87 46 . 54 27 . 95 46 . 97 28 . 04 46 . 9 28 . 12 46 . 23 28 . 2 46 . 41 28 . 28 46 . 65 28 . 37 46 . 71 28 . 45 47 . 14 28 . 53 47 . 66 28 . 62 48 . 11 28 . 7 47 . 59 28 . 78 47 . 41 28 . 87 48 . 41 28 . 95 48 . 13 29 . 03 47 . 9 29 . 12 48 . 09 29 . 2 48 . 17 29 . 28 47 . 97 29 . 37 47 . 57 29 . 45 47 . 14 29 . 53 46 . 76 29 . 62 46 . 61 29 . 7 46 . 62 29 . 78 46 . 66 29 . 86 47 29 . 95 47 . 17 30 . 03 47 . 1 30 . 11 46 . 91 30 . 2 46 . 79 30 . 28 46 . 98 30 . 36 46 . 7 30 . 45 47 . 17 30 . 53 47 . 6 30 . 61 47 . 96 30 . 7 47 . 9 30 . 78 48 . 26 30 . 86 47 . 59 30 . 95 48 . 18 31 . 03 48 . 67 31 . 11 48 . 73 31 . 2 49 . 11 31 . 28 48 . 64 31 . 36 48 . 45 31 . 44 48 . 62 31 . 53 47 . 53 31 . 61 47 . 57 31 . 69 47 . 75 31 . 78 47 . 6 31 . 86 48 . 03 31 . 94 48 . 25 32 . 03 47 . 94 32 . 11 47 . 49 32 . 19 47 . 26 32 . 28 47 . 5 32 . 36 46 . 5 32 . 44 46 . 98 32 . 53 47 . 12 32 . 61 47 . 21 32 . 69 46 . 48 32 . 78 46 . 84 32 . 86 46 . 26 32 . 94 46 . 13 33 . 02 46 . 42 33 . 11 46 . 52 33 . 19 46 . 21 33 . 27 46 . 21 33 . 36 46 . 47 33 . 44 46 . 19 33 . 52 46 . 73 33 . 61 46 . 83 33 . 69 46 . 24 33 . 77 46 . 19 33 . 86 46 . 28 33 . 94 45 . 67 34 . 02 45 . 44 34 . 11 45 . 7 34 . 19 46 . 32 34 . 27 46 . 22 34 . 36 46 . 7 34 . 44 46 . 73 34 . 52 46 . 75 34 . 61 46 . 58 34 . 69 46 . 27 34 . 77 46 . 63 34 . 85 46 . 85 34 . 94 46 . 93 35 . 02 46 . 92 35 . 1 47 35 . 19 46 . 9 35 . 27 46 . 81 35 . 35 46 . 38 35 . 44 47 . 28 35 . 52 47 . 49 35 . 6 47 . 21 35 . 69 46 . 68 35 . 77 46 . 22 35 . 85 45 . 89 35 . 94 46 . 62 36 . 02 46 . 71 36 . 1 46 . 25 36 . 19 45 . 79 36 . 27 45 . 61 36 . 35 45 . 49 36 . 43 45 . 45 36 . 52 45 . 22 36 . 6 45 . 45 36 . 68 45 . 56 36 . 77 45 . 35 36 . 85 45 . 08 36 . 93 45 . 64 37 . 02 45 . 59 37 . 1 45 . 77 37 . 18 45 . 88 37 . 27 45 . 71 37 . 35 44 . 95 37 . 43 45 . 23 37 . 52 45 . 42 37 . 6 45 . 06 37 . 68 44 . 87 37 . 77 45 . 13 37 . 85 44 . 41 37 . 93 44 . 61 38 . 01 45 . 13 38 . 1 45 . 39 38 . 18 45 . 93 38 . 26 46 . 27 38 . 35 46 . 88 38 . 43 46 . 68 38 . 51 45 . 82 38 . 6 46 . 26 38 . 68 45 . 97 38 . 76 45 . 97 38 . 85 45 . 64 38 . 93 45 . 95 39 . 01 46 . 29 39 . 1 45 . 72 39 . 18 46 . 31 39 . 26 45 . 95 39 . 35 45 . 72 39 . 43 45 . 87 39 . 51 45 . 51 39 . 59 45 . 51 39 . 68 45 . 49 39 . 76 45 . 57 39 . 84 45 . 61 39 . 93 45 . 53 40 . 01 46 . 08 40 . 09 46 . 51 40 . 18 45 . 96 40 . 26 46 . 28 40 . 34 46 . 4 40 . 43 46 . 12 40 . 51 45 . 8 40 . 59 45 . 74 40 . 68 45 . 45 40 . 76 45 . 93 40 . 84 46 . 22 40 . 93 46 . 32 41 . 01 46 . 46 41 . 09 45 . 84 41 . 17 45 . 23 41 . 26 45 . 09 41 . 34 45 . 12 41 . 42 45 . 05 41 . 51 45 . 48 41 . 59 45 . 05 41 . 67 45 . 39 41 . 76 45 . 67 41 . 84 45 . 79 41 . 92 45 . 99 42 . 01 45 . 7 42 . 09 45 . 7 42 . 17 45 . 71 42 . 26 45 . 71 42 . 34 45 . 44 42 . 42 44 . 85 42 . 51 44 . 85 42 . 59 44 . 54 42 . 67 44 . 57 42 . 75 44 . 59 42 . 84 45 . 09 42 . 92 44 . 44 43 44 . 09 43 . 09 43 . 77 43 . 17 44 . 55 43 . 25 44 . 38 43 . 34 44 . 45 43 . 42 45 . 04 43 . 5 44 . 65 43 . 59 45 . 08 43 . 67 45 . 04 43 . 75 45 . 02 43 . 84 44 . 73 43 . 92 45 . 41 44 45 . 24 44 . 09 44 . 6 44 . 17 45 . 05 44 . 25 44 . 61 44 . 34 45 . 01 44 . 42 44 . 65 44 . 5 44 . 89 44 . 58 44 . 8 44 . 67 45 . 17 44 . 75 45 . 64 44 . 83 45 . 89 44 . 92 45 . 89 45 45 . 68 45 . 08 45 . 77 45 . 17 46 . 43 45 . 25 46 . 38 45 . 33 46 . 6 45 . 42 45 . 9 45 . 5 45 . 53 45 . 58 45 . 44 45 . 67 45 . 75 45 . 75 45 . 72 45 . 83 45 . 78 45 . 92 45 . 58 46 45 . 73 46 . 08 45 . 69 46 . 16 45 . 63 46 . 25 45 . 53 46 . 33 45 . 83 46 . 41 45 . 85 46 . 5 45 . 79 46 . 58 45 . 49 46 . 66 45 . 56 46 . 75 46 46 . 83 46 . 48 46 . 91 46 . 49 47 46 . 63 47 . 08 46 . 43 47 . 16 46 . 54 47 . 25 46 . 97 47 . 33 47 . 27 47 . 41 47 . 58 47 . 5 47 . 65 47 . 58 47 . 87 47 . 66 48 . 16 47 . 74 48 . 78 47 . 83 48 . 95 47 . 91 48 . 39 47 . 99 48 . 37 48 . 08 48 . 32 48 . 16 48 . 12 48 . 24 48 . 85 48 . 33 49 . 35 48 . 41 49 . 21 48 . 49 49 . 42 48 . 58 48 . 52 48 . 66 49 . 01 48 . 74 48 . 52 48 . 83 48 . 47 48 . 91 47 . 96 48 . 99 48 . 08 49 . 08 48 . 4 49 . 16 48 . 76 49 . 24 48 . 42 49 . 32 48 . 75 49 . 41 48 . 45 49 . 49 48 . 66 49 . 57 48 . 62 49 . 66 48 . 91 49 . 74 48 . 76 49 . 82 48 . 94 49 . 91 48 . 73 49 . 99 48 . 62 50 . 07 49 . 01 50 . 16 49 50 . 24 48 . 91 50 . 32 48
< path fill = "none" d = "M21.63,44.35 L 21 . 71 44 . 35 21 . 8 44 . 74 21 . 88 45 . 14 21 . 96 45 . 24 22 . 05 45 . 18 22 . 13 45 . 09 22 . 21 45 . 31 22 . 3 45 . 29 22 . 38 45 . 45 22 . 46 45 . 57 22 . 55 45 . 4 22 . 63 45 . 56 22 . 71 45 . 7 22 . 8 45 . 07 22 . 88 45 . 15 22 . 96 45 . 06 23 . 05 44 . 89 23 . 13 44 . 84 23 . 21 44 . 6 23 . 29 43 . 86 23 . 38 43 . 07 23 . 46 43 . 2 23 . 54 43 . 5 23 . 63 43 . 42 23 . 71 44 . 02 23 . 79 43 . 97 23 . 88 44 . 62 23 . 96 43 . 89 24 . 04 43 . 92 24 . 13 44 . 59 24 . 21 44 . 17 24 . 29 43 . 44 24 . 38 43 . 63 24 . 46 43 . 78 24 . 54 43 . 49 24 . 63 43 . 6 24 . 71 43 . 76 24 . 79 43 . 74 24 . 88 44 . 13 24 . 96 44 . 19 25 . 04 44 . 45 25 . 12 44 . 49 25 . 21 44 . 45 25 . 29 44 . 08 25 . 37 44 . 61 25 . 46 44 . 05 25 . 54 43 . 42 25 . 62 43 . 22 25 . 71 43 . 61 25 . 79 43 . 03 25 . 87 42 . 75 25 . 96 42 . 35 26 . 04 42 . 88 26 . 12 43 . 25 26 . 21 43 . 25 26 . 29 43 . 77 26 . 37 43 . 71 26 . 46 43 . 6 26 . 54 43 . 91 26 . 62 44 . 39 26 . 7 44 . 51 26 . 79 44 . 27 26 . 87 44 . 41 26 . 95 44 . 8 27 . 04 44 . 86 27 . 12 44 . 75 27 . 2 44 . 27 27 . 29 44 . 2 27 . 37 44 . 31 27 . 45 44 . 4 27 . 54 44 . 62 27 . 62 44 . 4 27 . 7 44 . 86 27 . 79 44 . 88 27 . 87 45 . 08 27 . 95 45 . 08 28 . 04 44 . 59 28 . 12 44 . 93 28 . 2 45 . 15 28 . 28 45 . 06 28 . 37 44 . 52 28 . 45 44 . 23 28 . 53 43 . 64 28 . 62 44 . 31 28 . 7 44 . 34 28 . 78 44 . 23 28 . 87 44 . 38 28 . 95 43 . 88 29 . 03 43 . 87 29 . 12 43 . 53 29 . 2 43 . 46 29 . 28 43 . 51 29 . 37 42 . 7 29 . 45 43 . 12 29 . 53 43 . 13 29 . 62 42 . 93 29 . 7 43 . 07 29 . 78 42 . 84 29 . 86 43 . 1 29 . 95 42 . 46 30 . 03 42 . 56 30 . 11 44 . 06 30 . 2 43 . 74 30 . 28 43 . 1 30 . 36 43 . 03 30 . 45 43 . 71 30 . 53 44 . 1 30 . 61 43 . 78 30 . 7 43 . 42 30 . 78 43 . 56 30 . 86 43 . 74 30 . 95 43 . 66 31 . 03 43 . 83 31 . 11 44 . 76 31 . 2 45 . 03 31 . 28 45 . 06 31 . 36 45 . 03 31 . 44 45 . 53 31 . 53 46 . 22 31 . 61 46 . 72 31 . 69 46 . 7 31 . 78 46 . 95 31 . 86 46 . 89 31 . 94 46 . 96 32 . 03 47 . 78 32 . 11 47 . 52 32 . 19 47 . 81 32 . 28 48 . 77 32 . 36 49 . 04 32 . 44 49 . 48 32 . 53 48 . 95 32 . 61 49 . 13 32 . 69 49 . 15 32 . 78 49 . 28 32 . 86 48 . 56 32 . 94 48 . 3 33 . 02 48 . 35 33 . 11 48 . 41 33 . 19 48 . 14 33 . 27 48 . 04 33 . 36 48 . 31 33 . 44 48 . 4 33 . 52 48 . 55 33 . 61 48 . 49 33 . 69 49 . 32 33 . 77 49 . 33 33 . 86 49 . 01 33 . 94 49 . 42 34 . 02 50 . 03 34 . 11 50 . 43 34 . 19 51 . 11 34 . 27 51 . 2 34 . 36 51 . 23 34 . 44 51 . 28 34 . 52 51 . 24 34 . 61 50 . 93 34 . 69 50 . 93 34 . 77 50 . 84 34 . 85 50 . 33 34 . 94 49 . 71 35 . 02 49 . 75 35 . 1 48 . 82 35 . 19 48 . 67 35 . 27 48 . 22 35 . 35 48 . 13 35 . 44 48 . 05 35 . 52 48 . 1 35 . 6 47 . 92 35 . 69 48 35 . 77 48 . 4 35 . 85 48 . 39 35 . 94 48 . 48 36 . 02 48 . 58 36 . 1 48 . 8 36 . 19 48 . 6 36 . 27 49 . 54 36 . 35 49 . 73 36 . 43 49 . 4 36 . 52 49 . 39 36 . 6 49 . 74 36 . 68 49 . 69 36 . 77 49 . 46 36 . 85 49 . 73 36 . 93 49 . 53 37 . 02 50 . 27 37 . 1 50 . 09 37 . 18 50 . 45 37 . 27 50 . 05 37 . 35 50 . 63 37 . 43 50 . 97 37 . 52 50 . 89 37 . 6 50 . 42 37 . 68 49 . 71 37 . 77 50 . 37 37 . 85 50 . 23 37 . 93 49 . 71 38 . 01 49 . 88 38 . 1 50 . 1 38 . 18 49 . 88 38 . 26 50 . 3 38 . 35 50 . 03 38 . 43 49 . 98 38 . 51 49 . 56 38 . 6 49 . 24 38 . 68 49 . 2 38 . 76 49 . 54 38 . 85 49 . 69 38 . 93 49 . 32 39 . 01 48 . 83 39 . 1 48 . 57 39 . 18 48 . 69 39 . 26 48 . 58 39 . 35 48 . 58 39 . 43 48 . 74 39 . 51 48 . 57 39 . 59 48 . 94 39 . 68 49 . 11 39 . 76 49 . 59 39 . 84 49 . 84 39 . 93 49 . 62 40 . 01 50 . 19 40 . 09 50 40 . 18 49 . 79 40 . 26 50 . 15 40 . 34 50 . 38 40 . 43 50 . 2 40 . 51 50 . 19 40 . 59 50 . 44 40 . 68 50 . 76 40 . 76 50 . 74 40 . 84 50 . 68 40 . 93 51 . 22 41 . 01 50 . 92 41 . 09 50 . 85 41 . 17 51 . 06 41 . 26 50 . 84 41 . 34 51 . 05 41 . 42 51 . 6 41 . 51 51 . 73 41 . 59 52 . 09 41 . 67 52 . 48 41 . 76 51 . 83 41 . 84 52 . 3 41 . 92 52 . 12 42 . 01 52 . 26 42 . 09 52 . 55 42 . 17 52 . 65 42 . 26 52 . 49 42 . 34 52 . 36 42 . 42 52 . 47 42 . 51 52 . 47 42 . 59 51 . 99 42 . 67 52 . 25 42 . 75 52 . 2 42 . 84 51 . 74 42 . 92 51 . 4 43 51 . 19 43 . 09 51 . 35 43 . 17 51 . 4 43 . 25 51 . 24 43 . 34 50 . 99 43 . 42 51 . 3 43 . 5 51 . 34 43 . 59 51 . 58 43 . 67 51 . 71 43 . 75 51 . 7 43 . 84 52 . 02 43 . 92 52 . 23 44 51 . 95 44 . 09 52 . 16 44 . 17 52 . 09 44 . 25 51 . 82 44 . 34 52 . 01 44 . 42 52 . 29 44 . 5 52 . 68 44 . 58 52 . 53 44 . 67 52 . 5 44 . 75 52 . 9 44 . 83 52 . 83 44 . 92 52 . 74 45 53 . 01 45 . 08 53 45 . 17 52 . 94 45 . 25 52 . 9 45 . 33 53 . 14 45 . 42 53 . 22 45 . 5 53 . 46 45 . 58 53 . 13 45 . 67 53 . 67 45 . 75 53 . 85 45 . 83 53 . 91 45 . 92 54 . 31 46 54 . 61 46 . 08 54 . 34 46 . 16 54 . 17 46 . 25 53 . 76 46 . 33 53 . 75 46 . 41 53 . 61 46 . 5 53 . 75 46 . 58 53 . 34 46 . 66 53 . 68 46 . 75 53 . 83 46 . 83 54 . 2 46 . 91 54 . 54 47 54 . 62 47 . 08 54 . 59 47 . 16 54 . 77 47 . 25 54 . 62 47 . 33 54 . 13 47 . 41 53 . 95 47 . 5 53 . 9 47 . 58 53 . 83 47 . 66 53 . 64 47 . 74 53 . 84 47 . 83 53 . 57 47 . 91 53 . 85 47 . 99 54 . 17 48 . 08 54 . 07 48 . 16 54 . 55 48 . 24 54 . 36 48 . 33 53 . 92 48 . 41 53 . 72 48 . 49 53 . 8 48 . 58 54 . 28 48 . 66 53 . 67 48 . 74 53 . 8 48 . 83 53 . 77 48 . 91 54 . 05 48 . 99 54 . 09 49 . 08 54 . 08 49 . 16 54 . 36 49 . 24 54 . 58 49 . 32 54 . 74 49 . 41 54 . 72 49 . 49 54 . 45 49 . 57 54 . 36 49 . 66 54 . 36 49 . 74 54 . 61 49 . 82 54 . 37 49 . 91 54 . 21 49 . 99 54 . 12 50 . 07 54 . 26 50 . 16 54 . 36 50 . 24 54 . 28 50 . 32 54 . 21 50 . 4
< path fill = "none" d = "M21.63,44.35 L 21 . 71 44 . 35 21 . 8 44 . 07 21 . 88 43 . 57 21 . 96 43 . 38 22 . 05 43 . 86 22 . 13 43 . 72 22 . 21 43 . 82 22 . 3 43 . 43 22 . 38 43 . 42 22 . 46 43 . 84 22 . 55 43 . 94 22 . 63 44 . 38 22 . 71 44 . 29 22 . 8 44 . 8 22 . 88 45 . 21 22 . 96 44 . 91 23 . 05 45 . 03 23 . 13 44 . 67 23 . 21 44 . 74 23 . 29 44 . 82 23 . 38 44 . 39 23 . 46 44 . 44 23 . 54 43 . 95 23 . 63 43 . 34 23 . 71 43 . 36 23 . 79 43 . 62 23 . 88 43 . 16 23 . 96 43 . 73 24 . 04 43 . 89 24 . 13 43 . 97 24 . 21 44 . 09 24 . 29 44 . 15 24 . 38 44 . 4 24 . 46 44 . 46 24 . 54 44 . 57 24 . 63 44 . 84 24 . 71 44 . 89 24 . 79 44 . 86 24 . 88 45 . 38 24 . 96 45 . 69 25 . 04 45 . 34 25 . 12 45 . 33 25 . 21 44 . 81 25 . 29 44 . 77 25 . 37 45 . 07 25 . 46 45 . 2 25 . 54 45 . 35 25 . 62 45 . 11 25 . 71 44 . 82 25 . 79 44 . 61 25 . 87 44 . 81 25 . 96 44 . 77 26 . 04 44 . 03 26 . 12 44 . 49 26 . 21 44 . 89 26 . 29 44 . 95 26 . 37 44 . 94 26 . 46 44 . 71 26 . 54 44 . 42 26 . 62 44 . 62 26 . 7 43 . 89 26 . 79 43 . 72 26 . 87 43 . 75 26 . 95 43 . 89 27 . 04 43 . 79 27 . 12 43 . 87 27 . 2 43 . 97 27 . 29 44 . 53 27 . 37 44 . 58 27 . 45 44 . 46 27 . 54 44 . 55 27 . 62 44 . 78 27 . 7 45 . 39 27 . 79 45 . 79 27 . 87 46 . 12 27 . 95 45 . 77 28 . 04 46 . 29 28 . 12 46 . 32 28 . 2 45 . 9 28 . 28 45 . 44 28 . 37 45 . 71 28 . 45 46 . 22 28 . 53 45 . 97 28 . 62 45 . 45 28 . 7 45 . 76 28 . 78 45 . 41 28 . 87 45 . 42 28 . 95 45 . 64 29 . 03 46 . 13 29 . 12 46 . 43 29 . 2 46 . 69 29 . 28 46 . 37 29 . 37 46 . 17 29 . 45 46 . 34 29 . 53 46 . 53 29 . 62 46 . 63 29 . 7 46 . 44 29 . 78 46 . 13 29 . 86 45 . 88 29 . 95 46 . 06 30 . 03 46 . 34 30 . 11 46 . 56 30 . 2 45 . 87 30 . 28 46 . 19 30 . 36 46 . 63 30 . 45 46 . 87 30 . 53 46 . 82 30 . 61 46 . 68 30 . 7 47 . 2 30 . 78 47 . 45 30 . 86 47 . 55 30 . 95 47 . 58 31 . 03 46 . 98 31 . 11 47 . 24 31 . 2 47 . 03 31 . 28 47 . 32 31 . 36 47 . 26 31 . 44 47 . 89 31 . 53 48 . 34 31 . 61 47 . 96 31 . 69 47 . 25 31 . 78 47 . 61 31 . 86 48 . 05 31 . 94 47 . 72 32 . 03 48 . 22 32 . 11 48 . 13 32 . 19 47 . 9 32 . 28 47 . 56 32 . 36 47 . 95 32 . 44 48 . 77 32 . 53 48 . 23 32 . 61 48 . 27 32 . 69 48 . 32 32 . 78 48 . 78 32 . 86 48 . 4 32 . 94 48 . 58 33 . 02 48 . 33 33 . 11 48 . 69 33 . 19 48 . 85 33 . 27 48 . 91 33 . 36 48 . 83 33 . 44 48 . 92 33 . 52 48 . 84 33 . 61 48 . 88 33 . 69 49 . 06 33 . 77 48 . 94 33 . 86 48 . 96 33 . 94 48 . 96 34 . 02 49 . 18 34 . 11 49 . 05 34 . 19 48 . 73 34 . 27 48 . 46 34 . 36 47 . 96 34 . 44 47 . 47 34 . 52 47 . 26 34 . 61 46 . 93 34 . 69 46 . 17 34 . 77 46 . 89 34 . 85 46 . 89 34 . 94 46 . 7 35 . 02 46 . 51 35 . 1 46 . 71 35 . 19 46 . 9 35 . 27 47 . 17 35 . 35 47 . 07 35 . 44 47 . 12 35 . 52 46 . 84 35 . 6 46 . 83 35 . 69 46 . 5 35 . 77 46 . 94 35 . 85 46 . 47 35 . 94 46 . 19 36 . 02 45 . 94 36 . 1 46 . 03 36 . 19 46 . 28 36 . 27 46 . 59 36 . 35 46 . 66 36 . 43 47 . 17 36 . 52 47 . 22 36 . 6 47 . 16 36 . 68 47 . 19 36 . 77 46 . 99 36 . 85 47 . 58 36 . 93 47 . 97 37 . 02 47 . 98 37 . 1 47 . 88 37 . 18 47 . 73 37 . 27 47 . 97 37 . 35 47 . 88 37 . 43 47 . 62 37 . 52 47 . 61 37 . 6 47 . 39 37 . 68 47 . 79 37 . 77 48 . 01 37 . 85 48 . 27 37 . 93 48 . 3 38 . 01 48 . 87 38 . 1 49 38 . 18 49 . 44 38 . 26 49 . 22 38 . 35 48 . 9 38 . 43 49 . 88 38 . 51 50 . 4 38 . 6 49 . 99 38 . 68 50 . 6 38 . 76 50 . 97 38 . 85 50 . 75 38 . 93 50 . 59 39 . 01 50 . 97 39 . 1 50 . 87 39 . 18 51 . 18 39 . 26 50 . 98 39 . 35 51 . 14 39 . 43 51 . 9 39 . 51 51 . 65 39 . 59 52 . 18 39 . 68 52 . 03 39 . 76 52 . 56 39 . 84 52 . 41 39 . 93 52 . 56 40 . 01 53 . 09 40 . 09 52 . 87 40 . 18 52 . 95 40 . 26 53 . 1 40 . 34 53 . 35 40 . 43 53 . 35 40 . 51 53 . 43 40 . 59 53 . 15 40 . 68 53 . 04 40 . 76 52 . 59 40 . 84 52 . 66 40 . 93 52 . 63 41 . 01 52 . 72 41 . 09 52 . 74 41 . 17 52 . 91 41 . 26 53 . 16 41 . 34 52 . 83 41 . 42 52 . 54 41 . 51 52 . 92 41 . 59 52 . 68 41 . 67 52 . 55 41 . 76 52 . 63 41 . 84 52 . 96 41 . 92 52 . 9 42 . 01 52 . 97 42 . 09 52 . 99 42 . 17 53 . 16 42 . 26 52 . 89 42 . 34 53 . 05 42 . 42 53 . 35 42 . 51 53 . 35 42 . 59 53 . 78 42 . 67 53 . 45 42 . 75 53 . 41 42 . 84 53 . 15 42 . 92 52 . 75 43 52 . 83 43 . 09 52 . 51 43 . 17 52 . 49 43 . 25 52 . 42 43 . 34 52 . 14 43 . 42 52 . 47 43 . 5 52 . 51 43 . 59 52 . 93 43 . 67 52 . 49 43 . 75 52 43 . 84 51 . 48 43 . 92 51 . 39 44 51 . 57 44 . 09 51 . 67 44 . 17 52 . 44 44 . 25 52 . 56 44 . 34 52 . 38 44 . 42 52 . 53 44 . 5 52 . 52 44 . 58 52 . 76 44 . 67 52 . 79 44 . 75 53 . 25 44 . 83 53 . 59 44 . 92 53 . 83 45 53 . 92 45 . 08 53 . 71 45 . 17 53 . 59 45 . 25 53 . 59 45 . 33 53 . 53 45 . 42 53 . 31 45 . 5 53 . 4 45 . 58 53 . 31 45 . 67 53 . 91 45 . 75 53 . 79 45 . 83 53 . 64 45 . 92 54 . 26 46 54 . 31 46 . 08 53 . 79 46 . 16 54 . 4 46 . 25 54 . 49 46 . 33 55 . 03 46 . 41 54 . 72 46 . 5 54 . 93 46 . 58 55 46 . 66 55 . 31 46 . 75 55 . 35 46 . 83 55 . 64 46 . 91 56 . 12 47 56 . 74 47 . 08 57 . 13 47 . 16 56 . 77 47 . 25 56 . 52 47 . 33 56 . 42 47 . 41 56 . 53 47 . 5 56 . 17 47 . 58 56 . 16 47 . 66 55 . 69 47 . 74 55 . 54 47 . 83 55 . 39 47 . 91 55 . 46 47 . 99 55 . 34 48 . 08 55 . 16 48 . 16 55 . 26 48 . 24 55 . 11 48 . 33 54 . 88 48 . 41 55 . 21 48 . 49 54 . 96 48 . 58 55 . 2 48 . 66 55 . 24 48 . 74 54 . 83 48 . 83 55 . 04 48 . 91 55 . 32 48 . 99 55 . 17 49 . 08 55 . 03 49 . 16 54 . 77 49 . 24 54 . 65 49 . 32 54 . 49 49 . 41 54 . 11 49 . 49 54 . 25 49 . 57 54 . 08 49 . 66 54 . 23 49 . 74 53 . 81 49 . 82 53 . 63 49 . 91 53 . 88 49 . 99 53 . 66 50 . 07 53 . 87 50 . 16 54 . 56 50 . 24
< path fill = "none" d = "M21.63,44.35 L 21 . 71 44 . 35 21 . 8 43 . 82 21 . 88 43 . 35 21 . 96 43 . 62 22 . 05 43 . 41 22 . 13 43 . 51 22 . 21 43 . 12 22 . 3 43 . 17 22 . 38 43 . 28 22 . 46 43 . 12 22 . 55 43 . 57 22 . 63 43 . 75 22 . 71 43 . 63 22 . 8 43 . 98 22 . 88 43 . 62 22 . 96 43 . 35 23 . 05 43 . 91 23 . 13 43 . 7 23 . 21 43 . 69 23 . 29 43 . 56 23 . 38 43 . 1 23 . 46 42 . 4 23 . 54 42 . 32 23 . 63 41 . 86 23 . 71 41 . 8 23 . 79 41 . 96 23 . 88 41 . 58 23 . 96 41 . 58 24 . 04 41 . 28 24 . 13 41 . 33 24 . 21 41 . 47 24 . 29 42 . 07 24 . 38 41 . 85 24 . 46 41 . 49 24 . 54 41 . 28 24 . 63 41 . 2 24 . 71 40 . 51 24 . 79 40 . 83 24 . 88 41 . 52 24 . 96 41 . 24 25 . 04 40 . 84 25 . 12 40 . 88 25 . 21 40 . 52 25 . 29 40 . 31 25 . 37 40 . 02 25 . 46 40 . 27 25 . 54 40 . 01 25 . 62 39 . 5 25 . 71 39 . 12 25 . 79 39 . 49 25 . 87 39 . 58 25 . 96 39 . 03 26 . 04 39 . 65 26 . 12 39 . 3 26 . 21 38 . 4 26 . 29 38 . 48 26 . 37 37 . 79 26 . 46 38 . 67 26 . 54 38 . 72 26 . 62 38 . 51 26 . 7 37 . 99 26 . 79 37 . 51 26 . 87 38 26 . 95 38 . 93 27 . 04 40 . 04 27 . 12 39 . 6 27 . 2 40 . 1 27 . 29 39 . 59 27 . 37 40 . 61 27 . 45 40 . 38 27 . 54 40 . 78 27 . 62 40 . 93 27 . 7 40 . 87 27 . 79 40 . 21 27 . 87 40 . 01 27 . 95 40 . 13 28 . 04 40 . 52 28 . 12 41 . 19 28 . 2 41 . 39 28 . 28 40 . 64 28 . 37 40 . 43 28 . 45 40 . 12 28 . 53 40 . 09 28 . 62 39 . 89 28 . 7 39 . 28 28 . 78 38 . 87 28 . 87 38 . 37 28 . 95 38 . 06 29 . 03 38 . 13 29 . 12 37 . 91 29 . 2 37 . 97 29 . 28 38 . 41 29 . 37 37 . 79 29 . 45 37 . 43 29 . 53 37 . 73 29 . 62 37 . 14 29 . 7 37 . 01 29 . 78 37 . 35 29 . 86 38 . 33 29 . 95 38 . 47 30 . 03 38 . 95 30 . 11 39 . 03 30 . 2 38 . 83 30 . 28 38 . 36 30 . 36 38 . 38 30 . 45 38 . 73 30 . 53 38 . 59 30 . 61 38 . 35 30 . 7 38 . 39 30 . 78 38 . 76 30 . 86 38 . 39 30 . 95 38 . 07 31 . 03 38 . 59 31 . 11 37 . 94 31 . 2 38 . 01 31 . 28 37 . 75 31 . 36 38 . 02 31 . 44 38 . 64 31 . 53 38 . 95 31 . 61 39 . 85 31 . 69 40 . 43 31 . 78 40 . 51 31 . 86 41 . 07 31 . 94 41 . 35 32 . 03 41 . 35 32 . 11 42 . 09 32 . 19 42 . 06 32 . 28 42 . 72 32 . 36 43 . 36 32 . 44 43 . 35 32 . 53 42 . 11 32 . 61 42 . 05 32 . 69 42 . 11 32 . 78 42 . 49 32 . 86 42 . 71 32 . 94 42 . 87 33 . 02 42 . 73 33 . 11 42 . 66 33 . 19 42 . 45 33 . 27 43 . 18 33 . 36 42 . 83 33 . 44 42 . 3 33 . 52 42 . 45 33 . 61 42 . 02 33 . 69 42 . 7 33 . 77 43 . 11 33 . 86 42 . 7 33 . 94 42 . 28 34 . 02 41 . 78 34 . 11 41 . 2 34 . 19 41 . 35 34 . 27 41 . 99 34 . 36 41 . 89 34 . 44 41 . 63 34 . 52 41 . 88 34 . 61 41 . 92 34 . 69 41 . 77 34 . 77 41 . 87 34 . 85 42 . 01 34 . 94 41 . 82 35 . 02 42 . 38 35 . 1 42 . 11 35 . 19 42 . 32 35 . 27 41 . 71 35 . 35 41 . 14 35 . 44 41 . 57 35 . 52 41 . 47 35 . 6 41 . 16 35 . 69 41 . 46 35 . 77 41 . 77 35 . 85 42 . 38 35 . 94 42 . 65 36 . 02 41 . 59 36 . 1 41 . 68 36 . 19 41 . 08 36 . 27 40 . 61 36 . 35 40 . 61 36 . 43 40 . 52 36 . 52 40 . 38 36 . 6 39 . 92 36 . 68 39 . 28 36 . 77 39 . 67 36 . 85 39 . 31 36 . 93 39 . 8 37 . 02 39 . 64 37 . 1 38 . 95 37 . 18 38 . 78 37 . 27 38 . 29 37 . 35 38 . 85 37 . 43 39 . 28 37 . 52 39 . 68 37 . 6 39 . 76 37 . 68 39 . 35 37 . 77 39 . 41 37 . 85 39 . 68 37 . 93 39 . 39 38 . 01 38 . 83 38 . 1 38 . 34 38 . 18 37 . 49 38 . 26 37 . 61 38 . 35 36 . 62 38 . 43 36 . 75 38 . 51 35 . 54 38 . 6 35 . 5 38 . 68 34 . 91 38 . 76 34 . 37 38 . 85 35 . 17 38 . 93 35 . 08 39 . 01 35 . 28 39 . 1 35 . 12 39 . 18 35 . 33 39 . 26 35 . 92 39 . 35 36 . 39 39 . 43 36 . 28 39 . 51 35 . 95 39 . 59 35 . 86 39 . 68 35 . 85 39 . 76 36 . 27 39 . 84 35 . 76 39 . 93 35 . 02 40 . 01 34 . 67 40 . 09 34 . 56 40 . 18 34 . 29 40 . 26 33 . 88 40 . 34 33 . 39 40 . 43 32 . 52 40 . 51 32 . 43 40 . 59 32 . 21 40 . 68 31 . 44 40 . 76 30 . 78 40 . 84 31 . 24 40 . 93 31 . 2 41 . 01 30 . 66 41 . 09 31 . 18 41 . 17 30 . 54 41 . 26 31 . 36 41 . 34 30 . 24 41 . 42 30 . 84 41 . 51 30 . 62 41 . 59 31 . 3 41 . 67 31 . 37 41 . 76 30 . 73 41 . 84 30 . 25 41 . 92 30 . 77 42 . 01 31 . 69 42 . 09 32 . 8 42 . 17 32 . 62 42 . 26 32 . 83 42 . 34 32 . 62 42 . 42 32 . 67 42 . 51 32 . 67 42 . 59 32 . 36 42 . 67 31 . 79 42 . 75 31 . 72 42 . 84 31 . 78 42 . 92 33 . 18 43 33 . 88 43 . 09 33 . 18 43 . 17 32 . 94 43 . 25 32 . 61 43 . 34 32 . 28 43 . 42 31 . 95 43 . 5 31 . 5 43 . 59 31 . 75 43 . 67 31 . 85 43 . 75 30 . 89 43 . 84 30 . 47 43 . 92 29 . 53 44 29 . 08 44 . 09 29 . 19 44 . 17 29 . 02 44 . 25 29 . 16 44 . 34 29 . 22 44 . 42 28 . 41 44 . 5 28 . 59 44 . 58 28 . 75 44 . 67 28 . 88 44 . 75 29 . 41 44 . 83 29 . 03 44 . 92 28 . 8 45 28 . 75 45 . 08 28 . 39 45 . 17 28 . 13 45 . 25 27 . 5 45 . 33 27 . 71 45 . 42 27 . 52 45 . 5 28 . 54 45 . 58 27 . 37 45 . 67 27 . 1 45 . 75 27 . 01 45 . 83 26 . 66 45 . 92 26 . 62 46 26 . 09 46 . 08 26 . 34 46 . 16 27 . 1 46 . 25 27 . 22 46 . 33 27 . 45 46 . 41 28 . 84 46 . 5 28 . 77 46 . 58 27 . 76 46 . 66 28 . 34 46 . 75 27 . 56 46 . 83 26 . 91 46 . 91 27 . 25 47 27 . 42 47 . 08 26 . 58 47 . 16 27 . 01 47 . 25 26 . 8 47 . 33 27 . 14 47 . 41 27 . 04 47 . 5 27 . 19 47 . 58 27 . 37 47 . 66 26 . 54 47 . 74 26 . 92 47 . 83 25 . 82 47 . 91 25 . 49 47 . 99 25 . 82 48 . 08 25 . 69 48 . 16 25 . 16 48 . 24 25 . 98 48 . 33 25 . 8 48 . 41 26 . 01 48 . 49 25 . 83 48 . 58 26 . 25 48 . 66 25 . 89 48 . 74 25 . 96 48 . 83 26 . 66 48 . 91 26 . 72 48 . 99 26 . 3 49 . 08 27 . 09 49 . 16 27 . 79 49 . 24 28 . 33 49 . 32 28 . 16 49 . 41 28 . 43 49 . 49 28 . 07 49 . 57 28 . 67 49 . 66 28 . 95 49 . 74 28 . 74 49 . 82 28 . 63 49 . 91 28 . 51 49 . 99 27 . 73 50 . 07 27 . 61 50 . 16 27 . 26 50 . 24 2
< path fill = "none" d = "M21.63,44.35 L 21 . 71 44 . 35 21 . 8 43 . 74 21 . 88 43 . 65 21 . 96 43 . 55 22 . 05 43 . 53 22 . 13 43 . 48 22 . 21 43 . 34 22 . 3 43 . 42 22 . 38 42 . 99 22 . 46 43 . 42 22 . 55 43 . 26 22 . 63 42 . 72 22 . 71 42 . 52 22 . 8 42 . 45 22 . 88 42 . 2 22 . 96 41 . 9 23 . 05 42 . 03 23 . 13 41 . 74 23 . 21 40 . 93 23 . 29 41 . 8 23 . 38 41 . 73 23 . 46 41 . 32 23 . 54 41 . 26 23 . 63 41 . 24 23 . 71 41 . 61 23 . 79 41 . 82 23 . 88 42 . 12 23 . 96 42 . 48 24 . 04 42 . 39 24 . 13 42 . 55 24 . 21 42 . 85 24 . 29 42 . 94 24 . 38 43 . 28 24 . 46 44 . 25 24 . 54 44 . 07 24 . 63 43 . 81 24 . 71 43 . 95 24 . 79 44 . 35 24 . 88 44 . 34 24 . 96 43 . 9 25 . 04 42 . 94 25 . 12 43 . 17 25 . 21 43 . 09 25 . 29 43 . 5 25 . 37 43 . 31 25 . 46 43 . 37 25 . 54 43 . 79 25 . 62 44 . 1 25 . 71 43 . 4 25 . 79 43 . 16 25 . 87 43 . 35 25 . 96 43 . 82 26 . 04 44 . 32 26 . 12 43 . 9 26 . 21 43 . 35 26 . 29 43 . 07 26 . 37 42 . 86 26 . 46 42 . 48 26 . 54 42 . 39 26 . 62 42 . 27 26 . 7 42 . 26 26 . 79 42 . 41 26 . 87 42 . 84 26 . 95 43 . 64 27 . 04 43 . 77 27 . 12 43 . 72 27 . 2 43 . 87 27 . 29 44 . 33 27 . 37 43 . 69 27 . 45 43 . 82 27 . 54 43 . 42 27 . 62 43 . 14 27 . 7 42 . 85 27 . 79 43 . 09 27 . 87 43 . 28 27 . 95 43 . 24 28 . 04 42 . 77 28 . 12 42 . 57 28 . 2 43 . 06 28 . 28 43 . 36 28 . 37 43 . 36 28 . 45 43 . 18 28 . 53 43 . 23 28 . 62 42 . 55 28 . 7 42 . 91 28 . 78 42 . 69 28 . 87 42 . 83 28 . 95 42 . 57 29 . 03 42 . 66 29 . 12 42 . 78 29 . 2 43 . 36 29 . 28 42 . 75 29 . 37 42 . 61 29 . 45 42 . 73 29 . 53 43 . 07 29 . 62 43 . 23 29 . 7 43 . 52 29 . 78 43 . 55 29 . 86 43 . 29 29 . 95 43 . 6 30 . 03 44 . 28 30 . 11 44 . 4 30 . 2 44 . 17 30 . 28 44 . 19 30 . 36 44 . 46 30 . 45 44 . 68 30 . 53 44 . 58 30 . 61 44 . 14 30 . 7 44 . 28 30 . 78 43 . 85 30 . 86 42 . 86 30 . 95 43 . 22 31 . 03 43 . 44 31 . 11 42 . 78 31 . 2 42 . 41 31 . 28 41 . 94 31 . 36 41 . 98 31 . 44 41 . 46 31 . 53 42 . 23 31 . 61 42 . 36 31 . 69 42 . 53 31 . 78 42 . 73 31 . 86 43 . 1 31 . 94 42 . 85 32 . 03 42 . 78 32 . 11 43 . 12 32 . 19 43 . 35 32 . 28 43 . 37 32 . 36 43 . 11 32 . 44 42 . 83 32 . 53 42 . 47 32 . 61 42 . 44 32 . 69 42 . 25 32 . 78 42 . 73 32 . 86 43 . 08 32 . 94 43 . 28 33 . 02 43 . 34 33 . 11 42 . 7 33 . 19 42 . 5 33 . 27 42 . 82 33 . 36 42 . 45 33 . 44 41 . 39 33 . 52 41 . 09 33 . 61 42 . 05 33 . 69 41 . 77 33 . 77 41 . 49 33 . 86 41 . 16 33 . 94 41 . 24 34 . 02 41 . 03 34 . 11 40 . 76 34 . 19 40 . 98 34 . 27 41 . 11 34 . 36 40 . 6 34 . 44 40 . 64 34 . 52 41 . 1 34 . 61 40 . 88 34 . 69 39 . 94 34 . 77 40 . 43 34 . 85 40 . 07 34 . 94 39 . 94 35 . 02 40 . 09 35 . 1 40 . 09 35 . 19 40 . 02 35 . 27 40 . 6 35 . 35 40 . 71 35 . 44 40 . 81 35 . 52 40 . 88 35 . 6 41 . 81 35 . 69 41 . 85 35 . 77 41 . 71 35 . 85 41 . 85 35 . 94 41 . 51 36 . 02 41 . 73 36 . 1 41 . 45 36 . 19 41 . 32 36 . 27 41 . 15 36 . 35 40 . 68 36 . 43 40 . 34 36 . 52 39 . 65 36 . 6 39 . 76 36 . 68 39 . 43 36 . 77 39 . 64 36 . 85 39 . 41 36 . 93 39 . 28 37 . 02 38 . 36 37 . 1 37 . 89 37 . 18 38 . 34 37 . 27 38 . 25 37 . 35 38 . 46 37 . 43 38 . 69 37 . 52 38 . 26 37 . 6 37 . 79 37 . 68 37 . 8 37 . 77 38 . 29 37 . 85 38 . 27 37 . 93 37 . 75 38 . 01 38 . 48 38 . 1 38 . 55 38 . 18 37 . 69 38 . 26 37 . 39 38 . 35 37 . 15 38 . 43 36 . 61 38 . 51 37 . 45 38 . 6 36 . 8 38 . 68 37 . 37 38 . 76 37 . 02 38 . 85 37 . 54 38 . 93 37 . 53 39 . 01 37 . 87 39 . 1 38 . 01 39 . 18 38 . 35 39 . 26 38 . 12 39 . 35 37 . 33 39 . 43 37 . 75 39 . 51 37 . 68 39 . 59 37 . 6 39 . 68 37 . 32 39 . 76 37 . 2 39 . 84 36 . 54 39 . 93 36 . 08 40 . 01 36 . 39 40 . 09 36 . 62 40 . 18 36 . 62 40 . 26 36 . 83 40 . 34 36 . 61 40 . 43 36 . 3 40 . 51 36 . 14 40 . 59 35 . 95 40 . 68 36 . 27 40 . 76 36 . 02 40 . 84 35 . 85 40 . 93 35 . 42 41 . 01 36 . 18 41 . 09 35 . 98 41 . 17 36 . 06 41 . 26 35 . 71 41 . 34 35 . 6 41 . 42 35 . 93 41 . 51 36 . 32 41 . 59 36 . 32 41 . 67 36 . 62 41 . 76 36 . 83 41 . 84 37 . 02 41 . 92 36 . 31 42 . 01 36 . 28 42 . 09 35 . 81 42 . 17 35 . 62 42 . 26 36 . 13 42 . 34 36 . 63 42 . 42 36 . 29 42 . 51 36 . 29 42 . 59 36 . 46 42 . 67 36 . 57 42 . 75 36 . 53 42 . 84 36 . 3 42 . 92 36 . 3 43 37 . 02 43 . 09 37 . 46 43 . 17 37 . 84 43 . 25 37 . 67 43 . 34 37 . 2 43 . 42 36 . 97 43 . 5 37 . 06 43 . 59 36 . 97 43 . 67 37 . 52 43 . 75 36 . 95 43 . 84 36 . 58 43 . 92 36 . 44 44 36 . 07 44 . 09 35 . 77 44 . 17 35 . 57 44 . 25 36 . 24 44 . 34 35 . 75 44 . 42 35 . 32 44 . 5 34 . 88 44 . 58 35 . 21 44 . 67 35 . 19 44 . 75 35 . 09 44 . 83 35 . 01 44 . 92 34 . 85 45 34 . 56 45 . 08 34 . 38 45 . 17 34 . 3 45 . 25 34 . 75 45 . 33 34 . 88 45 . 42 34 . 07 45 . 5 34 . 54 45 . 58 35 . 13 45 . 67 36 . 08 45 . 75 36 . 43 45 . 83 36 . 41 45 . 92 36 . 41 46 37 . 04 46 . 08 37 . 36 46 . 16 36 . 67 46 . 25 35 . 93 46 . 33 35 . 44 46 . 41 36 . 53 46 . 5 36 . 38 46 . 58 36 . 1 46 . 66 36 . 02 46 . 75 36 . 11 46 . 83 35 . 66 46 . 91 34 . 86 47 34 . 65 47 . 08 35 . 22 47 . 16 34 . 94 47 . 25 35 . 43 47 . 33 35 . 26 47 . 41 35 . 15 47 . 5 34 . 63 47 . 58 35 . 04 47 . 66 35 . 03 47 . 74 35 . 05 47 . 83 35 . 2 47 . 91 35 . 16 47 . 99 35 . 35 48 . 08 35 . 44 48 . 16 35 . 27 48 . 24 35 . 27 48 . 33 35 . 38 48 . 41 35 . 19 48 . 49 35 . 23 48 . 58 34 . 07 48 . 66 33 . 4 48 . 74 34 . 21 48 . 83 34 . 12 48 . 91 34 . 42 48 . 99 34 . 92 49 . 08 34 . 56 49 . 16 34 . 75 49 . 24 34 . 77 49 . 32 34 . 03 49 . 41 34 . 11 49 . 49 34 . 48 49 . 57 33 . 73 49 . 66 33 . 54 49 . 74 33 . 17 49 . 82 32 . 8 49 . 91 33 . 39 49 . 99 33 . 53 50 . 07 33 . 66 50 . 16 33 . 64 50 . 24 3
< / g >
< / g >
< g opacity = "0" class = "guide zoomslider" stroke = "#000000" stroke-opacity = "0.000" id = "fig-0378e04b897742b597befd2e8e1c169e-element-15" >
< g fill = "#EAEAEA" stroke-width = "0.3" stroke-opacity = "0" stroke = "#6A6A6A" id = "fig-0378e04b897742b597befd2e8e1c169e-element-16" >
< rect x = "120.58" y = "8" width = "4" height = "4" / >
< g class = "button_logo" fill = "#6A6A6A" id = "fig-0378e04b897742b597befd2e8e1c169e-element-17" >
< path d = "M121.38,9.6 L 122.18 9.6 122.18 8.8 122.98 8.8 122.98 9.6 123.78 9.6 123.78 10.4 122.98 10.4 122.98 11.2 122.18 11.2 122.18 10.4 121.38 10.4 z" / >
< / g >
< / g >
< g fill = "#EAEAEA" id = "fig-0378e04b897742b597befd2e8e1c169e-element-18" >
< rect x = "101.08" y = "8" width = "19" height = "4" / >
< / g >
< g class = "zoomslider_thumb" fill = "#6A6A6A" id = "fig-0378e04b897742b597befd2e8e1c169e-element-19" >
< rect x = "109.58" y = "8" width = "2" height = "4" / >
< / g >
< g fill = "#EAEAEA" stroke-width = "0.3" stroke-opacity = "0" stroke = "#6A6A6A" id = "fig-0378e04b897742b597befd2e8e1c169e-element-20" >
< rect x = "96.58" y = "8" width = "4" height = "4" / >
< g class = "button_logo" fill = "#6A6A6A" id = "fig-0378e04b897742b597befd2e8e1c169e-element-21" >
< path d = "M97.38,9.6 L 99.78 9.6 99.78 10.4 97.38 10.4 z" / >
< / g >
< / g >
< / g >
< / g >
< g class = "guide ylabels" font-size = "2.82" font-family = "'PT Sans Caption','Helvetica Neue','Helvetica',sans-serif" fill = "#6C606B" id = "fig-0378e04b897742b597befd2e8e1c169e-element-22" >
< text x = "18.63" y = "178.87" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "1.0" > -250< / text >
< text x = "18.63" y = "159.78" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "1.0" > -200< / text >
< text x = "18.63" y = "140.68" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "1.0" > -150< / text >
< text x = "18.63" y = "121.58" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "1.0" > -100< / text >
< text x = "18.63" y = "102.49" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "1.0" > -50< / text >
< text x = "18.63" y = "83.39" text-anchor = "end" dy = "0.35em" visibility = "visible" gadfly:scale = "1.0" > 0< / text >
< text x = "18.63" y = "64.29" text-anchor = "end" dy = "0.35em" visibility = "visible" gadfly:scale = "1.0" > 50< / text >
< text x = "18.63" y = "45.19" text-anchor = "end" dy = "0.35em" visibility = "visible" gadfly:scale = "1.0" > 100< / text >
< text x = "18.63" y = "26.1" text-anchor = "end" dy = "0.35em" visibility = "visible" gadfly:scale = "1.0" > 150< / text >
< text x = "18.63" y = "7" text-anchor = "end" dy = "0.35em" visibility = "visible" gadfly:scale = "1.0" > 200< / text >
< text x = "18.63" y = "-12.1" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "1.0" > 250< / text >
< text x = "18.63" y = "-31.19" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "1.0" > 300< / text >
< text x = "18.63" y = "-50.29" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "1.0" > 350< / text >
< text x = "18.63" y = "-69.39" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "1.0" > 400< / text >
< text x = "18.63" y = "-88.49" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "1.0" > 450< / text >
< text x = "18.63" y = "159.78" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > -200< / text >
< text x = "18.63" y = "155.96" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > -190< / text >
< text x = "18.63" y = "152.14" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > -180< / text >
< text x = "18.63" y = "148.32" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > -170< / text >
< text x = "18.63" y = "144.5" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > -160< / text >
< text x = "18.63" y = "140.68" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > -150< / text >
< text x = "18.63" y = "136.86" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > -140< / text >
< text x = "18.63" y = "133.04" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > -130< / text >
< text x = "18.63" y = "129.22" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > -120< / text >
< text x = "18.63" y = "125.4" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > -110< / text >
< text x = "18.63" y = "121.58" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > -100< / text >
< text x = "18.63" y = "117.76" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > -90< / text >
< text x = "18.63" y = "113.94" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > -80< / text >
< text x = "18.63" y = "110.12" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > -70< / text >
< text x = "18.63" y = "106.3" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > -60< / text >
< text x = "18.63" y = "102.49" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > -50< / text >
< text x = "18.63" y = "98.67" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > -40< / text >
< text x = "18.63" y = "94.85" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > -30< / text >
< text x = "18.63" y = "91.03" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > -20< / text >
< text x = "18.63" y = "87.21" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > -10< / text >
< text x = "18.63" y = "83.39" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 0< / text >
< text x = "18.63" y = "79.57" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 10< / text >
< text x = "18.63" y = "75.75" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 20< / text >
< text x = "18.63" y = "71.93" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 30< / text >
< text x = "18.63" y = "68.11" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 40< / text >
< text x = "18.63" y = "64.29" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 50< / text >
< text x = "18.63" y = "60.47" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 60< / text >
< text x = "18.63" y = "56.65" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 70< / text >
< text x = "18.63" y = "52.83" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 80< / text >
< text x = "18.63" y = "49.01" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 90< / text >
< text x = "18.63" y = "45.19" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 100< / text >
< text x = "18.63" y = "41.37" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 110< / text >
< text x = "18.63" y = "37.56" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 120< / text >
< text x = "18.63" y = "33.74" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 130< / text >
< text x = "18.63" y = "29.92" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 140< / text >
< text x = "18.63" y = "26.1" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 150< / text >
< text x = "18.63" y = "22.28" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 160< / text >
< text x = "18.63" y = "18.46" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 170< / text >
< text x = "18.63" y = "14.64" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 180< / text >
< text x = "18.63" y = "10.82" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 190< / text >
< text x = "18.63" y = "7" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 200< / text >
< text x = "18.63" y = "3.18" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 210< / text >
< text x = "18.63" y = "-0.64" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 220< / text >
< text x = "18.63" y = "-4.46" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 230< / text >
< text x = "18.63" y = "-8.28" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 240< / text >
< text x = "18.63" y = "-12.1" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 250< / text >
< text x = "18.63" y = "-15.92" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 260< / text >
< text x = "18.63" y = "-19.74" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 270< / text >
< text x = "18.63" y = "-23.56" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 280< / text >
< text x = "18.63" y = "-27.37" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 290< / text >
< text x = "18.63" y = "-31.19" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 300< / text >
< text x = "18.63" y = "-35.01" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 310< / text >
< text x = "18.63" y = "-38.83" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 320< / text >
< text x = "18.63" y = "-42.65" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 330< / text >
< text x = "18.63" y = "-46.47" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 340< / text >
< text x = "18.63" y = "-50.29" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 350< / text >
< text x = "18.63" y = "-54.11" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 360< / text >
< text x = "18.63" y = "-57.93" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 370< / text >
< text x = "18.63" y = "-61.75" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 380< / text >
< text x = "18.63" y = "-65.57" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 390< / text >
< text x = "18.63" y = "-69.39" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "10.0" > 400< / text >
< text x = "18.63" y = "159.78" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "0.5" > -200< / text >
< text x = "18.63" y = "83.39" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "0.5" > 0< / text >
< text x = "18.63" y = "7" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "0.5" > 200< / text >
< text x = "18.63" y = "-69.39" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "0.5" > 400< / text >
< text x = "18.63" y = "159.78" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "5.0" > -200< / text >
< text x = "18.63" y = "152.14" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "5.0" > -180< / text >
< text x = "18.63" y = "144.5" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "5.0" > -160< / text >
< text x = "18.63" y = "136.86" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "5.0" > -140< / text >
< text x = "18.63" y = "129.22" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "5.0" > -120< / text >
< text x = "18.63" y = "121.58" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "5.0" > -100< / text >
< text x = "18.63" y = "113.94" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "5.0" > -80< / text >
< text x = "18.63" y = "106.3" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "5.0" > -60< / text >
< text x = "18.63" y = "98.67" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "5.0" > -40< / text >
< text x = "18.63" y = "91.03" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "5.0" > -20< / text >
< text x = "18.63" y = "83.39" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "5.0" > 0< / text >
< text x = "18.63" y = "75.75" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "5.0" > 20< / text >
< text x = "18.63" y = "68.11" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "5.0" > 40< / text >
< text x = "18.63" y = "60.47" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "5.0" > 60< / text >
< text x = "18.63" y = "52.83" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "5.0" > 80< / text >
< text x = "18.63" y = "45.19" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "5.0" > 100< / text >
< text x = "18.63" y = "37.56" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "5.0" > 120< / text >
< text x = "18.63" y = "29.92" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "5.0" > 140< / text >
< text x = "18.63" y = "22.28" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "5.0" > 160< / text >
< text x = "18.63" y = "14.64" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "5.0" > 180< / text >
< text x = "18.63" y = "7" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "5.0" > 200< / text >
< text x = "18.63" y = "-0.64" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "5.0" > 220< / text >
< text x = "18.63" y = "-8.28" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "5.0" > 240< / text >
< text x = "18.63" y = "-15.92" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "5.0" > 260< / text >
< text x = "18.63" y = "-23.56" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "5.0" > 280< / text >
< text x = "18.63" y = "-31.19" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "5.0" > 300< / text >
< text x = "18.63" y = "-38.83" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "5.0" > 320< / text >
< text x = "18.63" y = "-46.47" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "5.0" > 340< / text >
< text x = "18.63" y = "-54.11" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "5.0" > 360< / text >
< text x = "18.63" y = "-61.75" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "5.0" > 380< / text >
< text x = "18.63" y = "-69.39" text-anchor = "end" dy = "0.35em" visibility = "hidden" gadfly:scale = "5.0" > 400< / text >
< / g >
< g font-size = "3.88" font-family = "'PT Sans','Helvetica Neue','Helvetica',sans-serif" fill = "#564A55" stroke = "#000000" stroke-opacity = "0.000" id = "fig-0378e04b897742b597befd2e8e1c169e-element-23" >
< text x = "8.81" y = "43.19" text-anchor = "middle" dy = "0.35em" transform = "rotate(-90, 8.81, 45.19)" > Value< / text >
< / g >
< / g >
< defs >
< clipPath id = "fig-0378e04b897742b597befd2e8e1c169e-element-9" >
< path d = "M19.63,5 L 127.58 5 127.58 85.39 19.63 85.39" / >
< /clipPath
>< / defs >
< script > < ! [ C D A T A [
(function(N){var k=/[\.\/]/,L=/\s*,\s*/,C=function(a,d){return a-d},a,v,y={n:{}},M=function(){for(var a=0,d=this.length;a< d ; a ++) if (" undefined "!= typeof this [ a ]) return this [ a ]}, A = function(){for(var a = this.length;--a;)if("undefined"!=typeof this [ a ]) return this [ a ]}, w = function(k,d){k=String(k);var f = v,n=Array.prototype.slice.call(arguments,2),u=w.listeners(k),p=0,b,q=[],e={},l=[],r=a;l.firstDefined=M;l.lastDefined=A;a=k;for(var s = v=0,x=u.length;s<x;s++)"zIndex"in u [ s ]&&( q . push ( u [ s ]. zIndex ), 0 > u[s].zIndex&&
(e[u[s].zIndex]=u[s]));for(q.sort(C);0>q[p];)if(b=e[q[p++] ],l.push(b.apply(d,n)),v)return v=f,l;for(s=0;s< x ; s + + ) if ( b = u[s],"zIndex"in b ) if ( b . zIndex = =q[p]){l.push(b.apply(d,n));if(v)break;do if ( p + + , ( b = e[q[p] ] ) & & l . push ( b . apply ( d , n ) ) , v ) break ; while ( b ) } else e [ b . zIndex ] = b ; else if ( l . push ( b . apply ( d , n ) ) , v ) break ; v = f;a=r;return l } ; w . _events = y;w.listeners=function(a){a=a.split(k);var d = y,f,n,u,p,b,q,e,l=[d],r=[];u=0;for(p=a.length;u<p;u++){e=[];b=0;for(q=l.length;b<q;b++)for(d=l[b].n,f=[d[a[u] ] , d [ " * " ] ] , n = 2;n--;)if(d=
f[n])e.push(d),r=r.concat(d.f||[]);l=e}return r};w.on=function(a,d){a=String(a);if("function"!=typeof d)return function(){};for(var f=a.split(L),n=0,u=f.length;n< u ; n + + ) ( function ( a ) { a = a.split(k);for(var b = y,f,e=0,l=a.length;e<l;e++)b=b.n,b=b.hasOwnProperty(a[e])&&b[a[e] ] | | ( b [ a [ e ] ] = { n: { } } ) ; b . f = b.f||[];e=0;for(l=b.f.length;e<l;e++)if(b.f[e]==d){f=!0;break}!f&&b.f.push(d)})(f[n]);return function ( a ) { + a = =+a&&(d.zIndex=+a)}};w.f=function(a){var d = [].slice.call(arguments,1);return function ( ) { w . apply ( null ,
[a,null].concat(d).concat([].slice.call(arguments,0)))}};w.stop=function(){v=1};w.nt=function(k){return k?(new RegExp("(?:\\.|\\/|^)"+k+"(?:\\.|\\/|$)")).test(a):a};w.nts=function(){return a.split(k)};w.off=w.unbind=function(a,d){if(a){var f=a.split(L);if(1< f.length ) for ( var n = 0,u=f.length;n<u;n++)w.off(f[n],d);else{for(var f = a.split(k),p,b,q,e,l=[y],n=0,u=f.length;n<u;n++)for(e=0;e<l.length;e+=q.length-2){q=[e,1];p=l[e].n;if("*"!=f[n])p[f[n] ]&& q . push ( p [ f [ n ] ]); else for ( b in p ) p . hasOwnProperty ( b )&&
q.push(p[b]);l.splice.apply(l,q)}n=0;for(u=l.length;n< u ; n + + ) for ( p = l[n];p.n;){if(d){if(p.f){e=0;for(f=p.f.length;e<f;e++)if(p.f[e]==d){p.f.splice(e,1);break}!p.f.length&&delete p . f } for ( b in p . n ) if ( p . n . hasOwnProperty ( b ) & & p . n [ b ] . f ) { q = p.n[b].f;e=0;for(f=q.length;e<f;e++)if(q[e]==d){q.splice(e,1);break}!q.length&&delete p . n [ b ] . f } } else for ( b in delete p . f , p . n ) p . n . hasOwnProperty ( b ) & & p . n [ b ] . f & & delete p . n [ b ] . f ; p = p.n}}}else w . _events = y={n:{}}};w.once=function(a,d){var f = function(){w.unbind(a,f);return d . apply ( this ,
arguments)};return w.on(a,f)};w.version="0.4.2";w.toString=function(){return"You are running Eve 0.4.2"};"undefined"!=typeof module& & module.exports?module.exports=w:"function"===typeof define& & define.amd?define("eve",[],function(){return w}):N.eve=w})(this);
(function(N,k){"function"===typeof define& & define.amd?define("Snap.svg",["eve"],function(L){return k(N,L)}):k(N,N.eve)})(this,function(N,k){var L=function(a){var k={},y=N.requestAnimationFrame||N.webkitRequestAnimationFrame||N.mozRequestAnimationFrame||N.oRequestAnimationFrame||N.msRequestAnimationFrame||function(a){setTimeout(a,16)},M=Array.isArray||function(a){return a instanceof Array||"[object Array]"==Object.prototype.toString.call(a)},A=0,w="M"+(+new Date).toString(36),z=function(a){if(null==
a)return this.s;var b=this.s-a;this.b+=this.dur*b;this.B+=this.dur*b;this.s=a},d=function(a){if(null==a)return this.spd;this.spd=a},f=function(a){if(null==a)return this.dur;this.s=this.s*a/this.dur;this.dur=a},n=function(){delete k[this.id];this.update();a("mina.stop."+this.id,this)},u=function(){this.pdif||(delete k[this.id],this.update(),this.pdif=this.get()-this.b)},p=function(){this.pdif& & (this.b=this.get()-this.pdif,delete this.pdif,k[this.id]=this)},b=function(){var a;if(M(this.start)){a=[];
for(var b=0,e=this.start.length;b< e ; b + + ) a [ b ] = + this . start [ b ] + ( this . end [ b ] -this . start [ b ] ) * this . easing ( this . s ) } else a = +this.start+(this.end-this.start)*this.easing(this.s);this.set(a)},q=function(){var l = 0,b;for(b in k ) if ( k . hasOwnProperty ( b ) ) { var e = k[b],f=e.get();l++;e.s=(f-e.b)/(e.dur/e.spd);1<=e.s&&(delete k [ b ] , e . s = 1,l--,function(b){setTimeout(function(){a("mina.finish."+b.id,b)})}(e));e.update()}l&&y(q)},e=function(a,r,s,x,G,h,J){a={id:w+(A++).toString(36),start:a,end:r,b:s,s:0,dur:x-s,spd:1,get:G,
set:h,easing:J||e.linear,status:z,speed:d,duration:f,stop:n,pause:u,resume:p,update:b};k[a.id]=a;r=0;for(var K in k)if(k.hasOwnProperty(K)&&(r++,2==r))break; 1==r&&y(q); return a};e.time=Date.now||function(){return+new Date};e.getById=function(a){return k[a]||null};e.linear=function(a){return a};e.easeout=function(a){return Math.pow(a,1.7)};e.easein=function(a){return Math.pow(a,0.48)};e.easeinout=function(a){if(1==a)return 1;if(0==a)return 0;var b=0.48-a/1.04,e=Math.sqrt(0.1734+b*b);a=e-b;a=Math.pow(Math.abs(a),
1/3)*(0>a?-1:1);b=-e-b;b=Math.pow(Math.abs(b),1/3)*(0>b?-1:1);a=a+b+0.5;return 3*(1-a)*a*a+a*a*a};e.backin=function(a){return 1==a?1:a*a*(2.70158*a-1.70158)};e.backout=function(a){if(0==a)return 0;a-=1;return a*a*(2.70158*a+1.70158)+1};e.elastic=function(a){return a==!!a?a:Math.pow(2,-10*a)*Math.sin(2*(a-0.075)*Math.PI/0.3)+1};e.bounce=function(a){a< 1 / 2 . 75 ? a * = 7 . 5625 * a:a < 2 / 2 . 75 ? ( a- = 1.5/2.75,a=7.5625*a*a+0.75):a<2.5/2.75?(a-=2.25/2.75,a=7.5625*a*a+0.9375):(a-=2.625/2.75,a=7.5625*a*a+0.984375);return a } ;
return N.mina=e}("undefined"==typeof k?function(){}:k),C=function(){function a(c,t){if(c){if(c.tagName)return x(c);if(y(c,"array")& & a.set)return a.set.apply(a,c);if(c instanceof e)return c;if(null==t)return c=G.doc.querySelector(c),x(c)}return new s(null==c?"100%":c,null==t?"100%":t)}function v(c,a){if(a){"#text"==c&&(c=G.doc.createTextNode(a.text||"")); "string"==typeof c&&(c=v(c)); if("string"==typeof a)return"xlink:"==a.substring(0,6)?c.getAttributeNS(m,a.substring(6)):"xml:"==a.substring(0,4)?c.getAttributeNS(la,
a.substring(4)):c.getAttribute(a);for(var da in a)if(a[h](da)){var b=J(a[da]);b?"xlink:"==da.substring(0,6)?c.setAttributeNS(m,da.substring(6),b):"xml:"==da.substring(0,4)?c.setAttributeNS(la,da.substring(4),b):c.setAttribute(da,b):c.removeAttribute(da)}}else c=G.doc.createElementNS(la,c);return c}function y(c,a){a=J.prototype.toLowerCase.call(a);return"finite"==a?isFinite(c):"array"==a& & (c instanceof Array||Array.isArray& & Array.isArray(c))?!0:"null"==a& & null===c||a==typeof c& & null!==c||"object"==
a&& c===Object(c)||$.call(c).slice(8,-1).toLowerCase()==a}function M(c){if("function"==typeof c||Object(c)!==c)return c;var a=new c.constructor,b;for(b in c)c[h](b)&&(a[b]=M(c[b])); return a}function A(c,a,b){function m(){var e=Array.prototype.slice.call(arguments,0),f=e.join("\u2400"),d=m.cache=m.cache||{},l=m.count=m.count||[];if(d[h](f)){a:for(var e=l,l=f,B=0,H=e.length;B< H ; B ++) if ( e [ B ]=== l ){ e . push ( e . splice ( B , 1 )[ 0 ]); break a } return b ? b ( d [ f ]) :d [ f ]} 1E3 <= l . length && delete d [ l . shift ()]; l . push ( f ); d [ f ]= c . apply ( a ,
e);return b?b(d[f]):d[f]}return m}function w(c,a,b,m,e,f){return null==e?(c-=b,a-=m,c||a?(180*I.atan2(-a,-c)/C+540)%360:0):w(c,a,e,f)-w(b,m,e,f)}function z(c){return c%360*C/180}function d(c){var a=[];c=c.replace(/(?:^|\s)(\w+)\(([^)]+)\)/g,function(c,b,m){m=m.split(/\s*,\s*|\s+/);"rotate"==b&&1==m.length&&m.push(0,0); "scale"==b&&(2<m.length?m=m.slice(0,2):2==m.length&&m.push(0,0),1==m.length&&m.push(m[0],0,0)); "skewX"==b?a.push(["m",1,0,I.tan(z(m[0])),1,0,0]):"skewY"==b?a.push(["m",1,I.tan(z(m[0])),
0,1,0,0]):a.push([b.charAt(0)].concat(m));return c});return a}function f(c,t){var b=O(c),m=new a.Matrix;if(b)for(var e=0,f=b.length;e< f ; e + + ) { var h = b[e],d=h.length,B=J(h[0]).toLowerCase(),H=h[0]!=B,l=H?m.invert():0,E;"t"==B&&2==d?m.translate(h[1],0):"t"==B&&3==d?H?(d=l.x(0,0),B=l.y(0,0),H=l.x(h[1],h[2]),l=l.y(h[1],h[2]),m.translate(H-d,l-B)):m.translate(h[1],h[2]):"r"==B?2==d?(E=E||t,m.rotate(h[1],E.x+E.width/2,E.y+E.height/2)):4==d&&(H?(H=l.x(h[2],h[3]),l=l.y(h[2],h[3]),m.rotate(h[1],H,l)):m.rotate(h[1],
h[2],h[3])):"s"==B?2==d||3==d?(E=E||t,m.scale(h[1],h[d-1],E.x+E.width/2,E.y+E.height/2)):4==d?H?(H=l.x(h[2],h[3]),l=l.y(h[2],h[3]),m.scale(h[1],h[1],H,l)):m.scale(h[1],h[1],h[2],h[3]):5==d& & (H?(H=l.x(h[3],h[4]),l=l.y(h[3],h[4]),m.scale(h[1],h[2],H,l)):m.scale(h[1],h[2],h[3],h[4])):"m"==B& & 7==d& & m.add(h[1],h[2],h[3],h[4],h[5],h[6])}return m}function n(c,t){if(null==t){var m=!0;t="linearGradient"==c.type||"radialGradient"==c.type?c.node.getAttribute("gradientTransform"):"pattern"==c.type?c.node.getAttribute("patternTransform"):
c.node.getAttribute("transform");if(!t)return new a.Matrix;t=d(t)}else t=a._.rgTransform.test(t)?J(t).replace(/\.{3}|\u2026/g,c._.transform||aa):d(t),y(t,"array")&&(t=a.path?a.path.toString.call(t):J(t)),c._.transform=t; var b=f(t,c.getBBox(1));if(m)return b;c.matrix=b}function u(c){c=c.node.ownerSVGElement&&x(c.node.ownerSVGElement)||c.node.parentNode&&x(c.node.parentNode)||a.select("svg")||a(0,0); var t=c.select("defs"),t=null==t?!1:t.node;t||(t=r("defs",c.node).node);return t}function p(c){return c.node.ownerSVGElement&&
x(c.node.ownerSVGElement)||a.select("svg")}function b(c,a,m){function b(c){if(null==c)return aa;if(c==+c)return c;v(B,{width:c});try{return B.getBBox().width}catch(a){return 0}}function h(c){if(null==c)return aa;if(c==+c)return c;v(B,{height:c});try{return B.getBBox().height}catch(a){return 0}}function e(b,B){null==a?d[b]=B(c.attr(b)||0):b==a& & (d=B(null==m?c.attr(b)||0:m))}var f=p(c).node,d={},B=f.querySelector(".svg---mgr");B||(B=v("rect"),v(B,{x:-9E9,y:-9E9,width:10,height:10,"class":"svg---mgr",
fill:"none"}),f.appendChild(B));switch(c.type){case "rect":e("rx",b),e("ry",h);case "image":e("width",b),e("height",h);case "text":e("x",b);e("y",h);break;case "circle":e("cx",b);e("cy",h);e("r",b);break;case "ellipse":e("cx",b);e("cy",h);e("rx",b);e("ry",h);break;case "line":e("x1",b);e("x2",b);e("y1",h);e("y2",h);break;case "marker":e("refX",b);e("markerWidth",b);e("refY",h);e("markerHeight",h);break;case "radialGradient":e("fx",b);e("fy",h);break;case "tspan":e("dx",b);e("dy",h);break;default:e(a,
b)}f.removeChild(B);return d}function q(c){y(c,"array")||(c=Array.prototype.slice.call(arguments,0));for(var a=0,b=0,m=this.node;this[a];)delete this[a++];for(a=0;a< c.length ; a + + ) " set " = = c [ a ] . type ? c [ a ] . forEach ( function ( c ) { m . appendChild ( c . node ) } ) :m . appendChild ( c [ a ] . node ) ; for ( var h = m.childNodes,a=0;a<h.length;a++)this[b++]=x(h[a]);return this } function e ( c ) { if ( c . snap in E ) return E [ c . snap ] ; var a = this.id=V(),b;try{b=c.ownerSVGElement}catch(m){}this.node=c;b&&(this.paper=new s ( b ) ) ; this . type = c.tagName;this.anims=
{};this._={transform:[]};c.snap=a;E[a]=this;"g"==this.type&&(this.add=q); if(this.type in{g:1,mask:1,pattern:1})for(var e in s.prototype)s.prototype[h](e)& & (this[e]=s.prototype[e])}function l(c){this.node=c}function r(c,a){var b=v(c);a.appendChild(b);return x(b)}function s(c,a){var b,m,f,d=s.prototype;if(c& & "svg"==c.tagName){if(c.snap in E)return E[c.snap];var l=c.ownerDocument;b=new e(c);m=c.getElementsByTagName("desc")[0];f=c.getElementsByTagName("defs")[0];m||(m=v("desc"),m.appendChild(l.createTextNode("Created with Snap")),
b.node.appendChild(m));f||(f=v("defs"),b.node.appendChild(f));b.defs=f;for(var ca in d)d[h](ca)&&(b[ca]=d[ca]); b.paper=b.root=b}else b=r("svg",G.doc.body),v(b.node,{height:a,version:1.1,width:c,xmlns:la});return b}function x(c){return!c||c instanceof e||c instanceof l?c:c.tagName& & "svg"==c.tagName.toLowerCase()?new s(c):c.tagName& & "object"==c.tagName.toLowerCase()& & "image/svg+xml"==c.type?new s(c.contentDocument.getElementsByTagName("svg")[0]):new e(c)}a.version="0.3.0";a.toString=function(){return"Snap v"+
this.version};a._={};var G={win:N,doc:N.document};a._.glob=G;var h="hasOwnProperty",J=String,K=parseFloat,U=parseInt,I=Math,P=I.max,Q=I.min,Y=I.abs,C=I.PI,aa="",$=Object.prototype.toString,F=/^\s*((#[a-f\d]{6})|(#[a-f\d]{3})|rgba?\(\s*([\d\.]+%?\s*,\s*[\d\.]+%?\s*,\s*[\d\.]+%?(?:\s*,\s*[\d\.]+%?)?)\s*\)|hsba?\(\s*([\d\.]+(?:deg|\xb0|%)?\s*,\s*[\d\.]+%?\s*,\s*[\d\.]+(?:%?\s*,\s*[\d\.]+)?%?)\s*\)|hsla?\(\s*([\d\.]+(?:deg|\xb0|%)?\s*,\s*[\d\.]+%?\s*,\s*[\d\.]+(?:%?\s*,\s*[\d\.]+)?%?)\s*\))\s*$/i;a._.separator=
RegExp("[,\t\n\x0B\f\r \u00a0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]+");var S=RegExp("[\t\n\x0B\f\r \u00a0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,[\t\n\x0B\f\r \u00a0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*"),X={hs:1,rg:1},W=RegExp("([a-z])[\t\n\x0B\f\r \u00a0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029,]*((-?\\d*\\.?\\d*(?:e[\\-+]?\\d+)?[\t\n\x0B\f\r \u00a0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,?[\t\n\x0B\f\r \u00a0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*)+)",
"ig"),ma=RegExp("([rstm])[\t\n\x0B\f\r \u00a0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029,]*((-?\\d*\\.?\\d*(?:e[\\-+]?\\d+)?[\t\n\x0B\f\r \u00a0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,?[\t\n\x0B\f\r \u00a0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*)+)","ig"),Z=RegExp("(-?\\d*\\.?\\d*(?:e[\\-+]?\\d+)?)[\t\n\x0B\f\r \u00a0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,?[\t\n\x0B\f\r \u00a0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*",
"ig"),na=0,ba="S"+(+new Date).toString(36),V=function(){return ba+(na++).toString(36)},m="http://www.w3.org/1999/xlink",la="http://www.w3.org/2000/svg",E={},ca=a.url=function(c){return"url('#"+c+"')"};a._.$=v;a._.id=V;a.format=function(){var c=/\{([^\}]+)\}/g,a=/(?:(?:^|\.)(.+?)(?=\[|\.|$|\()|\[('|")(.+?)\2\])(\(\))?/g,b=function(c,b,m){var h=m;b.replace(a,function(c,a,b,m,t){a=a||m;h&& (a in h&& (h=h[a]),"function"==typeof h&&t&&(h=h()))}); return h=(null==h||h==m?c:h)+""};return function(a,m){return J(a).replace(c,
function(c,a){return b(c,a,m)})}}();a._.clone=M;a._.cacher=A;a.rad=z;a.deg=function(c){return 180*c/C%360};a.angle=w;a.is=y;a.snapTo=function(c,a,b){b=y(b,"finite")?b:10;if(y(c,"array"))for(var m=c.length;m--;){if(Y(c[m]-a)< =b)return c[m]}else{c=+c;m=a%c;if(m< b ) return a-m ; if ( m > c-b)return a-m+c}return a};a.getRGB=A(function(c){if(!c||(c=J(c)).indexOf("-")+1)return{r:-1,g:-1,b:-1,hex:"none",error:1,toString:ka};if("none"==c)return{r:-1,g:-1,b:-1,hex:"none",toString:ka};!X[h](c.toLowerCase().substring(0,
2))&&"#"!=c.charAt()&&(c=T(c)); if(!c)return{r:-1,g:-1,b:-1,hex:"none",error:1,toString:ka};var b,m,e,f,d;if(c=c.match(F)){c[2]&&(e=U(c[2].substring(5),16),m=U(c[2].substring(3,5),16),b=U(c[2].substring(1,3),16)); c[3]&&(e=U((d=c[3].charAt(3))+d,16),m=U((d=c[3].charAt(2))+d,16),b=U((d=c[3].charAt(1))+d,16)); c[4]& & (d=c[4].split(S),b=K(d[0]),"%"==d[0].slice(-1)& & (b*=2.55),m=K(d[1]),"%"==d[1].slice(-1)& & (m*=2.55),e=K(d[2]),"%"==d[2].slice(-1)& & (e*=2.55),"rgba"==c[1].toLowerCase().slice(0,4)& & (f=K(d[3])),
d[3]&&"%"==d[3].slice(-1)&&(f/=100)); if(c[5])return d=c[5].split(S),b=K(d[0]),"%"==d[0].slice(-1)&&(b/=100),m=K(d[1]),"%"==d[1].slice(-1)&&(m/=100),e=K(d[2]),"%"==d[2].slice(-1)&&(e/=100),"deg"!=d[0].slice(-3)&&" \u00b0"!=d[0].slice(-1)||(b/=360),"hsba"==c[1].toLowerCase().slice(0,4)&&(f=K(d[3])),d[3]&&"%"==d[3].slice(-1)&&(f/=100),a.hsb2rgb(b,m,e,f); if(c[6])return d=c[6].split(S),b=K(d[0]),"%"==d[0].slice(-1)&& (b/=100),m=K(d[1]),"%"==d[1].slice(-1)&& (m/=100),e=K(d[2]),"%"==d[2].slice(-1)&& (e/=100),
"deg"!=d[0].slice(-3)&&" \u00b0"!=d[0].slice(-1)||(b/=360),"hsla"==c[1].toLowerCase().slice(0,4)&&(f=K(d[3])),d[3]&&"%"==d[3].slice(-1)&&(f/=100),a.hsl2rgb(b,m,e,f); b=Q(I.round(b),255);m=Q(I.round(m),255);e=Q(I.round(e),255);f=Q(P(f,0),1);c={r:b,g:m,b:e,toString:ka};c.hex="#"+(16777216|e|m< < 8 | b << 16 ). toString ( 16 ). slice ( 1 ); c . opacity = y(f,"finite")?f:1;return c } return { r:-1 , g:-1 , b:-1 , hex: " none ", error:1 , toString:ka }}, a ); a . hsb = A(function(c,b,m){return a . hsb2rgb ( c , b , m ). hex }); a . hsl = A(function(c,b,m){return a . hsl2rgb ( c ,
b,m).hex});a.rgb=A(function(c,a,b,m){if(y(m,"finite")){var e=I.round;return"rgba("+[e(c),e(a),e(b),+m.toFixed(2)]+")"}return"#"+(16777216|b|a< < 8 | c < < 16 ) . toString ( 16 ) . slice ( 1 ) } ) ; var T = function(c){var a = G.doc.getElementsByTagName("head")[0]||G.doc.getElementsByTagName("svg")[0];T=A(function(c){if("red"==c.toLowerCase())return"rgb(255, 0 , 0 ) " ; a . style . color = "rgb(255, 0, 0)" ; a . style . color = c;c=G.doc.defaultView.getComputedStyle(a,aa).getPropertyValue("color");return"rgb(255, 0 , 0 ) " = = c ? null:c } ) ; return T ( c ) } ,
qa=function(){return"hsb("+[this.h,this.s,this.b]+")"},ra=function(){return"hsl("+[this.h,this.s,this.l]+")"},ka=function(){return 1==this.opacity||null==this.opacity?this.hex:"rgba("+[this.r,this.g,this.b,this.opacity]+")"},D=function(c,b,m){null==b& & y(c,"object")& & "r"in c& & "g"in c& & "b"in c&&(m=c.b,b=c.g,c=c.r); null==b&&y(c,string)&&(m=a.getRGB(c),c=m.r,b=m.g,m=m.b); if(1< c | | 1 < b | | 1 < m ) c / = 255 , b / = 255 , m / = 255 ; return [ c , b , m ] } , oa = function(c,b,m,e){c=I.round(255*c);b=I.round(255*b);m=I.round(255*m);c={r:c,
g:b,b:m,opacity:y(e,"finite")?e:1,hex:a.rgb(c,b,m),toString:ka};y(e,"finite")&&(c.opacity=e); return c};a.color=function(c){var b;y(c,"object")& & "h"in c& & "s"in c& & "b"in c?(b=a.hsb2rgb(c),c.r=b.r,c.g=b.g,c.b=b.b,c.opacity=1,c.hex=b.hex):y(c,"object")& & "h"in c& & "s"in c& & "l"in c?(b=a.hsl2rgb(c),c.r=b.r,c.g=b.g,c.b=b.b,c.opacity=1,c.hex=b.hex):(y(c,"string")& & (c=a.getRGB(c)),y(c,"object")& & "r"in c& & "g"in c& & "b"in c& & !("error"in c)?(b=a.rgb2hsl(c),c.h=b.h,c.s=b.s,c.l=b.l,b=a.rgb2hsb(c),c.v=b.b):(c={hex:"none"},
c.r=c.g=c.b=c.h=c.s=c.v=c.l=-1,c.error=1));c.toString=ka;return c};a.hsb2rgb=function(c,a,b,m){y(c,"object")& & "h"in c& & "s"in c& & "b"in c&&(b=c.b,a=c.s,c=c.h,m=c.o); var e,h,d;c=360*c%360/60;d=b*a;a=d*(1-Y(c%2-1));b=e=h=b-d;c=~~c;b+=[d,a,0,0,a,d][c];e+=[a,d,d,a,0,0][c];h+=[0,0,a,d,d,a][c];return oa(b,e,h,m)};a.hsl2rgb=function(c,a,b,m){y(c,"object")& & "h"in c& & "s"in c& & "l"in c&&(b=c.l,a=c.s,c=c.h); if(1< c | | 1 < a | | 1 < b ) c / = 360 , a / = 100 , b / = 100 ; var e , h , d ; c = 360*c%360/60;d=2*a*(0.5 > b?b:1-b);a=d*(1-Y(c%2-1));b=e=
h=b-d/2;c=~~c;b+=[d,a,0,0,a,d][c];e+=[a,d,d,a,0,0][c];h+=[0,0,a,d,d,a][c];return oa(b,e,h,m)};a.rgb2hsb=function(c,a,b){b=D(c,a,b);c=b[0];a=b[1];b=b[2];var m,e;m=P(c,a,b);e=m-Q(c,a,b);c=((0==e?0:m==c?(a-b)/e:m==a?(b-c)/e+2:(c-a)/e+4)+360)%6*60/360;return{h:c,s:0==e?0:e/m,b:m,toString:qa}};a.rgb2hsl=function(c,a,b){b=D(c,a,b);c=b[0];a=b[1];b=b[2];var m,e,h;m=P(c,a,b);e=Q(c,a,b);h=m-e;c=((0==h?0:m==c?(a-b)/h:m==a?(b-c)/h+2:(c-a)/h+4)+360)%6*60/360;m=(m+e)/2;return{h:c,s:0==h?0:0.5>m?h/(2*m):h/(2-2*
m),l:m,toString:ra}};a.parsePathString=function(c){if(!c)return null;var b=a.path(c);if(b.arr)return a.path.clone(b.arr);var m={a:7,c:6,o:2,h:1,l:2,m:2,r:4,q:4,s:4,t:2,v:1,u:3,z:0},e=[];y(c,"array")&&y(c[0],"array")&&(e=a.path.clone(c)); e.length||J(c).replace(W,function(c,a,b){var h=[];c=a.toLowerCase();b.replace(Z,function(c,a){a&&h.push(+a)}); "m"==c&&2<h.length&&(e.push([a].concat(h.splice(0,2))),c="l",a="m"==a?"l":"L"); "o"==c& & 1==h.length& & e.push([a,h[0] ]);if("r"==c)e.push([a].concat(h));else for(;h.length>=
m[c]&&(e.push([a].concat(h.splice(0,m[c]))),m[c]); );});e.toString=a.path.toString;b.arr=a.path.clone(e);return e};var O=a.parseTransformString=function(c){if(!c)return null;var b=[];y(c,"array")&&y(c[0],"array")&&(b=a.path.clone(c)); b.length||J(c).replace(ma,function(c,a,m){var e=[];a.toLowerCase();m.replace(Z,function(c,a){a&&e.push(+a)}); b.push([a].concat(e))});b.toString=a.path.toString;return b};a._.svgTransform2string=d;a._.rgTransform=RegExp("^[a-z][\t\n\x0B\f\r \u00a0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*-?\\.?\\d",
"i");a._.transform2matrix=f;a._unit2px=b;a._.getSomeDefs=u;a._.getSomeSVG=p;a.select=function(c){return x(G.doc.querySelector(c))};a.selectAll=function(c){c=G.doc.querySelectorAll(c);for(var b=(a.set||Array)(),m=0;m< c.length ; m + + ) b . push ( x ( c [ m ] ) ) ; return b } ; setInterval ( function ( ) { for ( var c in E ) if ( E [ h ] ( c ) ) { var a = E[c],b=a.node;("svg"!=a.type&&!b.ownerSVGElement||"svg"==a.type&&(!b.parentNode||"ownerSVGElement"in b . parentNode & & ! b . ownerSVGElement ) ) & & delete E [ c ] } } , 1E4 ) ; ( function ( c ) { function m ( c ) { function a ( c ,
b){var m=v(c.node,b);(m=(m=m&& m.match(d))&& m[2])&& "#"==m.charAt()&& (m=m.substring(1))&& (f[m]=(f[m]||[]).concat(function(a){var m={};m[b]=ca(a);v(c.node,m)}))}function b(c){var a=v(c.node,"xlink:href");a&& "#"==a.charAt()&& (a=a.substring(1))&& (f[a]=(f[a]||[]).concat(function(a){c.attr("xlink:href","#"+a)}))}var e=c.selectAll("*"),h,d=/^\s*url\(("|'|)(.*)\1\)\s*$/;c=[];for(var f={},l=0,E=e.length;l< E ; l ++){ h = e[l];a(h,"fill");a(h,"stroke");a(h,"filter");a(h,"mask");a(h,"clip-path");b(h);var t = v(h.node,
"id");t&&(v(h.node,{id:h.id}),c.push({old:t,id:h.id}))}l=0; for(E=c.length;l< E ; l ++) if ( e = f[c[l].old])for(h=0,t=e.length;h<t;h++)e[h](c[l].id)}function e ( c , a , b ){ return function ( m ){ m = m.slice(c,a);1==m.length&&(m=m[0]);return b ? b ( m ) :m }} function d ( c ){ return function (){ var a = c?"<"+this.type:"",b=this.node.attributes,m=this.node.childNodes;if(c)for(var e = 0,h=b.length;e<h;e++)a+=" "+ b [ e ]. name +'="'+ b [ e ]. value . replace (/"/ g ,' \\"')+'"'; if ( m . length ){ c &&( a +=" > ");e=0;for(h=m.length;e< h ; e ++) 3 = =m[e].nodeType?a+=m[e].nodeValue:
1==m[e].nodeType&&(a+=x(m[e]).toString()); c& & (a+="< /"+this.type+">")}else c&&(a+="/>"); return a}}c.attr=function(c,a){if(!c)return this;if(y(c,"string"))if(1< arguments.length ) { var b = {};b[c]=a;c=b}else return k ( " snap . util . getattr . " + c , this ) . firstDefined ( ) ; for ( var m in c ) c [ h ] ( m ) & & k ( " snap . util . attr . " + m , this , c [ m ] ) ; return this } ; c . getBBox = function(c){if(!a.Matrix||!a.path)return this . node . getBBox ( ) ; var b = this,m=new a . Matrix ; if ( b . removed ) return a . _ . box ( ) ; for ( ; " use " = = b . type ; ) if ( c | | ( m = m.add(b.transform().localMatrix.translate(b.attr("x")||
0,b.attr("y")||0))),b.original)b=b.original;else var e=b.attr("xlink:href"),b=b.original=b.node.ownerDocument.getElementById(e.substring(e.indexOf("#")+1));var e=b._,h=a.path.get[b.type]||a.path.get.deflt;try{if(c)return e.bboxwt=h?a.path.getBBox(b.realPath=h(b)):a._.box(b.node.getBBox()),a._.box(e.bboxwt);b.realPath=h(b);b.matrix=b.transform().localMatrix;e.bbox=a.path.getBBox(a.path.map(b.realPath,m.add(b.matrix)));return a._.box(e.bbox)}catch(d){return a._.box()}};var f=function(){return this.string};
c.transform=function(c){var b=this._;if(null==c){var m=this;c=new a.Matrix(this.node.getCTM());for(var e=n(this),h=[e],d=new a.Matrix,l=e.toTransformString(),b=J(e)==J(this.matrix)?J(b.transform):l;"svg"!=m.type&&(m=m.parent()); )h.push(n(m));for(m=h.length;m--;)d.add(h[m]);return{string:b,globalMatrix:c,totalMatrix:d,localMatrix:e,diffMatrix:c.clone().add(e.invert()),global:c.toTransformString(),total:d.toTransformString(),local:l,toString:f}}c instanceof a.Matrix?this.matrix=c:n(this,c);this.node& &
("linearGradient"==this.type||"radialGradient"==this.type?v(this.node,{gradientTransform:this.matrix}):"pattern"==this.type?v(this.node,{patternTransform:this.matrix}):v(this.node,{transform:this.matrix}));return this};c.parent=function(){return x(this.node.parentNode)};c.append=c.add=function(c){if(c){if("set"==c.type){var a=this;c.forEach(function(c){a.add(c)});return this}c=x(c);this.node.appendChild(c.node);c.paper=this.paper}return this};c.appendTo=function(c){c&&(c=x(c),c.append(this)); return this};
c.prepend=function(c){if(c){if("set"==c.type){var a=this,b;c.forEach(function(c){b?b.after(c):a.prepend(c);b=c});return this}c=x(c);var m=c.parent();this.node.insertBefore(c.node,this.node.firstChild);this.add&&this.add(); c.paper=this.paper;this.parent()&&this.parent().add(); m& & m.add()}return this};c.prependTo=function(c){c=x(c);c.prepend(this);return this};c.before=function(c){if("set"==c.type){var a=this;c.forEach(function(c){var b=c.parent();a.node.parentNode.insertBefore(c.node,a.node);b&&b.add()});
this.parent().add();return this}c=x(c);var b=c.parent();this.node.parentNode.insertBefore(c.node,this.node);this.parent()&&this.parent().add(); b&&b.add(); c.paper=this.paper;return this};c.after=function(c){c=x(c);var a=c.parent();this.node.nextSibling?this.node.parentNode.insertBefore(c.node,this.node.nextSibling):this.node.parentNode.appendChild(c.node);this.parent()&&this.parent().add(); a&&a.add(); c.paper=this.paper;return this};c.insertBefore=function(c){c=x(c);var a=this.parent();c.node.parentNode.insertBefore(this.node,
c.node);this.paper=c.paper;a&&a.add(); c.parent()&&c.parent().add(); return this};c.insertAfter=function(c){c=x(c);var a=this.parent();c.node.parentNode.insertBefore(this.node,c.node.nextSibling);this.paper=c.paper;a&&a.add(); c.parent()&&c.parent().add(); return this};c.remove=function(){var c=this.parent();this.node.parentNode&&this.node.parentNode.removeChild(this.node); delete this.paper;this.removed=!0;c&&c.add(); return this};c.select=function(c){return x(this.node.querySelector(c))};c.selectAll=
function(c){c=this.node.querySelectorAll(c);for(var b=(a.set||Array)(),m=0;m< c.length ; m ++) b . push ( x ( c [ m ])); return b }; c . asPX = function(c,a){null==a&&(a=this.attr(c));return+b(this,c,a)};c.use=function(){var c , a = this.node.id;a||(a=this.id,v(this.node,{id:a}));c="linearGradient"==this.type||"radialGradient"==this.type||"pattern"==this.type?r(this.type,this.node.parentNode):r("use",this.node.parentNode);v(c.node,{"xlink:href":"#"+a});c.original=this;return c }; var l = / \S+/g;c.addClass=function(c){var a = (c||
"").match(l)||[];c=this.node;var b=c.className.baseVal,m=b.match(l)||[],e,h,d;if(a.length){for(e=0;d=a[e++];)h=m.indexOf(d),~h||m.push(d);a=m.join(" ");b!=a& & (c.className.baseVal=a)}return this};c.removeClass=function(c){var a=(c||"").match(l)||[];c=this.node;var b=c.className.baseVal,m=b.match(l)||[],e,h;if(m.length){for(e=0;h=a[e++];)h=m.indexOf(h),~h&&m.splice(h,1); a=m.join(" ");b!=a& & (c.className.baseVal=a)}return this};c.hasClass=function(c){return!!~(this.node.className.baseVal.match(l)||[]).indexOf(c)};
c.toggleClass=function(c,a){if(null!=a)return a?this.addClass(c):this.removeClass(c);var b=(c||"").match(l)||[],m=this.node,e=m.className.baseVal,h=e.match(l)||[],d,f,E;for(d=0;E=b[d++];)f=h.indexOf(E),~f?h.splice(f,1):h.push(E);b=h.join(" ");e!=b&&(m.className.baseVal=b); return this};c.clone=function(){var c=x(this.node.cloneNode(!0));v(c.node,"id")&&v(c.node,{id:c.id}); m(c);c.insertAfter(this);return c};c.toDefs=function(){u(this).appendChild(this.node);return this};c.pattern=c.toPattern=function(c,
a,b,m){var e=r("pattern",u(this));null==c&&(c=this.getBBox()); y(c,"object")& & "x"in c&&(a=c.y,b=c.width,m=c.height,c=c.x); v(e.node,{x:c,y:a,width:b,height:m,patternUnits:"userSpaceOnUse",id:e.id,viewBox:[c,a,b,m].join(" ")});e.node.appendChild(this.node);return e};c.marker=function(c,a,b,m,e,h){var d=r("marker",u(this));null==c&&(c=this.getBBox()); y(c,"object")& & "x"in c&&(a=c.y,b=c.width,m=c.height,e=c.refX||c.cx,h=c.refY||c.cy,c=c.x); v(d.node,{viewBox:[c,a,b,m].join(" "),markerWidth:b,markerHeight:m,
orient:"auto",refX:e||0,refY:h||0,id:d.id});d.node.appendChild(this.node);return d};var E=function(c,a,b,m){"function"!=typeof b||b.length||(m=b,b=L.linear);this.attr=c;this.dur=a;b&&(this.easing=b); m&&(this.callback=m)}; a._.Animation=E;a.animation=function(c,a,b,m){return new E(c,a,b,m)};c.inAnim=function(){var c=[],a;for(a in this.anims)this.anims[h](a)& & function(a){c.push({anim:new E(a._attrs,a.dur,a.easing,a._callback),mina:a,curStatus:a.status(),status:function(c){return a.status(c)},stop:function(){a.stop()}})}(this.anims[a]);
return c};a.animate=function(c,a,b,m,e,h){"function"!=typeof e||e.length||(h=e,e=L.linear);var d=L.time();c=L(c,a,d,d+m,L.time,b,e);h&&k.once("mina.finish."+c.id,h); return c};c.stop=function(){for(var c=this.inAnim(),a=0,b=c.length;a< b ; a + + ) c [ a ] . stop ( ) ; return this } ; c . animate = function(c,a,b,m){"function"!=typeof b | | b . length | | ( m = b,b=L.linear);c instanceof E & & ( m = c.callback,b=c.easing,a=b.dur,c=c.attr);var d = [],f=[],l={},t,ca,n,T=this,q;for(q in c ) if ( c [ h ] ( q ) ) { T . equal ? ( n = T.equal(q,J(c[q])),t=n.from,ca=
n.to,n=n.f):(t=+T.attr(q),ca=+c[q]);var la=y(t,"array")?t.length:1;l[q]=e(d.length,d.length+la,n);d=d.concat(t);f=f.concat(ca)}t=L.time();var p=L(d,f,t,t+a,L.time,function(c){var a={},b;for(b in l)l[h](b)&&(a[b]=l[b](c)); T.attr(a)},b);T.anims[p.id]=p;p._attrs=c;p._callback=m;k("snap.animcreated."+T.id,p);k.once("mina.finish."+p.id,function(){delete T.anims[p.id];m&&m.call(T)}); k.once("mina.stop."+p.id,function(){delete T.anims[p.id]});return T};var T={};c.data=function(c,b){var m=T[this.id]=T[this.id]||
{};if(0==arguments.length)return k("snap.data.get."+this.id,this,m,null),m;if(1==arguments.length){if(a.is(c,"object")){for(var e in c)c[h](e)&&this.data(e,c[e]); return this}k("snap.data.get."+this.id,this,m[c],c);return m[c]}m[c]=b;k("snap.data.set."+this.id,this,b,c);return this};c.removeData=function(c){null==c?T[this.id]={}:T[this.id]& & delete T[this.id][c];return this};c.outerSVG=c.toString=d(1);c.innerSVG=d()})(e.prototype);a.parse=function(c){var a=G.doc.createDocumentFragment(),b=!0,m=G.doc.createElement("div");
c=J(c);c.match(/^\s*< \s*svg(?:\s|>)/)||(c="< svg > "+c+"</ svg > ",b=!1);m.innerHTML=c;if(c=m.getElementsByTagName("svg")[0])if(b)a=c;else for(;c.firstChild;)a.appendChild(c.firstChild);m.innerHTML=aa;return new l(a)};l.prototype.select=e.prototype.select;l.prototype.selectAll=e.prototype.selectAll;a.fragment=function(){for(var c=Array.prototype.slice.call(arguments,0),b=G.doc.createDocumentFragment(),m=0,e=c.length;m< e ; m ++){ var h = c[m];h.node&&h.node.nodeType&&b.appendChild(h.node);h.nodeType&&b.appendChild(h);
"string"==typeof h& & b.appendChild(a.parse(h).node)}return new l(b)};a._.make=r;a._.wrap=x;s.prototype.el=function(c,a){var b=r(c,this.node);a&&b.attr(a); return b};k.on("snap.util.getattr",function(){var c=k.nt(),c=c.substring(c.lastIndexOf(".")+1),a=c.replace(/[A-Z]/g,function(c){return"-"+c.toLowerCase()});return pa[h](a)?this.node.ownerDocument.defaultView.getComputedStyle(this.node,null).getPropertyValue(a):v(this.node,c)});var pa={"alignment-baseline":0,"baseline-shift":0,clip:0,"clip-path":0,
"clip-rule":0,color:0,"color-interpolation":0,"color-interpolation-filters":0,"color-profile":0,"color-rendering":0,cursor:0,direction:0,display:0,"dominant-baseline":0,"enable-background":0,fill:0,"fill-opacity":0,"fill-rule":0,filter:0,"flood-color":0,"flood-opacity":0,font:0,"font-family":0,"font-size":0,"font-size-adjust":0,"font-stretch":0,"font-style":0,"font-variant":0,"font-weight":0,"glyph-orientation-horizontal":0,"glyph-orientation-vertical":0,"image-rendering":0,kerning:0,"letter-spacing":0,
"lighting-color":0,marker:0,"marker-end":0,"marker-mid":0,"marker-start":0,mask:0,opacity:0,overflow:0,"pointer-events":0,"shape-rendering":0,"stop-color":0,"stop-opacity":0,stroke:0,"stroke-dasharray":0,"stroke-dashoffset":0,"stroke-linecap":0,"stroke-linejoin":0,"stroke-miterlimit":0,"stroke-opacity":0,"stroke-width":0,"text-anchor":0,"text-decoration":0,"text-rendering":0,"unicode-bidi":0,visibility:0,"word-spacing":0,"writing-mode":0};k.on("snap.util.attr",function(c){var a=k.nt(),b={},a=a.substring(a.lastIndexOf(".")+
1);b[a]=c;var m=a.replace(/-(\w)/gi,function(c,a){return a.toUpperCase()}),a=a.replace(/[A-Z]/g,function(c){return"-"+c.toLowerCase()});pa[h](a)?this.node.style[m]=null==c?aa:c:v(this.node,b)});a.ajax=function(c,a,b,m){var e=new XMLHttpRequest,h=V();if(e){if(y(a,"function"))m=b,b=a,a=null;else if(y(a,"object")){var d=[],f;for(f in a)a.hasOwnProperty(f)&&d.push(encodeURIComponent(f)+"="+encodeURIComponent(a[f])); a=d.join("&")}e.open(a?"POST":"GET",c,!0); a&& (e.setRequestHeader("X-Requested-With","XMLHttpRequest"),
e.setRequestHeader("Content-type","application/x-www-form-urlencoded"));b&&(k.once("snap.ajax."+h+".0",b),k.once("snap.ajax."+h+".200",b),k.once("snap.ajax."+h+".304",b)); e.onreadystatechange=function(){4==e.readyState&&k("snap.ajax."+h+"."+e.status,m,e)}; if(4==e.readyState)return e;e.send(a);return e}};a.load=function(c,b,m){a.ajax(c,function(c){c=a.parse(c.responseText);m?b.call(m,c):b(c)})};a.getElementByPoint=function(c,a){var b,m,e=G.doc.elementFromPoint(c,a);if(G.win.opera& & "svg"==e.tagName){b=
e;m=b.getBoundingClientRect();b=b.ownerDocument;var h=b.body,d=b.documentElement;b=m.top+(g.win.pageYOffset||d.scrollTop||h.scrollTop)-(d.clientTop||h.clientTop||0);m=m.left+(g.win.pageXOffset||d.scrollLeft||h.scrollLeft)-(d.clientLeft||h.clientLeft||0);h=e.createSVGRect();h.x=c-m;h.y=a-b;h.width=h.height=1;b=e.getIntersectionList(h,null);b.length& & (e=b[b.length-1])}return e?x(e):null};a.plugin=function(c){c(a,e,s,G,l)};return G.win.Snap=a}();C.plugin(function(a,k,y,M,A){function w(a,d,f,b,q,e){null==
d& & "[object SVGMatrix]"==z.call(a)?(this.a=a.a,this.b=a.b,this.c=a.c,this.d=a.d,this.e=a.e,this.f=a.f):null!=a?(this.a=+a,this.b=+d,this.c=+f,this.d=+b,this.e=+q,this.f=+e):(this.a=1,this.c=this.b=0,this.d=1,this.f=this.e=0)}var z=Object.prototype.toString,d=String,f=Math;(function(n){function k(a){return a[0]*a[0]+a[1]*a[1]}function p(a){var d=f.sqrt(k(a));a[0]&&(a[0]/=d); a[1]& & (a[1]/=d)}n.add=function(a,d,e,f,n,p){var k=[[],[],[] ],u=[[this.a,this.c,this.e],[this.b,this.d,this.f],[0,0,1] ];d=[[a,
e,n],[d,f,p],[0,0,1] ];a& & a instanceof w& & (d=[[a.a,a.c,a.e],[a.b,a.d,a.f],[0,0,1] ]);for(a=0;3>a;a++)for(e=0;3>e;e++){for(f=n=0;3>f;f++)n+=u[a][f]*d[f][e];k[a][e]=n}this.a=k[0][0];this.b=k[1][0];this.c=k[0][1];this.d=k[1][1];this.e=k[0][2];this.f=k[1][2];return this};n.invert=function(){var a=this.a*this.d-this.b*this.c;return new w(this.d/a,-this.b/a,-this.c/a,this.a/a,(this.c*this.f-this.d*this.e)/a,(this.b*this.e-this.a*this.f)/a)};n.clone=function(){return new w(this.a,this.b,this.c,this.d,this.e,
this.f)};n.translate=function(a,d){return this.add(1,0,0,1,a,d)};n.scale=function(a,d,e,f){null==d&&(d=a); (e||f)&&this.add(1,0,0,1,e,f); this.add(a,0,0,d,0,0);(e||f)&&this.add(1,0,0,1,-e,-f); return this};n.rotate=function(b,d,e){b=a.rad(b);d=d||0;e=e||0;var l=+f.cos(b).toFixed(9);b=+f.sin(b).toFixed(9);this.add(l,b,-b,l,d,e);return this.add(1,0,0,1,-d,-e)};n.x=function(a,d){return a*this.a+d*this.c+this.e};n.y=function(a,d){return a*this.b+d*this.d+this.f};n.get=function(a){return+this[d.fromCharCode(97+
a)].toFixed(4)};n.toString=function(){return"matrix("+[this.get(0),this.get(1),this.get(2),this.get(3),this.get(4),this.get(5)].join()+")"};n.offset=function(){return[this.e.toFixed(4),this.f.toFixed(4)]};n.determinant=function(){return this.a*this.d-this.b*this.c};n.split=function(){var b={};b.dx=this.e;b.dy=this.f;var d=[[this.a,this.c],[this.b,this.d] ];b.scalex=f.sqrt(k(d[0]));p(d[0]);b.shear=d[0][0]*d[1][0]+d[0][1]*d[1][1];d[1]=[d[1][0]-d[0][0]*b.shear,d[1][1]-d[0][1]*b.shear];b.scaley=f.sqrt(k(d[1]));
p(d[1]);b.shear/=b.scaley;0>this.determinant()&&(b.scalex=-b.scalex); var e=-d[0][1],d=d[1][1];0>d?(b.rotate=a.deg(f.acos(d)),0>e&&(b.rotate=360-b.rotate)):b.rotate=a.deg(f.asin(e)); b.isSimple=!+b.shear.toFixed(9)&&(b.scalex.toFixed(9)==b.scaley.toFixed(9)||!b.rotate); b.isSuperSimple=!+b.shear.toFixed(9)&&b.scalex.toFixed(9)==b.scaley.toFixed(9)&&!b.rotate; b.noRotation=!+b.shear.toFixed(9)&&!b.rotate; return b};n.toTransformString=function(a){a=a||this.split();if(+a.shear.toFixed(9))return"m"+[this.get(0),
this.get(1),this.get(2),this.get(3),this.get(4),this.get(5)];a.scalex=+a.scalex.toFixed(4);a.scaley=+a.scaley.toFixed(4);a.rotate=+a.rotate.toFixed(4);return(a.dx||a.dy?"t"+[+a.dx.toFixed(4),+a.dy.toFixed(4)]:"")+(1!=a.scalex||1!=a.scaley?"s"+[a.scalex,a.scaley,0,0]:"")+(a.rotate?"r"+[+a.rotate.toFixed(4),0,0]:"")}})(w.prototype);a.Matrix=w;a.matrix=function(a,d,f,b,k,e){return new w(a,d,f,b,k,e)}});C.plugin(function(a,v,y,M,A){function w(h){return function(d){k.stop();d instanceof A& & 1==d.node.childNodes.length& &
("radialGradient"==d.node.firstChild.tagName||"linearGradient"==d.node.firstChild.tagName||"pattern"==d.node.firstChild.tagName)&&(d=d.node.firstChild,b(this).appendChild(d),d=u(d)); if(d instanceof v)if("radialGradient"==d.type||"linearGradient"==d.type||"pattern"==d.type){d.node.id||e(d.node,{id:d.id});var f=l(d.node.id)}else f=d.attr(h);else f=a.color(d),f.error?(f=a(b(this).ownerSVGElement).gradient(d))?(f.node.id||e(f.node,{id:f.id}),f=l(f.node.id)):f=d:f=r(f);d={};d[h]=f;e(this.node,d);this.node.style[h]=
x}}function z(a){k.stop();a==+a&&(a+="px"); this.node.style.fontSize=a}function d(a){var b=[];a=a.childNodes;for(var e=0,f=a.length;e< f ; e ++){ var l = a[e];3==l.nodeType&&b.push(l.nodeValue);"tspan"==l.tagName&&(1==l.childNodes.length&&3==l.firstChild.nodeType?b.push(l.firstChild.nodeValue):b.push(d(l)))}return b } function f (){ k . stop (); return this . node . style . fontSize } var n = a._.make,u=a._.wrap,p=a.is,b=a._.getSomeDefs,q=/^url \(#?([^)]+) \)$/,e=a._.$,l=a.url,r=String,s=a._.separator,x="";k.on("snap.util.attr.mask",
function(a){if(a instanceof v||a instanceof A){k.stop();a instanceof A&&1==a.node.childNodes.length&&(a=a.node.firstChild,b(this).appendChild(a),a=u(a)); if("mask"==a.type)var d=a;else d=n("mask",b(this)),d.node.appendChild(a.node);!d.node.id&&e(d.node,{id:d.id}); e(this.node,{mask:l(d.id)})}});(function(a){k.on("snap.util.attr.clip",a);k.on("snap.util.attr.clip-path",a);k.on("snap.util.attr.clipPath",a)})(function(a){if(a instanceof v||a instanceof A){k.stop();if("clipPath"==a.type)var d=a;else d=
n("clipPath",b(this)),d.node.appendChild(a.node),!d.node.id&&e(d.node,{id:d.id}); e(this.node,{"clip-path":l(d.id)})}});k.on("snap.util.attr.fill",w("fill"));k.on("snap.util.attr.stroke",w("stroke"));var G=/^([lr])(?:\(([^)]*)\))?(.*)$/i;k.on("snap.util.grad.parse",function(a){a=r(a);var b=a.match(G);if(!b)return null;a=b[1];var e=b[2],b=b[3],e=e.split(/\s*,\s*/).map(function(a){return+a==a?+a:a});1==e.length&&0==e[0]&&(e=[]); b=b.split("-");b=b.map(function(a){a=a.split(":");var b={color:a[0]};a[1]&&
(b.offset=parseFloat(a[1]));return b});return{type:a,params:e,stops:b}});k.on("snap.util.attr.d",function(b){k.stop();p(b,"array")&&p(b[0],"array")&&(b=a.path.toString.call(b)); b=r(b);b.match(/[ruo]/i)&&(b=a.path.toAbsolute(b)); e(this.node,{d:b})})(-1);k.on("snap.util.attr.#text",function(a){k.stop();a=r(a);for(a=M.doc.createTextNode(a);this.node.firstChild;)this.node.removeChild(this.node.firstChild);this.node.appendChild(a)})(-1);k.on("snap.util.attr.path",function(a){k.stop();this.attr({d:a})})(-1);
k.on("snap.util.attr.class",function(a){k.stop();this.node.className.baseVal=a})(-1);k.on("snap.util.attr.viewBox",function(a){a=p(a,"object")& & "x"in a?[a.x,a.y,a.width,a.height].join(" "):p(a,"array")?a.join(" "):a;e(this.node,{viewBox:a});k.stop()})(-1);k.on("snap.util.attr.transform",function(a){this.transform(a);k.stop()})(-1);k.on("snap.util.attr.r",function(a){"rect"==this.type&&(k.stop(),e(this.node,{rx:a,ry:a}))})(-1); k.on("snap.util.attr.textpath",function(a){k.stop();if("text"==this.type){var d,
f;if(!a&&this.textPath){for(a=this.textPath; a.node.firstChild;)this.node.appendChild(a.node.firstChild);a.remove();delete this.textPath}else if(p(a,"string")?(d=b(this),a=u(d.parentNode).path(a),d.appendChild(a.node),d=a.id,a.attr({id:d})):(a=u(a),a instanceof v&&(d=a.attr("id"),d||(d=a.id,a.attr({id:d})))),d)if(a=this.textPath,f=this.node,a)a.attr({"xlink:href":"#"+d}); else{for(a=e("textPath",{"xlink:href":"#"+d});f.firstChild;)a.appendChild(f.firstChild);f.appendChild(a);this.textPath=u(a)}}})(-1);
k.on("snap.util.attr.text",function(a){if("text"==this.type){for(var b=this.node,d=function(a){var b=e("tspan");if(p(a,"array"))for(var f=0;f< a.length ; f + + ) b . appendChild ( d ( a [ f ] ) ) ; else b . appendChild ( M . doc . createTextNode ( a ) ) ; b . normalize & & b . normalize ( ) ; return b } ; b . firstChild ; ) b . removeChild ( b . firstChild ) ; for ( a = d(a);a.firstChild;)b.appendChild(a.firstChild)}k.stop()})(-1);k.on("snap.util.attr.fontSize",z)(-1);k.on("snap.util.attr.font-size",z)(-1);k.on("snap.util.getattr.transform",function(){k.stop();
return this.transform()})(-1);k.on("snap.util.getattr.textpath",function(){k.stop();return this.textPath})(-1);(function(){function b(d){return function(){k.stop();var b=M.doc.defaultView.getComputedStyle(this.node,null).getPropertyValue("marker-"+d);return"none"==b?b:a(M.doc.getElementById(b.match(q)[1]))}}function d(a){return function(b){k.stop();var d="marker"+a.charAt(0).toUpperCase()+a.substring(1);if(""==b||!b)this.node.style[d]="none";else if("marker"==b.type){var f=b.node.id;f||e(b.node,{id:b.id});
this.node.style[d]=l(f)}}}k.on("snap.util.getattr.marker-end",b("end"))(-1);k.on("snap.util.getattr.markerEnd",b("end"))(-1);k.on("snap.util.getattr.marker-start",b("start"))(-1);k.on("snap.util.getattr.markerStart",b("start"))(-1);k.on("snap.util.getattr.marker-mid",b("mid"))(-1);k.on("snap.util.getattr.markerMid",b("mid"))(-1);k.on("snap.util.attr.marker-end",d("end"))(-1);k.on("snap.util.attr.markerEnd",d("end"))(-1);k.on("snap.util.attr.marker-start",d("start"))(-1);k.on("snap.util.attr.markerStart",
d("start"))(-1);k.on("snap.util.attr.marker-mid",d("mid"))(-1);k.on("snap.util.attr.markerMid",d("mid"))(-1)})();k.on("snap.util.getattr.r",function(){if("rect"==this.type& & e(this.node,"rx")==e(this.node,"ry"))return k.stop(),e(this.node,"rx")})(-1);k.on("snap.util.getattr.text",function(){if("text"==this.type||"tspan"==this.type){k.stop();var a=d(this.node);return 1==a.length?a[0]:a}})(-1);k.on("snap.util.getattr.#text",function(){return this.node.textContent})(-1);k.on("snap.util.getattr.viewBox",
function(){k.stop();var b=e(this.node,"viewBox");if(b)return b=b.split(s),a._.box(+b[0],+b[1],+b[2],+b[3])})(-1);k.on("snap.util.getattr.points",function(){var a=e(this.node,"points");k.stop();if(a)return a.split(s)})(-1);k.on("snap.util.getattr.path",function(){var a=e(this.node,"d");k.stop();return a})(-1);k.on("snap.util.getattr.class",function(){return this.node.className.baseVal})(-1);k.on("snap.util.getattr.fontSize",f)(-1);k.on("snap.util.getattr.font-size",f)(-1)});C.plugin(function(a,v,y,
M,A){function w(a){return a}function z(a){return function(b){return+b.toFixed(3)+a}}var d={"+":function(a,b){return a+b},"-":function(a,b){return a-b},"/":function(a,b){return a/b},"*":function(a,b){return a*b}},f=String,n=/[a-z]+$/i,u=/^\s*([+\-\/*])\s*=\s*([\d.eE+\-]+)\s*([^\d\s]+)?\s*$/;k.on("snap.util.attr",function(a){if(a=f(a).match(u)){var b=k.nt(),b=b.substring(b.lastIndexOf(".")+1),q=this.attr(b),e={};k.stop();var l=a[3]||"",r=q.match(n),s=d[a[1] ];r&& r==l?a=s(parseFloat(q),+a[2]):(q=this.asPX(b),
a=s(this.asPX(b),this.asPX(b,a[2]+l)));isNaN(q)||isNaN(a)||(e[b]=a,this.attr(e))}})(-10);k.on("snap.util.equal",function(a,b){var q=f(this.attr(a)||""),e=f(b).match(u);if(e){k.stop();var l=e[3]||"",r=q.match(n),s=d[e[1] ];if(r&&r==l)return{from:parseFloat(q),to:s(parseFloat(q),+e[2]),f:z(r)}; q=this.asPX(a);return{from:q,to:s(q,this.asPX(a,e[2]+l)),f:w}}})(-10)});C.plugin(function(a,v,y,M,A){var w=y.prototype,z=a.is;w.rect=function(a,d,k,p,b,q){var e;null==q&&(q=b); z(a,"object")& & "[object Object]"==
a?e=a:null!=a&&(e={x:a,y:d,width:k,height:p},null!=b&&(e.rx=b,e.ry=q)); return this.el("rect",e)};w.circle=function(a,d,k){var p;z(a,"object")& & "[object Object]"==a?p=a:null!=a&&(p={cx:a,cy:d,r:k}); return this.el("circle",p)};var d=function(){function a(){this.parentNode.removeChild(this)}return function(d,k){var p=M.doc.createElement("img"),b=M.doc.body;p.style.cssText="position:absolute;left:-9999em;top:-9999em";p.onload=function(){k.call(p);p.onload=p.onerror=null;b.removeChild(p)};p.onerror=a;
b.appendChild(p);p.src=d}}();w.image=function(f,n,k,p,b){var q=this.el("image");if(z(f,"object")& & "src"in f)q.attr(f);else if(null!=f){var e={"xlink:href":f,preserveAspectRatio:"none"};null!=n&&null!=k&&(e.x=n,e.y=k); null!=p&&null!=b?(e.width=p,e.height=b):d(f,function(){a._.$(q.node,{width:this.offsetWidth,height:this.offsetHeight})}); a._.$(q.node,e)}return q};w.ellipse=function(a,d,k,p){var b;z(a,"object")& & "[object Object]"==a?b=a:null!=a&&(b={cx:a,cy:d,rx:k,ry:p}); return this.el("ellipse",b)};
w.path=function(a){var d;z(a,"object")&&!z(a,"array")?d=a:a&&(d={d:a}); return this.el("path",d)};w.group=w.g=function(a){var d=this.el("g");1==arguments.length&&a&&!a.type?d.attr(a):arguments.length&&d.add(Array.prototype.slice.call(arguments,0)); return d};w.svg=function(a,d,k,p,b,q,e,l){var r={};z(a,"object")&&null==d?r=a:(null!=a&&(r.x=a),null!=d&&(r.y=d),null!=k&&(r.width=k),null!=p&&(r.height=p),null!=b&&null!=q&&null!=e&&null!=l&&(r.viewBox=[b,q,e,l])); return this.el("svg",r)};w.mask=function(a){var d=
this.el("mask");1==arguments.length&&a&&!a.type?d.attr(a):arguments.length&&d.add(Array.prototype.slice.call(arguments,0)); return d};w.ptrn=function(a,d,k,p,b,q,e,l){if(z(a,"object"))var r=a;else arguments.length?(r={},null!=a&&(r.x=a),null!=d&&(r.y=d),null!=k&&(r.width=k),null!=p&&(r.height=p),null!=b&&null!=q&&null!=e&&null!=l&&(r.viewBox=[b,q,e,l])):r={patternUnits:"userSpaceOnUse"}; return this.el("pattern",r)};w.use=function(a){return null!=a?(make("use",this.node),a instanceof v& & (a.attr("id")||
a.attr({id:ID()}),a=a.attr("id")),this.el("use",{"xlink:href":a})):v.prototype.use.call(this)};w.text=function(a,d,k){var p={};z(a,"object")?p=a:null!=a&&(p={x:a,y:d,text:k||""}); return this.el("text",p)};w.line=function(a,d,k,p){var b={};z(a,"object")?b=a:null!=a&&(b={x1:a,x2:k,y1:d,y2:p}); return this.el("line",b)};w.polyline=function(a){1< arguments.length & & ( a = Array.prototype.slice.call(arguments,0));var d = {};z(a,"object")&&!z(a,"array")?d=a:null!=a&&(d={points:a});return this . el ( " polyline " , d ) } ;
w.polygon=function(a){1< arguments.length & & ( a = Array.prototype.slice.call(arguments,0));var d = {};z(a,"object")&&!z(a,"array")?d=a:null!=a&&(d={points:a});return this . el ( " polygon " , d ) } ; ( function ( ) { function d ( ) { return this . selectAll ( " stop " ) } function n ( b , d ) { var f = e("stop"),k={offset:+d+"%"};b=a.color(b);k["stop-color"]=b.hex;1 > b.opacity&&(k["stop-opacity"]=b.opacity); e(f,k);this.node.appendChild(f);return this}function u(){if("linearGradient"==this.type){var b=e(this.node,"x1")||0,d=e(this.node,"x2")||
1,f=e(this.node,"y1")||0,k=e(this.node,"y2")||0;return a._.box(b,f,math.abs(d-b),math.abs(k-f))}b=this.node.r||0;return a._.box((this.node.cx||0.5)-b,(this.node.cy||0.5)-b,2*b,2*b)}function p(a,d){function f(a,b){for(var d=(b-u)/(a-w),e=w;e< a ; e + + ) h [ e ] . offset = +(+u+d*(e-w)).toFixed(2);w=a;u=b}var n = k("snap.util.grad.parse",null,d).firstDefined(),p;if(!n)return null ; n . params . unshift ( a ) ; p = "l" = = n . type . toLowerCase ( ) ? b . apply ( 0 , n . params ) :q . apply ( 0 , n . params ) ; n . type ! = n . type . toLowerCase ( ) & & e ( p . node , { gradientUnits: " userSpaceOnUse " } ) ;
var h=n.stops,n=h.length,u=0,w=0;n--;for(var v=0;v< n ; v + + ) " offset " in h [ v ] & & f ( v , h [ v ] . offset ) ; h [ n ] . offset = h[n].offset||100;f(n,h[n].offset);for(v=0;v<=n;v++){var y = h[v];p.addStop(y.color,y.offset)}return p } function b ( b , k , p , q , w ) { b = a._.make("linearGradient",b);b.stops=d;b.addStop=n;b.getBBox=u;null!=k&&e(b.node,{x1:k,y1:p,x2:q,y2:w});return b } function q ( b , k , p , q , w , h ) { b = a._.make("radialGradient",b);b.stops=d;b.addStop=n;b.getBBox=u;null!=k&&e(b.node,{cx:k,cy:p,r:q});null!=w&&null!=h&&e(b.node,{fx:w,fy:h});
return b}var e=a._.$;w.gradient=function(a){return p(this.defs,a)};w.gradientLinear=function(a,d,e,f){return b(this.defs,a,d,e,f)};w.gradientRadial=function(a,b,d,e,f){return q(this.defs,a,b,d,e,f)};w.toString=function(){var b=this.node.ownerDocument,d=b.createDocumentFragment(),b=b.createElement("div"),e=this.node.cloneNode(!0);d.appendChild(b);b.appendChild(e);a._.$(e,{xmlns:"http://www.w3.org/2000/svg"});b=b.innerHTML;d.removeChild(d.firstChild);return b};w.clear=function(){for(var a=this.node.firstChild,
b;a;)b=a.nextSibling,"defs"!=a.tagName?a.parentNode.removeChild(a):w.clear.call({node:a}),a=b}})()});C.plugin(function(a,k,y,M){function A(a){var b=A.ps=A.ps||{};b[a]?b[a].sleep=100:b[a]={sleep:100};setTimeout(function(){for(var d in b)b[L](d)& & d!=a& & (b[d].sleep--,!b[d].sleep& & delete b[d])});return b[a]}function w(a,b,d,e){null==a&&(a=b=d=e=0); null==b&&(b=a.y,d=a.width,e=a.height,a=a.x); return{x:a,y:b,width:d,w:d,height:e,h:e,x2:a+d,y2:b+e,cx:a+d/2,cy:b+e/2,r1:F.min(d,e)/2,r2:F.max(d,e)/2,r0:F.sqrt(d*
d+e*e)/2,path:s(a,b,d,e),vb:[a,b,d,e].join(" ")}}function z(){return this.join(",").replace(N,"$1")}function d(a){a=C(a);a.toString=z;return a}function f(a,b,d,h,f,k,l,n,p){if(null==p)return e(a,b,d,h,f,k,l,n);if(0>p||e(a,b,d,h,f,k,l,n)< p ) p = void 0 ; else { var q = 0.5,O=1-q,s;for(s=e(a,b,d,h,f,k,l,n,O);0.01<Z(s-p);)q/=2,O+=(s<p?1:-1)*q,s=e(a,b,d,h,f,k,l,n,O);p=O}return u ( a , b , d , h , f , k , l , n , p ) } function n ( b , d ) { function e ( a ) { return + ( + a ) . toFixed ( 3 ) } return a . _ . cacher ( function ( a , h , l ) { a instanceof k & & ( a = a.attr("d"));
a=I(a);for(var n,p,D,q,O="",s={},c=0,t=0,r=a.length;t< r ; t + + ) { D = a[t];if("M"==D[0])n=+D[1],p=+D[2];else{q=f(n,p,D[1],D[2],D[3],D[4],D[5],D[6]);if(c+q > h){if(d&&!s.start){n=f(n,p,D[1],D[2],D[3],D[4],D[5],D[6],h-c); O+=["C"+e(n.start.x),e(n.start.y),e(n.m.x),e(n.m.y),e(n.x),e(n.y)];if(l)return O;s.start=O;O=["M"+e(n.x),e(n.y)+"C"+e(n.n.x),e(n.n.y),e(n.end.x),e(n.end.y),e(D[5]),e(D[6])].join();c+=q;n=+D[5];p=+D[6];continue}if(!b& & !d)return n=f(n,p,D[1],D[2],D[3],D[4],D[5],D[6],h-c)}c+=q;n=+D[5];p=+D[6]}O+=
D.shift()+D}s.end=O;return n=b?c:d?s:u(n,p,D[0],D[1],D[2],D[3],D[4],D[5],1)},null,a._.clone)}function u(a,b,d,e,h,f,k,l,n){var p=1-n,q=ma(p,3),s=ma(p,2),c=n*n,t=c*n,r=q*a+3*s*n*d+3*p*n*n*h+t*k,q=q*b+3*s*n*e+3*p*n*n*f+t*l,s=a+2*n*(d-a)+c*(h-2*d+a),t=b+2*n*(e-b)+c*(f-2*e+b),x=d+2*n*(h-d)+c*(k-2*h+d),c=e+2*n*(f-e)+c*(l-2*f+e);a=p*a+n*d;b=p*b+n*e;h=p*h+n*k;f=p*f+n*l;l=90-180*F.atan2(s-x,t-c)/S;return{x:r,y:q,m:{x:s,y:t},n:{x:x,y:c},start:{x:a,y:b},end:{x:h,y:f},alpha:l}}function p(b,d,e,h,f,n,k,l){a.is(b,
"array")||(b=[b,d,e,h,f,n,k,l]);b=U.apply(null,b);return w(b.min.x,b.min.y,b.max.x-b.min.x,b.max.y-b.min.y)}function b(a,b,d){return b>=a.x& & b< =a.x+a.width& & d>=a.y& & d< =a.y+a.height}function q(a,d){a=w(a);d=w(d);return b(d,a.x,a.y)||b(d,a.x2,a.y)||b(d,a.x,a.y2)||b(d,a.x2,a.y2)||b(a,d.x,d.y)||b(a,d.x2,d.y)||b(a,d.x,d.y2)||b(a,d.x2,d.y2)||(a.x< d.x2 & & a . x > d.x||d.x< a.x2 & & d . x > a.x)& & (a.y< d.y2 & & a . y > d.y||d.y< a.y2 & & d . y > a.y)}function e(a,b,d,e,h,f,n,k,l){null==l&&(l=1); l=(1< l ? 1:0 > l?0:l)/2;for(var p=[-0.1252,
0.1252,-0.3678,0.3678,-0.5873,0.5873,-0.7699,0.7699,-0.9041,0.9041,-0.9816,0.9816],q=[0.2491,0.2491,0.2335,0.2335,0.2032,0.2032,0.1601,0.1601,0.1069,0.1069,0.0472,0.0472],s=0,c=0;12>c;c++)var t=l*p[c]+l,r=t*(t*(-3*a+9*d-9*h+3*n)+6*a-12*d+6*h)-3*a+3*d,t=t*(t*(-3*b+9*e-9*f+3*k)+6*b-12*e+6*f)-3*b+3*e,s=s+q[c]*F.sqrt(r*r+t*t);return l*s}function l(a,b,d){a=I(a);b=I(b);for(var h,f,l,n,k,s,r,O,x,c,t=d?0:[],w=0,v=a.length;w< v ; w + + ) if ( x = a[w],"M"==x[0])h=k=x[1],f=s=x[2];else{"C"==x[0]?(x=[h,f].concat(x.slice(1)),
h=x[6],f=x[7]):(x=[h,f,h,f,k,s,k,s],h=k,f=s);for(var G=0,y=b.length;G< y ; G + + ) if ( c = b[G],"M"==c[0])l=r=c[1],n=O=c[2];else{"C"==c[0]?(c=[l,n].concat(c.slice(1)),l=c[6],n=c[7]):(c=[l,n,l,n,r,O,r,O],l=r,n=O);var z ; var K = x,B=c;z=d;var H = p(K),J=p(B);if(q(H,J)){for(var H = e.apply(0,K),J=e.apply(0,B),H=~~(H/8),J=~~(J/8),U=[],A=[],F={},M=z?0:[],P=0;P<H+1;P++){var C = u.apply(0,K.concat(P/H));U.push({x:C.x,y:C.y,t:P/H})}for(P=0;P<J+1;P++)C=u.apply(0,B.concat(P/J)),A.push({x:C.x,y:C.y,t:P/J});for(P=0;P<H;P++)for(K=
0;K< J ; K + + ) { var Q = U[P],L=U[P+1],B=A[K],C=A[K+1],N=0.001 > Z(L.x-Q.x)?"y":"x",S=0.001>Z(C.x-B.x)?"y":"x",R;R=Q.x;var Y=Q.y,V=L.x,ea=L.y,fa=B.x,ga=B.y,ha=C.x,ia=C.y;if(W(R,V)< X ( fa , ha ) | | X ( R , V ) > W(fa,ha)||W(Y,ea)< X ( ga , ia ) | | X ( Y , ea ) > W(ga,ia))R=void 0;else{var $=(R*ea-Y*V)*(fa-ha)-(R-V)*(fa*ia-ga*ha),aa=(R*ea-Y*V)*(ga-ia)-(Y-ea)*(fa*ia-ga*ha),ja=(R-V)*(ga-ia)-(Y-ea)*(fa-ha);if(ja){var $=$/ja,aa=aa/ja,ja=+$.toFixed(2),ba=+aa.toFixed(2);R=ja< +X(R,V).toFixed(2)||ja>+W(R,V).toFixed(2)||ja< +X(fa,ha).toFixed(2)||
ja>+W(fa,ha).toFixed(2)||ba< +X(Y,ea).toFixed(2)||ba>+W(Y,ea).toFixed(2)||ba< +X(ga,ia).toFixed(2)||ba>+W(ga,ia).toFixed(2)?void 0:{x:$,y:aa}}else R=void 0}R& & F[R.x.toFixed(4)]!=R.y.toFixed(4)& & (F[R.x.toFixed(4)]=R.y.toFixed(4),Q=Q.t+Z((R[N]-Q[N])/(L[N]-Q[N]))*(L.t-Q.t),B=B.t+Z((R[S]-B[S])/(C[S]-B[S]))*(C.t-B.t),0< =Q& & 1>=Q& & 0< =B& & 1>=B& & (z?M++:M.push({x:R.x,y:R.y,t1:Q,t2:B})))}z=M}else z=z?0:[];if(d)t+=z;else{H=0;for(J=z.length;H< J ; H + + ) z [ H ] . segment1 = w,z[H].segment2=G,z[H].bez1=x,z[H].bez2=c;t=t.concat(z)}}}return t }
function r(a){var b=A(a);if(b.bbox)return C(b.bbox);if(!a)return w();a=I(a);for(var d=0,e=0,h=[],f=[],l,n=0,k=a.length;n< k ; n + + ) l = a[n],"M"==l[0]?(d=l[1],e=l[2],h.push(d),f.push(e)):(d=U(d,e,l[1],l[2],l[3],l[4],l[5],l[6]),h=h.concat(d.min.x,d.max.x),f=f.concat(d.min.y,d.max.y),d=l[5],e=l[6]);a=X.apply(0,h);l=X.apply(0,f);h=W.apply(0,h);f=W.apply(0,f);f=w(a,l,h-a,f-l);b.bbox=C(f);return f } function s ( a , b , d , e , h ) { if ( h ) return [ [ " M " , + a + + h , b ] , [ " l " , d-2 * h , 0 ] , [ " a " , h , h , 0 , 0 , 1 , h , h ] , [ " l " , 0 , e-2 * h ] , [ " a " , h , h , 0 , 0 , 1 ,
-h,h],["l",2*h-d,0],["a",h,h,0,0,1,-h,-h],["l",0,2*h-e],["a",h,h,0,0,1,h,-h],["z"] ];a=[["M",a,b],["l",d,0],["l",0,e],["l",-d,0],["z"] ];a.toString=z;return a}function x(a,b,d,e,h){null==h&&null==e&&(e=d); a=+a;b=+b;d=+d;e=+e;if(null!=h){var f=Math.PI/180,l=a+d*Math.cos(-e*f);a+=d*Math.cos(-h*f);var n=b+d*Math.sin(-e*f);b+=d*Math.sin(-h*f);d=[["M",l,n],["A",d,d,0,+(180< h-e ) , 0 , a , b ] ] } else d = [["M",a,b],["m",0,-e],["a",d,e,0,1,1,0,2*e],["a",d,e,0,1,1,0,-2*e],["z"] ] ; d . toString = z;return d } function G ( b ) { var e =
A(b);if(e.abs)return d(e.abs);Q(b,"array")&&Q(b&&b[0],"array")||(b=a.parsePathString(b)); if(!b||!b.length)return[["M",0,0] ];var h=[],f=0,l=0,n=0,k=0,p=0;"M"==b[0][0]&&(f=+b[0][1],l=+b[0][2],n=f,k=l,p++,h[0]=["M",f,l]); for(var q=3==b.length&&"M"==b[0][0]&&"R"==b[1][0].toUpperCase()&&"Z"==b[2][0].toUpperCase(),s,r,w=p,c=b.length; w< c ; w + + ) { h . push ( s = []);r=b[w];p=r[0];if(p!=p.toUpperCase())switch(s[0]=p.toUpperCase(),s[0]){case " A " :s [ 1 ] = r [ 1 ] ; s [ 2 ] = r [ 2 ] ; s [ 3 ] = r [ 3 ] ; s [ 4 ] = r [ 4 ] ; s [ 5 ] = r [ 5 ] ; s [ 6 ] = + r [ 6 ] + f ; s [ 7 ] = + r [ 7 ] +
l;break;case "V":s[1]=+r[1]+l;break;case "H":s[1]=+r[1]+f;break;case "R":for(var t=[f,l].concat(r.slice(1)),u=2,v=t.length;u< v ; u + + ) t [ u ] = + t [ u ] + f , t [ + + u ] = + t [ u ] + l ; h . pop ( ) ; h = h.concat(P(t,q));break;case " O " :h . pop ( ) ; t = x(f,l,r[1],r[2]);t.push(t[0]);h=h.concat(t);break;case " U " :h . pop ( ) ; h = h.concat(x(f,l,r[1],r[2],r[3]));s=["U"].concat(h[h.length-1].slice(-2));break;case " M " :n = +r[1]+f,k=+r[2]+l;default:for(u=1,v=r.length;u<v;u++)s[u]=+r[u]+(u%2?f:l)}else if ( " R " = = p ) t = [f,l].concat(r.slice(1)),h.pop(),h=h.concat(P(t,
q)),s=["R"].concat(r.slice(-2));else if("O"==p)h.pop(),t=x(f,l,r[1],r[2]),t.push(t[0]),h=h.concat(t);else if("U"==p)h.pop(),h=h.concat(x(f,l,r[1],r[2],r[3])),s=["U"].concat(h[h.length-1].slice(-2));else for(t=0,u=r.length;t< u ; t + + ) s [ t ] = r [ t ] ; p = p.toUpperCase();if("O"!=p)switch(s[0]){case " Z " :f = +n;l=+k;break;case " H " :f = s[1];break;case " V " :l = s[1];break;case " M " :n = s[s.length-2],k=s[s.length-1];default:f=s[s.length-2],l=s[s.length-1]}}h.toString=z;e.abs=d(h);return h } function h ( a , b , d , e ) { return [ a , b , d , e , d ,
e]}function J(a,b,d,e,h,f){var l=1/3,n=2/3;return[l*a+n*d,l*b+n*e,l*h+n*d,l*f+n*e,h,f]}function K(b,d,e,h,f,l,n,k,p,s){var r=120*S/180,q=S/180*(+f||0),c=[],t,x=a._.cacher(function(a,b,c){var d=a*F.cos(c)-b*F.sin(c);a=a*F.sin(c)+b*F.cos(c);return{x:d,y:a}});if(s)v=s[0],t=s[1],l=s[2],u=s[3];else{t=x(b,d,-q);b=t.x;d=t.y;t=x(k,p,-q);k=t.x;p=t.y;F.cos(S/180*f);F.sin(S/180*f);t=(b-k)/2;v=(d-p)/2;u=t*t/(e*e)+v*v/(h*h);1< u & & ( u = F.sqrt(u),e*=u,h*=u);var u = e*e,w=h*h,u=(l==n?-1:1)*F.sqrt(Z((u*w-u*v*v-w*t*t)/
(u*v*v+w*t*t)));l=u*e*v/h+(b+k)/2;var u=u*-h*t/e+(d+p)/2,v=F.asin(((d-u)/h).toFixed(9));t=F.asin(((p-u)/h).toFixed(9));v=b< l ? S-v:v ; t = k<l?S-t:t;0 > v&&(v=2*S+v); 0>t&&(t=2*S+t); n&&v>t&&(v-=2*S); !n& & t>v& & (t-=2*S)}if(Z(t-v)>r){var c=t,w=k,G=p;t=v+r*(n&&t>v?1:-1); k=l+e*F.cos(t);p=u+h*F.sin(t);c=K(k,p,e,h,f,0,n,w,G,[t,c,l,u])}l=t-v;f=F.cos(v);r=F.sin(v);n=F.cos(t);t=F.sin(t);l=F.tan(l/4);e=4/3*e*l;l*=4/3*h;h=[b,d];b=[b+e*r,d-l*f];d=[k+e*t,p-l*n];k=[k,p];b[0]=2*h[0]-b[0];b[1]=2*h[1]-b[1];if(s)return[b,d,k].concat(c);
c=[b,d,k].concat(c).join().split(",");s=[];k=0;for(p=c.length;k< p ; k + + ) s [ k ] = k % 2 ? x ( c [ k-1 ] , c [ k ] , q ) . y:x ( c [ k ] , c [ k + 1 ] , q ) . x ; return s } function U ( a , b , d , e , h , f , l , k ) { for ( var n = [],p=[[],[] ] , s , r , c , t , q = 0;2 > q;++q)0==q?(r=6*a-12*d+6*h,s=-3*a+9*d-9*h+3*l,c=3*d-3*a):(r=6*b-12*e+6*f,s=-3*b+9*e-9*f+3*k,c=3*e-3*b),1E-12>Z(s)?1E-12>Z(r)||(s=-c/r,0< s & & 1 > s&&n.push(s)):(t=r*r-4*c*s,c=F.sqrt(t),0>t||(t=(-r+c)/(2*s),0<t&&1>t&&n.push(t),s=(-r-c)/(2*s),0<s&&1>s&&n.push(s))); for(r=q=n.length;q--;)s=n[q],c=1-s,p[0][q]=c*c*c*a+3*
c*c*s*d+3*c*s*s*h+s*s*s*l,p[1][q]=c*c*c*b+3*c*c*s*e+3*c*s*s*f+s*s*s*k;p[0][r]=a;p[1][r]=b;p[0][r+1]=l;p[1][r+1]=k;p[0].length=p[1].length=r+2;return{min:{x:X.apply(0,p[0]),y:X.apply(0,p[1])},max:{x:W.apply(0,p[0]),y:W.apply(0,p[1])}}}function I(a,b){var e=!b&&A(a); if(!b& & e.curve)return d(e.curve);var f=G(a),l=b&&G(b),n={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},k={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},p=function(a,b,c){if(!a)return["C",b.x,b.y,b.x,b.y,b.x,b.y]; a[0]in{T:1,Q:1}||(b.qx=b.qy=null);
switch(a[0]){case "M":b.X=a[1];b.Y=a[2];break;case "A":a=["C"].concat(K.apply(0,[b.x,b.y].concat(a.slice(1))));break;case "S":"C"==c||"S"==c?(c=2*b.x-b.bx,b=2*b.y-b.by):(c=b.x,b=b.y);a=["C",c,b].concat(a.slice(1));break;case "T":"Q"==c||"T"==c?(b.qx=2*b.x-b.qx,b.qy=2*b.y-b.qy):(b.qx=b.x,b.qy=b.y);a=["C"].concat(J(b.x,b.y,b.qx,b.qy,a[1],a[2]));break;case "Q":b.qx=a[1];b.qy=a[2];a=["C"].concat(J(b.x,b.y,a[1],a[2],a[3],a[4]));break;case "L":a=["C"].concat(h(b.x,b.y,a[1],a[2]));break;case "H":a=["C"].concat(h(b.x,
b.y,a[1],b.y));break;case "V":a=["C"].concat(h(b.x,b.y,b.x,a[1]));break;case "Z":a=["C"].concat(h(b.x,b.y,b.X,b.Y))}return a},s=function(a,b){if(7< a [ b ] . length ) { a [ b ] . shift ( ) ; for ( var c = a[b];c.length;)q[b]="A",l&&(u[b]="A"),a.splice(b++,0,["C"].concat(c.splice(0,6)));a.splice(b,1);v=W(f.length,l&&l.length||0)}},r=function(a,b,c,d,e){a&&b&&"M"==a[e][0]&&"M"!=b[e][0]&&(b.splice(e,0,["M",d.x,d.y]),c.bx=0,c.by=0,c.x=a[e][1],c.y=a[e][2],v=W(f.length,l&&l.length||0))},q=[],u=[],c="",t="",x=0,v=W(f.length,
l&&l.length||0); for(;x< v ; x + + ) { f [ x ] & & ( c = f[x][0]);"C"!=c&&(q[x]=c,x&&(t=q[x-1]));f[x]=p(f[x],n,t);"A"!=q[x]&&"C"==c&&(q[x]="C");s(f,x);l&&(l[x]&&(c=l[x][0]),"C"!=c&&(u[x]=c,x&&(t=u[x-1])),l[x]=p(l[x],k,t),"A"!=u[x]&&"C"==c&&(u[x]="C"),s(l,x));r(f,l,n,k,x);r(l,f,k,n,x);var w = f[x],z=l&&l[x],y=w.length,U=l&&z.length;n.x=w[y-2];n.y=w[y-1];n.bx=$(w[y-4])||n.x;n.by=$(w[y-3])||n.y;k.bx=l&&($(z[U-4])||k.x);k.by=l&&($(z[U-3])||k.y);k.x=l&&z[U-2];k.y=l&&z[U-1]}l||(e.curve=d(f));return l ? [ f , l ] :f } function P ( a ,
b){for(var d=[],e=0,h=a.length;h-2*!b>e;e+=2){var f=[{x:+a[e-2],y:+a[e-1]},{x:+a[e],y:+a[e+1]},{x:+a[e+2],y:+a[e+3]},{x:+a[e+4],y:+a[e+5]}];b?e?h-4==e?f[3]={x:+a[0],y:+a[1]}:h-2==e&&(f[2]={x:+a[0],y:+a[1]},f[3]={x:+a[2],y:+a[3]}):f[0]={x:+a[h-2],y:+a[h-1]}:h-4==e?f[3]=f[2]:e||(f[0]={x:+a[e],y:+a[e+1]}); d.push(["C",(-f[0].x+6*f[1].x+f[2].x)/6,(-f[0].y+6*f[1].y+f[2].y)/6,(f[1].x+6*f[2].x-f[3].x)/6,(f[1].y+6*f[2].y-f[3].y)/6,f[2].x,f[2].y])}return d}y=k.prototype;var Q=a.is,C=a._.clone,L="hasOwnProperty",
N=/,?([a-z]),?/gi,$=parseFloat,F=Math,S=F.PI,X=F.min,W=F.max,ma=F.pow,Z=F.abs;M=n(1);var na=n(),ba=n(0,1),V=a._unit2px;a.path=A;a.path.getTotalLength=M;a.path.getPointAtLength=na;a.path.getSubpath=function(a,b,d){if(1E-6>this.getTotalLength(a)-d)return ba(a,b).end;a=ba(a,d,1);return b?ba(a,b).end:a};y.getTotalLength=function(){if(this.node.getTotalLength)return this.node.getTotalLength()};y.getPointAtLength=function(a){return na(this.attr("d"),a)};y.getSubpath=function(b,d){return a.path.getSubpath(this.attr("d"),
b,d)};a._.box=w;a.path.findDotsAtSegment=u;a.path.bezierBBox=p;a.path.isPointInsideBBox=b;a.path.isBBoxIntersect=q;a.path.intersection=function(a,b){return l(a,b)};a.path.intersectionNumber=function(a,b){return l(a,b,1)};a.path.isPointInside=function(a,d,e){var h=r(a);return b(h,d,e)& & 1==l(a,[["M",d,e],["H",h.x2+10] ],1)%2};a.path.getBBox=r;a.path.get={path:function(a){return a.attr("path")},circle:function(a){a=V(a);return x(a.cx,a.cy,a.r)},ellipse:function(a){a=V(a);return x(a.cx||0,a.cy||0,a.rx,
a.ry)},rect:function(a){a=V(a);return s(a.x||0,a.y||0,a.width,a.height,a.rx,a.ry)},image:function(a){a=V(a);return s(a.x||0,a.y||0,a.width,a.height)},line:function(a){return"M"+[a.attr("x1")||0,a.attr("y1")||0,a.attr("x2"),a.attr("y2")]},polyline:function(a){return"M"+a.attr("points")},polygon:function(a){return"M"+a.attr("points")+"z"},deflt:function(a){a=a.node.getBBox();return s(a.x,a.y,a.width,a.height)}};a.path.toRelative=function(b){var e=A(b),h=String.prototype.toLowerCase;if(e.rel)return d(e.rel);
a.is(b,"array")&&a.is(b&&b[0],"array")||(b=a.parsePathString(b)); var f=[],l=0,n=0,k=0,p=0,s=0;"M"==b[0][0]&&(l=b[0][1],n=b[0][2],k=l,p=n,s++,f.push(["M",l,n])); for(var r=b.length;s< r ; s + + ) { var q = f[s]=[],x=b[s];if(x[0]!=h.call(x[0]))switch(q[0]=h.call(x[0]),q[0]){case " a " :q [ 1 ] = x [ 1 ] ; q [ 2 ] = x [ 2 ] ; q [ 3 ] = x [ 3 ] ; q [ 4 ] = x [ 4 ] ; q [ 5 ] = x [ 5 ] ; q [ 6 ] = + ( x [ 6 ] -l ) . toFixed ( 3 ) ; q [ 7 ] = + ( x [ 7 ] -n ) . toFixed ( 3 ) ; break ; case " v " :q [ 1 ] = + ( x [ 1 ] -n ) . toFixed ( 3 ) ; break ; case " m " :k = x[1],p=x[2];default:for(var c = 1,t=x.length;c<t;c++)q[c]=+(x[c]-(c%2?l:
n)).toFixed(3)}else for(f[s]=[],"m"==x[0]&&(k=x[1]+l,p=x[2]+n),q=0,c=x.length; q< c ; q + + ) f [ s ] [ q ] = x [ q ] ; x = f[s].length;switch(f[s][0]){case " z " :l = k;n=p;break;case " h " :l + = + f [ s ] [ x-1 ] ; break ; case " v " :n + = + f [ s ] [ x-1 ] ; break ; default:l + = + f [ s ] [ x-2 ] , n + = + f [ s ] [ x-1 ] } } f . toString = z;e.rel=d(f);return f } ; a . path . toAbsolute = G;a.path.toCubic=I;a.path.map=function(a,b){if(!b)return a ; var d , e , h , f , l , n , k ; a = I(a);h=0;for(l=a.length;h<l;h++)for(k=a[h],f=1,n=k.length;f<n;f+=2)d=b.x(k[f],k[f+1]),e=b.y(k[f],k[f+1]),k[f]=d,k[f+1]=e;return a } ;
a.path.toString=z;a.path.clone=d});C.plugin(function(a,v,y,C){var A=Math.max,w=Math.min,z=function(a){this.items=[];this.bindings={};this.length=0;this.type="set";if(a)for(var f=0,n=a.length;f< n ; f + + ) a [ f ] & & ( this [ this . items . length ] = this . items [ this . items . length ] = a [ f ] , this . length + + ) } ; v = z.prototype;v.push=function(){for(var a , f , n = 0,k=arguments.length;n<k;n++)if(a=arguments[n])f=this.items.length,this[f]=this.items[f]=a,this.length++;return this } ; v . pop = function(){this.length&&delete this [ this . length-- ] ;
return this.items.pop()};v.forEach=function(a,f){for(var n=0,k=this.items.length;n< k & & ! 1 ! = = a . call ( f , this . items [ n ] , n ) ; n + + ) ; return this } ; v . animate = function(d,f,n,u){"function"!=typeof n | | n . length | | ( u = n,n=L.linear);d instanceof a . _ . Animation & & ( u = d.callback,n=d.easing,f=n.dur,d=d.attr);var p = arguments;if(a.is(d,"array")&&a.is(p[p.length-1],"array"))var b = !0;var q , e = function(){q?this.b=q:q=this.b},l=0,r=u&&function(){l++==this.length&&u.call(this)};return this . forEach ( function ( a , l ) { k . once ( " snap . animcreated . " +
a.id,e);b?p[l]&&a.animate.apply(a,p[l]):a.animate(d,f,n,r)})}; v.remove=function(){for(;this.length;)this.pop().remove();return this};v.bind=function(a,f,k){var u={};if("function"==typeof f)this.bindings[a]=f;else{var p=k||a;this.bindings[a]=function(a){u[p]=a;f.attr(u)}}return this};v.attr=function(a){var f={},k;for(k in a)if(this.bindings[k])this.bindings[k](a[k]);else f[k]=a[k];a=0;for(k=this.items.length;a< k ; a + + ) this . items [ a ] . attr ( f ) ; return this } ; v . clear = function(){for(;this.length;)this.pop()};
v.splice=function(a,f,k){a=0>a?A(this.length+a,0):a;f=A(0,w(this.length-a,f));var u=[],p=[],b=[],q;for(q=2;q< arguments.length ; q + + ) b . push ( arguments [ q ] ) ; for ( q = 0;q<f;q++)p.push(this[a+q]);for(;q<this.length-a;q++)u.push(this[a+q]);var e = b.length;for(q=0;q<e+u.length;q++)this.items[a+q]=this[a+q]=q<e?b[q]:u[q-e];for(q=this.items.length=this.length-=f-e;this[q];)delete this [ q + + ] ; return new z ( p ) } ; v . exclude = function(a){for(var f = 0,k=this.length;f<k;f++)if(this[f]==a)return this . splice ( f , 1 ) , ! 0 ; return ! 1 } ;
v.insertAfter=function(a){for(var f=this.items.length;f--;)this.items[f].insertAfter(a);return this};v.getBBox=function(){for(var a=[],f=[],k=[],u=[],p=this.items.length;p--;)if(!this.items[p].removed){var b=this.items[p].getBBox();a.push(b.x);f.push(b.y);k.push(b.x+b.width);u.push(b.y+b.height)}a=w.apply(0,a);f=w.apply(0,f);k=A.apply(0,k);u=A.apply(0,u);return{x:a,y:f,x2:k,y2:u,width:k-a,height:u-f,cx:a+(k-a)/2,cy:f+(u-f)/2}};v.clone=function(a){a=new z;for(var f=0,k=this.items.length;f< k ; f + + ) a . push ( this . items [ f ] . clone ( ) ) ;
return a};v.toString=function(){return"Snap\u2018s set"};v.type="set";a.set=function(){var a=new z;arguments.length&&a.push.apply(a,Array.prototype.slice.call(arguments,0)); return a}});C.plugin(function(a,v,y,C){function A(a){var b=a[0];switch(b.toLowerCase()){case "t":return[b,0,0];case "m":return[b,1,0,0,1,0,0];case "r":return 4==a.length?[b,0,a[2],a[3] ]:[b,0];case "s":return 5==a.length?[b,1,1,a[3],a[4] ]:3==a.length?[b,1,1]:[b,1]}}function w(b,d,f){d=q(d).replace(/\.{3}|\u2026/g,b);b=a.parseTransformString(b)||
[];d=a.parseTransformString(d)||[];for(var k=Math.max(b.length,d.length),p=[],v=[],h=0,w,z,y,I;h< k ; h + + ) { y = b[h]||A(d[h]);I=d[h]||A(y);if(y[0]!=I[0]||"r"==y[0].toLowerCase()&&(y[2]!=I[2]||y[3]!=I[3])||"s"==y[0].toLowerCase()&&(y[3]!=I[3]||y[4]!=I[4])){b=a._.transform2matrix(b,f());d=a._.transform2matrix(d,f());p=[["m",b.a,b.b,b.c,b.d,b.e,b.f] ] ; v = [["m",d.a,d.b,d.c,d.d,d.e,d.f] ] ; break } p [ h ] = [ ] ; v [ h ] = [ ] ; w = 0;for(z=Math.max(y.length,I.length);w<z;w++)w in y & & ( p [ h ] [ w ] = y [ w ] ) , w in I & & ( v [ h ] [ w ] = I [ w ] ) } return { from:u ( p ) ,
to:u(v),f:n(p)}}function z(a){return a}function d(a){return function(b){return+b.toFixed(3)+a}}function f(b){return a.rgb(b[0],b[1],b[2])}function n(a){var b=0,d,f,k,n,h,p,q=[];d=0;for(f=a.length;d< f ; d + + ) { h = "[" ; p = ['"'+a[d][0]+'"'];k=1;for(n=a[d].length;k<n;k++)p[k]="val["+b++ + " ] " ; h + = p + " ] " ; q [ d ] = h } return Function ( " val " , " return Snap . path . toString . call ( [ " + q + " ] ) " ) } function u ( a ) { for ( var b = [],d=0,f=a.length;d<f;d++)for(var k = 1,n=a[d].length;k<n;k++)b.push(a[d][k]);return b } var p = {},b=/[a-z]+$/i,q=String;
p.stroke=p.fill="colour";v.prototype.equal=function(a,b){return k("snap.util.equal",this,a,b).firstDefined()};k.on("snap.util.equal",function(e,k){var r,s;r=q(this.attr(e)||"");var x=this;if(r==+r&&k==+k)return{from:+r,to:+k,f:z}; if("colour"==p[e])return r=a.color(r),s=a.color(k),{from:[r.r,r.g,r.b,r.opacity],to:[s.r,s.g,s.b,s.opacity],f:f};if("transform"==e||"gradientTransform"==e||"patternTransform"==e)return k instanceof a.Matrix& & (k=k.toTransformString()),a._.rgTransform.test(k)||(k=a._.svgTransform2string(k)),
w(r,k,function(){return x.getBBox(1)});if("d"==e||"path"==e)return r=a.path.toCubic(r,k),{from:u(r[0]),to:u(r[1]),f:n(r[0])};if("points"==e)return r=q(r).split(a._.separator),s=q(k).split(a._.separator),{from:r,to:s,f:function(a){return a}};aUnit=r.match(b);s=q(k).match(b);return aUnit&&aUnit==s?{from:parseFloat(r),to:parseFloat(k),f:d(aUnit)}:{from:this.asPX(e),to:this.asPX(e,k),f:z}})}); C.plugin(function(a,v,y,C){var A=v.prototype,w="createTouch"in C.doc;v="click dblclick mousedown mousemove mouseout mouseover mouseup touchstart touchmove touchend touchcancel".split(" ");
var z={mousedown:"touchstart",mousemove:"touchmove",mouseup:"touchend"},d=function(a,b){var d="y"==a?"scrollTop":"scrollLeft",e=b&&b.node?b.node.ownerDocument:C.doc; return e[d in e.documentElement?"documentElement":"body"][d]},f=function(){this.returnValue=!1},n=function(){return this.originalEvent.preventDefault()},u=function(){this.cancelBubble=!0},p=function(){return this.originalEvent.stopPropagation()},b=function(){if(C.doc.addEventListener)return function(a,b,e,f){var k=w& & z[b]?z[b]:b,l=function(k){var l=
d("y",f),q=d("x",f);if(w& & z.hasOwnProperty(b))for(var r=0,u=k.targetTouches&&k.targetTouches.length; r< u ; r + + ) if ( k . targetTouches [ r ] . target = =a||a.contains(k.targetTouches[r].target)){u=k;k=k.targetTouches[r];k.originalEvent=u;k.preventDefault=n;k.stopPropagation=p;break}return e . call ( f , k , k . clientX + q , k . clientY + l ) } ; b ! = = k & & a . addEventListener ( b , l , ! 1 ) ; a . addEventListener ( k , l , ! 1 ) ; return function ( ) { b ! = = k & & a . removeEventListener ( b , l , ! 1 ) ; a . removeEventListener ( k , l , ! 1 ) ; return ! 0 } } ; if ( C . doc . attachEvent ) return function ( a ,
b,e,h){var k=function(a){a=a||h.node.ownerDocument.window.event;var b=d("y",h),k=d("x",h),k=a.clientX+k,b=a.clientY+b;a.preventDefault=a.preventDefault||f;a.stopPropagation=a.stopPropagation||u;return e.call(h,a,k,b)};a.attachEvent("on"+b,k);return function(){a.detachEvent("on"+b,k);return!0}}}(),q=[],e=function(a){for(var b=a.clientX,e=a.clientY,f=d("y"),l=d("x"),n,p=q.length;p--;){n=q[p];if(w)for(var r=a.touches&&a.touches.length,u; r--;){if(u=a.touches[r],u.identifier==n.el._drag.id||n.el.node.contains(u.target)){b=
u.clientX;e=u.clientY;(a.originalEvent?a.originalEvent:a).preventDefault();break}}else a.preventDefault();b+=l;e+=f;k("snap.drag.move."+n.el.id,n.move_scope||n.el,b-n.el._drag.x,e-n.el._drag.y,b,e,a)}},l=function(b){a.unmousemove(e).unmouseup(l);for(var d=q.length,f;d--;)f=q[d],f.el._drag={},k("snap.drag.end."+f.el.id,f.end_scope||f.start_scope||f.move_scope||f.el,b);q=[]};for(y=v.length;y--;)(function(d){a[d]=A[d]=function(e,f){a.is(e,"function")& & (this.events=this.events||[],this.events.push({name:d,
f:e,unbind:b(this.node||document,d,e,f||this)}));return this};a["un"+d]=A["un"+d]=function(a){for(var b=this.events||[],e=b.length;e--;)if(b[e].name==d&&(b[e].f==a||!a)){b[e].unbind(); b.splice(e,1);!b.length& & delete this.events;break}return this}})(v[y]);A.hover=function(a,b,d,e){return this.mouseover(a,d).mouseout(b,e||d)};A.unhover=function(a,b){return this.unmouseover(a).unmouseout(b)};var r=[];A.drag=function(b,d,f,h,n,p){function u(r,v,w){(r.originalEvent||r).preventDefault();this._drag.x=v;
this._drag.y=w;this._drag.id=r.identifier;!q.length&&a.mousemove(e).mouseup(l); q.push({el:this,move_scope:h,start_scope:n,end_scope:p});d&&k.on("snap.drag.start."+this.id,d); b&&k.on("snap.drag.move."+this.id,b); f&&k.on("snap.drag.end."+this.id,f); k("snap.drag.start."+this.id,n||h||this,v,w,r)}if(!arguments.length){var v;return this.drag(function(a,b){this.attr({transform:v+(v?"T":"t")+[a,b]})},function(){v=this.transform().local})}this._drag={};r.push({el:this,start:u});this.mousedown(u);return this};
A.undrag=function(){for(var b=r.length;b--;)r[b].el==this&&(this.unmousedown(r[b].start),r.splice(b,1),k.unbind("snap.drag.*."+this.id)); !r.length&&a.unmousemove(e).unmouseup(l); return this}});C.plugin(function(a,v,y,C){y=y.prototype;var A=/^\s*url\((.+)\)/,w=String,z=a._.$;a.filter={};y.filter=function(d){var f=this;"svg"!=f.type&&(f=f.paper); d=a.parse(w(d));var k=a._.id(),u=z("filter");z(u,{id:k,filterUnits:"userSpaceOnUse"});u.appendChild(d.node);f.defs.appendChild(u);return new v(u)};k.on("snap.util.getattr.filter",
function(){k.stop();var d=z(this.node,"filter");if(d)return(d=w(d).match(A))&&a.select(d[1])}); k.on("snap.util.attr.filter",function(d){if(d instanceof v&&"filter"==d.type){k.stop(); var f=d.node.id;f||(z(d.node,{id:d.id}),f=d.id);z(this.node,{filter:a.url(f)})}d&&"none"!=d||(k.stop(),this.node.removeAttribute("filter"))}); a.filter.blur=function(d,f){null==d&&(d=2); return a.format('< feGaussianBlur stdDeviation = "{def}" / > ',{def:null==f?d:[d,f]})};a.filter.blur.toString=function(){return this()};a.filter.shadow=
function(d,f,k,u,p){"string"==typeof k&&(p=u=k,k=4); "string"!=typeof u&&(p=u,u="#000"); null==k&&(k=4); null==p&&(p=1); null==d&&(d=0,f=2); null==f&&(f=d); u=a.color(u||"#000");return a.format('< feGaussianBlur in = "SourceAlpha" stdDeviation = "{blur}" / > < feOffset dx = "{dx}" dy = "{dy}" result = "offsetblur" / > < feFlood flood-color = "{color}" / > < feComposite in2 = "offsetblur" operator = "in" / > < feComponentTransfer > < feFuncA type = "linear" slope = "{opacity}" / > < / feComponentTransfer > < feMerge > < feMergeNode / > < feMergeNode in = "SourceGraphic" / > < / feMerge > ',
{color:u,dx:d,dy:f,blur:k,opacity:p})};a.filter.shadow.toString=function(){return this()};a.filter.grayscale=function(d){null==d&&(d=1); return a.format('< feColorMatrix type = "matrix" values = "{a} {b} {c} 0 0 {d} {e} {f} 0 0 {g} {b} {h} 0 0 0 0 0 1 0" / > ',{a:0.2126+0.7874*(1-d),b:0.7152-0.7152*(1-d),c:0.0722-0.0722*(1-d),d:0.2126-0.2126*(1-d),e:0.7152+0.2848*(1-d),f:0.0722-0.0722*(1-d),g:0.2126-0.2126*(1-d),h:0.0722+0.9278*(1-d)})};a.filter.grayscale.toString=function(){return this()};a.filter.sepia=
function(d){null==d&&(d=1); return a.format('< feColorMatrix type = "matrix" values = "{a} {b} {c} 0 0 {d} {e} {f} 0 0 {g} {h} {i} 0 0 0 0 0 1 0" / > ',{a:0.393+0.607*(1-d),b:0.769-0.769*(1-d),c:0.189-0.189*(1-d),d:0.349-0.349*(1-d),e:0.686+0.314*(1-d),f:0.168-0.168*(1-d),g:0.272-0.272*(1-d),h:0.534-0.534*(1-d),i:0.131+0.869*(1-d)})};a.filter.sepia.toString=function(){return this()};a.filter.saturate=function(d){null==d&&(d=1); return a.format('< feColorMatrix type = "saturate" values = "{amount}" / > ',{amount:1-
d})};a.filter.saturate.toString=function(){return this()};a.filter.hueRotate=function(d){return a.format('< feColorMatrix type = "hueRotate" values = "{angle}" / > ',{angle:d||0})};a.filter.hueRotate.toString=function(){return this()};a.filter.invert=function(d){null==d&&(d=1); return a.format('< feComponentTransfer > < feFuncR type = "table" tableValues = "{amount} {amount2}" / > < feFuncG type = "table" tableValues = "{amount} {amount2}" / > < feFuncB type = "table" tableValues = "{amount} {amount2}" / > < / feComponentTransfer > ',{amount:d,
amount2:1-d})};a.filter.invert.toString=function(){return this()};a.filter.brightness=function(d){null==d&&(d=1); return a.format('< feComponentTransfer > < feFuncR type = "linear" slope = "{amount}" / > < feFuncG type = "linear" slope = "{amount}" / > < feFuncB type = "linear" slope = "{amount}" / > < / feComponentTransfer > ',{amount:d})};a.filter.brightness.toString=function(){return this()};a.filter.contrast=function(d){null==d&&(d=1); return a.format('< feComponentTransfer > < feFuncR type = "linear" slope = "{amount}" intercept = "{amount2}" / > < feFuncG type = "linear" slope = "{amount}" intercept = "{amount2}" / > < feFuncB type = "linear" slope = "{amount}" intercept = "{amount2}" / > < / feComponentTransfer > ',
{amount:d,amount2:0.5-d/2})};a.filter.contrast.toString=function(){return this()}});return C});
]]> < / script >
< script > < ! [ C D A T A [
(function (glob, factory) {
// AMD support
if (typeof define === "function" & & define.amd) {
// Define as an anonymous module
define("Gadfly", ["Snap.svg"], function (Snap) {
return factory(Snap);
});
} else {
// Browser globals (glob is window)
// Snap adds itself to window
glob.Gadfly = factory(glob.Snap);
}
}(this, function (Snap) {
var Gadfly = {};
// Get an x/y coordinate value in pixels
var xPX = function(fig, x) {
var client_box = fig.node.getBoundingClientRect();
return x * fig.node.viewBox.baseVal.width / client_box.width;
};
var yPX = function(fig, y) {
var client_box = fig.node.getBoundingClientRect();
return y * fig.node.viewBox.baseVal.height / client_box.height;
};
Snap.plugin(function (Snap, Element, Paper, global) {
// Traverse upwards from a snap element to find and return the first
// note with the "plotroot" class.
Element.prototype.plotroot = function () {
var element = this;
while (!element.hasClass("plotroot") & & element.parent() != null) {
element = element.parent();
}
return element;
};
Element.prototype.svgroot = function () {
var element = this;
while (element.node.nodeName != "svg" & & element.parent() != null) {
element = element.parent();
}
return element;
};
Element.prototype.plotbounds = function () {
var root = this.plotroot()
var bbox = root.select(".guide.background").node.getBBox();
return {
x0: bbox.x,
x1: bbox.x + bbox.width,
y0: bbox.y,
y1: bbox.y + bbox.height
};
};
Element.prototype.plotcenter = function () {
var root = this.plotroot()
var bbox = root.select(".guide.background").node.getBBox();
return {
x: bbox.x + bbox.width / 2,
y: bbox.y + bbox.height / 2
};
};
// Emulate IE style mouseenter/mouseleave events, since Microsoft always
// does everything right.
// See: http://www.dynamic-tools.net/toolbox/isMouseLeaveOrEnter/
var events = ["mouseenter", "mouseleave"];
for (i in events) {
(function (event_name) {
var event_name = events[i];
Element.prototype[event_name] = function (fn, scope) {
if (Snap.is(fn, "function")) {
var fn2 = function (event) {
if (event.type != "mouseover" & & event.type != "mouseout") {
return;
}
var reltg = event.relatedTarget ? event.relatedTarget :
event.type == "mouseout" ? event.toElement : event.fromElement;
while (reltg & & reltg != this.node) reltg = reltg.parentNode;
if (reltg != this.node) {
return fn.apply(this, event);
}
};
if (event_name == "mouseenter") {
this.mouseover(fn2, scope);
} else {
this.mouseout(fn2, scope);
}
}
return this;
};
})(events[i]);
}
Element.prototype.mousewheel = function (fn, scope) {
if (Snap.is(fn, "function")) {
var el = this;
var fn2 = function (event) {
fn.apply(el, [event]);
};
}
this.node.addEventListener(
/Firefox/i.test(navigator.userAgent) ? "DOMMouseScroll" : "mousewheel",
fn2);
return this;
};
// Snap's attr function can be too slow for things like panning/zooming.
// This is a function to directly update element attributes without going
// through eve.
Element.prototype.attribute = function(key, val) {
if (val === undefined) {
return this.node.getAttribute(key);
} else {
this.node.setAttribute(key, val);
return this;
}
};
Element.prototype.init_gadfly = function() {
this.mouseenter(Gadfly.plot_mouseover)
.mouseleave(Gadfly.plot_mouseout)
.dblclick(Gadfly.plot_dblclick)
.mousewheel(Gadfly.guide_background_scroll)
.drag(Gadfly.guide_background_drag_onmove,
Gadfly.guide_background_drag_onstart,
Gadfly.guide_background_drag_onend);
this.mouseenter(function (event) {
init_pan_zoom(this.plotroot());
});
return this;
};
});
// When the plot is moused over, emphasize the grid lines.
Gadfly.plot_mouseover = function(event) {
var root = this.plotroot();
var keyboard_zoom = function(event) {
if (event.which == 187) { // plus
increase_zoom_by_position(root, 0.1, true);
} else if (event.which == 189) { // minus
increase_zoom_by_position(root, -0.1, true);
}
};
root.data("keyboard_zoom", keyboard_zoom);
window.addEventListener("keyup", keyboard_zoom);
var xgridlines = root.select(".xgridlines"),
ygridlines = root.select(".ygridlines");
xgridlines.data("unfocused_strokedash",
xgridlines.attribute("stroke-dasharray").replace(/(\d)(,|$)/g, "$1mm$2"));
ygridlines.data("unfocused_strokedash",
ygridlines.attribute("stroke-dasharray").replace(/(\d)(,|$)/g, "$1mm$2"));
// emphasize grid lines
var destcolor = root.data("focused_xgrid_color");
xgridlines.attribute("stroke-dasharray", "none")
.selectAll("path")
.animate({stroke: destcolor}, 250);
destcolor = root.data("focused_ygrid_color");
ygridlines.attribute("stroke-dasharray", "none")
.selectAll("path")
.animate({stroke: destcolor}, 250);
// reveal zoom slider
root.select(".zoomslider")
.animate({opacity: 1.0}, 250);
};
// Reset pan and zoom on double click
Gadfly.plot_dblclick = function(event) {
set_plot_pan_zoom(this.plotroot(), 0.0, 0.0, 1.0);
};
// Unemphasize grid lines on mouse out.
Gadfly.plot_mouseout = function(event) {
var root = this.plotroot();
window.removeEventListener("keyup", root.data("keyboard_zoom"));
root.data("keyboard_zoom", undefined);
var xgridlines = root.select(".xgridlines"),
ygridlines = root.select(".ygridlines");
var destcolor = root.data("unfocused_xgrid_color");
xgridlines.attribute("stroke-dasharray", xgridlines.data("unfocused_strokedash"))
.selectAll("path")
.animate({stroke: destcolor}, 250);
destcolor = root.data("unfocused_ygrid_color");
ygridlines.attribute("stroke-dasharray", ygridlines.data("unfocused_strokedash"))
.selectAll("path")
.animate({stroke: destcolor}, 250);
// hide zoom slider
root.select(".zoomslider")
.animate({opacity: 0.0}, 250);
};
var set_geometry_transform = function(root, tx, ty, scale) {
var xscalable = root.hasClass("xscalable"),
yscalable = root.hasClass("yscalable");
var old_scale = root.data("scale");
var xscale = xscalable ? scale : 1.0,
yscale = yscalable ? scale : 1.0;
tx = xscalable ? tx : 0.0;
ty = yscalable ? ty : 0.0;
var t = new Snap.Matrix().translate(tx, ty).scale(xscale, yscale);
root.selectAll(".geometry, image")
.forEach(function (element, i) {
element.transform(t);
});
bounds = root.plotbounds();
if (yscalable) {
var xfixed_t = new Snap.Matrix().translate(0, ty).scale(1.0, yscale);
root.selectAll(".xfixed")
.forEach(function (element, i) {
element.transform(xfixed_t);
});
root.select(".ylabels")
.transform(xfixed_t)
.selectAll("text")
.forEach(function (element, i) {
if (element.attribute("gadfly:inscale") == "true") {
var cx = element.asPX("x"),
cy = element.asPX("y");
var st = element.data("static_transform");
unscale_t = new Snap.Matrix();
unscale_t.scale(1, 1/scale, cx, cy).add(st);
element.transform(unscale_t);
var y = cy * scale + ty;
element.attr("visibility",
bounds.y0 < = y & & y < = bounds.y1 ? "visible" : "hidden");
}
});
}
if (xscalable) {
var yfixed_t = new Snap.Matrix().translate(tx, 0).scale(xscale, 1.0);
var xtrans = new Snap.Matrix().translate(tx, 0);
root.selectAll(".yfixed")
.forEach(function (element, i) {
element.transform(yfixed_t);
});
root.select(".xlabels")
.transform(yfixed_t)
.selectAll("text")
.forEach(function (element, i) {
if (element.attribute("gadfly:inscale") == "true") {
var cx = element.asPX("x"),
cy = element.asPX("y");
var st = element.data("static_transform");
unscale_t = new Snap.Matrix();
unscale_t.scale(1/scale, 1, cx, cy).add(st);
element.transform(unscale_t);
var x = cx * scale + tx;
element.attr("visibility",
bounds.x0 < = x & & x < = bounds.x1 ? "visible" : "hidden");
}
});
}
// we must unscale anything that is scale invariance: widths, raiduses, etc.
var size_attribs = ["font-size"];
var unscaled_selection = ".geometry, .geometry *";
if (xscalable) {
size_attribs.push("rx");
unscaled_selection += ", .xgridlines";
}
if (yscalable) {
size_attribs.push("ry");
unscaled_selection += ", .ygridlines";
}
root.selectAll(unscaled_selection)
.forEach(function (element, i) {
// circle need special help
if (element.node.nodeName == "circle") {
var cx = element.attribute("cx"),
cy = element.attribute("cy");
unscale_t = new Snap.Matrix().scale(1/xscale, 1/yscale,
cx, cy);
element.transform(unscale_t);
return;
}
for (i in size_attribs) {
var key = size_attribs[i];
var val = parseFloat(element.attribute(key));
if (val !== undefined & & val != 0 & & !isNaN(val)) {
element.attribute(key, val * old_scale / scale);
}
}
});
};
// Find the most appropriate tick scale and update label visibility.
var update_tickscale = function(root, scale, axis) {
if (!root.hasClass(axis + "scalable")) return;
var tickscales = root.data(axis + "tickscales");
var best_tickscale = 1.0;
var best_tickscale_dist = Infinity;
for (tickscale in tickscales) {
var dist = Math.abs(Math.log(tickscale) - Math.log(scale));
if (dist < best_tickscale_dist ) {
best_tickscale_dist = dist;
best_tickscale = tickscale;
}
}
if (best_tickscale != root.data(axis + "tickscale")) {
root.data(axis + "tickscale", best_tickscale);
var mark_inscale_gridlines = function (element, i) {
var inscale = element.attr("gadfly:scale") == best_tickscale;
element.attribute("gadfly:inscale", inscale);
element.attr("visibility", inscale ? "visible" : "hidden");
};
var mark_inscale_labels = function (element, i) {
var inscale = element.attr("gadfly:scale") == best_tickscale;
element.attribute("gadfly:inscale", inscale);
element.attr("visibility", inscale ? "visible" : "hidden");
};
root.select("." + axis + "gridlines").selectAll("path").forEach(mark_inscale_gridlines);
root.select("." + axis + "labels").selectAll("text").forEach(mark_inscale_labels);
}
};
var set_plot_pan_zoom = function(root, tx, ty, scale) {
var old_scale = root.data("scale");
var bounds = root.plotbounds();
var width = bounds.x1 - bounds.x0,
height = bounds.y1 - bounds.y0;
// compute the viewport derived from tx, ty, and scale
var x_min = -width * scale - (scale * width - width),
x_max = width * scale,
y_min = -height * scale - (scale * height - height),
y_max = height * scale;
var x0 = bounds.x0 - scale * bounds.x0,
y0 = bounds.y0 - scale * bounds.y0;
var tx = Math.max(Math.min(tx - x0, x_max), x_min),
ty = Math.max(Math.min(ty - y0, y_max), y_min);
tx += x0;
ty += y0;
// when the scale change, we may need to alter which set of
// ticks is being displayed
if (scale != old_scale) {
update_tickscale(root, scale, "x");
update_tickscale(root, scale, "y");
}
set_geometry_transform(root, tx, ty, scale);
root.data("scale", scale);
root.data("tx", tx);
root.data("ty", ty);
};
var scale_centered_translation = function(root, scale) {
var bounds = root.plotbounds();
var width = bounds.x1 - bounds.x0,
height = bounds.y1 - bounds.y0;
var tx0 = root.data("tx"),
ty0 = root.data("ty");
var scale0 = root.data("scale");
// how off from center the current view is
var xoff = tx0 - (bounds.x0 * (1 - scale0) + (width * (1 - scale0)) / 2),
yoff = ty0 - (bounds.y0 * (1 - scale0) + (height * (1 - scale0)) / 2);
// rescale offsets
xoff = xoff * scale / scale0;
yoff = yoff * scale / scale0;
// adjust for the panel position being scaled
var x_edge_adjust = bounds.x0 * (1 - scale),
y_edge_adjust = bounds.y0 * (1 - scale);
return {
x: xoff + x_edge_adjust + (width - width * scale) / 2,
y: yoff + y_edge_adjust + (height - height * scale) / 2
};
};
// Initialize data for panning zooming if it isn't already.
var init_pan_zoom = function(root) {
if (root.data("zoompan-ready")) {
return;
}
// The non-scaling-stroke trick. Rather than try to correct for the
// stroke-width when zooming, we force it to a fixed value.
var px_per_mm = root.node.getCTM().a;
// Drag events report deltas in pixels, which we'd like to convert to
// millimeters.
root.data("px_per_mm", px_per_mm);
root.selectAll("path")
.forEach(function (element, i) {
sw = element.asPX("stroke-width") * px_per_mm;
if (sw > 0) {
element.attribute("stroke-width", sw);
element.attribute("vector-effect", "non-scaling-stroke");
}
});
// Store ticks labels original tranformation
root.selectAll(".xlabels > text, .ylabels > text")
.forEach(function (element, i) {
var lm = element.transform().localMatrix;
element.data("static_transform",
new Snap.Matrix(lm.a, lm.b, lm.c, lm.d, lm.e, lm.f));
});
var xgridlines = root.select(".xgridlines");
var ygridlines = root.select(".ygridlines");
var xlabels = root.select(".xlabels");
var ylabels = root.select(".ylabels");
if (root.data("tx") === undefined) root.data("tx", 0);
if (root.data("ty") === undefined) root.data("ty", 0);
if (root.data("scale") === undefined) root.data("scale", 1.0);
if (root.data("xtickscales") === undefined) {
// index all the tick scales that are listed
var xtickscales = {};
var ytickscales = {};
var add_x_tick_scales = function (element, i) {
xtickscales[element.attribute("gadfly:scale")] = true;
};
var add_y_tick_scales = function (element, i) {
ytickscales[element.attribute("gadfly:scale")] = true;
};
if (xgridlines) xgridlines.selectAll("path").forEach(add_x_tick_scales);
if (ygridlines) ygridlines.selectAll("path").forEach(add_y_tick_scales);
if (xlabels) xlabels.selectAll("text").forEach(add_x_tick_scales);
if (ylabels) ylabels.selectAll("text").forEach(add_y_tick_scales);
root.data("xtickscales", xtickscales);
root.data("ytickscales", ytickscales);
root.data("xtickscale", 1.0);
}
var min_scale = 1.0, max_scale = 1.0;
for (scale in xtickscales) {
min_scale = Math.min(min_scale, scale);
max_scale = Math.max(max_scale, scale);
}
for (scale in ytickscales) {
min_scale = Math.min(min_scale, scale);
max_scale = Math.max(max_scale, scale);
}
root.data("min_scale", min_scale);
root.data("max_scale", max_scale);
// store the original positions of labels
if (xlabels) {
xlabels.selectAll("text")
.forEach(function (element, i) {
element.data("x", element.asPX("x"));
});
}
if (ylabels) {
ylabels.selectAll("text")
.forEach(function (element, i) {
element.data("y", element.asPX("y"));
});
}
// mark grid lines and ticks as in or out of scale.
var mark_inscale = function (element, i) {
element.attribute("gadfly:inscale", element.attribute("gadfly:scale") == 1.0);
};
if (xgridlines) xgridlines.selectAll("path").forEach(mark_inscale);
if (ygridlines) ygridlines.selectAll("path").forEach(mark_inscale);
if (xlabels) xlabels.selectAll("text").forEach(mark_inscale);
if (ylabels) ylabels.selectAll("text").forEach(mark_inscale);
// figure out the upper ond lower bounds on panning using the maximum
// and minum grid lines
var bounds = root.plotbounds();
var pan_bounds = {
x0: 0.0,
y0: 0.0,
x1: 0.0,
y1: 0.0
};
if (xgridlines) {
xgridlines
.selectAll("path")
.forEach(function (element, i) {
if (element.attribute("gadfly:inscale") == "true") {
var bbox = element.node.getBBox();
if (bounds.x1 - bbox.x < pan_bounds.x0 ) {
pan_bounds.x0 = bounds.x1 - bbox.x;
}
if (bounds.x0 - bbox.x > pan_bounds.x1) {
pan_bounds.x1 = bounds.x0 - bbox.x;
}
element.attr("visibility", "visible");
}
});
}
if (ygridlines) {
ygridlines
.selectAll("path")
.forEach(function (element, i) {
if (element.attribute("gadfly:inscale") == "true") {
var bbox = element.node.getBBox();
if (bounds.y1 - bbox.y < pan_bounds.y0 ) {
pan_bounds.y0 = bounds.y1 - bbox.y;
}
if (bounds.y0 - bbox.y > pan_bounds.y1) {
pan_bounds.y1 = bounds.y0 - bbox.y;
}
element.attr("visibility", "visible");
}
});
}
// nudge these values a little
pan_bounds.x0 -= 5;
pan_bounds.x1 += 5;
pan_bounds.y0 -= 5;
pan_bounds.y1 += 5;
root.data("pan_bounds", pan_bounds);
root.data("zoompan-ready", true)
};
// drag actions, i.e. zooming and panning
var pan_action = {
start: function(root, x, y, event) {
root.data("dx", 0);
root.data("dy", 0);
root.data("tx0", root.data("tx"));
root.data("ty0", root.data("ty"));
},
update: function(root, dx, dy, x, y, event) {
var px_per_mm = root.data("px_per_mm");
dx /= px_per_mm;
dy /= px_per_mm;
var tx0 = root.data("tx"),
ty0 = root.data("ty");
var dx0 = root.data("dx"),
dy0 = root.data("dy");
root.data("dx", dx);
root.data("dy", dy);
dx = dx - dx0;
dy = dy - dy0;
var tx = tx0 + dx,
ty = ty0 + dy;
set_plot_pan_zoom(root, tx, ty, root.data("scale"));
},
end: function(root, event) {
},
cancel: function(root) {
set_plot_pan_zoom(root, root.data("tx0"), root.data("ty0"), root.data("scale"));
}
};
var zoom_box;
var zoom_action = {
start: function(root, x, y, event) {
var bounds = root.plotbounds();
var width = bounds.x1 - bounds.x0,
height = bounds.y1 - bounds.y0;
var ratio = width / height;
var xscalable = root.hasClass("xscalable"),
yscalable = root.hasClass("yscalable");
var px_per_mm = root.data("px_per_mm");
x = xscalable ? x / px_per_mm : bounds.x0;
y = yscalable ? y / px_per_mm : bounds.y0;
var w = xscalable ? 0 : width;
var h = yscalable ? 0 : height;
zoom_box = root.rect(x, y, w, h).attr({
"fill": "#000",
"opacity": 0.25
});
zoom_box.data("ratio", ratio);
},
update: function(root, dx, dy, x, y, event) {
var xscalable = root.hasClass("xscalable"),
yscalable = root.hasClass("yscalable");
var px_per_mm = root.data("px_per_mm");
var bounds = root.plotbounds();
if (yscalable) {
y /= px_per_mm;
y = Math.max(bounds.y0, y);
y = Math.min(bounds.y1, y);
} else {
y = bounds.y1;
}
if (xscalable) {
x /= px_per_mm;
x = Math.max(bounds.x0, x);
x = Math.min(bounds.x1, x);
} else {
x = bounds.x1;
}
dx = x - zoom_box.attr("x");
dy = y - zoom_box.attr("y");
if (xscalable & & yscalable) {
var ratio = zoom_box.data("ratio");
var width = Math.min(Math.abs(dx), ratio * Math.abs(dy));
var height = Math.min(Math.abs(dy), Math.abs(dx) / ratio);
dx = width * dx / Math.abs(dx);
dy = height * dy / Math.abs(dy);
}
var xoffset = 0,
yoffset = 0;
if (dx < 0 ) {
xoffset = dx;
dx = -1 * dx;
}
if (dy < 0 ) {
yoffset = dy;
dy = -1 * dy;
}
if (isNaN(dy)) {
dy = 0.0;
}
if (isNaN(dx)) {
dx = 0.0;
}
zoom_box.transform("T" + xoffset + "," + yoffset);
zoom_box.attr("width", dx);
zoom_box.attr("height", dy);
},
end: function(root, event) {
var xscalable = root.hasClass("xscalable"),
yscalable = root.hasClass("yscalable");
var zoom_bounds = zoom_box.getBBox();
if (zoom_bounds.width * zoom_bounds.height < = 0) {
return;
}
var plot_bounds = root.plotbounds();
var zoom_factor = 1.0;
if (yscalable) {
zoom_factor = (plot_bounds.y1 - plot_bounds.y0) / zoom_bounds.height;
} else {
zoom_factor = (plot_bounds.x1 - plot_bounds.x0) / zoom_bounds.width;
}
var tx = (root.data("tx") - zoom_bounds.x) * zoom_factor + plot_bounds.x0,
ty = (root.data("ty") - zoom_bounds.y) * zoom_factor + plot_bounds.y0;
set_plot_pan_zoom(root, tx, ty, root.data("scale") * zoom_factor);
zoom_box.remove();
},
cancel: function(root) {
zoom_box.remove();
}
};
Gadfly.guide_background_drag_onstart = function(x, y, event) {
var root = this.plotroot();
var scalable = root.hasClass("xscalable") || root.hasClass("yscalable");
var zoomable = !event.altKey & & !event.ctrlKey & & event.shiftKey & & scalable;
var panable = !event.altKey & & !event.ctrlKey & & !event.shiftKey & & scalable;
var drag_action = zoomable ? zoom_action :
panable ? pan_action :
undefined;
root.data("drag_action", drag_action);
if (drag_action) {
var cancel_drag_action = function(event) {
if (event.which == 27) { // esc key
drag_action.cancel(root);
root.data("drag_action", undefined);
}
};
window.addEventListener("keyup", cancel_drag_action);
root.data("cancel_drag_action", cancel_drag_action);
drag_action.start(root, x, y, event);
}
};
Gadfly.guide_background_drag_onmove = function(dx, dy, x, y, event) {
var root = this.plotroot();
var drag_action = root.data("drag_action");
if (drag_action) {
drag_action.update(root, dx, dy, x, y, event);
}
};
Gadfly.guide_background_drag_onend = function(event) {
var root = this.plotroot();
window.removeEventListener("keyup", root.data("cancel_drag_action"));
root.data("cancel_drag_action", undefined);
var drag_action = root.data("drag_action");
if (drag_action) {
drag_action.end(root, event);
}
root.data("drag_action", undefined);
};
Gadfly.guide_background_scroll = function(event) {
if (event.shiftKey) {
increase_zoom_by_position(this.plotroot(), 0.001 * event.wheelDelta);
event.preventDefault();
}
};
Gadfly.zoomslider_button_mouseover = function(event) {
this.select(".button_logo")
.animate({fill: this.data("mouseover_color")}, 100);
};
Gadfly.zoomslider_button_mouseout = function(event) {
this.select(".button_logo")
.animate({fill: this.data("mouseout_color")}, 100);
};
Gadfly.zoomslider_zoomout_click = function(event) {
increase_zoom_by_position(this.plotroot(), -0.1, true);
};
Gadfly.zoomslider_zoomin_click = function(event) {
increase_zoom_by_position(this.plotroot(), 0.1, true);
};
Gadfly.zoomslider_track_click = function(event) {
// TODO
};
// Map slider position x to scale y using the function y = a*exp(b*x)+c.
// The constants a, b, and c are solved using the constraint that the function
// should go through the points (0; min_scale), (0.5; 1), and (1; max_scale).
var scale_from_slider_position = function(position, min_scale, max_scale) {
var a = (1 - 2 * min_scale + min_scale * min_scale) / (min_scale + max_scale - 2),
b = 2 * Math.log((max_scale - 1) / (1 - min_scale)),
c = (min_scale * max_scale - 1) / (min_scale + max_scale - 2);
return a * Math.exp(b * position) + c;
}
// inverse of scale_from_slider_position
var slider_position_from_scale = function(scale, min_scale, max_scale) {
var a = (1 - 2 * min_scale + min_scale * min_scale) / (min_scale + max_scale - 2),
b = 2 * Math.log((max_scale - 1) / (1 - min_scale)),
c = (min_scale * max_scale - 1) / (min_scale + max_scale - 2);
return 1 / b * Math.log((scale - c) / a);
}
var increase_zoom_by_position = function(root, delta_position, animate) {
var scale = root.data("scale"),
min_scale = root.data("min_scale"),
max_scale = root.data("max_scale");
var position = slider_position_from_scale(scale, min_scale, max_scale);
position += delta_position;
scale = scale_from_slider_position(position, min_scale, max_scale);
set_zoom(root, scale, animate);
}
var set_zoom = function(root, scale, animate) {
var min_scale = root.data("min_scale"),
max_scale = root.data("max_scale"),
old_scale = root.data("scale");
var new_scale = Math.max(min_scale, Math.min(scale, max_scale));
if (animate) {
Snap.animate(
old_scale,
new_scale,
function (new_scale) {
update_plot_scale(root, new_scale);
},
200);
} else {
update_plot_scale(root, new_scale);
}
}
var update_plot_scale = function(root, new_scale) {
var trans = scale_centered_translation(root, new_scale);
set_plot_pan_zoom(root, trans.x, trans.y, new_scale);
root.selectAll(".zoomslider_thumb")
.forEach(function (element, i) {
var min_pos = element.data("min_pos"),
max_pos = element.data("max_pos"),
min_scale = root.data("min_scale"),
max_scale = root.data("max_scale");
var xmid = (min_pos + max_pos) / 2;
var xpos = slider_position_from_scale(new_scale, min_scale, max_scale);
element.transform(new Snap.Matrix().translate(
Math.max(min_pos, Math.min(
max_pos, min_pos + (max_pos - min_pos) * xpos)) - xmid, 0));
});
};
Gadfly.zoomslider_thumb_dragmove = function(dx, dy, x, y, event) {
var root = this.plotroot();
var min_pos = this.data("min_pos"),
max_pos = this.data("max_pos"),
min_scale = root.data("min_scale"),
max_scale = root.data("max_scale"),
old_scale = root.data("old_scale");
var px_per_mm = root.data("px_per_mm");
dx /= px_per_mm;
dy /= px_per_mm;
var xmid = (min_pos + max_pos) / 2;
var xpos = slider_position_from_scale(old_scale, min_scale, max_scale) +
dx / (max_pos - min_pos);
// compute the new scale
var new_scale = scale_from_slider_position(xpos, min_scale, max_scale);
new_scale = Math.min(max_scale, Math.max(min_scale, new_scale));
update_plot_scale(root, new_scale);
event.stopPropagation();
};
Gadfly.zoomslider_thumb_dragstart = function(x, y, event) {
this.animate({fill: this.data("mouseover_color")}, 100);
var root = this.plotroot();
// keep track of what the scale was when we started dragging
root.data("old_scale", root.data("scale"));
event.stopPropagation();
};
Gadfly.zoomslider_thumb_dragend = function(event) {
this.animate({fill: this.data("mouseout_color")}, 100);
event.stopPropagation();
};
var toggle_color_class = function(root, color_class, ison) {
var guides = root.selectAll(".guide." + color_class + ",.guide ." + color_class);
var geoms = root.selectAll(".geometry." + color_class + ",.geometry ." + color_class);
if (ison) {
guides.animate({opacity: 0.5}, 250);
geoms.animate({opacity: 0.0}, 250);
} else {
guides.animate({opacity: 1.0}, 250);
geoms.animate({opacity: 1.0}, 250);
}
};
Gadfly.colorkey_swatch_click = function(event) {
var root = this.plotroot();
var color_class = this.data("color_class");
if (event.shiftKey) {
root.selectAll(".colorkey text")
.forEach(function (element) {
var other_color_class = element.data("color_class");
if (other_color_class != color_class) {
toggle_color_class(root, other_color_class,
element.attr("opacity") == 1.0);
}
});
} else {
toggle_color_class(root, color_class, this.attr("opacity") == 1.0);
}
};
return Gadfly;
}));
//@ sourceURL=gadfly.js
(function (glob, factory) {
// AMD support
if (typeof require === "function" & & typeof define === "function" & & define.amd) {
require(["Snap.svg", "Gadfly"], function (Snap, Gadfly) {
factory(Snap, Gadfly);
});
} else {
factory(glob.Snap, glob.Gadfly);
}
})(window, function (Snap, Gadfly) {
var fig = Snap("#fig-0378e04b897742b597befd2e8e1c169e");
fig.select("#fig-0378e04b897742b597befd2e8e1c169e-element-8")
.init_gadfly();
fig.select("#fig-0378e04b897742b597befd2e8e1c169e-element-11")
.plotroot().data("unfocused_ygrid_color", "#D0D0E0")
;
fig.select("#fig-0378e04b897742b597befd2e8e1c169e-element-11")
.plotroot().data("focused_ygrid_color", "#A0A0A0")
;
fig.select("#fig-0378e04b897742b597befd2e8e1c169e-element-12")
.plotroot().data("unfocused_xgrid_color", "#D0D0E0")
;
fig.select("#fig-0378e04b897742b597befd2e8e1c169e-element-12")
.plotroot().data("focused_xgrid_color", "#A0A0A0")
;
fig.select("#fig-0378e04b897742b597befd2e8e1c169e-element-16")
.data("mouseover_color", "#CD5C5C")
;
fig.select("#fig-0378e04b897742b597befd2e8e1c169e-element-16")
.data("mouseout_color", "#6A6A6A")
;
fig.select("#fig-0378e04b897742b597befd2e8e1c169e-element-16")
.click(Gadfly.zoomslider_zoomin_click)
.mouseenter(Gadfly.zoomslider_button_mouseover)
.mouseleave(Gadfly.zoomslider_button_mouseout)
;
fig.select("#fig-0378e04b897742b597befd2e8e1c169e-element-18")
.data("max_pos", 111.58)
;
fig.select("#fig-0378e04b897742b597befd2e8e1c169e-element-18")
.data("min_pos", 94.58)
;
fig.select("#fig-0378e04b897742b597befd2e8e1c169e-element-18")
.click(Gadfly.zoomslider_track_click);
fig.select("#fig-0378e04b897742b597befd2e8e1c169e-element-19")
.data("max_pos", 111.58)
;
fig.select("#fig-0378e04b897742b597befd2e8e1c169e-element-19")
.data("min_pos", 94.58)
;
fig.select("#fig-0378e04b897742b597befd2e8e1c169e-element-19")
.data("mouseover_color", "#CD5C5C")
;
fig.select("#fig-0378e04b897742b597befd2e8e1c169e-element-19")
.data("mouseout_color", "#6A6A6A")
;
fig.select("#fig-0378e04b897742b597befd2e8e1c169e-element-19")
.drag(Gadfly.zoomslider_thumb_dragmove,
Gadfly.zoomslider_thumb_dragstart,
Gadfly.zoomslider_thumb_dragend)
;
fig.select("#fig-0378e04b897742b597befd2e8e1c169e-element-20")
.data("mouseover_color", "#CD5C5C")
;
fig.select("#fig-0378e04b897742b597befd2e8e1c169e-element-20")
.data("mouseout_color", "#6A6A6A")
;
fig.select("#fig-0378e04b897742b597befd2e8e1c169e-element-20")
.click(Gadfly.zoomslider_zoomout_click)
.mouseenter(Gadfly.zoomslider_button_mouseover)
.mouseleave(Gadfly.zoomslider_button_mouseout)
;
});
]]> < / script >
< / svg >
2024-10-13 21:17:09 -04:00
### Final simulation
We're now going to actually build out the full motion that we'll use for computing the pricing of our autocallable products. It will be largely the same, but we will use far more sample paths for the simulation.
```julia
full_simulation = function(S0, T, n, m, term)
forward = vcat(term[1], forward_term(term))
# And an S0 to kick things off.
final_motion = ones(m) * S0
for i=1:T
μ = (forward[i] - 1 - q)
year_motion = simulate_gbm(final_motion[:,end], μ, σ , 1, n)
final_motion = hcat(final_motion, year_motion)
end
return final_motion
end
tic()
full_simulation(S0, T, n, m, term)
time = toq()
@printf ("Time to run simulation: %.2fs", time)
```
2024-10-21 21:55:59 -04:00
Time to run simulation: 5.34s
2024-10-13 21:17:09 -04:00
## Athena Simulation
Now that we've defined our underlying simulation, let's actually try and price an Athena note. Athena has the following characteristics:
- Automatically called if the underlying is above the **call barrier** at observation
- Accelerated coupon paid if the underlying is above the **call barrier** at observation
- The coupon paid is $c \cdot i$ with $i$ as the current year, and $c$ the coupon rate
- Principle protection up until a **protection barrier** at observation; All principle at risk if this barrier not met
- Observed yearly
```julia
call_barrier = S0
strike = S0
protection_barrier = S0 * .6
coupon = nominal * .07
price_athena = function(initial_price, year_prices, call_barrier,
protection_barrier, coupon, forward_structure)
total_coupons = 0
t = length(year_prices)
for i=1:t
price = year_prices[i]
if price ≥ call_barrier
return (nominal + coupon*i) * exp((prod(forward_structure[i:end])-1)* (t-i))
end
end
# We've reached maturity, time to check capital protection
if year_prices[end] > protection_barrier
return nominal
else
put = (strike - year_prices[end]) / strike
return nominal*(1-put)
end
end
forward_structure = forward_term(term)
price_function = (year_prices) -> price_athena(S0, year_prices,
call_barrier, protection_barrier, coupon, forward_structure)
athena = function()
year_indexes = [n*i for i=1:T]
motion = full_simulation(S0, T, n, m, term)
payoffs = [price_function(motion[i, year_indexes]) for i=1:m]
return mean(payoffs)
end
mean_payoffs = zeros(num_simulations)
for i=1:num_simulations
tic()
mean_payoffs[i] = athena()
time = toq()
@printf ("Mean of simulation %i: \$%.4f; Simulation time: %.2fs\n", i, mean_payoffs[i], time)
end
final_mean = mean(mean_payoffs)
println("Mean over $num_simulations simulations: $(mean(mean_payoffs))")
pv = final_mean * (exp(-(prod(forward_structure)-1)*T))
@printf ("Present value of Athena note: \$%.2f, notional: \$%.2f", pv, nominal)
```
2024-10-21 21:55:59 -04:00
Mean of simulation 1: $103.2805; Simulation time: 5.59s
Mean of simulation 2: $103.3796; Simulation time: 5.05s
Mean of simulation 3: $103.4752; Simulation time: 5.18s
Mean of simulation 4: $103.4099; Simulation time: 5.37s
Mean of simulation 5: $103.3260; Simulation time: 5.32s
Mean over 5 simulations: 103.37421610015554
Present value of Athena note: $95.00, notional: $100.00
2024-10-13 21:17:09 -04:00
## Phoenix without Memory Simulation
Let's move into pricing a Phoenix without memory. It's very similar to the Athena production, with the exception that we introduce a coupon barrier so coupons are paid even when the underlying is below the initial price.
The Phoenix product has the following characteristics (example [here ](https://www.rbccm.com/usstructurednotes/file-780079.pdf )):
- Automatically called if the underlying is above the **call barrier** at observation
- Coupon paid if the underlying is above a **coupon barrier** at observation
- Principle protection up until a **protection barrier** at observation; All principle at risk if this barrier not met
- Observed yearly
Some example paths (all assume that a call barrier of the current price, and coupon barrier some level below that):
- At the end of year 1, the stock is above the call barrier; the note is called and you receive the value of the stock plus the coupon being paid.
- At the end of year 1, the stock is above the coupon barrier, but not the call barrier; you receive the coupon. At the end of year 2, the stock is below the coupon barrier; you receive nothing. At the end of year 3, the stock is above the call barrier; the note is called and you receive the value of the stock plus a coupon for year 3.
We're going to re-use the same simulation, with the following parameters:
- Call barrier: 100%
- Coupon barrier: 70%
- Coupon: 6%
- Capital protection until 70% (at maturity)
```julia
call_barrier = S0
coupon_barrier = S0 * .8
protection_barrier = S0 * .6
coupon = nominal * .06
price_phoenix_no_memory = function(initial_price, year_prices, call_barrier, coupon_barrier,
protection_barrier, coupon, forward_structure)
total_coupons = 0
t = length(year_prices)
for i=1:t
price = year_prices[i]
if price ≥ call_barrier
return (nominal + coupon + total_coupons)*exp((prod(forward_structure[i:end])-1)*(t-i))
elseif price ≥ coupon_barrier
total_coupons = total_coupons * exp(forward_structure[i]-1) + coupon
else
total_coupons *= exp(forward_structure[i]-1)
end
end
# We've reached maturity, time to check capital protection
if year_prices[end] > protection_barrier
return nominal + total_coupons
else
put = (strike - year_prices[end]) / strike
return nominal*(1-put)
end
end
forward_structure = forward_term(term)
price_function = (year_prices) -> price_phoenix_no_memory(S0, year_prices,
call_barrier, coupon_barrier, protection_barrier, coupon, forward_structure)
phoenix_no_memory = function()
year_indexes = [n*i for i=1:T]
motion = full_simulation(S0, T, n, m, term)
payoffs = [price_function(motion[i, year_indexes]) for i=1:m]
return mean(payoffs)
end
mean_payoffs = zeros(num_simulations)
for i=1:num_simulations
tic()
mean_payoffs[i] = phoenix_no_memory()
time = toq()
@printf ("Mean of simulation %i: \$%.4f; Simulation time: %.2fs\n", i, mean_payoffs[i], time)
end
final_mean = mean(mean_payoffs)
println("Mean over $num_simulations simulations: $(mean(mean_payoffs))")
pv = final_mean * exp(-(prod(forward_structure)-1)* (T))
@printf ("Present value of Phoenix without memory note: \$%.2f", pv)
```
2024-10-21 21:55:59 -04:00
Mean of simulation 1: $106.0562; Simulation time: 5.72s
Mean of simulation 2: $106.0071; Simulation time: 5.85s
Mean of simulation 3: $105.9959; Simulation time: 5.87s
Mean of simulation 4: $106.0665; Simulation time: 5.93s
Mean of simulation 5: $106.0168; Simulation time: 5.81s
Mean over 5 simulations: 106.02850857209883
Present value of Phoenix without memory note: $97.44
2024-10-13 21:17:09 -04:00
## Phoenix with Memory Simulation
The Phoenix with Memory structure is very similar to the Phoenix, but as the name implies, has a special "memory" property: **It remembers any coupons that haven't been paid at prior observation times, and pays them all if the underlying crosses the coupon barrier** . For example:
- Note issued with 100% call barrier, 70% coupon barrier. At year 1, the underlying is at 50%, so no coupons are paid. At year 2, the underlying is at 80%, so coupons for both year 1 and 2 are paid, resulting in a double coupon.
You can also find an example [here ](https://www.rbccm.com/usstructurednotes/file-781232.pdf ).
Let's go ahead and set up the simulation! The parameters will be the same, but we can expect that the value will go up because of the memory attribute
```julia
call_barrier = S0
coupon_barrier = S0 * .8
protection_barrier = S0 * .6
coupon = nominal * .07
price_phoenix_with_memory = function(initial_price, year_prices, call_barrier,
coupon_barrier, protection_barrier, coupon, forward_structure)
last_coupon = 0
total_coupons = 0
t = length(year_prices)
for i=1:t
price = year_prices[i]
if price > call_barrier
return (nominal + coupon + total_coupons)*exp((prod(forward_structure[i:end])-1)*(t-i))
elseif price > coupon_barrier
####################################################################
# The only difference between with/without memory is the below lines
memory_coupons = (i - last_coupon) * coupon
last_coupon = i
total_coupons = total_coupons * exp(forward_structure[i]-1) + memory_coupons
####################################################################
else
total_coupons *= exp(forward_structure[i]-1)
end
end
# We've reached maturity, time to check capital protection
if year_prices[end] > protection_barrier
return nominal + total_coupons
else
put = (strike - year_prices[end]) / strike
return nominal*(1-put)
end
end
forward_structure = forward_term(term)
price_function = (year_prices) -> price_phoenix_with_memory(S0, year_prices,
call_barrier, coupon_barrier, protection_barrier, coupon, forward_structure)
phoenix_with_memory = function()
year_indexes = [n*i for i=1:T]
motion = full_simulation(S0, T, n, m, term)
payoffs = [price_function(motion[i, year_indexes]) for i=1:m]
return mean(payoffs)
end
mean_payoffs = zeros(num_simulations)
for i=1:num_simulations
tic()
mean_payoffs[i] = phoenix_with_memory()
time = toq()
@printf ("Mean of simulation %i: \$%.4f; Simulation time: %.2fs\n",
i, mean_payoffs[i], time)
end
final_mean = mean(mean_payoffs)
println("Mean over $num_simulations simulations: $(mean(mean_payoffs))")
pv = final_mean * exp(-(prod(forward_structure)-1)* (T))
@printf ("Present value of Phoenix with memory note: \$%.2f", pv)
```
2024-10-21 21:55:59 -04:00
Mean of simulation 1: $108.8612; Simulation time: 5.89s
Mean of simulation 2: $109.0226; Simulation time: 5.90s
Mean of simulation 3: $108.9175; Simulation time: 5.92s
Mean of simulation 4: $108.9426; Simulation time: 5.94s
Mean of simulation 5: $108.8087; Simulation time: 6.06s
Mean over 5 simulations: 108.91052564051816
Present value of Phoenix with memory note: $100.09