David SheehanMy personal blog to explore the world of data science
https://dashee87.github.io
Predicting Football Results With Statistical Modelling<p>Football (or soccer to my American readers) is full of clichés: “It’s a game of two halves”, “taking it one game at a time” and “Liverpool have failed to win the Premier League”. You’re less likely to hear “Treating the number of goals scored by each team as independent Poisson processes, statistical modelling suggests that the home team have a 60% chance of winning today”. But this is actually a bit of cliché too (it has been discussed <a href="https://www.pinnacle.com/en/betting-articles/soccer/how-to-calculate-poisson-distribution">here</a>, <a href="https://help.smarkets.com/hc/en-gb/articles/115001457989-How-to-calculate-Poisson-distribution-for-football-betting">here</a>, <a href="http://pena.lt/y/2014/11/02/predicting-football-using-r/">here</a>, <a href="http://opisthokonta.net/?p=296">here</a> and <a href="https://dashee87.github.io/data%20science/football/r/predicting-football-results-with-statistical-modelling/">particularly well here</a>). As we’ll discover, a simple Poisson model is, well, overly simplistic. But it’s a good starting point and a nice intuitive way to learn about statistical modelling. So, if you came here looking to make money, <a href="http://www.make5000poundspermonth.co.uk/">I hear this guy makes £5000 per month without leaving the house</a>.</p>
<h2 id="poisson-distribution">Poisson Distribution</h2>
<p>The model is founded on the number of goals scored/conceded by each team. Teams that have been higher scorers in the past have a greater likelihood of scoring goals in the future. We’ll import all match results from the recently concluded Premier League (2016/17) season. There’s various sources for this data out there (<a href="https://www.kaggle.com/hugomathien/soccer">kaggle</a>, <a href="http://www.football-data.co.uk/englandm.php">football-data.co.uk</a>, <a href="https://github.com/jalapic/engsoccerdata">github</a>, <a href="http://api.football-data.org/index">API</a>). I built an <a href="https://github.com/dashee87/footballR">R wrapper for that API</a>, but I’ll go the csv route this time around.</p>
<div class="language-python highlighter-rouge"><pre class="highlight"><code><span class="kn">import</span> <span class="nn">pandas</span> <span class="kn">as</span> <span class="nn">pd</span>
<span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="kn">as</span> <span class="nn">plt</span>
<span class="kn">import</span> <span class="nn">numpy</span> <span class="kn">as</span> <span class="nn">np</span>
<span class="kn">import</span> <span class="nn">seaborn</span>
<span class="kn">from</span> <span class="nn">scipy.stats</span> <span class="kn">import</span> <span class="n">poisson</span><span class="p">,</span><span class="n">skellam</span>
<span class="n">epl_1617</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">read_csv</span><span class="p">(</span><span class="s">"http://www.football-data.co.uk/mmz4281/1617/E0.csv"</span><span class="p">)</span>
<span class="n">epl_1617</span> <span class="o">=</span> <span class="n">epl_1617</span><span class="p">[[</span><span class="s">'HomeTeam'</span><span class="p">,</span><span class="s">'AwayTeam'</span><span class="p">,</span><span class="s">'FTHG'</span><span class="p">,</span><span class="s">'FTAG'</span><span class="p">]]</span>
<span class="n">epl_1617</span> <span class="o">=</span> <span class="n">epl_1617</span><span class="o">.</span><span class="n">rename</span><span class="p">(</span><span class="n">columns</span><span class="o">=</span><span class="p">{</span><span class="s">'FTHG'</span><span class="p">:</span> <span class="s">'HomeGoals'</span><span class="p">,</span> <span class="s">'FTAG'</span><span class="p">:</span> <span class="s">'AwayGoals'</span><span class="p">})</span>
<span class="n">epl_1617</span><span class="o">.</span><span class="n">head</span><span class="p">()</span>
</code></pre>
</div>
<div>
<table border="1" class="dataframe">
<thead>
<tr style="text-align: right;">
<th></th>
<th>HomeTeam</th>
<th>AwayTeam</th>
<th>HomeGoals</th>
<th>AwayGoals</th>
</tr>
</thead>
<tbody>
<tr>
<th>0</th>
<td>Burnley</td>
<td>Swansea</td>
<td>0</td>
<td>1</td>
</tr>
<tr>
<th>1</th>
<td>Crystal Palace</td>
<td>West Brom</td>
<td>0</td>
<td>1</td>
</tr>
<tr>
<th>2</th>
<td>Everton</td>
<td>Tottenham</td>
<td>1</td>
<td>1</td>
</tr>
<tr>
<th>3</th>
<td>Hull</td>
<td>Leicester</td>
<td>2</td>
<td>1</td>
</tr>
<tr>
<th>4</th>
<td>Man City</td>
<td>Sunderland</td>
<td>2</td>
<td>1</td>
</tr>
</tbody>
</table>
</div>
<p>We imported a csv as a pandas dataframe, which contains various information for each of the 380 EPL games in the 2016-17 English Premier League season. We restricted the dataframe to the columns in which we’re interested (specifically, team names and numer of goals scored by each team). I’ll omit most of the code that produces the graphs in this post. But don’t worry, you can find that code on <a href="https://github.com/dashee87/blogScripts/blob/master/Jupyter/2017-06-04-predicting-football-results-with-statistical-modelling.ipynb">my github page</a>. Our task is to model the final round of fixtures in the season, so we must remove the last 10 rows (each gameweek consists of 10 matches).</p>
<div class="language-python highlighter-rouge"><pre class="highlight"><code><span class="n">epl_1617</span> <span class="o">=</span> <span class="n">epl_1617</span><span class="p">[:</span><span class="o">-</span><span class="mi">10</span><span class="p">]</span>
<span class="n">epl_1617</span><span class="o">.</span><span class="n">mean</span><span class="p">()</span>
</code></pre>
</div>
<div class="highlighter-rouge"><pre class="highlight"><code>HomeGoals 1.591892
AwayGoals 1.183784
dtype: float64
</code></pre>
</div>
<p>You’ll notice that, on average, the home team scores more goals than the away team. This is the so called ‘home (field) advantage’ (discussed <a href="https://jogall.github.io/2017-05-12-home-away-pref/">here</a>) and <a href="http://bleacherreport.com/articles/1803416-is-home-field-advantage-as-important-in-baseball-as-other-major-sports">isn’t specific to soccer</a>. This is a convenient time to introduce the <a href="https://en.wikipedia.org/wiki/Poisson_distribution">Poisson distribution</a>. It’s a discrete probability distribution that describes the probability of the number of events within a specific time period (e.g 90 mins) with a known average rate of occurrence. A key assumption is that the number of events is independent of time. In our context, this means that goals don’t become more/less likely by the number of goals already scored in the match. Instead, the number of goals is expressed purely as function an average rate of goals. If that was unclear, maybe this mathematical formulation will make clearer:</p>
<script type="math/tex; mode=display">P\left( x \right) = \frac{e^{-\lambda} \lambda ^x }{x!}, \lambda>0</script>
<p><script type="math/tex">\lambda</script> represents the average rate (e.g. average number of goals, average number of letters you receive, etc.). So, we can treat the number of goals scored by the home and away team as two independent Poisson distributions. The plot below shows the proportion of goals scored compared to the number of goals estimated by the corresponding Poisson distributions.</p>
<div style="text-align:center">
<p><img src="/images/home_away_goals_python.png" alt="" /></p>
</div>
<p>We can use this statistical model to estimate the probability of specfic events.</p>
<script type="math/tex; mode=display">% <![CDATA[
\begin{align*}
P(\geq 2|Home) &= P(2|Home) + P(3|Home) + ...\\
&= 0.258 + 0.137 + ...\\
&= 0.47
\end{align*} %]]></script>
<p>The probability of a draw is simply the sum of the events where the two teams score the same amount of goals.</p>
<script type="math/tex; mode=display">% <![CDATA[
\begin{align*}
P(Draw) &= P(0|Home) \times P(0|Away) + P(1|Home) \times P(1|Away) + ...\\
&= 0.203 \times 0.306 + 0.324 \times 0.362 + ...\\
&= 0.248
\end{align*} %]]></script>
<p>Note that we consider the number of goals scored by each team to be independent events (i.e. P(A n B) = P(A) P(B)). The difference of two Poisson distribution is actually called a <a href="https://en.wikipedia.org/wiki/Skellam_distribution">Skellam distribution</a>. So we can calculate the probability of a draw by inputting the mean goal values into this distribution.</p>
<div class="language-python highlighter-rouge"><pre class="highlight"><code><span class="c"># probability of draw between home and away team</span>
<span class="n">skellam</span><span class="o">.</span><span class="n">pmf</span><span class="p">(</span><span class="mf">0.0</span><span class="p">,</span> <span class="n">epl_1617</span><span class="o">.</span><span class="n">mean</span><span class="p">()[</span><span class="mi">0</span><span class="p">],</span> <span class="n">epl_1617</span><span class="o">.</span><span class="n">mean</span><span class="p">()[</span><span class="mi">1</span><span class="p">])</span>
</code></pre>
</div>
<div class="highlighter-rouge"><pre class="highlight"><code>0.24809376810717076
</code></pre>
</div>
<div class="language-python highlighter-rouge"><pre class="highlight"><code><span class="c"># probability of home team winning by one goal</span>
<span class="n">skellam</span><span class="o">.</span><span class="n">pmf</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">epl_1617</span><span class="o">.</span><span class="n">mean</span><span class="p">()[</span><span class="mi">0</span><span class="p">],</span> <span class="n">epl_1617</span><span class="o">.</span><span class="n">mean</span><span class="p">()[</span><span class="mi">1</span><span class="p">])</span>
</code></pre>
</div>
<div class="highlighter-rouge"><pre class="highlight"><code>0.22558259663675409
</code></pre>
</div>
<div style="text-align:center">
<p><img src="/images/skellam_goals_python.png" alt="" /></p>
</div>
<p>So, hopefully you can see how we can adapt this approach to model specific matches. We just need to know the average number of goals scored by each team and feed this data into a Poisson model. Let’s have a look at the distribution of goals scored by Chelsea and Sunderland (teams who finished 1st and last, respectively).</p>
<div style="text-align:center">
<p><img src="/images/chelsea_sunderland_goals_python.png" alt="" /></p>
</div>
<h2 id="building-a-model">Building A Model</h2>
<p>You should now be convinced that the number of goals scored by each team can be approximated by a Poisson distribution. Due to a relatively sample size (each team plays at most 19 home/away games), the accuracy of this approximation can vary significantly (especially earlier in the season when teams have played fewer games). Similar to before, we could now calculate the probability of various events in this Chelsea Sunderland match. But rather than treat each match separately, we’ll build a more general Poisson regression model (<a href="https://en.wikipedia.org/wiki/Poisson_regression">what is that?</a>).</p>
<div class="language-python highlighter-rouge"><pre class="highlight"><code><span class="c"># importing the tools required for the Poisson regression model</span>
<span class="kn">import</span> <span class="nn">statsmodels.api</span> <span class="kn">as</span> <span class="nn">sm</span>
<span class="kn">import</span> <span class="nn">statsmodels.formula.api</span> <span class="kn">as</span> <span class="nn">smf</span>
<span class="n">goal_model_data</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">concat</span><span class="p">([</span><span class="n">epl_1617</span><span class="p">[[</span><span class="s">'HomeTeam'</span><span class="p">,</span><span class="s">'AwayTeam'</span><span class="p">,</span><span class="s">'HomeGoals'</span><span class="p">]]</span><span class="o">.</span><span class="n">assign</span><span class="p">(</span><span class="n">home</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span><span class="o">.</span><span class="n">rename</span><span class="p">(</span>
<span class="n">columns</span><span class="o">=</span><span class="p">{</span><span class="s">'HomeTeam'</span><span class="p">:</span><span class="s">'team'</span><span class="p">,</span> <span class="s">'AwayTeam'</span><span class="p">:</span><span class="s">'opponent'</span><span class="p">,</span><span class="s">'HomeGoals'</span><span class="p">:</span><span class="s">'goals'</span><span class="p">}),</span>
<span class="n">epl_1617</span><span class="p">[[</span><span class="s">'AwayTeam'</span><span class="p">,</span><span class="s">'HomeTeam'</span><span class="p">,</span><span class="s">'AwayGoals'</span><span class="p">]]</span><span class="o">.</span><span class="n">assign</span><span class="p">(</span><span class="n">home</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span><span class="o">.</span><span class="n">rename</span><span class="p">(</span>
<span class="n">columns</span><span class="o">=</span><span class="p">{</span><span class="s">'AwayTeam'</span><span class="p">:</span><span class="s">'team'</span><span class="p">,</span> <span class="s">'HomeTeam'</span><span class="p">:</span><span class="s">'opponent'</span><span class="p">,</span><span class="s">'AwayGoals'</span><span class="p">:</span><span class="s">'goals'</span><span class="p">})])</span>
<span class="n">poisson_model</span> <span class="o">=</span> <span class="n">smf</span><span class="o">.</span><span class="n">glm</span><span class="p">(</span><span class="n">formula</span><span class="o">=</span><span class="s">"goals ~ home + team + opponent"</span><span class="p">,</span> <span class="n">data</span><span class="o">=</span><span class="n">goal_model_data</span><span class="p">,</span>
<span class="n">family</span><span class="o">=</span><span class="n">sm</span><span class="o">.</span><span class="n">families</span><span class="o">.</span><span class="n">Poisson</span><span class="p">())</span><span class="o">.</span><span class="n">fit</span><span class="p">()</span>
<span class="n">poisson_model</span><span class="o">.</span><span class="n">summary</span><span class="p">()</span>
</code></pre>
</div>
<table class="simpletable">
<caption>Generalized Linear Model Regression Results</caption>
<tr>
<th>Dep. Variable:</th> <td>goals</td> <th> No. Observations: </th> <td> 740</td>
</tr>
<tr>
<th>Model:</th> <td>GLM</td> <th> Df Residuals: </th> <td> 700</td>
</tr>
<tr>
<th>Model Family:</th> <td>Poisson</td> <th> Df Model: </th> <td> 39</td>
</tr>
<tr>
<th>Link Function:</th> <td>log</td> <th> Scale: </th> <td>1.0</td>
</tr>
<tr>
<th>Method:</th> <td>IRLS</td> <th> Log-Likelihood: </th> <td> -1042.4</td>
</tr>
<tr>
<th>Date:</th> <td>Sat, 10 Jun 2017</td> <th> Deviance: </th> <td> 776.11</td>
</tr>
<tr>
<th>Time:</th> <td>11:17:38</td> <th> Pearson chi2: </th> <td> 659.</td>
</tr>
<tr>
<th>No. Iterations:</th> <td>8</td> <th> </th> <td> </td>
</tr>
</table>
<table class="simpletable">
<tr>
<td></td> <th>coef</th> <th>std err</th> <th>z</th> <th>P>|z|</th> <th>[95.0% Conf. Int.]</th>
</tr>
<tr>
<th>Intercept</th> <td> 0.3725</td> <td> 0.198</td> <td> 1.880</td> <td> 0.060</td> <td> -0.016 0.761</td>
</tr>
<tr>
<th>team[T.Bournemouth]</th> <td> -0.2891</td> <td> 0.179</td> <td> -1.612</td> <td> 0.107</td> <td> -0.641 0.062</td>
</tr>
<tr>
<th>team[T.Burnley]</th> <td> -0.6458</td> <td> 0.200</td> <td> -3.230</td> <td> 0.001</td> <td> -1.038 -0.254</td>
</tr>
<tr>
<th>team[T.Chelsea]</th> <td> 0.0789</td> <td> 0.162</td> <td> 0.488</td> <td> 0.626</td> <td> -0.238 0.396</td>
</tr>
<tr>
<th>team[T.Crystal Palace]</th> <td> -0.3865</td> <td> 0.183</td> <td> -2.107</td> <td> 0.035</td> <td> -0.746 -0.027</td>
</tr>
<tr>
<th>team[T.Everton]</th> <td> -0.2008</td> <td> 0.173</td> <td> -1.161</td> <td> 0.246</td> <td> -0.540 0.138</td>
</tr>
<tr>
<th>team[T.Hull]</th> <td> -0.7006</td> <td> 0.204</td> <td> -3.441</td> <td> 0.001</td> <td> -1.100 -0.302</td>
</tr>
<tr>
<th>team[T.Leicester]</th> <td> -0.4204</td> <td> 0.187</td> <td> -2.249</td> <td> 0.025</td> <td> -0.787 -0.054</td>
</tr>
<tr>
<th>team[T.Liverpool]</th> <td> 0.0162</td> <td> 0.164</td> <td> 0.099</td> <td> 0.921</td> <td> -0.306 0.338</td>
</tr>
<tr>
<th>team[T.Man City]</th> <td> 0.0117</td> <td> 0.164</td> <td> 0.072</td> <td> 0.943</td> <td> -0.310 0.334</td>
</tr>
<tr>
<th>team[T.Man United]</th> <td> -0.3572</td> <td> 0.181</td> <td> -1.971</td> <td> 0.049</td> <td> -0.713 -0.002</td>
</tr>
<tr>
<th>team[T.Middlesbrough]</th> <td> -1.0087</td> <td> 0.225</td> <td> -4.481</td> <td> 0.000</td> <td> -1.450 -0.568</td>
</tr>
<tr>
<th>team[T.Southampton]</th> <td> -0.5804</td> <td> 0.195</td> <td> -2.976</td> <td> 0.003</td> <td> -0.963 -0.198</td>
</tr>
<tr>
<th>team[T.Stoke]</th> <td> -0.6082</td> <td> 0.197</td> <td> -3.094</td> <td> 0.002</td> <td> -0.994 -0.223</td>
</tr>
<tr>
<th>team[T.Sunderland]</th> <td> -0.9619</td> <td> 0.222</td> <td> -4.329</td> <td> 0.000</td> <td> -1.397 -0.526</td>
</tr>
<tr>
<th>team[T.Swansea]</th> <td> -0.5136</td> <td> 0.192</td> <td> -2.673</td> <td> 0.008</td> <td> -0.890 -0.137</td>
</tr>
<tr>
<th>team[T.Tottenham]</th> <td> 0.0532</td> <td> 0.162</td> <td> 0.328</td> <td> 0.743</td> <td> -0.265 0.371</td>
</tr>
<tr>
<th>team[T.Watford]</th> <td> -0.5969</td> <td> 0.197</td> <td> -3.035</td> <td> 0.002</td> <td> -0.982 -0.211</td>
</tr>
<tr>
<th>team[T.West Brom]</th> <td> -0.5567</td> <td> 0.194</td> <td> -2.876</td> <td> 0.004</td> <td> -0.936 -0.177</td>
</tr>
<tr>
<th>team[T.West Ham]</th> <td> -0.4802</td> <td> 0.189</td> <td> -2.535</td> <td> 0.011</td> <td> -0.851 -0.109</td>
</tr>
<tr>
<th>opponent[T.Bournemouth]</th> <td> 0.4109</td> <td> 0.196</td> <td> 2.092</td> <td> 0.036</td> <td> 0.026 0.796</td>
</tr>
<tr>
<th>opponent[T.Burnley]</th> <td> 0.1657</td> <td> 0.206</td> <td> 0.806</td> <td> 0.420</td> <td> -0.237 0.569</td>
</tr>
<tr>
<th>opponent[T.Chelsea]</th> <td> -0.3036</td> <td> 0.234</td> <td> -1.298</td> <td> 0.194</td> <td> -0.762 0.155</td>
</tr>
<tr>
<th>opponent[T.Crystal Palace]</th> <td> 0.3287</td> <td> 0.200</td> <td> 1.647</td> <td> 0.100</td> <td> -0.062 0.720</td>
</tr>
<tr>
<th>opponent[T.Everton]</th> <td> -0.0442</td> <td> 0.218</td> <td> -0.202</td> <td> 0.840</td> <td> -0.472 0.384</td>
</tr>
<tr>
<th>opponent[T.Hull]</th> <td> 0.4979</td> <td> 0.193</td> <td> 2.585</td> <td> 0.010</td> <td> 0.120 0.875</td>
</tr>
<tr>
<th>opponent[T.Leicester]</th> <td> 0.3369</td> <td> 0.199</td> <td> 1.694</td> <td> 0.090</td> <td> -0.053 0.727</td>
</tr>
<tr>
<th>opponent[T.Liverpool]</th> <td> -0.0374</td> <td> 0.217</td> <td> -0.172</td> <td> 0.863</td> <td> -0.463 0.389</td>
</tr>
<tr>
<th>opponent[T.Man City]</th> <td> -0.0993</td> <td> 0.222</td> <td> -0.448</td> <td> 0.654</td> <td> -0.534 0.335</td>
</tr>
<tr>
<th>opponent[T.Man United]</th> <td> -0.4220</td> <td> 0.241</td> <td> -1.754</td> <td> 0.079</td> <td> -0.894 0.050</td>
</tr>
<tr>
<th>opponent[T.Middlesbrough]</th> <td> 0.1196</td> <td> 0.208</td> <td> 0.574</td> <td> 0.566</td> <td> -0.289 0.528</td>
</tr>
<tr>
<th>opponent[T.Southampton]</th> <td> 0.0458</td> <td> 0.211</td> <td> 0.217</td> <td> 0.828</td> <td> -0.369 0.460</td>
</tr>
<tr>
<th>opponent[T.Stoke]</th> <td> 0.2266</td> <td> 0.203</td> <td> 1.115</td> <td> 0.265</td> <td> -0.172 0.625</td>
</tr>
<tr>
<th>opponent[T.Sunderland]</th> <td> 0.3707</td> <td> 0.198</td> <td> 1.876</td> <td> 0.061</td> <td> -0.017 0.758</td>
</tr>
<tr>
<th>opponent[T.Swansea]</th> <td> 0.4336</td> <td> 0.195</td> <td> 2.227</td> <td> 0.026</td> <td> 0.052 0.815</td>
</tr>
<tr>
<th>opponent[T.Tottenham]</th> <td> -0.5431</td> <td> 0.252</td> <td> -2.156</td> <td> 0.031</td> <td> -1.037 -0.049</td>
</tr>
<tr>
<th>opponent[T.Watford]</th> <td> 0.3533</td> <td> 0.198</td> <td> 1.782</td> <td> 0.075</td> <td> -0.035 0.742</td>
</tr>
<tr>
<th>opponent[T.West Brom]</th> <td> 0.0970</td> <td> 0.209</td> <td> 0.463</td> <td> 0.643</td> <td> -0.313 0.507</td>
</tr>
<tr>
<th>opponent[T.West Ham]</th> <td> 0.3485</td> <td> 0.198</td> <td> 1.758</td> <td> 0.079</td> <td> -0.040 0.737</td>
</tr>
<tr>
<th>home</th> <td> 0.2969</td> <td> 0.063</td> <td> 4.702</td> <td> 0.000</td> <td> 0.173 0.421</td>
</tr>
</table>
<p>If you’re curious about the <code class="highlighter-rouge">smf.glm(...)</code> part, you can find more information <a href="http://www.statsmodels.org/stable/examples/notebooks/generated/glm_formula.html">here</a> (edit: earlier versions of this post had erroneously employed a Generalised Estimating Equation (GEE)- <a href="https://stats.stackexchange.com/questions/16390/when-to-use-generalized-estimating-equations-vs-mixed-effects-models">what’s the difference?</a>). I’m more interested in the values presented in the <code class="highlighter-rouge">coef</code> column in the model summary table, which are analogous to the slopes in linear regression. Similar to <a href="https://en.wikipedia.org/wiki/Logistic_regression">logistic regression</a>, we take the <a href="http://www.lisa.stat.vt.edu/sites/default/files/Poisson.and_.Logistic.Regression.pdf">exponent of the parameter values</a>. A positive value implies more goals (<script type="math/tex">e^{x}>1 \forall x > 0</script>), while values closer to zero represent more neutral effects (<script type="math/tex">e^{0}=1</script>). Towards the bottom of the table you might notice that <code class="highlighter-rouge">home</code> has a <code class="highlighter-rouge">coef</code> of 0.2969. This captures the fact that home teams generally score more goals than the away team (specifically, <script type="math/tex">e^{0.2969}</script>=1.35 times more likely). But not all teams are created equal. Chelsea has a <code class="highlighter-rouge">coef</code> of 0.0789, while the corresponding value for Sunderland is -0.9619 (sort of saying Chelsea (Sunderland) are better (much worse!) scorers than average). Finally, the <code class="highlighter-rouge">opponent*</code> values penalize/reward teams based on the quality of the opposition. This relfects the defensive strength of each team (Chelsea: -0.3036; Sunderland: 0.3707). In other words, you’re less likely to score against Chelsea. Hopefully, that all makes both statistical and intuitive sense.</p>
<p>Let’s start making some predictions for the upcoming matches. We simply pass our teams into <code class="highlighter-rouge">poisson_model</code> and it’ll return the expected average number of goals for that team (we need to run it twice- we calculate the expected average number of goals for each team separately). So let’s see how many goals we expect Chelsea and Sunderland to score.</p>
<div class="language-python highlighter-rouge"><pre class="highlight"><code><span class="n">poisson_model</span><span class="o">.</span><span class="n">predict</span><span class="p">(</span><span class="n">pd</span><span class="o">.</span><span class="n">DataFrame</span><span class="p">(</span><span class="n">data</span><span class="o">=</span><span class="p">{</span><span class="s">'team'</span><span class="p">:</span> <span class="s">'Chelsea'</span><span class="p">,</span> <span class="s">'opponent'</span><span class="p">:</span> <span class="s">'Sunderland'</span><span class="p">,</span>
<span class="s">'home'</span><span class="p">:</span><span class="mi">1</span><span class="p">},</span><span class="n">index</span><span class="o">=</span><span class="p">[</span><span class="mi">1</span><span class="p">]))</span>
</code></pre>
</div>
<div class="highlighter-rouge"><pre class="highlight"><code>array([ 3.06166192])
</code></pre>
</div>
<div class="language-python highlighter-rouge"><pre class="highlight"><code><span class="n">poisson_model</span><span class="o">.</span><span class="n">predict</span><span class="p">(</span><span class="n">pd</span><span class="o">.</span><span class="n">DataFrame</span><span class="p">(</span><span class="n">data</span><span class="o">=</span><span class="p">{</span><span class="s">'team'</span><span class="p">:</span> <span class="s">'Sunderland'</span><span class="p">,</span> <span class="s">'opponent'</span><span class="p">:</span> <span class="s">'Chelsea'</span><span class="p">,</span>
<span class="s">'home'</span><span class="p">:</span><span class="mi">0</span><span class="p">},</span><span class="n">index</span><span class="o">=</span><span class="p">[</span><span class="mi">1</span><span class="p">]))</span>
</code></pre>
</div>
<div class="highlighter-rouge"><pre class="highlight"><code>array([ 0.40937279])
</code></pre>
</div>
<p>Just like before, we have two Poisson distributions. From this, we can calculate the probability of various events. I’ll wrap this in a <code class="highlighter-rouge">simulate_match</code> function.</p>
<div class="language-python highlighter-rouge"><pre class="highlight"><code><span class="k">def</span> <span class="nf">simulate_match</span><span class="p">(</span><span class="n">foot_model</span><span class="p">,</span> <span class="n">homeTeam</span><span class="p">,</span> <span class="n">awayTeam</span><span class="p">,</span> <span class="n">max_goals</span><span class="o">=</span><span class="mi">10</span><span class="p">):</span>
<span class="n">home_goals_avg</span> <span class="o">=</span> <span class="n">goals_model</span><span class="o">.</span><span class="n">predict</span><span class="p">(</span><span class="n">pd</span><span class="o">.</span><span class="n">DataFrame</span><span class="p">(</span><span class="n">data</span><span class="o">=</span><span class="p">{</span><span class="s">'team'</span><span class="p">:</span> <span class="n">homeTeam</span><span class="p">,</span>
<span class="s">'opponent'</span><span class="p">:</span> <span class="n">awayTeam</span><span class="p">,</span><span class="s">'home'</span><span class="p">:</span><span class="mi">1</span><span class="p">},</span>
<span class="n">index</span><span class="o">=</span><span class="p">[</span><span class="mi">1</span><span class="p">]))[</span><span class="mi">0</span><span class="p">]</span>
<span class="n">away_goals_avg</span> <span class="o">=</span> <span class="n">goals_model</span><span class="o">.</span><span class="n">predict</span><span class="p">(</span><span class="n">pd</span><span class="o">.</span><span class="n">DataFrame</span><span class="p">(</span><span class="n">data</span><span class="o">=</span><span class="p">{</span><span class="s">'team'</span><span class="p">:</span> <span class="n">awayTeam</span><span class="p">,</span>
<span class="s">'opponent'</span><span class="p">:</span> <span class="n">homeTeam</span><span class="p">,</span><span class="s">'home'</span><span class="p">:</span><span class="mi">0</span><span class="p">},</span>
<span class="n">index</span><span class="o">=</span><span class="p">[</span><span class="mi">1</span><span class="p">]))[</span><span class="mi">0</span><span class="p">]</span>
<span class="n">team_pred</span> <span class="o">=</span> <span class="p">[[</span><span class="n">poisson</span><span class="o">.</span><span class="n">pmf</span><span class="p">(</span><span class="n">i</span><span class="p">,</span> <span class="n">team_avg</span><span class="p">)</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">max_goals</span><span class="o">+</span><span class="mi">1</span><span class="p">)]</span> <span class="k">for</span> <span class="n">team_avg</span> <span class="ow">in</span> <span class="p">[</span><span class="n">home_goals_avg</span><span class="p">,</span> <span class="n">away_goals_avg</span><span class="p">]]</span>
<span class="k">return</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">outer</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">team_pred</span><span class="p">[</span><span class="mi">0</span><span class="p">]),</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">team_pred</span><span class="p">[</span><span class="mi">1</span><span class="p">])))</span>
<span class="n">simulate_match</span><span class="p">(</span><span class="n">poisson_model</span><span class="p">,</span> <span class="s">'Chelsea'</span><span class="p">,</span> <span class="s">'Sunderland'</span><span class="p">,</span> <span class="n">max_goals</span><span class="o">=</span><span class="mi">3</span><span class="p">)</span>
</code></pre>
</div>
<div class="highlighter-rouge"><pre class="highlight"><code>array([[ 0.03108485, 0.01272529, 0.00260469, 0.00035543],
[ 0.0951713 , 0.03896054, 0.00797469, 0.00108821],
[ 0.14569118, 0.059642 , 0.01220791, 0.00166586],
[ 0.14868571, 0.06086788, 0.01245883, 0.0017001 ]])
</code></pre>
</div>
<p>This matrix simply shows the probability of Chelsea (rows of the matrix) and Sunderland (matrix columns) scoring a specific number of goals. For example, along the diagonal, both teams score the same the number of goals (e.g. P(0-0)=0.031). So, you can calculate the odds of draw by summing all the diagonal entries. Everything below the diagonal represents a Chelsea victory (e.g P(3-0)=0.149), And you can estimate P(Over 2.5 goals) by summing all entries except the four values in the upper left corner. Luckily, we can use basic matrix manipulation functions to perform these calculations.</p>
<div class="language-python highlighter-rouge"><pre class="highlight"><code><span class="n">chel_sun</span> <span class="o">=</span> <span class="n">simulate_match</span><span class="p">(</span><span class="n">poisson_model</span><span class="p">,</span> <span class="s">"Chelsea"</span><span class="p">,</span> <span class="s">"Sunderland"</span><span class="p">,</span> <span class="n">max_goals</span><span class="o">=</span><span class="mi">10</span><span class="p">)</span>
<span class="c"># chelsea win</span>
<span class="n">np</span><span class="o">.</span><span class="nb">sum</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">tril</span><span class="p">(</span><span class="n">chel_sun</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">))</span>
</code></pre>
</div>
<div class="highlighter-rouge"><pre class="highlight"><code>0.8885986612364134
</code></pre>
</div>
<div class="language-python highlighter-rouge"><pre class="highlight"><code><span class="c"># draw</span>
<span class="n">np</span><span class="o">.</span><span class="nb">sum</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">diag</span><span class="p">(</span><span class="n">chel_sun</span><span class="p">))</span>
</code></pre>
</div>
<div class="highlighter-rouge"><pre class="highlight"><code>0.084093492686495977
</code></pre>
</div>
<div class="language-python highlighter-rouge"><pre class="highlight"><code><span class="c"># sunderland win</span>
<span class="n">np</span><span class="o">.</span><span class="nb">sum</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">triu</span><span class="p">(</span><span class="n">chel_sun</span><span class="p">,</span> <span class="mi">1</span><span class="p">))</span>
</code></pre>
</div>
<div class="highlighter-rouge"><pre class="highlight"><code>0.026961819942853051
</code></pre>
</div>
<p>Hmm, our model gives Sunderland a 2.7% chance of winning. But is that right? To assess the accuracy of the predictions, we’ll compare the probabilities returned by our model against the odds offered by the <a href="https://www.betfair.com/exchange/plus/football">Betfair exchange</a>.</p>
<h2 id="sports-bettingtrading">Sports Betting/Trading</h2>
<p>Unlike traditional bookmakers, on betting exchanges (and Betfair isn’t the only one- it’s just the biggest), you bet against other people (with Betfair taking a commission on winnings). It acts as a sort of stock market for sports events. And, like a stock market, due to the <a href="https://en.wikipedia.org/wiki/Efficient-market_hypothesis">efficient market hypothesis</a>, the prices available at Betfair reflect the true price/odds of those events happening (in theory anyway). Below, I’ve posted a screenshot of the Betfair exchange on Sunday 21st May (a few hours before those matches started).</p>
<div style="text-align:center">
<p><img src="/images/betfair_exchange.png" alt="" /></p>
</div>
<p>The numbers inside the boxes represent the best available prices and the amount available at those prices. The blue boxes signify back bets (i.e. betting that an event will happen- going long using stock market terminology), while the pink boxes represent lay bets (i.e. betting that something won’t happen- i.e. shorting). For example, if we were to bet £100 on Chelsea to win, we would receive the original amount plus 100*1.13= £13 should they win (of course, we would lose our £100 if they didn’t win). Now, how can we compare these prices to the probabilities returned by our model? Well, decimal odds can be converted to the probabilities quite easily: it’s simply the inverse of the decimal odds. For example, the implied probability of Chelsea winning is 1/1.13 (=0.885- our model put the probability at 0.889). I’m focusing on decimal odds, but you might also be familiar with <a href="https://www.pinnacle.com/en/betting-articles/educational/odds-formats-available-at-pinnacle-sports">Moneyline (American) Odds</a> (e.g. +200) and fractional odds (e.g. 2/1). The relationship between decimal odds, moneyline and probability is illustrated in the table below. I’ll stick with decimal odds because the alternatives are either unfamiliar to me (Moneyline) or just stupid (fractional odds).</p>
<html><head>
<style>
#betfair_table table{
margin: 1em 0;
overflow: hidden;
background: #FFF;
color: #024457;
text-align: left;
}
#betfair_table tr:nth-child(odd) {
background-color: #EAF3F3;
}
#betfair_table th {
display: none;
text-align: center;
border-bottom: 0.5em solid #FFF;
border: 0.3em solid #FFF;
background-color: #167F92;
color: #FFF;
padding: 1em;
text-align: center;
}
#betfair_table th:first-child {
border-right: 0.2em solid #FFF;
border-left: 0em
display: table-cell;
text-align: center;
}
#betfair_table th:nth-child(2) {
display: table-cell;
}
#betfair_table th:nth-child(2) span {
display: none;
}
#betfair_table th:nth-child(2):after {
content: attr(data-th);
}
td {
display: block;
word-wrap: break-word;
max-width: 7em;
text-align: center;
border-right: 0.3em solid #FFF;
border-left: 0.3em solid #FFF;
}
#betfair_table td:first-child {
display: table-cell;
text-align: center;
border-right: 0.3em solid #FFF;
border-left: 0.3em solid #FFF;
}
table#betfair_table th, td {
text-align: center;
margin: .4em 1em;
display: table-cell;
padding: 0.4em;
}
#betfair_table tr {
font-family: Arial, sans-serif;
color: #024457;
}
.button {
background-color: #4CAF50;
color: white;
text-align: center;
text-decoration: none;
display: inline-block;
font-size: 0.8em;
cursor: pointer;
margin-left: 0.3em;
}
.button:hover {
background-color: blue;
color: white;
}
/* Define the hover highlight color for the table row */
table#betfair_table tbody tr:hover{
background-color: lightyellow;
}
caption{caption-side:bottom}
table#betfair_table tbody tr:hover {
background-color: #ffff99;
}
</style>
</head>
<body>
<input type="button" class="button" id="odds" value="Convert to Decimal Odds" onclick="return change_button(this);" />
<table style="width:80%" id="betfair_table" align="center">
<caption><b>Chance of Occurence (EPL Fixtures 21st May 2017)</b><br /> Source: Betfair Exchange</caption>
<thead>
<tr>
<th>Match</th>
<th>Home</th>
<th>Draw</th>
<th>Away</th>
</tr>
</thead>
<tbody> <tr> <td>Arsenal v Everton</td> <td>71.4 %</td> <td>17.5 %</td> <td>11.6 %</td> </tr><tr> <td>Burnley v West Ham</td> <td>42 %</td> <td>27.8 %</td> <td>30.8 %</td> </tr><tr> <td>Chelsea v Sunderland</td> <td>88.5 %</td> <td>8.7 %</td> <td>3.4 %</td> </tr><tr> <td>Hull v Tottenham</td> <td>10.9 %</td> <td>17.2 %</td> <td>71.9 %</td> </tr><tr> <td>Leicester v Bournemouth</td> <td>53.5 %</td> <td>24.4 %</td> <td>23.3 %</td> </tr><tr> <td>Liverpool v Middlesbrough</td> <td>87.7 %</td> <td>9.5 %</td> <td>3.6 %</td> </tr><tr> <td>Man Utd v C Palace</td> <td>41.7 %</td> <td>29 %</td> <td>29.9 %</td> </tr><tr> <td>Southampton v Stoke</td> <td>57.1 %</td> <td>24.4 %</td> <td>19.2 %</td> </tr><tr> <td>Swansea v West Brom</td> <td>43.1 %</td> <td>28.6 %</td> <td>29 %</td> </tr><tr> <td>Watford v Man City</td> <td>5.1 %</td> <td>10.2 %</td> <td>85.5 %</td> </tr>
</tbody>
</table> </body>
<script type="text/javascript">
var insert = document.getElementById("odds");
insert.addEventListener("click", function() {
var allTableallCells = document.getElementById("betfair_table");
var allTableCells = allTableallCells.getElementsByTagName("td");
for(var i = 0, max = allTableCells.length; i < max; i++){
var node = allTableCells[i];
if(node.cellIndex ==0){
continue;
}
var currentText = node.childNodes[0].nodeValue;
if(insert.value==="Convert to Chance"){
if(currentText>=2){
node.innerHTML = "+"+Math.round(100*(currentText-1)*100)/100;}
else{
node.innerHTML = Math.round(100*(-100)/(currentText-1)/100);}
}
else if(insert.value==="Convert to Decimal Odds"){
if(currentText>0){
node.innerHTML = Math.round(100*1/((currentText/100)+1))/100;}
else{
node.innerHTML = Math.round(1000/((-100/currentText)+1))/1000;}
node.innerHTML = Math.round(10000*node.innerHTML)/100 + " %"
}
else{
currentText = parseFloat(currentText)/100;
node.innerHTML = Math.round(100/currentText)/100;
}
}})
function change_button( el )
{
switch (el.value) {
case "Convert to Chance":
el.value = "Decimal Odds";
document.getElementById("betfair_table").caption.innerHTML = "Chance of Occurence";
break;
case "Convert to Decimal Odds":
el.value = "American Odds";
document.getElementById("betfair_table").caption.innerHTML = "Decimal Odds";
break;
case "Convert to American Odds":
el.value = "Chance";
document.getElementById("betfair_table").caption.innerHTML = "American Odds";
break;
}
el.value = "Convert to " + el.value;
document.getElementById("betfair_table").caption.innerHTML =
"<b>"+document.getElementById("betfair_table").caption.innerHTML +
" (EPL Fixtures 21st May 2017)</b><br/> Source: Betfair Exchange";
}
</script>
</html>
<p>So, we have our model probabilities and (if we trust the exchange) we know the true probabilities of each event happening. Ideally, our model would identify situations the market has underestimated the chances of an event occurring (or not occurring in the case of lay bets). For example, in a simple coin toss game, imagine if you were offered $2 for every $1 wagered (plus your stake), if you guessed correctly. The implied probability is 0.333, but any valid model would return a probability of 0.5. The odds returned by our model and the Betfair exchange are compared in the table below.</p>
<html>
<meta charset="utf-8" />
<head>
<style>
.MathJax_Display {
font-size: 0.8em !important;
}
#comparison_table tr {
border: 1px solid #D9E4E6;
}
#comparison_table th {
border: 0.5px solid #FFF;
background-color: #167F92;
color: #FFF;
padding: 0.5em;
text-align: center;
}
#comparison_table th:first-child {
display: table-cell;
text-align: center;
}
#comparison_table th:nth-child(2) {
display: table-cell;
}
#comparison_table th:nth-child(2) span {
display: none;
}
#comparison_table th:nth-child(2):after {
content: attr(data-th);
}
#comparison_table td {
display: table-cell;
text-align: center;
border: 0.1em solid #FFF;
max-width: 7em;
background-color: #EAF3F3;
padding: 0.5em;
}
#comparison_table tr {
font-family: Arial, sans-serif;
color: #024457;
}
#comparison_table .odds_type {
border: 0.1em solid #FFF;
background-color: #cee0e0;
}
</style> </head>
<body>
<table style="width:80%" id="comparison_table" align="center">
<thead>
<tr>
<th colspan="2">Match</th>
<th>Home</th>
<th>Draw</th>
<th>Away</th>
</tr>
</thead>
<tbody>
<tr> <td rowspan="3" class="odds_type">Arsenal v Everton</td> <td class="odds_type">Betfair</td> <td>0.714</td> <td>0.175</td> <td>0.116</td> </tr> <tr> <td class="odds_type">Predicted</td> <td>0.533</td> <td>0.226</td> <td>0.241</td> </tr> <tr> <td class="odds_type">Difference</td> <td class="diff">0.181</td> <td class="diff">-0.051</td> <td class="diff">-0.125</td> </tr><tr> <td rowspan="3" class="odds_type">Burnley v West Ham</td> <td class="odds_type">Betfair</td> <td>0.42</td> <td>0.278</td> <td>0.308</td> </tr> <tr> <td class="odds_type">Predicted</td> <td>0.461</td> <td>0.263</td> <td>0.276</td> </tr> <tr> <td class="odds_type">Difference</td> <td class="diff">-0.041</td> <td class="diff">0.015</td> <td class="diff">0.032</td> </tr><tr> <td rowspan="3" class="odds_type">Chelsea v Sunderland</td> <td class="odds_type">Betfair</td> <td>0.885</td> <td>0.087</td> <td>0.034</td> </tr> <tr> <td class="odds_type">Predicted</td> <td>0.889</td> <td>0.084</td> <td>0.027</td> </tr> <tr> <td class="odds_type">Difference</td> <td class="diff">-0.004</td> <td class="diff">0.003</td> <td class="diff">0.007</td> </tr><tr> <td rowspan="3" class="odds_type">Hull v Tottenham</td> <td class="odds_type">Betfair</td> <td>0.109</td> <td>0.172</td> <td>0.719</td> </tr> <tr> <td class="odds_type">Predicted</td> <td>0.063</td> <td>0.138</td> <td>0.799</td> </tr> <tr> <td class="odds_type">Difference</td> <td class="diff">0.046</td> <td class="diff">0.034</td> <td class="diff">-0.08</td> </tr><tr> <td rowspan="3" class="odds_type">Leicester v Bournemouth</td> <td class="odds_type">Betfair</td> <td>0.535</td> <td>0.244</td> <td>0.233</td> </tr> <tr> <td class="odds_type">Predicted</td> <td>0.475</td> <td>0.22</td> <td>0.306</td> </tr> <tr> <td class="odds_type">Difference</td> <td class="diff">0.06</td> <td class="diff">0.024</td> <td class="diff">-0.073</td> </tr><tr> <td rowspan="3" class="odds_type">Liverpool v Middlesbrough</td> <td class="odds_type">Betfair</td> <td>0.877</td> <td>0.095</td> <td>0.036</td> </tr> <tr> <td class="odds_type">Predicted</td> <td>0.77</td> <td>0.161</td> <td>0.069</td> </tr> <tr> <td class="odds_type">Difference</td> <td class="diff">0.107</td> <td class="diff">-0.066</td> <td class="diff">-0.033</td> </tr><tr> <td rowspan="3" class="odds_type">Man Utd v C Palace</td> <td class="odds_type">Betfair</td> <td>0.417</td> <td>0.29</td> <td>0.299</td> </tr> <tr> <td class="odds_type">Predicted</td> <td>0.672</td> <td>0.209</td> <td>0.119</td> </tr> <tr> <td class="odds_type">Difference</td> <td class="diff">-0.255</td> <td class="diff">0.081</td> <td class="diff">0.18</td> </tr><tr> <td rowspan="3" class="odds_type">Southampton v Stoke</td> <td class="odds_type">Betfair</td> <td>0.571</td> <td>0.244</td> <td>0.192</td> </tr> <tr> <td class="odds_type">Predicted</td> <td>0.496</td> <td>0.277</td> <td>0.226</td> </tr> <tr> <td class="odds_type">Difference</td> <td class="diff">0.075</td> <td class="diff">-0.033</td> <td class="diff">-0.034</td> </tr><tr> <td rowspan="3" class="odds_type">Swansea v West Brom</td> <td class="odds_type">Betfair</td> <td>0.431</td> <td>0.286</td> <td>0.29</td> </tr> <tr> <td class="odds_type">Predicted</td> <td>0.368</td> <td>0.266</td> <td>0.366</td> </tr> <tr> <td class="odds_type">Difference</td> <td class="diff">0.063</td> <td class="diff">0.02</td> <td class="diff">-0.076</td> </tr><tr> <td rowspan="3" class="odds_type">Watford v Man City</td> <td class="odds_type">Betfair</td> <td>0.051</td> <td>0.102</td> <td>0.855</td> </tr> <tr> <td class="odds_type">Predicted</td> <td>0.167</td> <td>0.203</td> <td>0.631</td> </tr> <tr> <td class="odds_type">Difference</td> <td class="diff">-0.116</td> <td class="diff">-0.101</td> <td class="diff">0.224</td> </tr>
</tbody>
</table> </body>
<script type="text/javascript">
var allTableCells = document.getElementsByClassName("diff");
for(var i = 0, max = allTableCells.length; i < max; i++) {
var node = allTableCells[i];
var currentText = node.childNodes[0].nodeValue;
var gradient = 255-Math.round(Math.abs(255*parseFloat(currentText)/0.2));
if (currentText[0] ==="-"){
node.style.backgroundColor = "rgb("+gradient+",255,"+gradient+")";
node.childNodes[0].nodeValue = currentText.substring(1);
}
else{
node.style.backgroundColor = "rgb(255,"+gradient+","+gradient+")";
}
}
</script>
</html>
<p>Green cells illustrate opportunities to make profitable bets, according to our model (the opacity of the cell is determined by the implied difference). I’ve highlighted the difference between the model and Betfair in absolute terms (the relative difference may be more relevant for any trading strategy). Transparent cells indicate situations where the exchange and our model are in broad agreement. Strong colours imply that either our model is wrong or the exchange is wrong. Given the simplicity of our model, I’d lean towards the latter.</p>
<h2 id="somethings-poissony">Something’s Poissony</h2>
<p>So should we bet the house on Manchester United? Probably not (<a href="https://www.theguardian.com/football/2017/may/21/manchester-united-crystal-palace-premier-league-match-report">though they did win!</a>). There’s some non-statistical reasons to resist backing them. Keen football fans would notice that these matches represent the final gameweek of the season. Most teams have very little to play for, meaning that the matches are less predictable (especially when they involve unmotivated ‘bigger’ teams). Compounding that, Man United were set to play Ajax in the Europa Final three days later. <a href="https://www.theguardian.com/football/2017/may/17/jose-mourinho-manchester-united-last-premier-league-game">Man United manager, Jose Mourinho, had even confirmed that he would rest the first team, saving them for the much more important final</a>. In a similar fashion, injuries/suspensions to key players, managerial sackings would render our model inaccurate. Never underestimate the importance of domain knowledge in statistical modelling/machine learning! We could also think of improvements to the model that would <a href="http://opisthokonta.net/?p=890">incorporate time when considering previous matches</a> (i.e. more recent matches should be weighted more strongly).</p>
<p>Statistically speaking, is a Poisson distribution even appropriate? Our model was founded on the belief that the number goals can be accurately expressed as a Poisson distribution. If that assumption is misguided, then the model outputs will be unreliable. Given a Poisson distribution with mean <script type="math/tex">\lambda</script>, then the number of events in half that time period follows a Poisson distribution with mean <script type="math/tex">\lambda</script>/2. In football terms, according to our Poisson model, there should be an equal number of goals in the first and second halves. Unfortunately, that doesn’t appear to hold true.</p>
<div class="language-python highlighter-rouge"><pre class="highlight"><code><span class="n">epl_1617_halves</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">read_csv</span><span class="p">(</span><span class="s">"http://www.football-data.co.uk/mmz4281/1617/E0.csv"</span><span class="p">)</span>
<span class="n">epl_1617_halves</span> <span class="o">=</span> <span class="n">epl_1617_halves</span><span class="p">[[</span><span class="s">'FTHG'</span><span class="p">,</span> <span class="s">'FTAG'</span><span class="p">,</span> <span class="s">'HTHG'</span><span class="p">,</span> <span class="s">'HTAG'</span><span class="p">]]</span>
<span class="n">epl_1617_halves</span><span class="p">[</span><span class="s">'FHgoals'</span><span class="p">]</span> <span class="o">=</span> <span class="n">epl_1617_halves</span><span class="p">[</span><span class="s">'HTHG'</span><span class="p">]</span> <span class="o">+</span> <span class="n">epl_1617_halves</span><span class="p">[</span><span class="s">'HTAG'</span><span class="p">]</span>
<span class="n">epl_1617_halves</span><span class="p">[</span><span class="s">'SHgoals'</span><span class="p">]</span> <span class="o">=</span> <span class="n">epl_1617_halves</span><span class="p">[</span><span class="s">'FTHG'</span><span class="p">]</span> <span class="o">+</span> <span class="n">epl_1617_halves</span><span class="p">[</span><span class="s">'FTAG'</span><span class="p">]</span> <span class="o">-</span>
<span class="n">epl_1617_halves</span><span class="p">[</span><span class="s">'FHgoals'</span><span class="p">]</span>
<span class="n">epl_1617_halves</span> <span class="o">=</span> <span class="n">epl_1617_halves</span><span class="p">[[</span><span class="s">'FHgoals'</span><span class="p">,</span> <span class="s">'SHgoals'</span><span class="p">]]</span>
</code></pre>
</div>
<div style="text-align:center">
<p><img src="/images/goals_per_half_python.png" alt="" /></p>
</div>
<p>We have irrefutable evidence that violates the whole basis of our model, rendering this whole post as pointless as Sunderland!!! Or we can build on our crude first attempt. Rather than a simple univariate Poisson model, we might have <a href="http://www.ajbuckeconbikesail.net/wkpapers/Airports/MVPoisson/soccer_betting.pdf">more success</a> with a <a href="http://www.stat-athens.aueb.gr/~karlis/Bivariate%20Poisson%20Regression.pdf">bivariate Poisson distriubtion</a>. The <a href="https://en.wikipedia.org/wiki/Weibull_distribution">Weibull distribution</a> has also been proposed as a <a href="http://www.sportstradingnetwork.com/article/journal/using-the-weibull-count-distribution-for-predicting-the-results-of-football-matches/">viable alternative</a>. These might be topics for future blog posts.</p>
<h2 id="summary">Summary</h2>
<p>We built a simple Poisson model to predict the results of English Premier League matches. Despite its inherent flaws, it recreates several features that would be a necessity for any predictive football model (home advantage, varying offensive strengths and opposition quality). In conclusion, don’t wager the rent money, but it’s a good starting point for more sophisticated realistic models. Thanks for reading!</p>
Sun, 04 Jun 2017 00:00:00 +0000
https://dashee87.github.io/football/python/predicting-football-results-with-statistical-modelling/
https://dashee87.github.io/football/python/predicting-football-results-with-statistical-modelling/Predicting Football Results With Statistical Modelling<p>Football (or soccer to my American readers) is full of clichés: “It’s a game of two halves”, “taking it one game at a time” and “Liverpool have failed to win the Premier League”. You’re less likely to hear “Treating the number of goals scored by each team as independent Poisson processes, statistical modelling suggests that the home team have a 60% chance of winning today”. But this is actually a bit of cliché too (it has been discussed <a href="https://www.pinnacle.com/en/betting-articles/soccer/how-to-calculate-poisson-distribution">here</a>, <a href="https://help.smarkets.com/hc/en-gb/articles/115001457989-How-to-calculate-Poisson-distribution-for-football-betting">here</a>, <a href="http://pena.lt/y/2014/11/02/predicting-football-using-r/">here</a> and <a href="http://opisthokonta.net/?p=296">here</a>). As we’ll discover, a simple Poisson model is, well, overly simplistic. But it’s a good starting point and a nice intuitive way to learn about statistical modelling. So, if you came here looking to make money, <a href="http://www.make5000poundspermonth.co.uk/">I hear this guy makes £5000 per month without leaving the house</a>.</p>
<h2 id="poisson-distribution">Poisson Distribution</h2>
<p>The model is founded on the number of goals scored/conceded by each team. Teams that have been higher scorers in the past have a greater likelihood of scoring goals in the future. We’ll import all match results from the recently finished Premier League (2016/17) season. There’s various sources for this data out there (<a href="https://www.kaggle.com/hugomathien/soccer">kaggle</a>, <a href="http://www.football-data.co.uk/englandm.php">football-data.co.uk</a>, <a href="https://github.com/jalapic/engsoccerdata">github</a>, <a href="http://api.football-data.org/index">API</a>). As I built an R wrapper for that API, for purely egotistical (aside: I intially misspelt this as egostistical, which I misread as egostatistical. Unfortunately, <a href="https://instantdomainsearch.com/#search=egostatistical">egostatistical.com is taken</a>) reasons, we’ll import the data using the fantastic <a href="https://github.com/dashee87/footballR">footballR package</a>.</p>
<div class="language-r highlighter-rouge"><pre class="highlight"><code><span class="c1">#devtools::install_github("dashee87/footballR") you may need to install footballR
</span><span class="n">library</span><span class="p">(</span><span class="n">footballR</span><span class="p">)</span><span class="w">
</span><span class="n">library</span><span class="p">(</span><span class="n">dplyr</span><span class="p">)</span><span class="w">
</span><span class="c1">#you'll have to wait to find out the purpose of this mysterious package
</span><span class="n">library</span><span class="p">(</span><span class="n">skellam</span><span class="p">)</span><span class="w">
</span><span class="n">library</span><span class="p">(</span><span class="n">ggplot2</span><span class="p">)</span><span class="w">
</span><span class="n">library</span><span class="p">(</span><span class="n">purrr</span><span class="p">)</span><span class="w">
</span><span class="n">library</span><span class="p">(</span><span class="n">tidyr</span><span class="p">)</span><span class="w">
</span><span class="c1"># abettor is an R wrapper for the Betfair API,
# which we'll use to obtain betting odds
#devtools::install_github("phillc73/abettor")
</span><span class="n">library</span><span class="p">(</span><span class="n">abettor</span><span class="p">)</span><span class="w">
</span><span class="n">library</span><span class="p">(</span><span class="n">RCurl</span><span class="p">)</span><span class="w">
</span><span class="n">options</span><span class="p">(</span><span class="n">stringsAsFactors</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">FALSE</span><span class="p">)</span><span class="w">
</span><span class="c1"># get id for 2016/17 EPL season
</span><span class="n">epl_id</span><span class="w"> </span><span class="o"><-</span><span class="n">fdo_listComps</span><span class="p">(</span><span class="n">season</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="m">2016</span><span class="p">,</span><span class="n">response</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"minified"</span><span class="p">)</span><span class="w"> </span><span class="o">%>%</span><span class="w"> </span><span class="n">filter</span><span class="p">(</span><span class="n">league</span><span class="o">==</span><span class="s2">"PL"</span><span class="p">)</span><span class="w"> </span><span class="o">%>%</span><span class="w"> </span><span class="n">.</span><span class="o">$</span><span class="n">id</span><span class="w">
</span><span class="c1"># get all matches in 2016/17 EPL season
</span><span class="n">epl_data</span><span class="w"> </span><span class="o"><-</span><span class="w"> </span><span class="n">fdo_listCompFixtures</span><span class="p">(</span><span class="n">id</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">epl_id</span><span class="p">,</span><span class="w"> </span><span class="n">response</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"minified"</span><span class="p">)</span><span class="o">$</span><span class="n">fixtures</span><span class="w"> </span><span class="o">%>%</span><span class="w">
</span><span class="n">jsonlite</span><span class="o">::</span><span class="n">flatten</span><span class="p">()</span><span class="w"> </span><span class="o">%>%</span><span class="w"> </span><span class="n">filter</span><span class="p">(</span><span class="n">status</span><span class="o">==</span><span class="s2">"FINISHED"</span><span class="p">)</span><span class="w"> </span><span class="o">%>%</span><span class="w">
</span><span class="n">rename</span><span class="p">(</span><span class="n">home</span><span class="o">=</span><span class="n">homeTeamName</span><span class="p">,</span><span class="w"> </span><span class="n">away</span><span class="o">=</span><span class="n">awayTeamName</span><span class="p">,</span><span class="w"> </span><span class="n">homeGoals</span><span class="o">=</span><span class="n">result.goalsHomeTeam</span><span class="p">,</span><span class="w">
</span><span class="n">awayGoals</span><span class="o">=</span><span class="n">result.goalsAwayTeam</span><span class="p">)</span><span class="w"> </span><span class="o">%>%</span><span class="w">
</span><span class="n">select</span><span class="p">(</span><span class="n">home</span><span class="p">,</span><span class="n">away</span><span class="p">,</span><span class="n">homeGoals</span><span class="p">,</span><span class="n">awayGoals</span><span class="p">)</span><span class="w"> </span><span class="o">%>%</span><span class="w">
</span><span class="c1"># some formatting of team names so that the names returned by footballR are
# compatible with those returned by the Betfair API
</span><span class="w"> </span><span class="n">mutate</span><span class="p">(</span><span class="n">home</span><span class="o">=</span><span class="n">gsub</span><span class="p">(</span><span class="s2">" FC| AFC|AFC |wich Albion|rystal| Hotspur"</span><span class="p">,</span><span class="s2">""</span><span class="p">,</span><span class="n">home</span><span class="p">))</span><span class="w"> </span><span class="o">%>%</span><span class="w">
</span><span class="n">mutate</span><span class="p">(</span><span class="n">home</span><span class="o">=</span><span class="n">ifelse</span><span class="p">(</span><span class="n">home</span><span class="o">==</span><span class="s2">"Manchester United"</span><span class="p">,</span><span class="s2">"Man Utd"</span><span class="p">,</span><span class="w">
</span><span class="n">ifelse</span><span class="p">(</span><span class="n">home</span><span class="o">==</span><span class="s2">"Manchester City"</span><span class="p">,</span><span class="s2">"Man City"</span><span class="p">,</span><span class="w">
</span><span class="n">gsub</span><span class="p">(</span><span class="s2">" City| United"</span><span class="p">,</span><span class="s2">""</span><span class="p">,</span><span class="n">home</span><span class="p">))))</span><span class="w"> </span><span class="o">%>%</span><span class="w">
</span><span class="n">mutate</span><span class="p">(</span><span class="n">away</span><span class="o">=</span><span class="n">gsub</span><span class="p">(</span><span class="s2">" FC| AFC|AFC |wich Albion|rystal| Hotspur"</span><span class="p">,</span><span class="s2">""</span><span class="p">,</span><span class="n">away</span><span class="p">))</span><span class="w"> </span><span class="o">%>%</span><span class="w">
</span><span class="n">mutate</span><span class="p">(</span><span class="n">away</span><span class="o">=</span><span class="n">ifelse</span><span class="p">(</span><span class="n">away</span><span class="o">==</span><span class="s2">"Manchester United"</span><span class="p">,</span><span class="s2">"Man Utd"</span><span class="p">,</span><span class="w">
</span><span class="n">ifelse</span><span class="p">(</span><span class="n">away</span><span class="o">==</span><span class="s2">"Manchester City"</span><span class="p">,</span><span class="s2">"Man City"</span><span class="p">,</span><span class="w">
</span><span class="n">gsub</span><span class="p">(</span><span class="s2">" City| United"</span><span class="p">,</span><span class="s2">""</span><span class="p">,</span><span class="n">away</span><span class="p">))))</span><span class="w">
</span><span class="n">head</span><span class="p">(</span><span class="n">epl_data</span><span class="p">)</span><span class="w">
</span></code></pre>
</div>
<div class="highlighter-rouge"><pre class="highlight"><code>## home away homeGoals awayGoals
## 1 Hull Leicester 2 1
## 2 Burnley Swansea 0 1
## 3 C Palace West Brom 0 1
## 4 Everton Tottenham 1 1
## 5 Middlesbrough Stoke 1 1
## 6 Southampton Watford 1 1
</code></pre>
</div>
<p>I’ll omit most of the code that produces the graphs in this post. Don’t worry, you can find that code on <a href="https://github.com/dashee87/blogScripts/blob/master/R/2017-05-30-predicting-football-results-with-statistical-modelling.R">my github page</a>. I just presented it here to give you an idea how I formatted the data (mostly <a href="https://cran.rstudio.com/web/packages/dplyr/vignettes/introduction.html">dplyr</a>). While that code may look complicated, it mostly involves changing the team names so that they’re compatible with the Betfair API (more on that later). Our task is to model the final round of fixtures in the season, so we must remove the last 10 rows (each gameweek consists of 10 matches).</p>
<div class="language-r highlighter-rouge"><pre class="highlight"><code><span class="c1"># remove gameweek 38 from data frame
</span><span class="n">epl_data</span><span class="w"> </span><span class="o"><-</span><span class="w"> </span><span class="n">head</span><span class="p">(</span><span class="n">epl_data</span><span class="p">,</span><span class="m">-10</span><span class="p">)</span><span class="w">
</span><span class="n">data.frame</span><span class="p">(</span><span class="n">avg_home_goals</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">mean</span><span class="p">(</span><span class="n">epl_data</span><span class="o">$</span><span class="n">homeGoals</span><span class="p">),</span><span class="w">
</span><span class="n">avg_away_goals</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">mean</span><span class="p">(</span><span class="n">epl_data</span><span class="o">$</span><span class="n">awayGoals</span><span class="p">))</span><span class="w">
</span></code></pre>
</div>
<div class="highlighter-rouge"><pre class="highlight"><code>## avg_home_goals avg_away_goals
## 1 1.591892 1.183784
</code></pre>
</div>
<p>You’ll notice that, on average, the home team scores more goals than the away team. This is the so called ‘home (field) advantage’ (discussed <a href="https://jogall.github.io/2017-05-12-home-away-pref/">here</a>) and <a href="http://bleacherreport.com/articles/1803416-is-home-field-advantage-as-important-in-baseball-as-other-major-sports">isn’t specific to soccer</a>. This is a convenient time to introduce the <a href="https://en.wikipedia.org/wiki/Poisson_distribution">Poisson distribution</a>. It’s a discrete probability distribution that describes the probability of the number of events within a specific time period (e.g 90 mins) with a known average rate of occurrence. A key assumption is that the number of events is independent of time. In our context, this means that goals don’t become more/less likely by the number of goals already scored in the match. Instead, the number of goals is expressed purely as function an average rate of goals. If that was unclear, maybe this mathematical formulation will make clearer:</p>
<script type="math/tex; mode=display">P\left( x \right) = \frac{e^{-\lambda} \lambda ^x }{x!}, \lambda>0</script>
<p>(\lambda) represents the average rate (average number of goals, average number of letters you receive, etc.). So, we can treat the number of goals scored by the home and away team as Poisson distributions. The plot below shows the proportion of goals scored compared to the number of goals estimated by the corresponding Poisson distributions.</p>
<div style="text-align:center">
<p><img src="/images/home_away_goals.png" alt="" /></p>
</div>
<p>We can use this statistical model to estimate the probability of specfic events.</p>
<script type="math/tex; mode=display">% <![CDATA[
\begin{align*}
P(\geq 2|Home) &= P(2|Home) + P(3|Home) + ...\\
&= 0.258 + 0.137 + ...\\
&= 0.47
\end{align*} %]]></script>
<p>The probability of a draw is simply the sum of the events where the two teams score the same amount of goals.</p>
<script type="math/tex; mode=display">% <![CDATA[
\begin{align*}
P(Draw) &= P(0|Home) \times P(0|Away) + P(1|Home) \times P(1|Away) + ...\\
&= 0.203 \times 0.306 + 0.324 \times 0.362 + ...\\
&= 0.248
\end{align*} %]]></script>
<p>Note that we consider the number of goals scored by each team to be independent events (i.e. P(A n B) = P(A) P(B)). The difference of two Poisson distribution is actually called a Skellam distribution. So we can calculate the probability of a draw by inputting the mean goal values into this distribution.</p>
<div class="language-r highlighter-rouge"><pre class="highlight"><code><span class="c1"># probability of draw between home and away team
</span><span class="n">skellam</span><span class="o">::</span><span class="n">dskellam</span><span class="p">(</span><span class="m">0</span><span class="p">,</span><span class="n">mean</span><span class="p">(</span><span class="n">epl_data</span><span class="o">$</span><span class="n">homeGoals</span><span class="p">),</span><span class="n">mean</span><span class="p">(</span><span class="n">epl_data</span><span class="o">$</span><span class="n">awayGoals</span><span class="p">))</span><span class="w">
</span></code></pre>
</div>
<div class="highlighter-rouge"><pre class="highlight"><code>## [1] 0.2480938
</code></pre>
</div>
<div class="language-r highlighter-rouge"><pre class="highlight"><code><span class="c1"># probability of home team winning by one goal
</span><span class="n">skellam</span><span class="o">::</span><span class="n">dskellam</span><span class="p">(</span><span class="m">1</span><span class="p">,</span><span class="n">mean</span><span class="p">(</span><span class="n">epl_data</span><span class="o">$</span><span class="n">homeGoals</span><span class="p">),</span><span class="n">mean</span><span class="p">(</span><span class="n">epl_data</span><span class="o">$</span><span class="n">awayGoals</span><span class="p">))</span><span class="w">
</span></code></pre>
</div>
<div class="highlighter-rouge"><pre class="highlight"><code>## [1] 0.2270677
</code></pre>
</div>
<div style="text-align:center">
<p><img src="/images/skellam_goals.png" alt="" /></p>
</div>
<p>So, hopefully you can see how we can adapt this approach to model specific matches. We just need to know the average number of goals scored by each team and feed this data into a Poisson model. Let’s have a look at the distribution of goals scored by Chelsea and Sunderland (teams who finished 1st and last, respectively).</p>
<div style="text-align:center">
<p><img src="/images/chelsea_sunderland_goals.png" alt="" /></p>
</div>
<h2 id="building-a-model">Building A Model</h2>
<p>You should now be convinced that the number of goals scored by each team can be approximated by a Poisson distribution. Due to a relatively sample size (each team plays at most 19 home/away games), the accuracy of this approximation can vary significantly (especially earlier in the season when teams have played fewer games). Similar to before, we could now calculate the probability of various events in this Chelsea Sunderland match. But rather than treat each match separately, we’ll build a more general Poisson regression model (<a href="https://en.wikipedia.org/wiki/Poisson_regression">what is that?</a>).</p>
<div class="language-r highlighter-rouge"><pre class="highlight"><code><span class="n">poisson_model</span><span class="w"> </span><span class="o"><-</span><span class="w">
</span><span class="n">rbind</span><span class="p">(</span><span class="w">
</span><span class="n">data.frame</span><span class="p">(</span><span class="n">goals</span><span class="o">=</span><span class="n">epl_data</span><span class="o">$</span><span class="n">homeGoals</span><span class="p">,</span><span class="w">
</span><span class="n">team</span><span class="o">=</span><span class="n">epl_data</span><span class="o">$</span><span class="n">home</span><span class="p">,</span><span class="w">
</span><span class="n">opponent</span><span class="o">=</span><span class="n">epl_data</span><span class="o">$</span><span class="n">away</span><span class="p">,</span><span class="w">
</span><span class="n">home</span><span class="o">=</span><span class="m">1</span><span class="p">),</span><span class="w">
</span><span class="n">data.frame</span><span class="p">(</span><span class="n">goals</span><span class="o">=</span><span class="n">epl_data</span><span class="o">$</span><span class="n">awayGoals</span><span class="p">,</span><span class="w">
</span><span class="n">team</span><span class="o">=</span><span class="n">epl_data</span><span class="o">$</span><span class="n">away</span><span class="p">,</span><span class="w">
</span><span class="n">opponent</span><span class="o">=</span><span class="n">epl_data</span><span class="o">$</span><span class="n">home</span><span class="p">,</span><span class="w">
</span><span class="n">home</span><span class="o">=</span><span class="m">0</span><span class="p">))</span><span class="w"> </span><span class="o">%>%</span><span class="w">
</span><span class="n">glm</span><span class="p">(</span><span class="n">goals</span><span class="w"> </span><span class="o">~</span><span class="w"> </span><span class="n">home</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">team</span><span class="w"> </span><span class="o">+</span><span class="n">opponent</span><span class="p">,</span><span class="w"> </span><span class="n">family</span><span class="o">=</span><span class="n">poisson</span><span class="p">(</span><span class="n">link</span><span class="o">=</span><span class="n">log</span><span class="p">),</span><span class="n">data</span><span class="o">=</span><span class="n">.</span><span class="p">)</span><span class="w">
</span><span class="n">summary</span><span class="p">(</span><span class="n">poisson_model</span><span class="p">)</span><span class="w">
</span></code></pre>
</div>
<div class="highlighter-rouge"><pre class="highlight"><code>##
## Call:
## glm(formula = goals ~ home + team + opponent, family = poisson(link = log),
## data = .)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -2.22652 -1.11951 -0.09455 0.57388 2.59184
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 0.37246 0.19808 1.880 0.060060 .
## home 0.29693 0.06315 4.702 2.57e-06 ***
## teamBournemouth -0.28915 0.17941 -1.612 0.107043
## teamBurnley -0.64583 0.19994 -3.230 0.001237 **
## teamC Palace -0.38652 0.18345 -2.107 0.035124 *
## teamChelsea 0.07890 0.16167 0.488 0.625541
## teamEverton -0.20079 0.17301 -1.161 0.245822
## teamHull -0.70058 0.20359 -3.441 0.000579 ***
## teamLeicester -0.42038 0.18696 -2.249 0.024541 *
## teamLiverpool 0.01623 0.16425 0.099 0.921286
## teamMan City 0.01175 0.16423 0.072 0.942976
## teamMan Utd -0.35724 0.18128 -1.971 0.048767 *
## teamMiddlesbrough -1.00874 0.22512 -4.481 7.43e-06 ***
## teamSouthampton -0.58043 0.19504 -2.976 0.002920 **
## teamStoke -0.60818 0.19660 -3.094 0.001978 **
## teamSunderland -0.96194 0.22220 -4.329 1.50e-05 ***
## teamSwansea -0.51364 0.19217 -2.673 0.007522 **
## teamTottenham 0.05319 0.16212 0.328 0.742818
## teamWatford -0.59688 0.19663 -3.035 0.002401 **
## teamWest Brom -0.55666 0.19354 -2.876 0.004026 **
## teamWest Ham -0.48018 0.18943 -2.535 0.011249 *
## opponentBournemouth 0.41095 0.19644 2.092 0.036442 *
## opponentBurnley 0.16565 0.20560 0.806 0.420411
## opponentC Palace 0.32868 0.19956 1.647 0.099554 .
## opponentChelsea -0.30364 0.23388 -1.298 0.194189
## opponentEverton -0.04422 0.21838 -0.202 0.839544
## opponentHull 0.49786 0.19263 2.585 0.009751 **
## opponentLeicester 0.33685 0.19887 1.694 0.090289 .
## opponentLiverpool -0.03744 0.21738 -0.172 0.863250
## opponentMan City -0.09931 0.22158 -0.448 0.654025
## opponentMan Utd -0.42197 0.24063 -1.754 0.079494 .
## opponentMiddlesbrough 0.11957 0.20836 0.574 0.566061
## opponentSouthampton 0.04579 0.21138 0.217 0.828496
## opponentStoke 0.22660 0.20315 1.115 0.264667
## opponentSunderland 0.37067 0.19759 1.876 0.060664 .
## opponentSwansea 0.43362 0.19468 2.227 0.025927 *
## opponentTottenham -0.54307 0.25191 -2.156 0.031099 *
## opponentWatford 0.35330 0.19821 1.782 0.074668 .
## opponentWest Brom 0.09696 0.20935 0.463 0.643248
## opponentWest Ham 0.34851 0.19822 1.758 0.078718 .
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for poisson family taken to be 1)
##
## Null deviance: 973.53 on 739 degrees of freedom
## Residual deviance: 776.11 on 700 degrees of freedom
## AIC: 2164.9
##
## Number of Fisher Scoring iterations: 5
</code></pre>
</div>
<p>If you’re curious about the <code class="highlighter-rouge">glm(...)</code> part, you can find more information <a href="https://onlinecourses.science.psu.edu/stat504/node/169">here</a>. I’m more interested in the values presented in the <code class="highlighter-rouge">Estimate</code> column in the model summary table. This value is similar to the slope in linear regression. Similar to <a href="https://en.wikipedia.org/wiki/Logistic_regression">logistic regression</a>, we take the <a href="http://www.lisa.stat.vt.edu/sites/default/files/Poisson.and_.Logistic.Regression.pdf">exponent of the parameter values</a>. A positive value implies more goals (<script type="math/tex">e^{x}>1 \forall x > 0</script>), while values closer to zero represent more neutral effects (<script type="math/tex">e^{0}=1</script>). First thing you notice is that <code class="highlighter-rouge">home</code> has an <code class="highlighter-rouge">Estimate</code> of 0.29693. This captures the fact that home teams generally score more goals than the away team (specifically, <script type="math/tex">e^{0.29693}</script>=1.35 times more likely). But not all teams are created equal. Chelsea has an estimate of 0.07890, while the corresponding value for Sunderland is -0.96194 (sort of saying Chelsea (Sunderland) are better (much worse!) scorers than average). Finally, the <code class="highlighter-rouge">opponent*</code> values penalize/reward teams based on the quality of their opposition. This mimics the defensive strength of each team (Chelsea: -0.30364; Sunderland: 0.37067). In other words, you’re less likely to score against Chelsea. Hopefully, that all makes both statistical and intuitive sense.</p>
<p>Let’s start making some predictions for the upcoming match. We simply pass our teams into <code class="highlighter-rouge">poisson_model</code> and it’ll return the expected average number of goals for your team (we need to run it twice- we calculate the expected average number of goals for each team separately). So let’s see how many goals we expect Chelsea and Sunderland to score.</p>
<div class="language-r highlighter-rouge"><pre class="highlight"><code><span class="n">predict</span><span class="p">(</span><span class="n">poisson_model</span><span class="p">,</span><span class="w">
</span><span class="n">data.frame</span><span class="p">(</span><span class="n">home</span><span class="o">=</span><span class="m">1</span><span class="p">,</span><span class="w"> </span><span class="n">team</span><span class="o">=</span><span class="s2">"Chelsea"</span><span class="p">,</span><span class="w">
</span><span class="n">opponent</span><span class="o">=</span><span class="s2">"Sunderland"</span><span class="p">),</span><span class="w"> </span><span class="n">type</span><span class="o">=</span><span class="s2">"response"</span><span class="p">)</span><span class="w">
</span></code></pre>
</div>
<div class="highlighter-rouge"><pre class="highlight"><code>## 1
## 3.061662
</code></pre>
</div>
<div class="language-r highlighter-rouge"><pre class="highlight"><code><span class="n">predict</span><span class="p">(</span><span class="n">poisson_model</span><span class="p">,</span><span class="w">
</span><span class="n">data.frame</span><span class="p">(</span><span class="n">home</span><span class="o">=</span><span class="m">0</span><span class="p">,</span><span class="w"> </span><span class="n">team</span><span class="o">=</span><span class="s2">"Sunderland"</span><span class="p">,</span><span class="w">
</span><span class="n">opponent</span><span class="o">=</span><span class="s2">"Chelsea"</span><span class="p">),</span><span class="w"> </span><span class="n">type</span><span class="o">=</span><span class="s2">"response"</span><span class="p">)</span><span class="w">
</span></code></pre>
</div>
<div class="highlighter-rouge"><pre class="highlight"><code>## 1
## 0.4093728
</code></pre>
</div>
<p>Just like before, we have two Poisson distributions. From this, we can calculate the probability of various events. I’ll wrap this in a <code class="highlighter-rouge">simulate_match</code> function.</p>
<div class="language-r highlighter-rouge"><pre class="highlight"><code><span class="n">simulate_match</span><span class="w"> </span><span class="o"><-</span><span class="w"> </span><span class="k">function</span><span class="p">(</span><span class="n">foot_model</span><span class="p">,</span><span class="w"> </span><span class="n">homeTeam</span><span class="p">,</span><span class="w"> </span><span class="n">awayTeam</span><span class="p">,</span><span class="w"> </span><span class="n">max_goals</span><span class="o">=</span><span class="m">10</span><span class="p">){</span><span class="w">
</span><span class="n">home_goals_avg</span><span class="w"> </span><span class="o"><-</span><span class="w"> </span><span class="n">predict</span><span class="p">(</span><span class="n">foot_model</span><span class="p">,</span><span class="w">
</span><span class="n">data.frame</span><span class="p">(</span><span class="n">home</span><span class="o">=</span><span class="m">1</span><span class="p">,</span><span class="w"> </span><span class="n">team</span><span class="o">=</span><span class="n">homeTeam</span><span class="p">,</span><span class="w">
</span><span class="n">opponent</span><span class="o">=</span><span class="n">awayTeam</span><span class="p">),</span><span class="w"> </span><span class="n">type</span><span class="o">=</span><span class="s2">"response"</span><span class="p">)</span><span class="w">
</span><span class="n">away_goals_avg</span><span class="w"> </span><span class="o"><-</span><span class="w"> </span><span class="n">predict</span><span class="p">(</span><span class="n">foot_model</span><span class="p">,</span><span class="w">
</span><span class="n">data.frame</span><span class="p">(</span><span class="n">home</span><span class="o">=</span><span class="m">0</span><span class="p">,</span><span class="w"> </span><span class="n">team</span><span class="o">=</span><span class="n">awayTeam</span><span class="p">,</span><span class="w">
</span><span class="n">opponent</span><span class="o">=</span><span class="n">homeTeam</span><span class="p">),</span><span class="w"> </span><span class="n">type</span><span class="o">=</span><span class="s2">"response"</span><span class="p">)</span><span class="w">
</span><span class="n">dpois</span><span class="p">(</span><span class="m">0</span><span class="o">:</span><span class="n">max_goals</span><span class="p">,</span><span class="w"> </span><span class="n">home_goals_avg</span><span class="p">)</span><span class="w"> </span><span class="o">%o%</span><span class="w"> </span><span class="n">dpois</span><span class="p">(</span><span class="m">0</span><span class="o">:</span><span class="n">max_goals</span><span class="p">,</span><span class="w"> </span><span class="n">away_goals_avg</span><span class="p">)</span><span class="w">
</span><span class="p">}</span><span class="w">
</span><span class="n">simulate_match</span><span class="p">(</span><span class="n">poisson_model</span><span class="p">,</span><span class="w"> </span><span class="s2">"Chelsea"</span><span class="p">,</span><span class="w"> </span><span class="s2">"Sunderland"</span><span class="p">,</span><span class="w"> </span><span class="n">max_goals</span><span class="o">=</span><span class="m">4</span><span class="p">)</span><span class="w">
</span></code></pre>
</div>
<div class="highlighter-rouge"><pre class="highlight"><code>## [,1] [,2] [,3] [,4] [,5]
## [1,] 0.03108485 0.01272529 0.002604694 0.0003554303 3.637587e-05
## [2,] 0.09517130 0.03896054 0.007974693 0.0010882074 1.113706e-04
## [3,] 0.14569118 0.05964200 0.012207906 0.0016658616 1.704896e-04
## [4,] 0.14868571 0.06086788 0.012458827 0.0017001016 1.739938e-04
## [5,] 0.11380634 0.04658922 0.009536179 0.0013012841 1.331776e-04
</code></pre>
</div>
<p>This matrix simply shows the probability of Chelsea (rows of the matrix) and Sunderland (matrix columns) scoring a specific number of goals. For example, along the diagonal, both teams score the same the number of goals (e.g. P(0-0)=0.031). So, you can calculate the odds of draw by summing all the diagonal entries. Everything below the diagonal represents a Chelsea victory (e.g P(3-0)=0.149), While you can estimate P(Over 2.5 goals) by summing all entries except the four values in the upper left corner. Luckily, we can use basic matrix manipulation functions to perform these calculations.</p>
<div class="language-r highlighter-rouge"><pre class="highlight"><code><span class="n">chel_sun</span><span class="w"> </span><span class="o"><-</span><span class="w"> </span><span class="n">simulate_match</span><span class="p">(</span><span class="n">poisson_model</span><span class="p">,</span><span class="w"> </span><span class="s2">"Chelsea"</span><span class="p">,</span><span class="w"> </span><span class="s2">"Sunderland"</span><span class="p">,</span><span class="w"> </span><span class="n">max_goals</span><span class="o">=</span><span class="m">10</span><span class="p">)</span><span class="w">
</span><span class="c1"># chelsea win
</span><span class="nf">sum</span><span class="p">(</span><span class="n">chel_sun</span><span class="p">[</span><span class="n">lower.tri</span><span class="p">(</span><span class="n">chel_sun</span><span class="p">)])</span><span class="w">
</span></code></pre>
</div>
<div class="highlighter-rouge"><pre class="highlight"><code>## [1] 0.8885987
</code></pre>
</div>
<div class="language-r highlighter-rouge"><pre class="highlight"><code><span class="c1"># draw
</span><span class="nf">sum</span><span class="p">(</span><span class="n">diag</span><span class="p">(</span><span class="n">chel_sun</span><span class="p">))</span><span class="w">
</span></code></pre>
</div>
<div class="highlighter-rouge"><pre class="highlight"><code>## [1] 0.08409349
</code></pre>
</div>
<div class="language-r highlighter-rouge"><pre class="highlight"><code><span class="c1"># sunderland win
</span><span class="nf">sum</span><span class="p">(</span><span class="n">chel_sun</span><span class="p">[</span><span class="n">upper.tri</span><span class="p">(</span><span class="n">chel_sun</span><span class="p">)])</span><span class="w">
</span></code></pre>
</div>
<div class="highlighter-rouge"><pre class="highlight"><code>## [1] 0.02696182
</code></pre>
</div>
<p>Hmm, our model gives Sunderland a 2.7% chance of winning. But is that right? To assess the accuracy of the predictions, we’ll compare the probabilities returned by our model against the odds offered by the <a href="https://www.betfair.com/exchange/plus/football">Betfair exchange</a>.</p>
<h2 id="sports-bettingtrading">Sports Betting/Trading</h2>
<p>Unlike traditional bookmakers, on betting exchanges (and Betfair isn’t the only one- it’s just the biggest), you bet against other people (with Betfair taking a commission on winnings). It acts as a sort of stock market for sports events. And, like a stock market, due to the <a href="https://en.wikipedia.org/wiki/Efficient-market_hypothesis">efficient market hypothesis</a>, the prices available at Betfair reflect the true price/odds of those events happening (in theory anyway). Below, I’ve posted a screenshot of the Betfair exchange on Sunday 21st May (a few hours before those matches started).</p>
<div style="text-align:center">
<p><img src="/images/betfair_exchange.png" alt="" /></p>
</div>
<p>The numbers inside the boxes represent the best available prices and the amount available at those prices. The blue boxes signify back bets (i.e. betting that an event will happen- going long using stock market terminology), while the pink boxes represent lay bets (i.e. betting that something won’t happen- i.e. shorting). For example, if we were to bet £100 on Chelsea to win, we would receive the original amount plus 100*1.13= £13 should they win (of course, we would lose our £100 if they didn’t win). Now, how can we compare these prices to the probabilities returned by our model? Well, decimal odds can be converted to the probabilities quite easily: it’s simply the inverse of the decimal odds. For example, the implied probability of Chelsea winning is 1/1.13 (=0.885- our model put the probability at 0.889). I’m focusing on decimal odds, but you might also be familiar with <a href="https://www.pinnacle.com/en/betting-articles/educational/odds-formats-available-at-pinnacle-sports">Moneyline (American) Odds</a> (e.g. +200) and fractional odds (e.g. 2/1). The relationship between decimal odds, moneyline and probability is illustrated in the table below. I’ll stick with decimal odds because the alternatives are either unfamiliar to me (Moneyline) or just stupid (fractional odds).</p>
<html><head>
<style>
#betfair_table table{
margin: 1em 0;
overflow: hidden;
background: #FFF;
color: #024457;
text-align: left;
}
#betfair_table tr:nth-child(odd) {
background-color: #EAF3F3;
}
#betfair_table th {
display: none;
text-align: center;
border-bottom: 0.5em solid #FFF;
border: 0.3em solid #FFF;
background-color: #167F92;
color: #FFF;
padding: 1em;
text-align: center;
}
#betfair_table th:first-child {
border-right: 0.2em solid #FFF;
border-left: 0em
display: table-cell;
text-align: center;
}
#betfair_table th:nth-child(2) {
display: table-cell;
}
#betfair_table th:nth-child(2) span {
display: none;
}
#betfair_table th:nth-child(2):after {
content: attr(data-th);
}
td {
display: block;
word-wrap: break-word;
max-width: 7em;
text-align: center;
border-right: 0.3em solid #FFF;
border-left: 0.3em solid #FFF;
}
#betfair_table td:first-child {
display: table-cell;
text-align: center;
border-right: 0.3em solid #FFF;
border-left: 0.3em solid #FFF;
}
table#betfair_table th, td {
text-align: center;
margin: .4em 1em;
display: table-cell;
padding: 0.4em;
}
#betfair_table tr {
font-family: Arial, sans-serif;
color: #024457;
}
.button {
background-color: #4CAF50;
color: white;
text-align: center;
text-decoration: none;
display: inline-block;
font-size: 0.8em;
cursor: pointer;
margin-left: 0.3em;
}
.button:hover {
background-color: blue;
color: white;
}
/* Define the hover highlight color for the table row */
table#betfair_table tbody tr:hover{
background-color: lightyellow;
}
caption{caption-side:bottom}
table#betfair_table tbody tr:hover {
background-color: #ffff99;
}
</style>
</head>
<body>
<input type="button" class="button" id="odds" value="Convert to Decimal Odds" onclick="return change_button(this);" />
<table style="width:80%" id="betfair_table" align="center">
<caption><b>Chance of Occurence (EPL Fixtures 21st May 2017)</b><br /> Source: Betfair Exchange</caption>
<thead>
<tr>
<th>Match</th>
<th>Home</th>
<th>Draw</th>
<th>Away</th>
</tr>
</thead>
<tbody> <tr> <td>Arsenal v Everton</td> <td>71.4 %</td> <td>17.5 %</td> <td>11.6 %</td> </tr><tr> <td>Burnley v West Ham</td> <td>42 %</td> <td>27.8 %</td> <td>30.8 %</td> </tr><tr> <td>Chelsea v Sunderland</td> <td>88.5 %</td> <td>8.7 %</td> <td>3.4 %</td> </tr><tr> <td>Hull v Tottenham</td> <td>10.9 %</td> <td>17.2 %</td> <td>71.9 %</td> </tr><tr> <td>Leicester v Bournemouth</td> <td>53.5 %</td> <td>24.4 %</td> <td>23.3 %</td> </tr><tr> <td>Liverpool v Middlesbrough</td> <td>87.7 %</td> <td>9.5 %</td> <td>3.6 %</td> </tr><tr> <td>Man Utd v C Palace</td> <td>41.7 %</td> <td>29 %</td> <td>29.9 %</td> </tr><tr> <td>Southampton v Stoke</td> <td>57.1 %</td> <td>24.4 %</td> <td>19.2 %</td> </tr><tr> <td>Swansea v West Brom</td> <td>43.1 %</td> <td>28.6 %</td> <td>29 %</td> </tr><tr> <td>Watford v Man City</td> <td>5.1 %</td> <td>10.2 %</td> <td>85.5 %</td> </tr>
</tbody>
</table> </body>
<script type="text/javascript">
var insert = document.getElementById("odds");
insert.addEventListener("click", function() {
var allTableallCells = document.getElementById("betfair_table");
var allTableCells = allTableallCells.getElementsByTagName("td");
for(var i = 0, max = allTableCells.length; i < max; i++){
var node = allTableCells[i];
if(node.cellIndex ==0){
continue;
}
var currentText = node.childNodes[0].nodeValue;
if(insert.value==="Convert to Chance"){
if(currentText>=2){
node.innerHTML = "+"+Math.round(100*(currentText-1)*100)/100;}
else{
node.innerHTML = Math.round(100*(-100)/(currentText-1)/100);}
}
else if(insert.value==="Convert to Decimal Odds"){
if(currentText>0){
node.innerHTML = Math.round(100*1/((currentText/100)+1))/100;}
else{
node.innerHTML = Math.round(1000/((-100/currentText)+1))/1000;}
node.innerHTML = Math.round(10000*node.innerHTML)/100 + " %"
}
else{
currentText = parseFloat(currentText)/100;
node.innerHTML = Math.round(100/currentText)/100;
}
}})
function change_button( el )
{
switch (el.value) {
case "Convert to Chance":
el.value = "Decimal Odds";
document.getElementById("betfair_table").caption.innerHTML = "Chance of Occurence";
break;
case "Convert to Decimal Odds":
el.value = "American Odds";
document.getElementById("betfair_table").caption.innerHTML = "Decimal Odds";
break;
case "Convert to American Odds":
el.value = "Chance";
document.getElementById("betfair_table").caption.innerHTML = "American Odds";
break;
}
el.value = "Convert to " + el.value;
document.getElementById("betfair_table").caption.innerHTML =
"<b>"+document.getElementById("betfair_table").caption.innerHTML +
" (EPL Fixtures 21st May 2017)</b><br/> Source: Betfair Exchange";
}
</script>
</html>
<p>So, we have our model probabilities and (if we trust the exchange) we know the true probabilities of each event happening. Ideally, our model would identify situations the market has underestimated the chances of an event occurring (or not occurring in the case of lay bets). For example, in a simple coin toss game, imagine if you were offered $2 for every $1 wagered (plus your stake), if you guessed correctly. The implied probability is 0.333, but any valid model would return a probability of 0.5. The odds returned by our model and the Betfair exchange are compared in the table below.</p>
<html>
<meta charset="utf-8" />
<head>
<style>
.MathJax_Display {
font-size: 0.8em !important;
}
#comparison_table tr {
border: 1px solid #D9E4E6;
}
#comparison_table th {
border: 0.5px solid #FFF;
background-color: #167F92;
color: #FFF;
padding: 0.5em;
text-align: center;
}
#comparison_table th:first-child {
display: table-cell;
text-align: center;
}
#comparison_table th:nth-child(2) {
display: table-cell;
}
#comparison_table th:nth-child(2) span {
display: none;
}
#comparison_table th:nth-child(2):after {
content: attr(data-th);
}
#comparison_table td {
display: table-cell;
text-align: center;
border: 0.1em solid #FFF;
max-width: 7em;
background-color: #EAF3F3;
padding: 0.5em;
}
#comparison_table tr {
font-family: Arial, sans-serif;
color: #024457;
}
#comparison_table .odds_type {
border: 0.1em solid #FFF;
background-color: #cee0e0;
}
</style> </head>
<body>
<table style="width:80%" id="comparison_table" align="center">
<thead>
<tr>
<th colspan="2">Match</th>
<th>Home</th>
<th>Draw</th>
<th>Away</th>
</tr>
</thead>
<tbody>
<tr> <td rowspan="3" class="odds_type">Arsenal v Everton</td> <td class="odds_type">Betfair</td> <td>0.714</td> <td>0.175</td> <td>0.116</td> </tr> <tr> <td class="odds_type">Predicted</td> <td>0.533</td> <td>0.226</td> <td>0.241</td> </tr> <tr> <td class="odds_type">Difference</td> <td class="diff">0.181</td> <td class="diff">-0.051</td> <td class="diff">-0.125</td> </tr><tr> <td rowspan="3" class="odds_type">Burnley v West Ham</td> <td class="odds_type">Betfair</td> <td>0.42</td> <td>0.278</td> <td>0.308</td> </tr> <tr> <td class="odds_type">Predicted</td> <td>0.461</td> <td>0.263</td> <td>0.276</td> </tr> <tr> <td class="odds_type">Difference</td> <td class="diff">-0.041</td> <td class="diff">0.015</td> <td class="diff">0.032</td> </tr><tr> <td rowspan="3" class="odds_type">Chelsea v Sunderland</td> <td class="odds_type">Betfair</td> <td>0.885</td> <td>0.087</td> <td>0.034</td> </tr> <tr> <td class="odds_type">Predicted</td> <td>0.889</td> <td>0.084</td> <td>0.027</td> </tr> <tr> <td class="odds_type">Difference</td> <td class="diff">-0.004</td> <td class="diff">0.003</td> <td class="diff">0.007</td> </tr><tr> <td rowspan="3" class="odds_type">Hull v Tottenham</td> <td class="odds_type">Betfair</td> <td>0.109</td> <td>0.172</td> <td>0.719</td> </tr> <tr> <td class="odds_type">Predicted</td> <td>0.063</td> <td>0.138</td> <td>0.799</td> </tr> <tr> <td class="odds_type">Difference</td> <td class="diff">0.046</td> <td class="diff">0.034</td> <td class="diff">-0.08</td> </tr><tr> <td rowspan="3" class="odds_type">Leicester v Bournemouth</td> <td class="odds_type">Betfair</td> <td>0.535</td> <td>0.244</td> <td>0.233</td> </tr> <tr> <td class="odds_type">Predicted</td> <td>0.475</td> <td>0.22</td> <td>0.306</td> </tr> <tr> <td class="odds_type">Difference</td> <td class="diff">0.06</td> <td class="diff">0.024</td> <td class="diff">-0.073</td> </tr><tr> <td rowspan="3" class="odds_type">Liverpool v Middlesbrough</td> <td class="odds_type">Betfair</td> <td>0.877</td> <td>0.095</td> <td>0.036</td> </tr> <tr> <td class="odds_type">Predicted</td> <td>0.77</td> <td>0.161</td> <td>0.069</td> </tr> <tr> <td class="odds_type">Difference</td> <td class="diff">0.107</td> <td class="diff">-0.066</td> <td class="diff">-0.033</td> </tr><tr> <td rowspan="3" class="odds_type">Man Utd v C Palace</td> <td class="odds_type">Betfair</td> <td>0.417</td> <td>0.29</td> <td>0.299</td> </tr> <tr> <td class="odds_type">Predicted</td> <td>0.672</td> <td>0.209</td> <td>0.119</td> </tr> <tr> <td class="odds_type">Difference</td> <td class="diff">-0.255</td> <td class="diff">0.081</td> <td class="diff">0.18</td> </tr><tr> <td rowspan="3" class="odds_type">Southampton v Stoke</td> <td class="odds_type">Betfair</td> <td>0.571</td> <td>0.244</td> <td>0.192</td> </tr> <tr> <td class="odds_type">Predicted</td> <td>0.496</td> <td>0.277</td> <td>0.226</td> </tr> <tr> <td class="odds_type">Difference</td> <td class="diff">0.075</td> <td class="diff">-0.033</td> <td class="diff">-0.034</td> </tr><tr> <td rowspan="3" class="odds_type">Swansea v West Brom</td> <td class="odds_type">Betfair</td> <td>0.431</td> <td>0.286</td> <td>0.29</td> </tr> <tr> <td class="odds_type">Predicted</td> <td>0.368</td> <td>0.266</td> <td>0.366</td> </tr> <tr> <td class="odds_type">Difference</td> <td class="diff">0.063</td> <td class="diff">0.02</td> <td class="diff">-0.076</td> </tr><tr> <td rowspan="3" class="odds_type">Watford v Man City</td> <td class="odds_type">Betfair</td> <td>0.051</td> <td>0.102</td> <td>0.855</td> </tr> <tr> <td class="odds_type">Predicted</td> <td>0.167</td> <td>0.203</td> <td>0.631</td> </tr> <tr> <td class="odds_type">Difference</td> <td class="diff">-0.116</td> <td class="diff">-0.101</td> <td class="diff">0.224</td> </tr>
</tbody>
</table> </body>
<script type="text/javascript">
var allTableCells = document.getElementsByClassName("diff");
for(var i = 0, max = allTableCells.length; i < max; i++) {
var node = allTableCells[i];
var currentText = node.childNodes[0].nodeValue;
var gradient = 255-Math.round(Math.abs(255*parseFloat(currentText)/0.2));
if (currentText[0] ==="-"){
node.style.backgroundColor = "rgb("+gradient+",255,"+gradient+")";
node.childNodes[0].nodeValue = currentText.substring(1);
}
else{
node.style.backgroundColor = "rgb(255,"+gradient+","+gradient+")";
}
}
</script>
</html>
<p>Green cells illustrate opportunities to make profitable bets, according to our model (the opacity of the cell is determined by the implied difference). I’ve highlighted the difference between the model and Betfair in absolute terms (the relative difference may be more relevant for any trading strategy). Transparent cells indicate situations where the exchange and our model are in broad agreement. Strong colours imply that either our model is wrong or the exchange is wrong. Given the simplicity of our model, I’d lean towards the latter.</p>
<h2 id="somethings-poissony">Something’s Poissony</h2>
<p>So should we bet the house on Manchester United? Probably not (<a href="https://www.theguardian.com/football/2017/may/21/manchester-united-crystal-palace-premier-league-match-report">though they did win!</a>). There’s some non-statistical reasons to resist backing them. Keen football fans would notice that these matches represent the final gameweek of the season. Most teams have very little to play for, meaning that the matches are less predictable (especially when they involve unmotivated ‘bigger’ teams). Compounding that, Man United were set to play Ajax in the Europa Final three days later. <a href="https://www.theguardian.com/football/2017/may/17/jose-mourinho-manchester-united-last-premier-league-game">Man United manager, Jose Mourinho, had even confirmed that he would rest the first team, saving them for the much more important final</a>. In a similar fashion, injuries/suspensions to key players, managerial sackings would render our model inaccurate. Never underestimate the importance of domain knowledge in statistical modelling/machine learning! We could also think of improvements to the model that would <a href="http://opisthokonta.net/?p=890">incorporate time when considering previous matches</a> (i.e. more recent matches should be weighted more strongly).</p>
<p>Statistically speaking, is a Poisson distribution even appropriate? Our model was founded on the belief that the number goals can be accurately expressed as a Poisson distribution. If that assumption is misguided, then the model outputs will be unreliable. Given a Poisson distribution with mean <script type="math/tex">\lambda</script>, then the number of events in half that time period follows a Poisson distribution with mean <script type="math/tex">\lambda</script>/2. In football terms, according to our Poisson model, there should be an equal number of goals in the first and second halves. Unfortunately, that doesn’t appear to hold true.</p>
<div class="language-r highlighter-rouge"><pre class="highlight"><code><span class="c1"># the first half goals is missing for a few matches from the API
# so we'll load in a csv instead
</span><span class="n">epl_1617</span><span class="w"> </span><span class="o"><-</span><span class="w"> </span><span class="n">read.csv</span><span class="p">(</span><span class="n">text</span><span class="o">=</span><span class="n">getURL</span><span class="p">(</span><span class="s2">"http://www.football-data.co.uk/mmz4281/1617/E0.csv"</span><span class="p">),</span><span class="w">
</span><span class="n">stringsAsFactors</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">FALSE</span><span class="p">)</span><span class="w"> </span><span class="o">%>%</span><span class="w">
</span><span class="n">mutate</span><span class="p">(</span><span class="n">FHgoals</span><span class="o">=</span><span class="w"> </span><span class="n">HTAG</span><span class="o">+</span><span class="n">HTHG</span><span class="p">,</span><span class="w"> </span><span class="n">SHgoals</span><span class="o">=</span><span class="w"> </span><span class="n">FTHG</span><span class="o">+</span><span class="n">FTAG</span><span class="o">-</span><span class="n">HTAG</span><span class="o">-</span><span class="n">HTHG</span><span class="p">)</span><span class="w">
</span></code></pre>
</div>
<div style="text-align:center">
<p><img src="/images/goals_per_half.png" alt="" /></p>
</div>
<p>We have irrefutable evidence that violates the whole basis of our model, rendering this whole post as pointless as Sunderland!!! Or we can build on our crude first attempt. Rather than a simple univariate Poisson model, we might have <a href="http://www.ajbuckeconbikesail.net/wkpapers/Airports/MVPoisson/soccer_betting.pdf">more success</a> with a <a href="http://www.stat-athens.aueb.gr/~karlis/Bivariate%20Poisson%20Regression.pdf">bivariate Poisson distriubtion</a>. The <a href="https://en.wikipedia.org/wiki/Weibull_distribution">Weibull distribution</a> has also been proposed as a <a href="http://www.sportstradingnetwork.com/article/journal/using-the-weibull-count-distribution-for-predicting-the-results-of-football-matches/">viable alternative</a>. These might be topics for future blog posts.</p>
<h2 id="summary">Summary</h2>
<p>We built a simple Poisson model to predict the results of English Premier League matches. Despite its inherent flaws, it recreates several features that would be a necessity for any predictive football model (home advantage, varying offensive strengths and opposition quality). In conclusion, don’t wager the rent money, but it’s a good starting point for more sophisticated realistic models. Thanks for reading!</p>
Tue, 30 May 2017 00:00:00 +0000
https://dashee87.github.io/data%20science/football/r/predicting-football-results-with-statistical-modelling/
https://dashee87.github.io/data%20science/football/r/predicting-football-results-with-statistical-modelling/Clustering with Scikit with GIFs<p>It’s a common task for a data scientist: you need to generate segments (or clusters- I’ll use the terms interchangably) of the customer base. Where does one start? With definitions, of course!!! Clustering is the subfield of unsupervised learning that aims to partition unlabelled datasets into consistent groups based on some shared unknown characteristics. All the tools you’ll need are in Scikit-Learn, so I’ll leave the code to a minimum. Instead, through the medium of GIFs, this tutorial will describe the most common techniques. If GIFs aren’t your thing (what are you doing on the internet?), then the <a href="http://scikit-learn.org/stable/modules/clustering.html">scikit clustering documentation</a> is quite thorough.</p>
<p>You can download this jupyter notebook <a href="https://github.com/dashee87/blogScripts/blob/master/Jupyter/2017-05-09-Clustering-with-Scikit-with-GIFs.ipynb">here</a> and the gifs can be downloaded from <a href="https://github.com/dashee87/dashee87.github.io/tree/master/images">this folder</a> (or you can just right click on the GIFs and select ‘Save image as…’).</p>
<h1 id="techniques">Techniques</h1>
<p>Clustering algorithms can be broadly split into two types, depending on whether the number of segments is explicitly specified by the user. As we’ll find out though, that distinction can sometimes be a little unclear, as some algorithms employ parameters that act as proxies for the number of clusters. But before we can do anything, we must load all the required modules in our python script. We also need to construct toy datasets to illustrate and compare each technique. The significance of each one will hopefully become apparent.</p>
<div class="language-python highlighter-rouge"><pre class="highlight"><code><span class="kn">import</span> <span class="nn">numpy</span> <span class="kn">as</span> <span class="nn">np</span>
<span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="kn">as</span> <span class="nn">plt</span>
<span class="kn">from</span> <span class="nn">sklearn.metrics</span> <span class="kn">import</span> <span class="n">silhouette_score</span>
<span class="kn">from</span> <span class="nn">sklearn</span> <span class="kn">import</span> <span class="n">cluster</span><span class="p">,</span> <span class="n">datasets</span><span class="p">,</span> <span class="n">mixture</span>
<span class="kn">from</span> <span class="nn">sklearn.neighbors</span> <span class="kn">import</span> <span class="n">kneighbors_graph</span>
<span class="n">np</span><span class="o">.</span><span class="n">random</span><span class="o">.</span><span class="n">seed</span><span class="p">(</span><span class="mi">844</span><span class="p">)</span>
<span class="n">clust1</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">random</span><span class="o">.</span><span class="n">normal</span><span class="p">(</span><span class="mi">5</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="p">(</span><span class="mi">1000</span><span class="p">,</span><span class="mi">2</span><span class="p">))</span>
<span class="n">clust2</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">random</span><span class="o">.</span><span class="n">normal</span><span class="p">(</span><span class="mi">15</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="p">(</span><span class="mi">1000</span><span class="p">,</span><span class="mi">2</span><span class="p">))</span>
<span class="n">clust3</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">random</span><span class="o">.</span><span class="n">multivariate_normal</span><span class="p">([</span><span class="mi">17</span><span class="p">,</span><span class="mi">3</span><span class="p">],</span> <span class="p">[[</span><span class="mi">1</span><span class="p">,</span><span class="mi">0</span><span class="p">],[</span><span class="mi">0</span><span class="p">,</span><span class="mi">1</span><span class="p">]],</span> <span class="mi">1000</span><span class="p">)</span>
<span class="n">clust4</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">random</span><span class="o">.</span><span class="n">multivariate_normal</span><span class="p">([</span><span class="mi">2</span><span class="p">,</span><span class="mi">16</span><span class="p">],</span> <span class="p">[[</span><span class="mi">1</span><span class="p">,</span><span class="mi">0</span><span class="p">],[</span><span class="mi">0</span><span class="p">,</span><span class="mi">1</span><span class="p">]],</span> <span class="mi">1000</span><span class="p">)</span>
<span class="n">dataset1</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">concatenate</span><span class="p">((</span><span class="n">clust1</span><span class="p">,</span> <span class="n">clust2</span><span class="p">,</span> <span class="n">clust3</span><span class="p">,</span> <span class="n">clust4</span><span class="p">))</span>
<span class="c"># we take the first array as the second array has the cluster labels</span>
<span class="n">dataset2</span> <span class="o">=</span> <span class="n">datasets</span><span class="o">.</span><span class="n">make_circles</span><span class="p">(</span><span class="n">n_samples</span><span class="o">=</span><span class="mi">1000</span><span class="p">,</span> <span class="n">factor</span><span class="o">=.</span><span class="mi">5</span><span class="p">,</span> <span class="n">noise</span><span class="o">=.</span><span class="mo">05</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
<span class="c"># plot clustering output on the two datasets</span>
<span class="k">def</span> <span class="nf">cluster_plots</span><span class="p">(</span><span class="n">set1</span><span class="p">,</span> <span class="n">set2</span><span class="p">,</span> <span class="n">colours1</span> <span class="o">=</span> <span class="s">'gray'</span><span class="p">,</span> <span class="n">colours2</span> <span class="o">=</span> <span class="s">'gray'</span><span class="p">,</span>
<span class="n">title1</span> <span class="o">=</span> <span class="s">'Dataset 1'</span><span class="p">,</span> <span class="n">title2</span> <span class="o">=</span> <span class="s">'Dataset 2'</span><span class="p">):</span>
<span class="n">fig</span><span class="p">,(</span><span class="n">ax1</span><span class="p">,</span><span class="n">ax2</span><span class="p">)</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">subplots</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span>
<span class="n">fig</span><span class="o">.</span><span class="n">set_size_inches</span><span class="p">(</span><span class="mi">6</span><span class="p">,</span> <span class="mi">3</span><span class="p">)</span>
<span class="n">ax1</span><span class="o">.</span><span class="n">set_title</span><span class="p">(</span><span class="n">title1</span><span class="p">,</span><span class="n">fontsize</span><span class="o">=</span><span class="mi">14</span><span class="p">)</span>
<span class="n">ax1</span><span class="o">.</span><span class="n">set_xlim</span><span class="p">(</span><span class="nb">min</span><span class="p">(</span><span class="n">set1</span><span class="p">[:,</span><span class="mi">0</span><span class="p">]),</span> <span class="nb">max</span><span class="p">(</span><span class="n">set1</span><span class="p">[:,</span><span class="mi">0</span><span class="p">]))</span>
<span class="n">ax1</span><span class="o">.</span><span class="n">set_ylim</span><span class="p">(</span><span class="nb">min</span><span class="p">(</span><span class="n">set1</span><span class="p">[:,</span><span class="mi">1</span><span class="p">]),</span> <span class="nb">max</span><span class="p">(</span><span class="n">set1</span><span class="p">[:,</span><span class="mi">1</span><span class="p">]))</span>
<span class="n">ax1</span><span class="o">.</span><span class="n">scatter</span><span class="p">(</span><span class="n">set1</span><span class="p">[:,</span> <span class="mi">0</span><span class="p">],</span> <span class="n">set1</span><span class="p">[:,</span> <span class="mi">1</span><span class="p">],</span><span class="n">s</span><span class="o">=</span><span class="mi">8</span><span class="p">,</span><span class="n">lw</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span><span class="n">c</span><span class="o">=</span> <span class="n">colours1</span><span class="p">)</span>
<span class="n">ax2</span><span class="o">.</span><span class="n">set_title</span><span class="p">(</span><span class="n">title2</span><span class="p">,</span><span class="n">fontsize</span><span class="o">=</span><span class="mi">14</span><span class="p">)</span>
<span class="n">ax2</span><span class="o">.</span><span class="n">set_xlim</span><span class="p">(</span><span class="nb">min</span><span class="p">(</span><span class="n">set2</span><span class="p">[:,</span><span class="mi">0</span><span class="p">]),</span> <span class="nb">max</span><span class="p">(</span><span class="n">set2</span><span class="p">[:,</span><span class="mi">0</span><span class="p">]))</span>
<span class="n">ax2</span><span class="o">.</span><span class="n">set_ylim</span><span class="p">(</span><span class="nb">min</span><span class="p">(</span><span class="n">set2</span><span class="p">[:,</span><span class="mi">1</span><span class="p">]),</span> <span class="nb">max</span><span class="p">(</span><span class="n">set2</span><span class="p">[:,</span><span class="mi">1</span><span class="p">]))</span>
<span class="n">ax2</span><span class="o">.</span><span class="n">scatter</span><span class="p">(</span><span class="n">set2</span><span class="p">[:,</span> <span class="mi">0</span><span class="p">],</span> <span class="n">set2</span><span class="p">[:,</span> <span class="mi">1</span><span class="p">],</span><span class="n">s</span><span class="o">=</span><span class="mi">8</span><span class="p">,</span><span class="n">lw</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span><span class="n">c</span><span class="o">=</span><span class="n">colours2</span><span class="p">)</span>
<span class="n">fig</span><span class="o">.</span><span class="n">tight_layout</span><span class="p">()</span>
<span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
<span class="n">cluster_plots</span><span class="p">(</span><span class="n">dataset1</span><span class="p">,</span> <span class="n">dataset2</span><span class="p">)</span>
</code></pre>
</div>
<p><img src="/images/scikit_clustering_1_0.png" alt="" /></p>
<h1 id="k-means">K-means</h1>
<p>Based on absolutely no empirical evidence (the threshold for baseless assertions is much lower in blogging than academia), <a href="https://en.wikipedia.org/wiki/K-means_clustering">k-means</a> is probably the most popular clustering algorithm of them all. The algorithm itself is relatively simple: Starting with a pre-specified number of cluster centres (which can be distributed randomly or smartly (see <code class="highlighter-rouge">kmeans++</code>)), each point is initally assigned to its nearest centre. In the next step, for each segment, the centres are moved to the centroid of the clustered points. The points are then reassigned to their nearest centre. The process is repeated until moving the centres derives little or no improvement (measured by the within cluster sum of squares- the total squared distance between each point and its cluster centre). The algorithm is concisely illustrated by the GIF below.</p>
<div style="text-align:center">
<p><img src="/images/kmeans.gif" alt="k-means in action (x marks the spot of the cluster centroid)" /></p>
</div>
<p>Variations on the k-means algorithm include <a href="https://en.wikipedia.org/wiki/K-medoids">k-medoids</a> and <a href="https://en.wikipedia.org/wiki/K-medians_clustering">k-medians</a>, where centroids are updated to the <a href="https://en.wikipedia.org/wiki/Medoid">medoid</a> and median of existng clusters, repsectively. Note that, under k-medoids, cluster centroids must correspond to the members of the dataset. Algorithms in the k-means family are sensitive to the starting position of the cluster centres, as each method converges to local optima, the frequency of which increase in higher dimensions. This issue is illustrated for k-means in the GIF below.</p>
<div style="text-align:center">
<p><img src="/images/kmeans_bad.gif" alt="Why k-means needs multiple restarts" /></p>
</div>
<p>k-means clustering in scikit offers several extensions to the traditional approach. To prevent the algorithm returning sub-optimal clustering, the kmeans method includes the <code class="highlighter-rouge">n_init</code> and <code class="highlighter-rouge">method</code> parameters. The former just reruns the algorithm with n different initialisations and returns the best output (measured by the within cluster sum of squares). By setting the latter to ‘kmeans++’ (the default), the initial centres are smartly selected (i.e. better than random). This has the additional benefit of decreasing runtime (less steps to reach convergence).</p>
<div class="language-python highlighter-rouge"><pre class="highlight"><code><span class="c"># implementing k-means clustering</span>
<span class="n">kmeans_dataset1</span> <span class="o">=</span> <span class="n">cluster</span><span class="o">.</span><span class="n">KMeans</span><span class="p">(</span><span class="n">n_clusters</span><span class="o">=</span><span class="mi">4</span><span class="p">,</span> <span class="n">max_iter</span><span class="o">=</span><span class="mi">300</span><span class="p">,</span>
<span class="n">init</span><span class="o">=</span><span class="s">'k-means++'</span><span class="p">,</span><span class="n">n_init</span><span class="o">=</span><span class="mi">10</span><span class="p">)</span><span class="o">.</span><span class="n">fit_predict</span><span class="p">(</span><span class="n">dataset1</span><span class="p">)</span>
<span class="n">kmeans_dataset2</span> <span class="o">=</span> <span class="n">cluster</span><span class="o">.</span><span class="n">KMeans</span><span class="p">(</span><span class="n">n_clusters</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">max_iter</span><span class="o">=</span><span class="mi">300</span><span class="p">,</span>
<span class="n">init</span><span class="o">=</span><span class="s">'k-means++'</span><span class="p">,</span><span class="n">n_init</span><span class="o">=</span><span class="mi">10</span><span class="p">)</span><span class="o">.</span><span class="n">fit_predict</span><span class="p">(</span><span class="n">dataset2</span><span class="p">)</span>
<span class="k">print</span><span class="p">(</span><span class="s">'Dataset1'</span><span class="p">)</span>
<span class="k">print</span><span class="p">(</span><span class="o">*</span><span class="p">[</span><span class="s">"Cluster "</span><span class="o">+</span><span class="nb">str</span><span class="p">(</span><span class="n">i</span><span class="p">)</span><span class="o">+</span><span class="s">": "</span><span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="nb">sum</span><span class="p">(</span><span class="n">kmeans_dataset1</span><span class="o">==</span><span class="n">i</span><span class="p">))</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">4</span><span class="p">)],</span> <span class="n">sep</span><span class="o">=</span><span class="s">'</span><span class="se">\n</span><span class="s">'</span><span class="p">)</span>
<span class="n">cluster_plots</span><span class="p">(</span><span class="n">dataset1</span><span class="p">,</span> <span class="n">dataset2</span><span class="p">,</span>
<span class="n">kmeans_dataset1</span><span class="p">,</span> <span class="n">kmeans_dataset2</span><span class="p">)</span>
</code></pre>
</div>
<div class="highlighter-rouge"><pre class="highlight"><code>Dataset1
Cluster 0: 952
Cluster 1: 1008
Cluster 2: 1022
Cluster 3: 1018
</code></pre>
</div>
<p><img src="/images/scikit_clustering_3_1.png" alt="" /></p>
<p>k-means performs quite well on <code class="highlighter-rouge">Dataset1</code>, but fails miserably on <code class="highlighter-rouge">Dataset2</code>. In fact, these two datasets illustrate the strenghts and weaknesses of k-means. The algorithm seeks and identifies globular (essentially spherical) clusters. If this assumption doesn’t hold, the model output may be inadaquate (or just really bad). It doesn’t end there; k-means can also underperform with clusters of different size and density.</p>
<div class="language-python highlighter-rouge"><pre class="highlight"><code><span class="n">kmeans_dataset1</span> <span class="o">=</span> <span class="n">cluster</span><span class="o">.</span><span class="n">KMeans</span><span class="p">(</span><span class="n">n_clusters</span><span class="o">=</span><span class="mi">4</span><span class="p">,</span> <span class="n">max_iter</span><span class="o">=</span><span class="mi">300</span><span class="p">,</span>
<span class="n">init</span><span class="o">=</span><span class="s">'k-means++'</span><span class="p">,</span><span class="n">n_init</span><span class="o">=</span><span class="mi">10</span><span class="p">)</span><span class="o">.</span><span class="n">fit_predict</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">vstack</span><span class="p">([</span><span class="n">dataset1</span><span class="p">[:</span><span class="mi">2080</span><span class="p">,:],</span>
<span class="n">dataset1</span><span class="p">[</span><span class="mi">3000</span><span class="p">:</span><span class="mi">3080</span><span class="p">,:]]))</span>
<span class="n">kmeans_dataset2</span> <span class="o">=</span> <span class="n">cluster</span><span class="o">.</span><span class="n">KMeans</span><span class="p">(</span><span class="n">n_clusters</span><span class="o">=</span><span class="mi">4</span><span class="p">,</span> <span class="n">max_iter</span><span class="o">=</span><span class="mi">300</span><span class="p">,</span>
<span class="n">init</span><span class="o">=</span><span class="s">'k-means++'</span><span class="p">,</span><span class="n">n_init</span><span class="o">=</span><span class="mi">10</span><span class="p">)</span><span class="o">.</span><span class="n">fit_predict</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">vstack</span><span class="p">([</span><span class="n">dataset1</span><span class="p">[</span><span class="o">-</span><span class="mi">2080</span><span class="p">:,],</span>
<span class="n">dataset1</span><span class="p">[:</span><span class="mi">80</span><span class="p">,]]))</span>
<span class="n">cluster_plots</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">vstack</span><span class="p">([</span><span class="n">dataset1</span><span class="p">[:</span><span class="mi">2080</span><span class="p">,],</span><span class="n">dataset1</span><span class="p">[</span><span class="mi">3000</span><span class="p">:</span><span class="mi">3080</span><span class="p">,]]),</span>
<span class="n">np</span><span class="o">.</span><span class="n">vstack</span><span class="p">([</span><span class="n">dataset1</span><span class="p">[</span><span class="o">-</span><span class="mi">2080</span><span class="p">:,],</span><span class="n">dataset1</span><span class="p">[:</span><span class="mi">80</span><span class="p">,]]),</span>
<span class="n">kmeans_dataset1</span><span class="p">,</span> <span class="n">kmeans_dataset2</span><span class="p">,</span><span class="n">title1</span><span class="o">=</span><span class="s">''</span><span class="p">,</span> <span class="n">title2</span><span class="o">=</span><span class="s">''</span><span class="p">)</span>
</code></pre>
</div>
<p><img src="/images/scikit_clustering_5_0.png" alt="" /></p>
<p>For all its faults, the enduring popularity of k-means (and related algorithms) stems from its versatility. Its average complexity is O(k<em>n</em>T), where k,n and T are the number of clusters, samples and iterations, respectively. As such, it’s considered one of the <a href="http://scikit-learn.org/stable/modules/generated/sklearn.cluster.KMeans.html">fastest clustering algorithms out there</a>. And in the world of big data, this matters. If your boss wants 10 customer segments by close of business, then you’ll probably use k-means and just hope no one knows the word <a href="https://www.merriam-webster.com/dictionary/globular">globular</a>.</p>
<h1 id="expectation-maximisation-em">Expectation Maximisation (EM)</h1>
<p>This technique is the application of the <a href="https://en.wikipedia.org/wiki/Expectation%E2%80%93maximization_algorithm">general expectation maximisation (EM) algorithm</a> to the task of clustering. It is conceptually related and visually similar to k-means (see GIF below). Where k-means seeks to minimise the distance between the observations and their assigned centroids, EM estimates some latent variables (typically the mean and covariance matrix of a mutltinomial normal distribution (called <a href="http://scikit-learn.org/stable/modules/mixture.html">Gaussian Mixture Models (GMM)</a>)), so as to maximise the log-likelihood of the observed data. Similar to k-means, the algorithm converges to the final clustering by iteratively improving its performance (i.e. reducing the log-likelihood). However, again like k-means, there is no guarantee that the algorithm has settled on the global minimum rather than local minimum (a concern that increases in higher dimensions).</p>
<div style="text-align:center">
<p><img src="/images/em_only.gif" alt="Expectation Maximisation in action" /></p>
</div>
<p>In contrast to kmeans, observations are not explicitly assigned to clusters, but rather given probabilities of belonging to each distribution. If the underlying distribution is correctly identified (e.g. normal distribution in the GIF), then the algorithm performs well. In practice, especially for large datasets, the underlying distribution may not be retrievble, so EM clustering may not be well suited to such tasks.</p>
<div class="language-python highlighter-rouge"><pre class="highlight"><code><span class="c"># implementing Expecation Maximistation (specifically Guassian Mixture Models)</span>
<span class="n">em_dataset1</span> <span class="o">=</span> <span class="n">mixture</span><span class="o">.</span><span class="n">GaussianMixture</span><span class="p">(</span><span class="n">n_components</span><span class="o">=</span><span class="mi">4</span><span class="p">,</span> <span class="n">covariance_type</span><span class="o">=</span><span class="s">'full'</span><span class="p">)</span><span class="o">.</span><span class="n">fit</span><span class="p">(</span><span class="n">dataset1</span><span class="p">)</span>
<span class="n">em_dataset2</span> <span class="o">=</span> <span class="n">mixture</span><span class="o">.</span><span class="n">GaussianMixture</span><span class="p">(</span><span class="n">n_components</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">covariance_type</span><span class="o">=</span><span class="s">'full'</span><span class="p">)</span><span class="o">.</span><span class="n">fit</span><span class="p">(</span><span class="n">dataset2</span><span class="p">)</span>
<span class="n">cluster_plots</span><span class="p">(</span><span class="n">dataset1</span><span class="p">,</span> <span class="n">dataset2</span><span class="p">,</span> <span class="n">em_dataset1</span><span class="o">.</span><span class="n">predict</span><span class="p">(</span><span class="n">dataset1</span><span class="p">),</span> <span class="n">em_dataset2</span><span class="o">.</span><span class="n">predict</span><span class="p">(</span><span class="n">dataset2</span><span class="p">))</span>
</code></pre>
</div>
<p><img src="/images/scikit_clustering_8_0.png" alt="" /></p>
<p>No surprises there. EM clusters the first dataset perfectly, as the underlying data is normally distributed. In contrast, <code class="highlighter-rouge">Dataset2</code> cannot be accurately modelled as a GMM, so that’s why EM performs so poorly in this case.</p>
<h1 id="hierarchical-clustering">Hierarchical Clustering</h1>
<p>Unlike k-means and EM, <a href="https://en.wikipedia.org/wiki/Hierarchical_clustering">hierarchical clustering</a> (HC) doesn’t require the user to specify the number of clusters beforehand. Instead it returns an output (typically as a dendrogram- see GIF below), from which the user can decide the appropriate number of clusters (either manually or <a href="https://joernhees.de/blog/2015/08/26/scipy-hierarchical-clustering-and-dendrogram-tutorial/">algorithmically</a>). If done manually, the user may cut the dendrogram where the merged clusters are too far apart (represented by a long lines in the dendrogram). Alternatively, the user can just return a specific number of clusters (similar to k-means).</p>
<div style="text-align:center">
<p><img src="/images/hierarch.gif" alt="Hierarhical Clustering with Dendrogram" /></p>
</div>
<p>As its name suggests, it constructs a hierarchy of clusters based on proximity (e.g Euclidean distance or Manhattan distance- see GIF below). HC typically comes in two flavours (essentially, bottom up or top down):</p>
<ul>
<li>Divisive: Starts with the entire dataset comprising one cluster that is iteratively split- one point at a time- until each point forms its own cluster.</li>
<li>Agglomerative: The agglomerative method in reverse- individual points are iteratively combined until all points belong to the same cluster.</li>
</ul>
<p>Another important concept in HC is the linkage criterion. This defines the distance between clusters as a function of the points in each cluster and determines which clusters are merged/split at each step. That clumsy sentence is neatly illustrated in the GIF below.</p>
<div style="text-align:center">
<p><img src="/images/hierarch_1.gif" alt="Distance metrics and linkage criteria" /></p>
</div>
<div class="language-python highlighter-rouge"><pre class="highlight"><code><span class="c"># implementing agglomerative (bottom up) hierarchical clustering</span>
<span class="c"># we're going to specify that we want 4 and 2 clusters, respectively</span>
<span class="n">hc_dataset1</span> <span class="o">=</span> <span class="n">cluster</span><span class="o">.</span><span class="n">AgglomerativeClustering</span><span class="p">(</span><span class="n">n_clusters</span><span class="o">=</span><span class="mi">4</span><span class="p">,</span> <span class="n">affinity</span><span class="o">=</span><span class="s">'euclidean'</span><span class="p">,</span>
<span class="n">linkage</span><span class="o">=</span><span class="s">'ward'</span><span class="p">)</span><span class="o">.</span><span class="n">fit_predict</span><span class="p">(</span><span class="n">dataset1</span><span class="p">)</span>
<span class="n">hc_dataset2</span> <span class="o">=</span> <span class="n">cluster</span><span class="o">.</span><span class="n">AgglomerativeClustering</span><span class="p">(</span><span class="n">n_clusters</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">affinity</span><span class="o">=</span><span class="s">'euclidean'</span><span class="p">,</span>
<span class="n">linkage</span><span class="o">=</span><span class="s">'average'</span><span class="p">)</span><span class="o">.</span><span class="n">fit_predict</span><span class="p">(</span><span class="n">dataset2</span><span class="p">)</span>
<span class="k">print</span><span class="p">(</span><span class="s">"Dataset 1"</span><span class="p">)</span>
<span class="k">print</span><span class="p">(</span><span class="o">*</span><span class="p">[</span><span class="s">"Cluster "</span><span class="o">+</span><span class="nb">str</span><span class="p">(</span><span class="n">i</span><span class="p">)</span><span class="o">+</span><span class="s">": "</span><span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="nb">sum</span><span class="p">(</span><span class="n">hc_dataset1</span><span class="o">==</span><span class="n">i</span><span class="p">))</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">4</span><span class="p">)],</span> <span class="n">sep</span><span class="o">=</span><span class="s">'</span><span class="se">\n</span><span class="s">'</span><span class="p">)</span>
<span class="n">cluster_plots</span><span class="p">(</span><span class="n">dataset1</span><span class="p">,</span> <span class="n">dataset2</span><span class="p">,</span> <span class="n">hc_dataset1</span><span class="p">,</span> <span class="n">hc_dataset2</span><span class="p">)</span>
</code></pre>
</div>
<div class="highlighter-rouge"><pre class="highlight"><code>Dataset 1
Cluster 0: 990
Cluster 1: 1008
Cluster 2: 1002
Cluster 3: 1000
</code></pre>
</div>
<p><img src="/images/scikit_clustering_11_1.png" alt="" /></p>
<p>You might notice that HC didn’t perform so well on the noisy circles. By imposing simple connectivity constraints (points can only cluster with their n(=5) nearest neighbours), HC captures the non-globular structures within the dataset.</p>
<div class="language-python highlighter-rouge"><pre class="highlight"><code><span class="n">hc_dataset2</span> <span class="o">=</span> <span class="n">cluster</span><span class="o">.</span><span class="n">AgglomerativeClustering</span><span class="p">(</span><span class="n">n_clusters</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">affinity</span><span class="o">=</span><span class="s">'euclidean'</span><span class="p">,</span>
<span class="n">linkage</span><span class="o">=</span><span class="s">'complete'</span><span class="p">)</span><span class="o">.</span><span class="n">fit_predict</span><span class="p">(</span><span class="n">dataset2</span><span class="p">)</span>
<span class="n">connect</span> <span class="o">=</span> <span class="n">kneighbors_graph</span><span class="p">(</span><span class="n">dataset2</span><span class="p">,</span> <span class="n">n_neighbors</span><span class="o">=</span><span class="mi">5</span><span class="p">,</span> <span class="n">include_self</span><span class="o">=</span><span class="bp">False</span><span class="p">)</span>
<span class="n">hc_dataset2_connectivity</span> <span class="o">=</span> <span class="n">cluster</span><span class="o">.</span><span class="n">AgglomerativeClustering</span><span class="p">(</span><span class="n">n_clusters</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">affinity</span><span class="o">=</span><span class="s">'euclidean'</span><span class="p">,</span>
<span class="n">linkage</span><span class="o">=</span><span class="s">'complete'</span><span class="p">,</span><span class="n">connectivity</span><span class="o">=</span><span class="n">connect</span><span class="p">)</span><span class="o">.</span><span class="n">fit_predict</span><span class="p">(</span><span class="n">dataset2</span><span class="p">)</span>
<span class="n">cluster_plots</span><span class="p">(</span><span class="n">dataset2</span><span class="p">,</span> <span class="n">dataset2</span><span class="p">,</span><span class="n">hc_dataset2</span><span class="p">,</span><span class="n">hc_dataset2_connectivity</span><span class="p">,</span>
<span class="n">title1</span><span class="o">=</span><span class="s">'Without Connectivity'</span><span class="p">,</span> <span class="n">title2</span><span class="o">=</span><span class="s">'With Connectivity'</span><span class="p">)</span>
</code></pre>
</div>
<p><img src="/images/scikit_clustering_13_1.png" alt="" /></p>
<p>Conveniently, the position of each observation isn’t necessary for HC, but rather the distance between each point (e.g. a n x n matrix). However, the main disadvantage of HC is that it requires too much memory for large datasets (that n x n matrix blows up pretty quickly). Divisive clustering is $O(2^n)$, while agglomerative clustering comes in somewhat better at $O(n^2 log(n))$ (though special cases of $O(n^2)$ are available for single and maximum linkage agglomerative clustering).</p>
<h1 id="mean-shift">Mean Shift</h1>
<p>Mean shift describes a <a href="https://en.wikipedia.org/wiki/Mean_shift">general non-parametric technique</a> that locates the maxima of density functions, where Mean Shift Clustering simply refers to its application to the task of clustering. In other words, locate the density function maxima (mean shift algorithm) and then assign points to the nearest maxima. In that sense, it shares some similarities with k-means (the density maxima correspond to the centroids in the latter). Interestingly, the number of clusters is not required for its implementation and, as it’s density based, it can detect clusters of any shape. Instead, the algorithm relies on a bandwidth parameter, which simply determines the size of neighbourhood over which the density will be computed. A small bandwidth could generate excessive clusters, while a high value could erroneously combine multiple clusters. Luckily, sklearn includes an <a href="http://scikit-learn.org/stable/modules/generated/sklearn.cluster.estimate_bandwidth.html">estimate_bandwidth function</a>. It uses the <a href="https://en.wikipedia.org/wiki/K-nearest_neighbors_algorithm">k-nearest neighbours</a> (kNN) algorithm to determine an optimal bandwidth value. I suppose that makes it even easier than k-means to implement.</p>
<div style="text-align:center">
<p><img src="/images/mean_shift_0.gif" alt="Mean Shift Algorithm" /></p>
</div>
<p><a href="http://ieeexplore.ieee.org/document/1055330/">Originally invented in 1975</a>, mean shift gained prominence when it was successfully applied to computer vision (seminal paper <a href="http://ieeexplore.ieee.org/document/400568/">#1</a> <a href="https://dx.doi.org/10.1109%2F34.1000236">#2</a>). I won’t discuss the underlying maths (that info can be found <a href="https://saravananthirumuruganathan.wordpress.com/2010/04/01/introduction-to-mean-shift-algorithm/">here</a> and <a href="http://efavdb.com/mean-shift/">here</a>). Intuitively, cluster centers are initially mapped onto the dataset randomly (like k-means). Around each centre is a ball (the radius of which is determined by the bandwidth), where the density equates to the number of points inside each ball. The centre of the ball is iteratively nudged towards regions of higher density by shifting the centre to the mean of the points within the ball (hence the name). This process is repeated until balls exhibit little movement. When multiple balls overlap, the ball containing the most points is preserved. Observations are then clustered according to their ball. Didn’t follow that? Well, here’s the gif.</p>
<div style="text-align:center">
<p><img src="/images/mean_shift_tutorial.gif" alt="Mean Shift Clustering" /></p>
</div>
<p>Now, you might be thinking “An algorithm that needs absolutely no input from the user and can detect clusters of any shape!!! This should be all over Facebook!!!”. First of all, as we’ll find out, it can’t detect clusters of any shape. Plus, there’s no guarantee that the value returned by <code class="highlighter-rouge">estimate_bandwidth</code> is appropriate (a caveat that becomes more pertinent in higher dimensions). Speaking of high dimensionality, mean shift may also converge to local optima rather than global optima. But the biggest mark against Mean Shift is its computational expense. It runs at $O(T<em>n^2)$, compared to $O(k</em>n*T)$ for k-means, where T is number of iterations and n represents the number of points. In fact, <a href="http://scikit-learn.org/stable/modules/generated/sklearn.cluster.MeanShift.html#sklearn.cluster.MeanShift">according to the sklearn documentation</a>, the <code class="highlighter-rouge">estimate_bandwidth</code> function scales particularly badly. Maybe humans (and data science blogs) will still be needed for a few more years!</p>
<div class="language-python highlighter-rouge"><pre class="highlight"><code><span class="c"># implementing Mean Shift clustering in python</span>
<span class="c"># auto-calculate bandwidths with estimate_bandwidth</span>
<span class="n">bandwidths</span> <span class="o">=</span> <span class="p">[</span><span class="n">cluster</span><span class="o">.</span><span class="n">estimate_bandwidth</span><span class="p">(</span><span class="n">dataset</span><span class="p">,</span> <span class="n">quantile</span><span class="o">=</span><span class="mf">0.1</span><span class="p">)</span>
<span class="k">for</span> <span class="n">dataset</span> <span class="ow">in</span> <span class="p">[</span><span class="n">dataset1</span><span class="p">,</span> <span class="n">dataset2</span><span class="p">]]</span>
<span class="n">meanshifts</span> <span class="o">=</span> <span class="p">[</span><span class="n">cluster</span><span class="o">.</span><span class="n">MeanShift</span><span class="p">(</span><span class="n">bandwidth</span><span class="o">=</span><span class="n">band</span><span class="p">,</span> <span class="n">bin_seeding</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span><span class="o">.</span><span class="n">fit</span><span class="p">(</span><span class="n">dataset</span><span class="p">)</span>
<span class="k">for</span> <span class="n">dataset</span><span class="p">,</span><span class="n">band</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">([</span><span class="n">dataset1</span><span class="p">,</span><span class="n">dataset2</span><span class="p">],</span><span class="n">bandwidths</span><span class="p">)]</span>
<span class="c"># print number of clusters for each dataset</span>
<span class="k">print</span><span class="p">(</span><span class="o">*</span><span class="p">[</span><span class="s">"Dataset"</span><span class="o">+</span><span class="nb">str</span><span class="p">(</span><span class="n">i</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span><span class="o">+</span><span class="s">": "</span><span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="nb">max</span><span class="p">(</span><span class="n">meanshifts</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">labels_</span><span class="p">)</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span> <span class="o">+</span> <span class="s">" clusters"</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">2</span><span class="p">)],</span> <span class="n">sep</span><span class="o">=</span><span class="s">'</span><span class="se">\n</span><span class="s">'</span><span class="p">)</span>
<span class="c"># plot cluster output</span>
<span class="n">cluster_plots</span><span class="p">(</span><span class="n">dataset1</span><span class="p">,</span> <span class="n">dataset2</span><span class="p">,</span> <span class="n">meanshifts</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">predict</span><span class="p">(</span><span class="n">dataset1</span><span class="p">),</span> <span class="n">meanshifts</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">predict</span><span class="p">(</span><span class="n">dataset2</span><span class="p">))</span>
</code></pre>
</div>
<div class="highlighter-rouge"><pre class="highlight"><code>Dataset1: 4 clusters
Dataset2: 8 clusters
</code></pre>
</div>
<p><img src="/images/scikit_clustering_16_1.png" alt="" /></p>
<p>Mean shift clusters <code class="highlighter-rouge">Dataset1</code> well, but performs quite poorly on <code class="highlighter-rouge">Dataset2</code>. This shouldn’t be too surprising. It’s easy to imagine where you should overlay 4 balls on the first dataset. There’s just no way you could accurately partition <code class="highlighter-rouge">Dataset2</code> with two balls (see the GIF below if you don’t believe me). We’ve only considered a flat kernel (i.e. makes no distinction how the points are distributed within the ball), but, in some cases, a <a href="http://sociograph.blogspot.co.uk/2011/11/accessible-introduction-to-mean-shift.html">Gaussian kernel might be more appropriate</a>. Unfortunately, <a href="https://github.com/scikit-learn/scikit-learn/issues/442">scikit currently only accepts flat kernels</a>, so let’s pretend I never mentioned Gaussian kernels. Either way, you’d need some really exotic kernel to identify the two clusters in <code class="highlighter-rouge">Dataset2</code>.</p>
<div style="text-align:center">
<p><img src="/images/mean_shift_search.gif" alt="Bandwidth on the run" /></p>
</div>
<h1 id="affinity-propagation-ap">Affinity Propagation (AP)</h1>
<p>Affinity propagation (AP) describes an algorithm that performs clustering by passing messages between points. It seeks to identify highly representative observations, known as exemplars, where remaining data points are assigned to their nearest exemplar. Like mean-shift, the algorithm does not require the number of clusters to be prespecified. Instead, the user must input two parameters: preference and damping. Preference determines how likely an observation is to become an exemplar, which in turn decides the number of clusters. In that sense, this parameter somewhat mimics the number of clusters parameter in k-means/EM. The damping parameter restricts the magnitude of change between successive updates. Without this, AP can be prone <a href="http://www.psi.toronto.edu/affinitypropagation/faq.html">to overshooting the solution and non-convergence</a>. Provided convergence is achieved, damping shouldn’t significantly affect the output (see last GIF in this section), though it could increase the time to reach convergence.</p>
<p>AP doesn’t really lend itself to illustration with GIFs. I’ll still provide some GIFs, but a mathematical description might be more informative in this case (i.e. I’m now going to paraphrase the <a href="https://en.wikipedia.org/wiki/Affinity_propagation">AP wikipedia page</a>). AP starts off with a similarity (or affinity) matrix (<code class="highlighter-rouge">S</code>), where similarity (<code class="highlighter-rouge">s(i,j)</code>) is often formulated as the distance between points (e.g. negative Euclidean distance). The diagonal of the matrix (<code class="highlighter-rouge">s(i,i)</code>) is important, as this is where the preference value is inputted. In practice, ‘passing messages between points’ translates to updating two matrices. The first is the responsibility matrix (<code class="highlighter-rouge">R</code>), where <code class="highlighter-rouge">r(i,k)</code> represents the suitability of data point <code class="highlighter-rouge">k</code> to serve as an exemplar for point <code class="highlighter-rouge">i</code>. The second matrix is known as the availability matrix (<code class="highlighter-rouge">A</code>), where <code class="highlighter-rouge">a(i,k)</code> indicates the appropriateness of point <code class="highlighter-rouge">k</code> being an exemplar for point <code class="highlighter-rouge">i</code>, taking into account how well suited <code class="highlighter-rouge">k</code> is to serve as an exemplar to other points.</p>
<div style="text-align:center">
<p><img src="/images/affinity_propagation_similarity.gif" alt="Affinity Propagation (similarity Matrix)" /></p>
</div>
<p>In mathematical terms, both matrices are initialised to zero and are updated iteratively accroding to the following rules:</p>
<p><script type="math/tex">r(i,k) = s(i,k) - \max_{k' \neq k} \left\{ a(i, k') + s(i, k') \right \}</script>
<script type="math/tex">a(i,k)_{i \neq k} = \min \left( 0, r(k,k) + \sum_{i' \not\in \{i,k\}} \max(0, r(i',k)) \right)</script>
<script type="math/tex">a(k,k) = \sum_{i' \neq k} \max(0, r(i',k))</script></p>
<p>At each iteration, <code class="highlighter-rouge">A</code> and <code class="highlighter-rouge">R</code> are added together. Exemplars are represented by rows in which the diagonal of this matrix are positive (i.e. <code class="highlighter-rouge">r(i,i)</code> + <code class="highlighter-rouge">s(i,i)</code> > 0). The algorithm terminates after a specified number of updates or if the exemplars remain unchaged over several iterations. Points are then mapped to the nearest examplar and clustered accordingly.</p>
<div style="text-align:center">
<p><img src="/images/affinity_propagation_exemplars.gif" alt="Affinity Propagation (Finding Exemplars))" /></p>
</div>
<div class="language-python highlighter-rouge"><pre class="highlight"><code><span class="c"># implementing Affinity Propagation</span>
<span class="n">ap_dataset1</span> <span class="o">=</span> <span class="n">cluster</span><span class="o">.</span><span class="n">AffinityPropagation</span><span class="p">(</span><span class="n">verbose</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span><span class="o">.</span><span class="n">fit_predict</span><span class="p">(</span><span class="n">dataset1</span><span class="p">)</span>
<span class="n">ap_dataset2</span> <span class="o">=</span> <span class="n">cluster</span><span class="o">.</span><span class="n">AffinityPropagation</span><span class="p">(</span><span class="n">verbose</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span><span class="o">.</span><span class="n">fit_predict</span><span class="p">(</span><span class="n">dataset2</span><span class="p">)</span>
<span class="k">print</span><span class="p">(</span><span class="s">'Dataset1'</span><span class="p">)</span>
<span class="k">print</span><span class="p">(</span><span class="s">"# Clusters:"</span><span class="p">,</span><span class="nb">max</span><span class="p">(</span><span class="n">ap_dataset1</span><span class="p">)</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span>
<span class="k">print</span><span class="p">(</span><span class="s">'Dataset2'</span><span class="p">)</span>
<span class="k">print</span><span class="p">(</span><span class="s">"# Clusters:"</span><span class="p">,</span><span class="nb">max</span><span class="p">(</span><span class="n">ap_dataset2</span><span class="p">)</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span>
<span class="n">cluster_plots</span><span class="p">(</span><span class="n">dataset1</span><span class="p">,</span> <span class="n">dataset2</span><span class="p">,</span> <span class="n">ap_dataset1</span><span class="p">,</span> <span class="n">ap_dataset2</span><span class="p">)</span>
</code></pre>
</div>
<div class="highlighter-rouge"><pre class="highlight"><code>Did not converge
Did not converge
Dataset1
# Clusters: 1057
Dataset2
# Clusters: 117
</code></pre>
</div>
<p><img src="/images/scikit_clustering_19_1.png" alt="" /></p>
<p>It’s clear that the default settings in the <a href="http://scikit-learn.org/stable/modules/generated/sklearn.cluster.AffinityPropagation.html">sklearn implementation of AP</a> didn’t perform very well on the two datasets (in fact, neither execution converged). AP can suffer from non-convergence, though appropriate calibration of the damping parameter can minimise this risk. While AP doesn’t explicitly require you to specify the number of clusters, the preference parameter fulfills this role in practice. Playing around with preference values, you’ll notice that AP is considerably slower than k-means. That’s because AP runtime complexity is O(n^2), where n represents the number of points in the dataset. But it’s not all bad news. AP simply requires a similarity/affinity matrix, so the exact spatial position of each point is irrelevant. This also means that the algorithm is relatively insensitive to high dimensional data, assuming your measure of similarity is robust in higher dimensions (not the case for squared Euclidean distance!). Finally, AP is purely deterministic; so there’s no need for multiple random restarts á la kmeans. For all of these reasons, <a href="http://science.sciencemag.org/content/315/5814/972">AP outperforms its competitors</a> in complex computer visions tasks (e.g. clustering human faces).</p>
<div class="language-python highlighter-rouge"><pre class="highlight"><code><span class="n">ap_dataset1</span> <span class="o">=</span> <span class="n">cluster</span><span class="o">.</span><span class="n">AffinityPropagation</span><span class="p">(</span><span class="n">preference</span><span class="o">=-</span><span class="mi">10000</span><span class="p">,</span> <span class="n">damping</span><span class="o">=</span><span class="mf">0.9</span><span class="p">,</span> <span class="n">verbose</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span><span class="o">.</span><span class="n">fit_predict</span><span class="p">(</span><span class="n">dataset1</span><span class="p">)</span>
<span class="n">ap_dataset2</span> <span class="o">=</span> <span class="n">cluster</span><span class="o">.</span><span class="n">AffinityPropagation</span><span class="p">(</span><span class="n">preference</span><span class="o">=-</span><span class="mi">100</span><span class="p">,</span> <span class="n">damping</span><span class="o">=</span><span class="mf">0.8</span><span class="p">,</span> <span class="n">verbose</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span><span class="o">.</span><span class="n">fit_predict</span><span class="p">(</span><span class="n">dataset2</span><span class="p">)</span>
<span class="k">print</span><span class="p">(</span><span class="s">'Dataset1'</span><span class="p">)</span>
<span class="k">print</span><span class="p">(</span><span class="s">"# Clusters:"</span><span class="p">,</span><span class="nb">max</span><span class="p">(</span><span class="n">ap_dataset1</span><span class="p">)</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span>
<span class="k">print</span><span class="p">(</span><span class="s">'Dataset2'</span><span class="p">)</span>
<span class="k">print</span><span class="p">(</span><span class="s">"# Clusters:"</span><span class="p">,</span><span class="nb">max</span><span class="p">(</span><span class="n">ap_dataset2</span><span class="p">)</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span>
<span class="n">cluster_plots</span><span class="p">(</span><span class="n">dataset1</span><span class="p">,</span> <span class="n">dataset2</span><span class="p">,</span> <span class="n">ap_dataset1</span><span class="p">,</span> <span class="n">ap_dataset2</span><span class="p">)</span>
</code></pre>
</div>
<div class="highlighter-rouge"><pre class="highlight"><code>Converged after 117 iterations.
Converged after 53 iterations.
Dataset1
# Clusters: 4
Dataset2
# Clusters: 3
</code></pre>
</div>
<p><img src="/images/scikit_clustering_21_1.png" alt="" /></p>
<p>As you can see, I eventually arrived at some parameters that returned decent clustering for <code class="highlighter-rouge">Dataset1</code>. And just in case you’re curious how the clustering was affected by the parameters.</p>
<div style="text-align:center">
<p><img src="/images/affinity_propagation_search.gif" alt="Affinity Propagation (Damping and Preference)" /></p>
</div>
<h1 id="dbscan">DBSCAN</h1>
<p><a href="https://en.wikipedia.org/wiki/DBSCAN">Density-based spatial clustering of applications with noise</a> (DBSCAN) is a density based clustering algorithm that can neatly handle noise (the clue is in the name). Clusters are considered zones that are sufficiently dense. Points that lack neighbours do not belong to any cluster and are thus classifed as noise (a state that is not immediately attainable under traditional k-means or HC). DBSCAN doesn’t require the user to specify the number of clusters; it works that out for you. Instead, the user must define the minimum number of observations that constitutes a cluster (<code class="highlighter-rouge">minPts</code>) and the size of the neighbourhoods (epsilon- often denoted as <code class="highlighter-rouge">eps</code> or $\epsilon$). In simple terms, DBSCAN identifies clusters and then expands those clusters by scanning the neighbourhoods of the assigned points. Once all neighbourhoods have been exhausted, the process repeats with a new cluster, until all observations belong to a segment or have been classified as noise (see GIF below).</p>
<div style="text-align:center">
<p><img src="/images/DBSCAN_tutorial.gif" alt="DBSCAN tutorial" /></p>
</div>
<p>The most obvious advantage of DBSCAN is that the user doesn’t need to specify the number of clusters. Also, as already stated, the ability to robustly treat outliers as noise distinguishes it from other techniques. Finally, being density based, DBSCAN can return clusters of any shape.</p>
<div class="language-python highlighter-rouge"><pre class="highlight"><code><span class="c"># implenting DBSCAN</span>
<span class="n">dbscan_dataset1</span> <span class="o">=</span> <span class="n">cluster</span><span class="o">.</span><span class="n">DBSCAN</span><span class="p">(</span><span class="n">eps</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">min_samples</span><span class="o">=</span><span class="mi">5</span><span class="p">,</span> <span class="n">metric</span><span class="o">=</span><span class="s">'euclidean'</span><span class="p">)</span><span class="o">.</span><span class="n">fit_predict</span><span class="p">(</span><span class="n">dataset1</span><span class="p">)</span>
<span class="c"># noise points are assigned -1</span>
<span class="k">print</span><span class="p">(</span><span class="s">'Dataset1:'</span><span class="p">)</span>
<span class="k">print</span><span class="p">(</span><span class="s">"Number of Noise Points: "</span><span class="p">,</span><span class="nb">sum</span><span class="p">(</span><span class="n">dbscan_dataset1</span><span class="o">==-</span><span class="mi">1</span><span class="p">),</span><span class="s">" ("</span><span class="p">,</span><span class="nb">len</span><span class="p">(</span><span class="n">dbscan_dataset1</span><span class="p">),</span><span class="s">")"</span><span class="p">,</span><span class="n">sep</span><span class="o">=</span><span class="s">''</span><span class="p">)</span>
<span class="k">print</span><span class="p">(</span><span class="s">'Dataset2:'</span><span class="p">)</span>
<span class="k">print</span><span class="p">(</span><span class="s">"Number of Noise Points: "</span><span class="p">,</span><span class="nb">sum</span><span class="p">(</span><span class="n">dbscan_dataset2</span><span class="o">==-</span><span class="mi">1</span><span class="p">),</span><span class="s">" ("</span><span class="p">,</span><span class="nb">len</span><span class="p">(</span><span class="n">dbscan_dataset2</span><span class="p">),</span><span class="s">")"</span><span class="p">,</span><span class="n">sep</span><span class="o">=</span><span class="s">''</span><span class="p">)</span>
<span class="n">dbscan_dataset2</span> <span class="o">=</span> <span class="n">cluster</span><span class="o">.</span><span class="n">DBSCAN</span><span class="p">(</span><span class="n">eps</span><span class="o">=</span><span class="mf">0.1</span><span class="p">,</span> <span class="n">min_samples</span><span class="o">=</span><span class="mi">5</span><span class="p">,</span> <span class="n">metric</span><span class="o">=</span><span class="s">'euclidean'</span><span class="p">)</span><span class="o">.</span><span class="n">fit_predict</span><span class="p">(</span><span class="n">dataset2</span><span class="p">)</span>
<span class="n">cluster_plots</span><span class="p">(</span><span class="n">dataset1</span><span class="p">,</span> <span class="n">dataset2</span><span class="p">,</span> <span class="n">dbscan_dataset1</span><span class="p">,</span> <span class="n">dbscan_dataset2</span><span class="p">)</span>
</code></pre>
</div>
<div class="highlighter-rouge"><pre class="highlight"><code>Dataset1:
Number of Noise Points: 47 (4000)
Dataset2:
Number of Noise Points: 2 (1000)
</code></pre>
</div>
<p><img src="/images/scikit_clustering_24_1.png" alt="" /></p>
<p>Wow! It managed to correctly segment <code class="highlighter-rouge">Dataset2</code> without knowing the number of clusters beforehand. But before you throw k-means in the bin and get a DBSCAN tattoo (<a href="https://www.google.co.uk/search?q=dbscan+tattoo&safe=off&source=lnms&tbm=isch&sa=X&ved=0ahUKEwjbvJWFz_vRAhUBWhoKHTOrCsAQ_AUICCgB&biw=1600&bih=794">a google image search returned nothing interesting</a>), DBSCAN does have its flaws too. In rare cases, border points can flip between clusters, depending on the order by which the data is processed, meaning different executions can return different outputs. Like all clustering techniques discussed in this tutorial, DBSCAN suffers from the <a href="https://en.wikipedia.org/wiki/Curse_of_dimensionality">curse of dimensionality</a>- distance functions become less meaningful in higher dimensions, as all points are ‘far away’ from each other. For similar reasons, it can be hard to determine the appropriate values of epsilon and minPts (though trial and error will usually suffice in 2 dimensions- see below GIF).</p>
<div style="text-align:center">
<p><img src="/images/DBSCAN_search.gif" alt="DBSCAN good DBSCAN bad" /></p>
</div>
<p>But these concerns are either minor or not unique to DBSCAN. A much bigger issue arises if the clusters exhibit varying density. In such cases, it may be impossible to find a decent epsilon value, as one single value can’t perform well on each cluster. This is where <a href="https://en.wikipedia.org/wiki/OPTICS_algorithm">OPTICS</a> (Ordering points to identify the clustering structure) would come in. Unfortunately, OPTICS isn’t currently available in Scikit learn, <a href="https://github.com/scikit-learn/scikit-learn/pull/1984">though there is a nearly 4 year old (active!) pull request open on github</a>. There’s also an extension of DBSCAN called <a href="http://hdbscan.readthedocs.io/en/latest/how_hdbscan_works.html">HDBSCAN</a> (where the ‘H’ stands for Hierarchical, as it incorporates HC). <a href="http://hdbscan.readthedocs.io/en/latest/comparing_clustering_algorithms.html">It overcomes some of DBSCAN traditional faults</a>. However, it’s also currently not included in scikit (though there is an <a href="https://github.com/scikit-learn-contrib/hdbscan">extensively documented python package on github</a>). I might discuss these algorithms in a future blog post.</p>
<h1 id="summary">Summary</h1>
<p>You may be wondering which clustering algorithm is the best. Well, the nature of the data will answer that question. For example, a large dataset could preclude computationally intensive algorithms (e.g hierarchical clustering or affinity propagation). Is anything known about the underlying structure (e.g. globular versus non-globular)? Are you looking for a specific number of clusters? Do you need to illustrate your work with a GIF (I’m looking at you, Affinity Propagation)? So, unfortunately, you need to have various algorithms in your toolbox, ready to deploy as the circumstances dicate (or you could just use k-means for everything).</p>
<p>Hopefully, you enjoyed this tutorial on clustering. I intend to do a few more follow up posts (e.g. how to find the optimal number of clusters). Please get in touch if you have any questions or GIF requests!</p>
Tue, 09 May 2017 00:00:00 +0000
https://dashee87.github.io/data%20science/general/Clustering-with-Scikit-with-GIFs/
https://dashee87.github.io/data%20science/general/Clustering-with-Scikit-with-GIFs/Engineering Data Engineers
<p><a href="https://dashee87.github.io/data%20science/data-scientists-vs-data-analysts-part-1/">Part 1</a> and <a href="https://dashee87.github.io/data%20science/data-scientists-vs-data-analysts-part-2/">Part 2</a> both compared data scientists to data analysts. But I’ve been neglecting the unsung heroes of the data world: data engineers. I’m not too familiar with the life of a data engineer. I imagine there’s some overlap with data scientists (Python, Hadoop, etc), but with a stronger emphasis on data infastructure (Spark, AWS, etc.). Coming from a position of complete ignorance, let’s see if we can use NLP to identify the skills that are specific to data engineers. As always, <a href="https://github.com/dashee87/blogScripts/tree/master/R">the full code can be found on github</a>.</p>
<h3 id="data-collection">Data Collection</h3>
<p>Similar to <a href="https://dashee87.github.io/data%20science/data-scientists-vs-data-analysts-part-1/">Part 1</a>, we’ll extract all data engineer, data scientist and data analyst jobs in London from the <a href="https://github.com/dashee87/jobbR">Indeed API</a> and then filter out all junior/senior positions and plot the advertised salaries for each job type.</p>
<div class="language-r highlighter-rouge"><pre class="highlight"><code><span class="c1">## if you haven't already installed jobbR
# devtools::install_github("dashee87/jobbR")
</span><span class="w">
</span><span class="c1">## loading the packages we'll need
</span><span class="n">require</span><span class="p">(</span><span class="n">jobbR</span><span class="p">)</span><span class="w"> </span><span class="c1"># searching indeed API
</span><span class="n">require</span><span class="p">(</span><span class="n">dplyr</span><span class="p">)</span><span class="w"> </span><span class="c1"># data frame filtering/manipulation
</span><span class="n">require</span><span class="p">(</span><span class="n">rvest</span><span class="p">)</span><span class="w"> </span><span class="c1"># web scraping
</span><span class="n">require</span><span class="p">(</span><span class="n">stringr</span><span class="p">)</span><span class="w"> </span><span class="c1"># counting patterns within job descriptions
</span><span class="n">require</span><span class="p">(</span><span class="n">plotly</span><span class="p">)</span><span class="w"> </span><span class="c1"># interactive plots
</span><span class="n">require</span><span class="p">(</span><span class="n">ggplot2</span><span class="p">)</span><span class="w"> </span><span class="c1"># vanilla plots
</span><span class="n">require</span><span class="p">(</span><span class="n">tm</span><span class="p">)</span><span class="w"> </span><span class="c1"># text mining
</span></code></pre>
</div>
<div class="highlighter-rouge"><pre class="highlight"><code>## job_type num_jobs
## 1 Data Scientist 210
## 2 Data Analyst 158
## 3 Data Engineer 103
</code></pre>
</div>
<div style="text-align:center">
<p><img src="https://dashee87.github.io/images/salary-data-analyst-scientist-engineer.png" alt="Data Scientist Data Analyst Data Engineer Salary" /></p>
</div>
<p>The first thing to note is there are about half as many data engineers posts as there are data scientist posts. Data engineers appear to be paid more than data scientists (though the former is a small sample), with the lowly data analyst bringing up the rear. We’ll now turn our focus to the job description. Repeating the work in <a href="https://dashee87.github.io/data%20science/data-scientists-vs-data-analysts-part-2/">Part 2</a>, we’ll plot the proportion of job descriptions that contain specific predefined skills.</p>
<iframe src="https://plot.ly/~dashee/21/data_analyst_scientist_engineer.embed?link=false" width="100%" height="550" frameborder="no" scrolling="no"></iframe>
<p>Apologies for small text on the x-axis, click <a href="https://plot.ly/~dashee/23.embed?link=false&modebar=false">here</a> for a better version.</p>
<h3 id="tf-idf">tf-idf</h3>
<p>In this post, we’ll attempt to isolate the skills that are more strongly associated with data engineers than data scientists/analysts. We want words that feature frequently in data engineer job descriptions, but rarely with other job types (called <a href="http://nlp.stanford.edu/IR-book/html/htmledition/tf-idf-weighting-1.html">term frequency-inverse document frequency</a>, or <strong>tf-idf</strong> for short).</p>
<p>Firstly, we’ll scrape the job descriptions. I’ve added a few <code class="highlighter-rouge">gsub</code> commands to filter out unwanted punctuation features (e.g. bullet points), which may not be detected by the filters within the <a href="https://cran.r-project.org/web/packages/tm/tm.pdf">tm</a> package.</p>
<div class="language-r highlighter-rouge"><pre class="highlight"><code><span class="c1"># scrape job description webpages
</span><span class="n">ds_job_descripts</span><span class="w"> </span><span class="o"><-</span><span class="w"> </span><span class="n">unlist</span><span class="p">(</span><span class="n">lapply</span><span class="p">(</span><span class="n">dataScientists</span><span class="o">$</span><span class="n">results.url</span><span class="p">,</span><span class="w">
</span><span class="k">function</span><span class="p">(</span><span class="n">x</span><span class="p">){</span><span class="n">read_html</span><span class="p">(</span><span class="n">x</span><span class="p">)</span><span class="w"> </span><span class="o">%>%</span><span class="w">
</span><span class="n">html_nodes</span><span class="p">(</span><span class="s2">"#job_summary"</span><span class="p">)</span><span class="w"> </span><span class="o">%>%</span><span class="w">
</span><span class="n">html_text</span><span class="p">()</span><span class="w"> </span><span class="o">%>%</span><span class="w"> </span><span class="n">tolower</span><span class="p">()</span><span class="w"> </span><span class="o">%>%</span><span class="w">
</span><span class="n">gsub</span><span class="p">(</span><span class="s2">"\n|/"</span><span class="p">,</span><span class="s2">" "</span><span class="p">,</span><span class="n">.</span><span class="p">)</span><span class="w"> </span><span class="o">%>%</span><span class="w">
</span><span class="n">gsub</span><span class="p">(</span><span class="s2">"'|'"</span><span class="p">,</span><span class="s2">""</span><span class="p">,</span><span class="n">.</span><span class="p">)</span><span class="w"> </span><span class="o">%>%</span><span class="w">
</span><span class="n">gsub</span><span class="p">(</span><span class="s2">"[^[:alnum:]///' ]"</span><span class="p">,</span><span class="w"> </span><span class="s2">""</span><span class="p">,</span><span class="w"> </span><span class="n">.</span><span class="p">)}))</span><span class="w">
</span><span class="n">da_job_descripts</span><span class="w"> </span><span class="o"><-</span><span class="w"> </span><span class="n">unlist</span><span class="p">(</span><span class="n">lapply</span><span class="p">(</span><span class="n">dataAnalysts</span><span class="o">$</span><span class="n">results.url</span><span class="p">,</span><span class="w">
</span><span class="k">function</span><span class="p">(</span><span class="n">x</span><span class="p">){</span><span class="n">read_html</span><span class="p">(</span><span class="n">x</span><span class="p">)</span><span class="w"> </span><span class="o">%>%</span><span class="w">
</span><span class="n">html_nodes</span><span class="p">(</span><span class="s2">"#job_summary"</span><span class="p">)</span><span class="w"> </span><span class="o">%>%</span><span class="w">
</span><span class="n">html_text</span><span class="p">()</span><span class="w"> </span><span class="o">%>%</span><span class="w"> </span><span class="n">tolower</span><span class="p">()</span><span class="o">%>%</span><span class="w">
</span><span class="n">gsub</span><span class="p">(</span><span class="s2">"\n|/"</span><span class="p">,</span><span class="s2">" "</span><span class="p">,</span><span class="n">.</span><span class="p">)</span><span class="w"> </span><span class="o">%>%</span><span class="w">
</span><span class="n">gsub</span><span class="p">(</span><span class="s2">"'|'"</span><span class="p">,</span><span class="s2">""</span><span class="p">,</span><span class="n">.</span><span class="p">)</span><span class="w"> </span><span class="o">%>%</span><span class="w">
</span><span class="n">gsub</span><span class="p">(</span><span class="s2">"[^[:alnum:]///' ]"</span><span class="p">,</span><span class="w"> </span><span class="s2">""</span><span class="p">,</span><span class="w"> </span><span class="n">.</span><span class="p">)}))</span><span class="w">
</span><span class="n">de_job_descripts</span><span class="w"> </span><span class="o"><-</span><span class="w"> </span><span class="n">unlist</span><span class="p">(</span><span class="n">lapply</span><span class="p">(</span><span class="n">dataEngineers</span><span class="o">$</span><span class="n">results.url</span><span class="p">,</span><span class="w">
</span><span class="k">function</span><span class="p">(</span><span class="n">x</span><span class="p">){</span><span class="n">read_html</span><span class="p">(</span><span class="n">x</span><span class="p">)</span><span class="w"> </span><span class="o">%>%</span><span class="w">
</span><span class="n">html_nodes</span><span class="p">(</span><span class="s2">"#job_summary"</span><span class="p">)</span><span class="w"> </span><span class="o">%>%</span><span class="w">
</span><span class="n">html_text</span><span class="p">()</span><span class="w"> </span><span class="o">%>%</span><span class="w"> </span><span class="n">tolower</span><span class="p">()</span><span class="w"> </span><span class="o">%>%</span><span class="w">
</span><span class="n">gsub</span><span class="p">(</span><span class="s2">"\n|/"</span><span class="p">,</span><span class="s2">" "</span><span class="p">,</span><span class="n">.</span><span class="p">)</span><span class="w"> </span><span class="o">%>%</span><span class="w">
</span><span class="n">gsub</span><span class="p">(</span><span class="s2">"'|'"</span><span class="p">,</span><span class="s2">""</span><span class="p">,</span><span class="n">.</span><span class="p">)</span><span class="w"> </span><span class="o">%>%</span><span class="w">
</span><span class="n">gsub</span><span class="p">(</span><span class="s2">"[^[:alnum:]///' ]"</span><span class="p">,</span><span class="w"> </span><span class="s2">""</span><span class="p">,</span><span class="w"> </span><span class="n">.</span><span class="p">)}))</span><span class="w">
</span></code></pre>
</div>
<p>Our task consists of two parts:</p>
<ol>
<li>Idenitfy words that commonly occur in data engineer job descriptions</li>
<li>Identify words that commonly occur in data engineer/scientist/analyst job descriptions.</li>
</ol>
<p>Words that appear highly in the first group but lowly within the second represent skills and themes specific to data engineers. To quantify word frequency, we must convert the job description vectors into a text corpus (large structured set of texts). We remove common words (called stop words) that provide little informative power (e.g. ‘and’, ‘the’, ‘are’). We’ll actually build two seperate corpuses: one for the data engineer jobs descriptions alone (to calculate <code class="highlighter-rouge">tf</code>) and another for all of the job descriptions (to calculate <code class="highlighter-rouge">idf</code>)).</p>
<div class="language-r highlighter-rouge"><pre class="highlight"><code><span class="w"> </span><span class="n">de_corpus</span><span class="w"> </span><span class="o"><-</span><span class="w"> </span><span class="n">Corpus</span><span class="p">(</span><span class="n">VectorSource</span><span class="p">(</span><span class="n">de_job_descripts</span><span class="p">))</span><span class="w"> </span><span class="o">%>%</span><span class="w">
</span><span class="n">tm_map</span><span class="p">(</span><span class="k">function</span><span class="p">(</span><span class="n">x</span><span class="p">){</span><span class="w">
</span><span class="n">removePunctuation</span><span class="p">(</span><span class="n">x</span><span class="p">,</span><span class="w"> </span><span class="n">preserve_intra_word_dashes</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">TRUE</span><span class="p">)})</span><span class="w"> </span><span class="o">%>%</span><span class="w">
</span><span class="n">tm_map</span><span class="p">(</span><span class="n">stripWhitespace</span><span class="p">)</span><span class="w"> </span><span class="o">%>%</span><span class="w"> </span><span class="n">tm_map</span><span class="p">(</span><span class="n">removeWords</span><span class="p">,</span><span class="n">stopwords</span><span class="p">(</span><span class="s2">"english"</span><span class="p">))</span><span class="w"> </span><span class="o">%>%</span><span class="w">
</span><span class="n">tm_map</span><span class="p">(</span><span class="n">PlainTextDocument</span><span class="p">)</span><span class="w">
</span><span class="n">all_corpus</span><span class="w"> </span><span class="o"><-</span><span class="w"> </span><span class="n">Corpus</span><span class="p">(</span><span class="n">VectorSource</span><span class="p">(</span><span class="nf">c</span><span class="p">(</span><span class="n">de_job_descripts</span><span class="p">,</span><span class="w">
</span><span class="n">da_job_descripts</span><span class="p">,</span><span class="n">ds_job_descripts</span><span class="p">)))</span><span class="w"> </span><span class="o">%>%</span><span class="w">
</span><span class="n">tm_map</span><span class="p">(</span><span class="k">function</span><span class="p">(</span><span class="n">x</span><span class="p">){</span><span class="w">
</span><span class="n">removePunctuation</span><span class="p">(</span><span class="n">x</span><span class="p">,</span><span class="n">preserve_intra_word_dashes</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">TRUE</span><span class="p">)})</span><span class="w"> </span><span class="o">%>%</span><span class="w">
</span><span class="n">tm_map</span><span class="p">(</span><span class="n">stripWhitespace</span><span class="p">)</span><span class="w"> </span><span class="o">%>%</span><span class="w"> </span><span class="n">tm_map</span><span class="p">(</span><span class="n">removeWords</span><span class="p">,</span><span class="n">stopwords</span><span class="p">(</span><span class="s2">"english"</span><span class="p">))</span><span class="w"> </span><span class="o">%>%</span><span class="w">
</span><span class="n">tm_map</span><span class="p">(</span><span class="n">PlainTextDocument</span><span class="p">)</span><span class="w">
</span></code></pre>
</div>
<p>Remember that we’re interested in the frequency of each term within the corpuses. We can easily convert the corpuses to <a href="https://en.wikipedia.org/wiki/Document-term_matrix">term document matrices</a>, where each row corresponds to an individual term and each column refers to a different job description and the value is simply the number of the times the term appeared in that job description (which is then converted to a binary).</p>
<div class="language-r highlighter-rouge"><pre class="highlight"><code><span class="n">de_tdm</span><span class="w"> </span><span class="o"><-</span><span class="w"> </span><span class="n">TermDocumentMatrix</span><span class="p">(</span><span class="n">de_corpus</span><span class="p">)</span><span class="w">
</span><span class="n">all_tdm</span><span class="w"> </span><span class="o"><-</span><span class="w"> </span><span class="n">TermDocumentMatrix</span><span class="p">(</span><span class="n">all_corpus</span><span class="p">)</span><span class="w">
</span><span class="n">de_df</span><span class="w"> </span><span class="o"><-</span><span class="w"> </span><span class="n">data.frame</span><span class="p">(</span><span class="n">word</span><span class="o">=</span><span class="w"> </span><span class="n">row.names</span><span class="p">(</span><span class="n">de_tdm</span><span class="p">),</span><span class="w">
</span><span class="n">tf</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">rowSums</span><span class="p">(</span><span class="n">ifelse</span><span class="p">(</span><span class="n">as.matrix</span><span class="p">(</span><span class="n">de_tdm</span><span class="p">)</span><span class="o">></span><span class="m">0</span><span class="p">,</span><span class="m">1</span><span class="p">,</span><span class="m">0</span><span class="p">)),</span><span class="w">
</span><span class="n">row.names</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">NULL</span><span class="p">,</span><span class="w"> </span><span class="n">stringsAsFactors</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">FALSE</span><span class="p">)</span><span class="w">
</span><span class="n">all_df</span><span class="w"> </span><span class="o"><-</span><span class="w"> </span><span class="n">data.frame</span><span class="p">(</span><span class="n">word</span><span class="o">=</span><span class="w"> </span><span class="n">row.names</span><span class="p">(</span><span class="n">all_tdm</span><span class="p">),</span><span class="w">
</span><span class="n">tf</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">rowSums</span><span class="p">(</span><span class="n">ifelse</span><span class="p">(</span><span class="n">as.matrix</span><span class="p">(</span><span class="n">all_tdm</span><span class="p">)</span><span class="o">></span><span class="m">0</span><span class="p">,</span><span class="m">1</span><span class="p">,</span><span class="m">0</span><span class="p">)),</span><span class="w">
</span><span class="n">row.names</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">NULL</span><span class="p">,</span><span class="w"> </span><span class="n">stringsAsFactors</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">FALSE</span><span class="p">)</span><span class="w">
</span></code></pre>
</div>
<div class="language-r highlighter-rouge"><pre class="highlight"><code><span class="c1"># data engineer common words
</span><span class="n">de_df</span><span class="w"> </span><span class="o">%>%</span><span class="w"> </span><span class="n">arrange</span><span class="p">(</span><span class="o">-</span><span class="n">tf</span><span class="p">)</span><span class="w"> </span><span class="o">%>%</span><span class="w"> </span><span class="n">head</span><span class="w">
</span></code></pre>
</div>
<div class="highlighter-rouge"><pre class="highlight"><code>## word tf
## 1 data 103
## 2 experience 90
## 3 engineer 85
## 4 will 83
## 5 working 80
## 6 team 71
</code></pre>
</div>
<div class="language-r highlighter-rouge"><pre class="highlight"><code><span class="c1"># all jobs common words
</span><span class="n">all_df</span><span class="w"> </span><span class="o">%>%</span><span class="w"> </span><span class="n">arrange</span><span class="p">(</span><span class="o">-</span><span class="n">tf</span><span class="p">)</span><span class="w"> </span><span class="o">%>%</span><span class="w"> </span><span class="n">head</span><span class="w">
</span></code></pre>
</div>
<div class="highlighter-rouge"><pre class="highlight"><code>## word tf
## 1 data 469
## 2 experience 412
## 3 will 386
## 4 skills 346
## 5 team 342
## 6 work 314
</code></pre>
</div>
<p>Taking the term frequency (<code class="highlighter-rouge">tf</code>) alone, unsurprisingly, we see that ‘data’ and ‘engineer’ are two of the three most common words in data engineer job descriptions. The remaining terms are more generic, illustrated by their high ranking among all jobs. This demonstrates the importance of the inverse document frequency (<code class="highlighter-rouge">idf</code>) component. It will penalise terms such as ‘skills’, ‘team’ and ‘work’, as they’re not strongly associated with data engineers exclusively. We’ll normalise the <code class="highlighter-rouge">tf</code> score (divide by the max) and calculate the <code class="highlighter-rouge">idf</code>. The <code class="highlighter-rouge">tf_idf</code> is simply the product of the <code class="highlighter-rouge">tf</code> and <code class="highlighter-rouge">idf</code>.</p>
<div class="language-r highlighter-rouge"><pre class="highlight"><code><span class="n">de_df</span><span class="o">$</span><span class="n">tf</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">de_df</span><span class="o">$</span><span class="n">tf</span><span class="o">/</span><span class="nf">max</span><span class="p">(</span><span class="n">de_df</span><span class="o">$</span><span class="n">tf</span><span class="p">)</span><span class="w">
</span><span class="n">de_idf</span><span class="w"> </span><span class="o"><-</span><span class="w"> </span><span class="n">data.frame</span><span class="p">(</span><span class="n">word</span><span class="o">=</span><span class="n">row.names</span><span class="p">(</span><span class="n">all_tdm</span><span class="p">),</span><span class="w">
</span><span class="n">idf</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">log2</span><span class="p">(</span><span class="nf">length</span><span class="p">(</span><span class="n">all_corpus</span><span class="p">)</span><span class="o">/</span><span class="n">rowSums</span><span class="p">(</span><span class="w">
</span><span class="n">ifelse</span><span class="p">(</span><span class="n">as.matrix</span><span class="p">(</span><span class="n">all_tdm</span><span class="p">)</span><span class="o">></span><span class="m">0</span><span class="p">,</span><span class="m">1</span><span class="p">,</span><span class="m">0</span><span class="p">))),</span><span class="w">
</span><span class="n">row.names</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">NULL</span><span class="p">,</span><span class="w"> </span><span class="n">stringsAsFactors</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">FALSE</span><span class="p">)</span><span class="w">
</span><span class="n">de_df</span><span class="o">$</span><span class="n">tf_idf</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">de_df</span><span class="o">$</span><span class="n">tf</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">de_idf</span><span class="p">[</span><span class="n">match</span><span class="p">(</span><span class="n">de_df</span><span class="o">$</span><span class="n">word</span><span class="p">,</span><span class="n">de_idf</span><span class="o">$</span><span class="n">word</span><span class="p">),]</span><span class="o">$</span><span class="n">idf</span><span class="w">
</span><span class="n">knitr</span><span class="o">::</span><span class="n">kable</span><span class="p">(</span><span class="n">de_df</span><span class="w"> </span><span class="o">%>%</span><span class="w"> </span><span class="n">inner_join</span><span class="p">(</span><span class="n">de_idf</span><span class="p">,</span><span class="n">by</span><span class="o">=</span><span class="nf">c</span><span class="p">(</span><span class="s2">"word"</span><span class="o">=</span><span class="s2">"word"</span><span class="p">))</span><span class="w"> </span><span class="o">%>%</span><span class="w">
</span><span class="n">arrange</span><span class="p">(</span><span class="o">-</span><span class="n">tf_idf</span><span class="p">)</span><span class="w"> </span><span class="o">%>%</span><span class="w"> </span><span class="n">mutate</span><span class="p">(</span><span class="n">rank</span><span class="o">=</span><span class="n">row_number</span><span class="p">())</span><span class="w"> </span><span class="o">%>%</span><span class="w">
</span><span class="n">select</span><span class="p">(</span><span class="n">rank</span><span class="p">,</span><span class="n">word</span><span class="p">,</span><span class="n">tf</span><span class="p">,</span><span class="n">idf</span><span class="p">,</span><span class="n">tf_idf</span><span class="p">)</span><span class="w"> </span><span class="o">%>%</span><span class="w"> </span><span class="n">head</span><span class="p">(</span><span class="m">40</span><span class="p">),</span><span class="w"> </span><span class="n">digits</span><span class="o">=</span><span class="m">3</span><span class="p">)</span><span class="w">
</span></code></pre>
</div>
<table>
<thead>
<tr>
<th style="text-align: right">rank</th>
<th style="text-align: left">word</th>
<th style="text-align: right">tf</th>
<th style="text-align: right">idf</th>
<th style="text-align: right">tf_idf</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: right">1</td>
<td style="text-align: left">engineer</td>
<td style="text-align: right">0.825</td>
<td style="text-align: right">2.372</td>
<td style="text-align: right">1.957</td>
</tr>
<tr>
<td style="text-align: right">2</td>
<td style="text-align: left">etl</td>
<td style="text-align: right">0.330</td>
<td style="text-align: right">3.388</td>
<td style="text-align: right">1.118</td>
</tr>
<tr>
<td style="text-align: right">3</td>
<td style="text-align: left">engineers</td>
<td style="text-align: right">0.330</td>
<td style="text-align: right">3.236</td>
<td style="text-align: right">1.068</td>
</tr>
<tr>
<td style="text-align: right">4</td>
<td style="text-align: left">spark</td>
<td style="text-align: right">0.544</td>
<td style="text-align: right">1.949</td>
<td style="text-align: right">1.060</td>
</tr>
<tr>
<td style="text-align: right">5</td>
<td style="text-align: left">java</td>
<td style="text-align: right">0.379</td>
<td style="text-align: right">2.690</td>
<td style="text-align: right">1.018</td>
</tr>
<tr>
<td style="text-align: right">6</td>
<td style="text-align: left">aws</td>
<td style="text-align: right">0.311</td>
<td style="text-align: right">3.265</td>
<td style="text-align: right">1.014</td>
</tr>
<tr>
<td style="text-align: right">7</td>
<td style="text-align: left">pipelines</td>
<td style="text-align: right">0.262</td>
<td style="text-align: right">3.750</td>
<td style="text-align: right">0.983</td>
</tr>
<tr>
<td style="text-align: right">8</td>
<td style="text-align: left">engineering</td>
<td style="text-align: right">0.485</td>
<td style="text-align: right">1.997</td>
<td style="text-align: right">0.969</td>
</tr>
<tr>
<td style="text-align: right">9</td>
<td style="text-align: left">hadoop</td>
<td style="text-align: right">0.495</td>
<td style="text-align: right">1.925</td>
<td style="text-align: right">0.953</td>
</tr>
<tr>
<td style="text-align: right">10</td>
<td style="text-align: left">scala</td>
<td style="text-align: right">0.330</td>
<td style="text-align: right">2.835</td>
<td style="text-align: right">0.936</td>
</tr>
<tr>
<td style="text-align: right">11</td>
<td style="text-align: left">platform</td>
<td style="text-align: right">0.359</td>
<td style="text-align: right">2.576</td>
<td style="text-align: right">0.925</td>
</tr>
<tr>
<td style="text-align: right">12</td>
<td style="text-align: left">design</td>
<td style="text-align: right">0.515</td>
<td style="text-align: right">1.782</td>
<td style="text-align: right">0.917</td>
</tr>
<tr>
<td style="text-align: right">13</td>
<td style="text-align: left">architecture</td>
<td style="text-align: right">0.252</td>
<td style="text-align: right">3.558</td>
<td style="text-align: right">0.898</td>
</tr>
<tr>
<td style="text-align: right">14</td>
<td style="text-align: left">technologies</td>
<td style="text-align: right">0.427</td>
<td style="text-align: right">2.034</td>
<td style="text-align: right">0.869</td>
</tr>
<tr>
<td style="text-align: right">15</td>
<td style="text-align: left">big</td>
<td style="text-align: right">0.534</td>
<td style="text-align: right">1.603</td>
<td style="text-align: right">0.856</td>
</tr>
<tr>
<td style="text-align: right">16</td>
<td style="text-align: left">software</td>
<td style="text-align: right">0.369</td>
<td style="text-align: right">2.295</td>
<td style="text-align: right">0.847</td>
</tr>
<tr>
<td style="text-align: right">17</td>
<td style="text-align: left">linux</td>
<td style="text-align: right">0.204</td>
<td style="text-align: right">4.022</td>
<td style="text-align: right">0.820</td>
</tr>
<tr>
<td style="text-align: right">18</td>
<td style="text-align: left">infrastructure</td>
<td style="text-align: right">0.223</td>
<td style="text-align: right">3.632</td>
<td style="text-align: right">0.811</td>
</tr>
<tr>
<td style="text-align: right">19</td>
<td style="text-align: left">redshift</td>
<td style="text-align: right">0.194</td>
<td style="text-align: right">4.125</td>
<td style="text-align: right">0.801</td>
</tr>
<tr>
<td style="text-align: right">20</td>
<td style="text-align: left">systems</td>
<td style="text-align: right">0.437</td>
<td style="text-align: right">1.824</td>
<td style="text-align: right">0.797</td>
</tr>
<tr>
<td style="text-align: right">21</td>
<td style="text-align: left">technical</td>
<td style="text-align: right">0.437</td>
<td style="text-align: right">1.792</td>
<td style="text-align: right">0.783</td>
</tr>
<tr>
<td style="text-align: right">22</td>
<td style="text-align: left">nosql</td>
<td style="text-align: right">0.243</td>
<td style="text-align: right">3.125</td>
<td style="text-align: right">0.758</td>
</tr>
<tr>
<td style="text-align: right">23</td>
<td style="text-align: left">hands</td>
<td style="text-align: right">0.204</td>
<td style="text-align: right">3.710</td>
<td style="text-align: right">0.756</td>
</tr>
<tr>
<td style="text-align: right">24</td>
<td style="text-align: left">years</td>
<td style="text-align: right">0.388</td>
<td style="text-align: right">1.937</td>
<td style="text-align: right">0.752</td>
</tr>
<tr>
<td style="text-align: right">25</td>
<td style="text-align: left">web</td>
<td style="text-align: right">0.262</td>
<td style="text-align: right">2.835</td>
<td style="text-align: right">0.743</td>
</tr>
<tr>
<td style="text-align: right">26</td>
<td style="text-align: left">kafka</td>
<td style="text-align: right">0.165</td>
<td style="text-align: right">4.487</td>
<td style="text-align: right">0.741</td>
</tr>
<tr>
<td style="text-align: right">27</td>
<td style="text-align: left">cloud</td>
<td style="text-align: right">0.204</td>
<td style="text-align: right">3.632</td>
<td style="text-align: right">0.740</td>
</tr>
<tr>
<td style="text-align: right">28</td>
<td style="text-align: left">applications</td>
<td style="text-align: right">0.291</td>
<td style="text-align: right">2.487</td>
<td style="text-align: right">0.724</td>
</tr>
<tr>
<td style="text-align: right">29</td>
<td style="text-align: left">building</td>
<td style="text-align: right">0.340</td>
<td style="text-align: right">2.111</td>
<td style="text-align: right">0.717</td>
</tr>
<tr>
<td style="text-align: right">30</td>
<td style="text-align: left">environments</td>
<td style="text-align: right">0.194</td>
<td style="text-align: right">3.632</td>
<td style="text-align: right">0.705</td>
</tr>
<tr>
<td style="text-align: right">31</td>
<td style="text-align: left">databases</td>
<td style="text-align: right">0.262</td>
<td style="text-align: right">2.690</td>
<td style="text-align: right">0.705</td>
</tr>
<tr>
<td style="text-align: right">32</td>
<td style="text-align: left">date</td>
<td style="text-align: right">0.233</td>
<td style="text-align: right">2.973</td>
<td style="text-align: right">0.693</td>
</tr>
<tr>
<td style="text-align: right">33</td>
<td style="text-align: left">languages</td>
<td style="text-align: right">0.262</td>
<td style="text-align: right">2.632</td>
<td style="text-align: right">0.690</td>
</tr>
<tr>
<td style="text-align: right">34</td>
<td style="text-align: left">mapreduce</td>
<td style="text-align: right">0.165</td>
<td style="text-align: right">4.179</td>
<td style="text-align: right">0.690</td>
</tr>
<tr>
<td style="text-align: right">35</td>
<td style="text-align: left">pig</td>
<td style="text-align: right">0.175</td>
<td style="text-align: right">3.925</td>
<td style="text-align: right">0.686</td>
</tr>
<tr>
<td style="text-align: right">36</td>
<td style="text-align: left">hive</td>
<td style="text-align: right">0.252</td>
<td style="text-align: right">2.710</td>
<td style="text-align: right">0.684</td>
</tr>
<tr>
<td style="text-align: right">37</td>
<td style="text-align: left">scripting</td>
<td style="text-align: right">0.194</td>
<td style="text-align: right">3.522</td>
<td style="text-align: right">0.684</td>
</tr>
<tr>
<td style="text-align: right">38</td>
<td style="text-align: left">production</td>
<td style="text-align: right">0.214</td>
<td style="text-align: right">3.152</td>
<td style="text-align: right">0.673</td>
</tr>
<tr>
<td style="text-align: right">39</td>
<td style="text-align: left">processes</td>
<td style="text-align: right">0.262</td>
<td style="text-align: right">2.487</td>
<td style="text-align: right">0.652</td>
</tr>
<tr>
<td style="text-align: right">40</td>
<td style="text-align: left">build</td>
<td style="text-align: right">0.408</td>
<td style="text-align: right">1.576</td>
<td style="text-align: right">0.643</td>
</tr>
</tbody>
</table>
<p>It’s a good sanity check that ‘engineer’ returned the highest <code class="highlighter-rouge">tf_idf</code> score, as we’d expect that to be relatively specific to data engineer job descriptions. Also, it’s reassuring that the generic terms that previously scored well (e.g. ‘data’, ‘team’, ‘will’) are not in the table. The table provides some interesting insights. Take the example of ‘spark’: it has a relatively high <code class="highlighter-rouge">tf</code>, but is penalised by a low idf (spark is also a key skill among data scientists). ‘etl’, on the other hand, has a considerably lower <code class="highlighter-rouge">tf</code>, but outranks spark due to its higher <code class="highlighter-rouge">idf</code> (etl is a term more uniquely associated with data engineers).</p>
<p>It’s important to note that there is no strict defintion of either <code class="highlighter-rouge">tf</code> or <code class="highlighter-rouge">idf</code>. If you wish, you can attach more importance to either by applying a particular variant (<a href="https://en.wikipedia.org/wiki/Tf%E2%80%93idf#Definition">a few examples here</a>). I suppose it depends whether you think terms like ‘spark’ (high <code class="highlighter-rouge">tf</code>; low <code class="highlighter-rouge">idf</code>) should rank more highly than terms like ‘etl’ (low <code class="highlighter-rouge">tf</code>; high <code class="highlighter-rouge">idf</code>).</p>
<h3 id="summary">Summary</h3>
<p>After some exploratory analysis, we used <strong>term frequency-inverse document frequency</strong> to idenitfy words and skills that are uniquely associated with data engineers. Think of the output as potential conversation starters with your engineer counterparts. “So… how about that etl?”</p>
Fri, 23 Dec 2016 00:00:00 +0000
https://dashee87.github.io/data%20science/r/Engineering-Data-Engineers/
https://dashee87.github.io/data%20science/r/Engineering-Data-Engineers/A Road Incident Model Analysis<p>As my father once told me: ‘If you don’t get the job, at least get a blog post’. This post was motivated by a task I was given for a data scientist job, which involved predicting road accidents in the UK. I won’t focus on the specific task (that would encourage cheating), but instead will explore the rich dataset and use ARIMA to predict the number of road accidents in 2016 (as always, <a href="https://github.com/dashee87/blogScripts/blob/master/R/2016-12-18-A-Road-Incident-Model-Analysis.R">the full code is posted on github</a>).</p>
<h3 id="getting-the-data">Getting the Data</h3>
<p>If an injury occurs in a road accident that was reported to the police, they produce a detailed report (age/sex of casualties, vehicle/road types, etc). These reports, going back to 2005, are collated and compiled within multiple csvs, which are freely available online (<a href="https://data.gov.uk/dataset/road-accidents-safety-data">here</a>). They are well formatted: missing data is marked; tidy columns with relatively intuitive names. The csvs are quite big and combined in zip files; you’ll need to download them to your computer and then extract the csvs. Note that the 2015 must be downloaded separately, while the 2005-2014 data is available under the 2014 tab. Okay, so let’s get started.</p>
<div class="language-r highlighter-rouge"><pre class="highlight"><code><span class="c1"># loading the packages we'll need
</span><span class="n">library</span><span class="p">(</span><span class="n">dplyr</span><span class="p">)</span><span class="w"> </span><span class="c1"># data manipulation/filtering
</span><span class="n">library</span><span class="p">(</span><span class="n">ggplot2</span><span class="p">)</span><span class="w"> </span><span class="c1"># vanilla graphs
</span><span class="n">library</span><span class="p">(</span><span class="n">plotly</span><span class="p">)</span><span class="w"> </span><span class="c1"># interactive graphs
</span><span class="n">library</span><span class="p">(</span><span class="n">lubridate</span><span class="p">)</span><span class="w"> </span><span class="c1"># time manipulation functions
</span><span class="n">library</span><span class="p">(</span><span class="n">zoo</span><span class="p">)</span><span class="w"> </span><span class="c1"># some more time manipulation functions
</span><span class="n">library</span><span class="p">(</span><span class="n">forecast</span><span class="p">)</span><span class="w"> </span><span class="c1"># time series forecasting
</span><span class="n">library</span><span class="p">(</span><span class="n">RCurl</span><span class="p">)</span><span class="w"> </span><span class="c1"># import Dow Jones data
</span><span class="n">library</span><span class="p">(</span><span class="n">tseries</span><span class="p">)</span><span class="w"> </span><span class="c1"># time series statistical analysis
</span><span class="w">
</span><span class="n">options</span><span class="p">(</span><span class="n">stringsAsFactors</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">FALSE</span><span class="p">)</span><span class="w">
</span><span class="c1"># accidents file
</span><span class="n">tot_accs</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">rbind</span><span class="p">(</span><span class="n">read.csv</span><span class="p">(</span><span class="s2">"/Accidents0514.csv"</span><span class="p">)</span><span class="w"> </span><span class="o">%>%</span><span class="w">
</span><span class="n">rename_</span><span class="p">(</span><span class="s2">"Accidents_2015.csv"</span><span class="p">))</span><span class="w"> </span><span class="o">%>%</span><span class="w">
</span><span class="n">mutate</span><span class="p">(</span><span class="n">Date</span><span class="o">=</span><span class="n">as.POSIXct</span><span class="p">(</span><span class="n">Date</span><span class="p">,</span><span class="w"> </span><span class="n">format</span><span class="o">=</span><span class="s2">"%d/%m/%Y"</span><span class="p">))</span><span class="w">
</span><span class="c1"># casualties file
</span><span class="n">tot_cas</span><span class="o">=</span><span class="w"> </span><span class="n">rbind</span><span class="p">(</span><span class="n">read.csv</span><span class="p">(</span><span class="s2">"/Casualties0514.csv"</span><span class="p">)</span><span class="w"> </span><span class="o">%>%</span><span class="w">
</span><span class="n">rename_</span><span class="p">(</span><span class="s2">"Accident_Index"</span><span class="w"> </span><span class="o">=</span><span class="s2">"ï..Accident_Index"</span><span class="p">),</span><span class="w">
</span><span class="n">read.csv</span><span class="p">(</span><span class="s2">"/Casualties_2015.csv"</span><span class="p">)</span><span class="w"> </span><span class="o">%>%</span><span class="w">
</span><span class="n">select</span><span class="p">(</span><span class="o">-</span><span class="n">Casualty_IMD_Decile</span><span class="p">))</span><span class="w">
</span><span class="c1"># vehicles file
</span><span class="n">tot_veh</span><span class="o">=</span><span class="w"> </span><span class="n">rbind</span><span class="p">(</span><span class="n">read.csv</span><span class="p">(</span><span class="s2">"/Vehicles0514.csv"</span><span class="p">)</span><span class="w"> </span><span class="o">%>%</span><span class="w">
</span><span class="n">rename_</span><span class="p">(</span><span class="s2">"Accident_Index"</span><span class="w"> </span><span class="o">=</span><span class="s2">"ï..Accident_Index"</span><span class="p">),</span><span class="w">
</span><span class="n">read.csv</span><span class="p">(</span><span class="s2">"/Vehicles_2015.csv"</span><span class="p">)</span><span class="w"> </span><span class="o">%>%</span><span class="w">
</span><span class="n">select</span><span class="p">(</span><span class="o">-</span><span class="n">Vehicle_IMD_Decile</span><span class="p">))</span><span class="w">
</span></code></pre>
</div>
<p>We now have three datasets: Accidents (time and location of accident, road type, weather conditions, etc); Casualties (age, sex, driver/passenger status, severity, etc); Vehicle (type, engine capacity, etc). We’ll start off with some minor exploration of the data.</p>
<div class="language-r highlighter-rouge"><pre class="highlight"><code><span class="c1"># looking at the structure of the datasets
</span><span class="w"> </span><span class="n">explore_data</span><span class="o">=</span><span class="n">as.data.frame</span><span class="p">(</span><span class="n">t</span><span class="p">(</span><span class="n">sapply</span><span class="p">(</span><span class="nf">list</span><span class="p">(</span><span class="n">tot_accs</span><span class="p">,</span><span class="n">tot_cas</span><span class="p">,</span><span class="n">tot_veh</span><span class="p">),</span><span class="k">function</span><span class="p">(</span><span class="n">x</span><span class="p">){</span><span class="w">
</span><span class="nf">c</span><span class="p">(</span><span class="nf">length</span><span class="p">(</span><span class="n">unique</span><span class="p">(</span><span class="n">x</span><span class="o">$</span><span class="n">Accident_Index</span><span class="p">)),</span><span class="w">
</span><span class="nf">length</span><span class="p">(</span><span class="n">x</span><span class="p">),</span><span class="w">
</span><span class="n">nrow</span><span class="p">(</span><span class="n">x</span><span class="p">))</span><span class="w">
</span><span class="p">})))</span><span class="w">
</span><span class="n">colnames</span><span class="p">(</span><span class="n">explore_data</span><span class="p">)</span><span class="o">=</span><span class="nf">c</span><span class="p">(</span><span class="s2">"# Accidents"</span><span class="p">,</span><span class="w"> </span><span class="s2">"# Columns"</span><span class="p">,</span><span class="s2">"# Rows"</span><span class="p">)</span><span class="w">
</span><span class="n">rownames</span><span class="p">(</span><span class="n">explore_data</span><span class="p">)</span><span class="o">=</span><span class="nf">c</span><span class="p">(</span><span class="s2">"Accidents File"</span><span class="p">,</span><span class="s2">"casualties File"</span><span class="p">,</span><span class="s2">"Vehicles File"</span><span class="p">)</span><span class="w">
</span><span class="n">explore_data</span><span class="w">
</span></code></pre>
</div>
<div class="highlighter-rouge"><pre class="highlight"><code>## # Accidents # Columns # Rows
## Accidents File 1780653 32 1780653
## casualties File 1780653 15 2402909
## Vehicles File 1780653 22 3262270
</code></pre>
</div>
<p>One reassuring feature is that all files have the same number of accidents, which suggests the datasets could be easily joined on the accident number. The accidents file has the most columns, while the vehicles file has the most rows (one row for each vehicle involved in the accident). Let’s continue the exploratory analysis by addressing the question that has long divided mankind: Are men better drivers than women?</p>
<div class="language-r highlighter-rouge"><pre class="highlight"><code><span class="c1"># Drivers in road accidents split by sex
</span><span class="n">tot_veh</span><span class="w"> </span><span class="o">%>%</span><span class="w"> </span><span class="n">group_by</span><span class="p">(</span><span class="n">Sex_of_Driver</span><span class="p">)</span><span class="w"> </span><span class="o">%>%</span><span class="w"> </span><span class="n">summarize</span><span class="p">(</span><span class="n">num_accs</span><span class="o">=</span><span class="n">n</span><span class="p">())</span><span class="w"> </span><span class="o">%>%</span><span class="w">
</span><span class="n">mutate</span><span class="p">(</span><span class="n">Sex_of_Driver</span><span class="o">=</span><span class="nf">c</span><span class="p">(</span><span class="s2">"Data Missing"</span><span class="p">,</span><span class="s2">"Male"</span><span class="p">,</span><span class="s2">"Female"</span><span class="p">,</span><span class="s2">"Unknown"</span><span class="p">))</span><span class="w"> </span><span class="o">%>%</span><span class="w">
</span><span class="n">mutate</span><span class="p">(</span><span class="n">prop</span><span class="o">=</span><span class="n">paste</span><span class="p">(</span><span class="nf">round</span><span class="p">(</span><span class="m">100</span><span class="o">*</span><span class="n">num_accs</span><span class="o">/</span><span class="nf">sum</span><span class="p">(</span><span class="n">num_accs</span><span class="p">),</span><span class="m">2</span><span class="p">),</span><span class="s2">"%"</span><span class="p">))</span><span class="w">
</span></code></pre>
</div>
<div class="highlighter-rouge"><pre class="highlight"><code>## # A tibble: 4 × 3
## Sex_of_Driver num_accs prop
## <chr> <int> <chr>
## 1 Data Missing 52 0 %
## 2 Male 2147401 65.83 %
## 3 Female 924565 28.34 %
## 4 Unknown 190252 5.83 %
</code></pre>
</div>
<p>The data suggests that women are less likely to be drivers in a road accident. I suppose there are two possible explanations for this: women are better drivers or there are significantly less female drivers on the road generally speaking. There is <a href="http://www.ns.umich.edu/new/releases/21035-women-drivers-outnumber-men-but-still-drive-less">some evidence</a> to support the latter theory, but not enough to discount the notion that men are simply worse drivers. Well, worse isn’t really the right word, <a href="http://www.mcmha.org/life-insurance-expensive-men-women/">men tend to take more risks in life</a> and that includes driving.</p>
<p>Having settled one of the most contentious issues around (next up, the Syrian Civil War), let’s look at distribution of road accidents across the week.</p>
<div class="language-r highlighter-rouge"><pre class="highlight"><code><span class="c1"># number of road accidents by day of the week
</span><span class="n">tot_accs</span><span class="w"> </span><span class="o">%>%</span><span class="w"> </span><span class="n">group_by</span><span class="p">(</span><span class="n">Day_of_Week</span><span class="p">)</span><span class="w"> </span><span class="o">%>%</span><span class="w"> </span><span class="n">summarize</span><span class="p">(</span><span class="n">num_accs</span><span class="o">=</span><span class="n">n</span><span class="p">())</span><span class="w"> </span><span class="o">%>%</span><span class="w">
</span><span class="n">mutate</span><span class="p">(</span><span class="n">Day_of_Week</span><span class="o">=</span><span class="nf">c</span><span class="p">(</span><span class="s2">"Sunday"</span><span class="p">,</span><span class="s2">"Monday"</span><span class="p">,</span><span class="s2">"Tuesday"</span><span class="p">,</span><span class="s2">"Wednesday"</span><span class="p">,</span><span class="w">
</span><span class="s2">"Thursday"</span><span class="p">,</span><span class="s2">"Friday"</span><span class="p">,</span><span class="s2">"Saturday"</span><span class="p">))</span><span class="w"> </span><span class="o">%>%</span><span class="w">
</span><span class="n">mutate</span><span class="p">(</span><span class="n">prop</span><span class="o">=</span><span class="n">paste</span><span class="p">(</span><span class="nf">round</span><span class="p">(</span><span class="m">100</span><span class="o">*</span><span class="n">num_accs</span><span class="o">/</span><span class="nf">sum</span><span class="p">(</span><span class="n">num_accs</span><span class="p">),</span><span class="m">2</span><span class="p">),</span><span class="s2">"%"</span><span class="p">))</span><span class="w">
</span></code></pre>
</div>
<div class="highlighter-rouge"><pre class="highlight"><code>## # A tibble: 7 × 3
## Day_of_Week num_accs prop
## <chr> <int> <chr>
## 1 Sunday 195326 10.97 %
## 2 Monday 253270 14.22 %
## 3 Tuesday 266706 14.98 %
## 4 Wednesday 268390 15.07 %
## 5 Thursday 267494 15.02 %
## 6 Friday 291359 16.36 %
## 7 Saturday 238108 13.37 %
</code></pre>
</div>
<p>Perhaps unsurprisingly, the quietest day for road accidents is Sunday, while the greatest number of accidents occurs on Friday. Going a level lower, let’s plot the accident time for each day of the week (note: the code for the plots can be found <a href="https://github.com/dashee87/blogScripts/blob/master/R/2016-12-18-A-Road-Incident-Model-Analysis.R">here</a>).</p>
<iframe src="https://plot.ly/~dashee/13/hourly_accs_0515.embed?link=false" width="100%" height="500" frameborder="no" scrolling="no"></iframe>
<p>There’s a clear distinction between the weekend and weekdays (though Friday is a sort of hybrid). The weekday rush hour peaks are apparent, while the weekend hits its maximum at around midday, with a noticeable increase in the early morning compared to weekdays. Switching gears, let’s turn our attention to the longer term and plot the number of road accidents per month from 2005-2015.</p>
<div class="language-r highlighter-rouge"><pre class="highlight"><code><span class="c1"># just reformatting the days by the yearmonth (e.g. June 2008)
</span><span class="n">yearlymon_data</span><span class="w"> </span><span class="o"><-</span><span class="w"> </span><span class="n">tot_accs</span><span class="w"> </span><span class="o">%>%</span><span class="w"> </span><span class="n">group_by</span><span class="p">(</span><span class="n">as.yearmon</span><span class="p">(</span><span class="n">Date</span><span class="p">,</span><span class="w"> </span><span class="n">format</span><span class="o">=</span><span class="s2">"%d/%m/%Y"</span><span class="p">))</span><span class="w"> </span><span class="o">%>%</span><span class="w">
</span><span class="n">summarize</span><span class="p">(</span><span class="n">num_accs</span><span class="o">=</span><span class="n">n</span><span class="p">())</span><span class="w">
</span><span class="n">colnames</span><span class="p">(</span><span class="n">yearlymon_data</span><span class="p">)[</span><span class="m">1</span><span class="p">]</span><span class="o">=</span><span class="s2">"YearMonth"</span><span class="w">
</span></code></pre>
</div>
<iframe src="https://plot.ly/~dashee/15/monthly_accs_0515.embed?link=false" width="100%" height="500" frameborder="no" scrolling="no"></iframe>
<p>The good news is that the number of accidents has declined significantly since 2005 (and <a href="https://www.google.co.uk/publicdata/explore?ds=d5bncppjof8f9_&met_y=sp_pop_totl&idim=country:GBR:IRL:CAN&hl=en&dl=en">the UK population increased by nearly 10 % in that time period</a>). You might also detect a seasonal behaviour within the numbers. February typically has the least number of accidents (partly owing to it only have 28/29 days I imagine), while November is the worst month for accidents. So the time series appears to be composed of a trend and cyclical/seasonal component. If we include a noise term to account for random monthly variations, then we should be able to decompose this time series. We’ll opt for a multiplicative model (number accidents is the product of its seasonal/trend/noise components) and use <a href="https://www.otexts.org/fpp/6/5">Seasonal and Trend decomposition using Loess (STL)</a> The theory behind time series decomposition is well described <a href="https://www.otexts.org/fpp/6">here</a>.</p>
<div class="language-r highlighter-rouge"><pre class="highlight"><code><span class="c1"># the stl function only takes additive model
# since we want a multiplicative model, we need to first take the log
</span><span class="n">decomp_accs_ts</span><span class="w"> </span><span class="o"><-</span><span class="w"> </span><span class="n">stl</span><span class="p">(</span><span class="n">ts</span><span class="p">(</span><span class="nf">log</span><span class="p">(</span><span class="n">yearlymon_data</span><span class="o">$</span><span class="n">num_accs</span><span class="p">),</span><span class="n">frequency</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="m">12</span><span class="p">,</span><span class="n">start</span><span class="o">=</span><span class="m">2005</span><span class="p">),</span><span class="w">
</span><span class="n">s.window</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"periodic"</span><span class="p">)</span><span class="w">
</span><span class="n">decomp_accs_ts</span><span class="o">$</span><span class="n">time.series</span><span class="w"> </span><span class="o"><-</span><span class="w"> </span><span class="nf">exp</span><span class="p">(</span><span class="n">decomp_accs_ts</span><span class="o">$</span><span class="n">time.series</span><span class="p">)</span><span class="w">
</span></code></pre>
</div>
<iframe src="https://plot.ly/~dashee/17/accs_mult_model_0515.embed?link=false" width="100%" height="500" frameborder="no" scrolling="no"></iframe>
<p>While the plot illustrates the seasonal behaviour and trend within the data, if we want to forecast the number of accidents in 2016, we’ll employ another form of time series decomposition called Autoregressive Integrated Moving Average (ARIMA). Before we apply ARIMA to our data, we’ll make a little detour and first introduce some of key concepts behind ARIMA.</p>
<h3 id="stationary-processes-and-friends">Stationary Processes And Friends</h3>
<p>A time series is considered <a href="https://people.duke.edu/~rnau/411diff.htm">stationary</a> if its statistical properties (mean, variance, etc) are invariant with time. In simple terms, the mean/variance/etc of all subsamples should be approximately identical. A stationary process is quite useful for forecasting: as it contains no trends or longer term changes, knowing its value today is sufficient to predict its future values. This is the principal that underpins ARIMA models.</p>
<div class="language-r highlighter-rouge"><pre class="highlight"><code><span class="c1"># importing Dow Jones data for 2015 from yahoo finance
</span><span class="n">dow_jones</span><span class="w"> </span><span class="o"><-</span><span class="w"> </span><span class="n">read.csv</span><span class="p">(</span><span class="n">text</span><span class="o">=</span><span class="n">getURL</span><span class="p">(</span><span class="w">
</span><span class="s2">"http://chart.finance.yahoo.com/table.csv?s=^DJI&a=0&b=1&c=2015&d=11&e=31&f=2015&g=d&ignore=.csv"</span><span class="p">),</span><span class="w">
</span><span class="n">stringsAsFactors</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">FALSE</span><span class="p">)</span><span class="w"> </span><span class="o">%>%</span><span class="w">
</span><span class="n">mutate</span><span class="p">(</span><span class="n">Date</span><span class="o">=</span><span class="n">as.Date</span><span class="p">(</span><span class="n">Date</span><span class="p">))</span><span class="w"> </span><span class="o">%>%</span><span class="w"> </span><span class="n">arrange</span><span class="p">(</span><span class="n">Date</span><span class="p">)</span><span class="w">
</span></code></pre>
</div>
<div style="text-align:center">
<p><img src="/images/stationary.png" alt="Differencing" /></p>
</div>
<p>ARIMA models actually consist of three seperate models, which we’ll now treat in turn, starting with autoregressive models.</p>
<h5 id="autoregressive-models">Autoregressive Models</h5>
<p>An <a href="https://www.otexts.org/fpp/8/3">autoregressive model</a> describes a model where the output is a linear combination of its p previous (or lagged) values, together with a stochastic term (e.g. white noise).</p>
<p>In mathematical terms, an autoregressive model of order p (AR(p)) is written</p>
<script type="math/tex; mode=display">y_{t} = \phi_{1} y_{t-1} + ... + \phi_{p} y_{t-p} + \epsilon_{t}</script>
<p>where <script type="math/tex">\epsilon_t</script> denotes the stochastic component in the series. AR(0) is simply uncorrelated noise, while AR(1) represents a <a href="https://en.wikipedia.org/wiki/Markov_chain">Markov process</a> (plotted below).</p>
<div class="language-r highlighter-rouge"><pre class="highlight"><code><span class="c1">### Autoregressive Models
</span><span class="n">set.seed</span><span class="p">(</span><span class="m">100</span><span class="p">)</span><span class="w">
</span><span class="c1">#AR(0)
</span><span class="n">ar0</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="m">0</span><span class="w">
</span><span class="k">for</span><span class="p">(</span><span class="n">i</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="m">2</span><span class="o">:</span><span class="m">365</span><span class="p">){</span><span class="w">
</span><span class="n">ar0</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">rnorm</span><span class="p">(</span><span class="m">1</span><span class="p">)}</span><span class="w">
</span><span class="c1">#AR(1)
</span><span class="n">ar1</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="m">0</span><span class="w">
</span><span class="k">for</span><span class="p">(</span><span class="n">i</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="m">2</span><span class="o">:</span><span class="m">365</span><span class="p">){</span><span class="w">
</span><span class="n">ar1</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">ar1</span><span class="p">[</span><span class="n">i</span><span class="m">-1</span><span class="p">]</span><span class="o">*</span><span class="m">0.8</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">rnorm</span><span class="p">(</span><span class="m">1</span><span class="p">)}</span><span class="w">
</span><span class="c1">#AR(2)
</span><span class="n">ar2</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="m">0</span><span class="w">
</span><span class="n">ar2</span><span class="p">[</span><span class="m">2</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="m">0</span><span class="w">
</span><span class="k">for</span><span class="p">(</span><span class="n">i</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="m">3</span><span class="o">:</span><span class="m">365</span><span class="p">){</span><span class="w">
</span><span class="n">ar2</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">ar2</span><span class="p">[</span><span class="n">i</span><span class="m">-1</span><span class="p">]</span><span class="o">*</span><span class="m">0.5</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">ar2</span><span class="p">[</span><span class="n">i</span><span class="m">-2</span><span class="p">]</span><span class="o">*</span><span class="m">0.3</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">rnorm</span><span class="p">(</span><span class="m">1</span><span class="p">)}</span><span class="w">
</span></code></pre>
</div>
<div style="text-align:center">
<p><img src="/images/autoregressive.png" alt="Differencing" /></p>
</div>
<h4 id="moving-average-models">Moving Average Models</h4>
<p>Where autoregressive (AR) models treat output variables as linear combinations of previous values, <a href="https://www.otexts.org/fpp/8/4">moving average (MA) models</a> use past forecast errors in a regression-like model.</p>
<p>In mathematical terms, a moving average model of order q (MA(q)) is written</p>
<script type="math/tex; mode=display">y_{t} = \mu + \epsilon_{t} + \theta_{1} \epsilon_{t-1} + ... + \theta_{q} \epsilon_{t-q}</script>
<p>where <script type="math/tex">\mu</script> represents the mean of the series (generally set to 0) and <script type="math/tex">\epsilon_t</script> denotes mutually independent stochastic terms.</p>
<div class="language-r highlighter-rouge"><pre class="highlight"><code><span class="c1">##### Moving Average Model ######
</span><span class="n">set.seed</span><span class="p">(</span><span class="m">101</span><span class="p">)</span><span class="w">
</span><span class="c1">#MA(0)
</span><span class="n">ma0</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="m">0</span><span class="w">
</span><span class="k">for</span><span class="p">(</span><span class="n">i</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="m">2</span><span class="o">:</span><span class="m">365</span><span class="p">){</span><span class="w">
</span><span class="n">ma0</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">rnorm</span><span class="p">(</span><span class="m">1</span><span class="p">)}</span><span class="w">
</span><span class="c1">#MA(1)
</span><span class="n">ma1</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="m">0</span><span class="w">
</span><span class="k">for</span><span class="p">(</span><span class="n">i</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="m">2</span><span class="o">:</span><span class="m">365</span><span class="p">){</span><span class="w">
</span><span class="n">ma1</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">rnorm</span><span class="p">(</span><span class="m">1</span><span class="p">)</span><span class="o">*</span><span class="m">0.5</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">rnorm</span><span class="p">(</span><span class="m">1</span><span class="p">)}</span><span class="w">
</span><span class="c1">#MA(2)
</span><span class="n">ma2</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="m">0</span><span class="w">
</span><span class="n">ma2</span><span class="p">[</span><span class="m">2</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="m">0</span><span class="w">
</span><span class="k">for</span><span class="p">(</span><span class="n">i</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="m">3</span><span class="o">:</span><span class="m">365</span><span class="p">){</span><span class="w">
</span><span class="n">ma2</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">rnorm</span><span class="p">(</span><span class="m">1</span><span class="p">)</span><span class="o">*</span><span class="m">0.5</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="n">rnorm</span><span class="p">(</span><span class="m">1</span><span class="p">)</span><span class="o">*</span><span class="m">0.3</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">rnorm</span><span class="p">(</span><span class="m">1</span><span class="p">)}</span><span class="w">
</span></code></pre>
</div>
<div style="text-align:center">
<p><img src="/images/moving_average.png" alt="Moving Average" /></p>
</div>
<p>Okay, so we’ve covered Autoregressive and Moving Average models, the constituents of an <a href="https://en.wikipedia.org/wiki/Autoregressive%E2%80%93moving-average_model">ARMA model</a>. But since there’s no I in ARMA, we’re left wondering the significance of that I.</p>
<h4 id="differencing">Differencing</h4>
<p>The I in ARIMA stands for Integrated and refers to the process of differencing. Non-stationary time series can often be stationarised by taking the difference between successive values. The degree (typically denoted as d) of differencing is simply the number of times the data have had past values subtracted (in practise, at most 2 rounds of differencing is generally required). Going back to the Dow Jones closing price time series, we can tell by eye (and using the <a href="https://en.wikipedia.org/wiki/Augmented_Dickey%E2%80%93Fuller_test">augmented dickey-fuller test</a>) that it’s not stationary. However, taking the first difference, the time series has been become stationary (values follow a normal distribution centred near zero).</p>
<div style="text-align:center">
<p><img src="/images/differencing.png" alt="Differencing" /></p>
</div>
<div class="language-r highlighter-rouge"><pre class="highlight"><code><span class="c1"># augmented Dickey Fuller Test
# not stationary
</span><span class="n">adf.test</span><span class="p">(</span><span class="n">dow_jones</span><span class="o">$</span><span class="n">Close</span><span class="p">)</span><span class="w">
</span></code></pre>
</div>
<div class="highlighter-rouge"><pre class="highlight"><code>##
## Augmented Dickey-Fuller Test
##
## data: dow_jones$Close
## Dickey-Fuller = -1.9832, Lag order = 6, p-value = 0.5829
## alternative hypothesis: stationary
</code></pre>
</div>
<div class="language-r highlighter-rouge"><pre class="highlight"><code><span class="c1"># stationary
</span><span class="n">adf.test</span><span class="p">(</span><span class="n">diff</span><span class="p">(</span><span class="n">dow_jones</span><span class="o">$</span><span class="n">Close</span><span class="p">))</span><span class="w">
</span></code></pre>
</div>
<div class="highlighter-rouge"><pre class="highlight"><code>##
## Augmented Dickey-Fuller Test
##
## data: diff(dow_jones$Close)
## Dickey-Fuller = -6.9543, Lag order = 6, p-value = 0.01
## alternative hypothesis: stationary
</code></pre>
</div>
<p>Bringing it all together, non-seasonal ARIMA models are generally denoted ARIMA(p,d,q), where p is the order (number of time lags) of the autoregressive model, d is the degree of differencing and q is the order of the moving-average model. Seasonal models are generally written in form of ARIMA(p,d,q)(P,D,Q)m, where the upper case letters correspond to the seasonal component and m refers to the number of periods per season (12 in our case).</p>
<h3 id="predicting-number-of-road-accidents">Predicting Number of Road Accidents</h3>
<p>Like some people in our dataset, I’ve become a little distracted. Let’s return to our attempt to forecast the number of monthly road accidents in 2016. I’ve spent some time on the theory, but ultimately you just want to know which function to use from which package. Though you can construct an ARIMA model manually (see <a href="https://www.otexts.org/fpp/8/">here</a> for a tutorial), the <a href="https://cran.r-project.org/web/packages/forecast/forecast.pdf">forecast package</a> includes an <a href="https://www.otexts.org/fpp/8/7">auto.arima function</a>, which does all of the hard work for you (determines the appropriate values of p, d and q- though be sure to validate the output, as automated approaches can sometimes throw up strange results).</p>
<div class="language-r highlighter-rouge"><pre class="highlight"><code><span class="c1"># fitting ARIMA model to road accident data
</span><span class="n">acc_arima.fit</span><span class="w"> </span><span class="o"><-</span><span class="w"> </span><span class="n">auto.arima</span><span class="p">(</span><span class="n">ts</span><span class="p">(</span><span class="n">yearlymon_data</span><span class="o">$</span><span class="n">num_accs</span><span class="p">,</span><span class="n">frequency</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="m">12</span><span class="p">,</span><span class="n">start</span><span class="o">=</span><span class="m">2005</span><span class="p">),</span><span class="w">
</span><span class="n">allowdrift</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">TRUE</span><span class="p">,</span><span class="w"> </span><span class="n">approximation</span><span class="o">=</span><span class="kc">FALSE</span><span class="p">)</span><span class="w">
</span><span class="n">acc_arima.fit</span><span class="w">
</span></code></pre>
</div>
<div class="highlighter-rouge"><pre class="highlight"><code>## Series: ts(yearlymon_data$num_accs, frequency = 12, start = 2005)
## ARIMA(1,1,1)(2,0,0)[12]
##
## Coefficients:
## ar1 ma1 sar1 sar2
## 0.1492 -0.8702 0.3417 0.4781
## s.e. 0.1054 0.0520 0.0683 0.0748
##
## sigma^2 estimated as 495203: log likelihood=-1049.7
## AIC=2109.4 AICc=2109.88 BIC=2123.78
</code></pre>
</div>
<p>The <code class="highlighter-rouge">auto.arima</code> function settled on an ARIMA(1,1,1)(2,0,0)12 model for our dataset. We can now quite easily (and hopefully accurately) forecast the number of number of road accidents for the next 12 months.</p>
<div class="language-r highlighter-rouge"><pre class="highlight"><code><span class="c1"># forecast road accidents for next 12 months
</span><span class="n">acc_forecast</span><span class="w"> </span><span class="o"><-</span><span class="w"> </span><span class="n">forecast</span><span class="p">(</span><span class="n">acc_arima.fit</span><span class="p">,</span><span class="w"> </span><span class="n">h</span><span class="o">=</span><span class="m">12</span><span class="p">)</span><span class="w">
</span></code></pre>
</div>
<iframe src="https://plot.ly/~dashee/19/accs_arima_model.embed?link=false" width="100%" height="500" frameborder="no" scrolling="no"></iframe>
<p>The grey line shows how the ARIMA model compares to the observed 2005-2015 data, while the coloured regions represent the predicted number of accidents in 2016 to varying degrees of certainty. For example, monthly road accidents in 2016 are 80 % and 95 % likely to fall within the green and orange lines, respectively. A monthly value outside of the orange lines would signify an unusually high/low month for road accidents and suggest further investigation for the underlying cause.</p>
<h3 id="summary">Summary</h3>
<p>We’ve imported several datasets containing information about road accidents in the UK between 2005 and 2015. After some exploratory analysis and time series theory, we (well, <code class="highlighter-rouge">auto.arima</code>) built an ARIMA model to forecast the number of road accidents in 2016. The most interesting part of any predictive model (and any related blog post) is determining how well it performed against the actual data. Unfortunately, this can’t be done until the 2016 data becomes available (probably sometime in early 2017). But the good news for me is that I get another blog post by just overlaying the 2016 lines onto the ARIMA graph. This blog stuff pretty much writes itself.</p>
Sat, 17 Dec 2016 00:00:00 +0000
https://dashee87.github.io/data%20science/general/A-Road-Incident-Model-Analysis/
https://dashee87.github.io/data%20science/general/A-Road-Incident-Model-Analysis/Europe's Top Football Leagues Are Getting Less Competitive
<h3 id="background">Background</h3>
<p>This work was somewhat motivated by a post I read on <a href="https://longhowlam.wordpress.com/2016/09/12/some-insights-in-soccer-transfers-using-market-basket-analysis/">another interesting data science blog</a>; its combination of network graphs and football seemed both accessible and visualing appealing. Due to the profileration of social media and technological advances, <a href="https://blogs.thomsonreuters.com/answerson/future-graph-shaped/">graph/network based approaches are becoming more common</a>. Graph theory has been employed to study <a href="http://journal.frontiersin.org/article/10.3389/fphy.2015.00071/full">disease propagation</a>, <a href="http://onlinelibrary.wiley.com/doi/10.1111/ecog.02379/full">elephant rest sites</a>, <a href="http://thesimpsonsuniverse.weebly.com/network.html">relationships in The Simpsons</a> and even <a href="http://www.fightprior.com/2016/09/29/finishCooccurrence/">MMA finishes</a>, so I wanted to try it out for myself.</p>
<p>I watch alot of English Premier League (EPL) football, so I’m actutely aware of its reputation as the <a href="http://www.telegraph.co.uk/sport/football/competitions/premier-league/11896600/Is-this-Premier-League-season-the-most-competitive-ever.html">Most Competitive league in the world</a>, (formerly, <a href="https://www.theguardian.com/football/picture/2016/oct/18/david-squires-on-the-return-of-the-best-league-in-the-world">the Best League in the World</a>). I’m not aiming to compare the quality of each league (<a href="https://en.wikipedia.org/wiki/UEFA_coefficient#Current_ranking">UEFA coefficients solves that problem</a>), but rather determine whether the leagues themselves are becoming less competitive. This decade has seen the rise of foreign owned super rich clubs across Europe (Man City, PSG) and the domination of domestic championships by a small elite (Bayern Munich in Germany, Juventus in Italy). Then again, just last year, <a href="https://www.theguardian.com/football/2016/may/03/5000-1-outsider-leicester-city-bookmakers">relegation favourites Leicester City won the EPL</a>, so maybe the EPL has become more competitive than ever.</p>
<p>I suppose we need to quantify the competitiveness of a league. We’ll use two approaches: one based on graph theory and another more conventional statistical approach. I’m not particularly expecting the former to beat the latter, I just wanted an excuse to build a network graph populated with football teams.</p>
<h3 id="gathering-the-data">Gathering the Data</h3>
<p>There are numerous free sources of football data (well, at least for the major European leagues- you might struggle with the Slovakian Third Division or the Irish Premier Division). There’s a good summary <a href="https://www.jokecamp.com/blog/guide-to-football-and-soccer-data-and-apis/">here</a>. And if you’re interested in R API wrappers, there’s the <a href="https://github.com/dashee87/footballR">footballR package</a>. As we want to look at historical trends within leagues, we’ll choose the csv route (APIs generally go back only a few years). The data will be sourced from <a href="http://www.football-data.co.uk/data.php">this site</a>. No need to download the files, we can import the data directly into R using the appropriate URL. Let’s start with the last year of Alex Ferguson’s reign as Man United manager (2012-13 EPL season).</p>
<div class="language-r highlighter-rouge"><pre class="highlight"><code><span class="c1">#loading the packages we'll need
</span><span class="n">require</span><span class="p">(</span><span class="n">RCurl</span><span class="p">)</span><span class="w"> </span><span class="c1"># import csv from URL
</span><span class="n">require</span><span class="p">(</span><span class="n">dplyr</span><span class="p">)</span><span class="w"> </span><span class="c1"># data manipulation/filtering
</span><span class="n">require</span><span class="p">(</span><span class="n">visNetwork</span><span class="p">)</span><span class="w"> </span><span class="c1"># producing interactive graphs
</span><span class="n">require</span><span class="p">(</span><span class="n">igraph</span><span class="p">)</span><span class="w"> </span><span class="c1"># to calculate graph properties
</span><span class="n">require</span><span class="p">(</span><span class="n">ggplot2</span><span class="p">)</span><span class="w"> </span><span class="c1"># vanilla graphs
</span><span class="n">require</span><span class="p">(</span><span class="n">purrr</span><span class="p">)</span><span class="w"> </span><span class="c1"># map lists to functions
</span><span class="w">
</span><span class="n">options</span><span class="p">(</span><span class="n">stringsAsFactors</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">FALSE</span><span class="p">)</span><span class="w">
</span><span class="n">epl_1213</span><span class="w"> </span><span class="o"><-</span><span class="w"> </span><span class="n">read.csv</span><span class="p">(</span><span class="n">text</span><span class="o">=</span><span class="n">getURL</span><span class="p">(</span><span class="s2">"http://www.football-data.co.uk/mmz4281/1213/E0.csv"</span><span class="p">),</span><span class="w">
</span><span class="n">stringsAsFactors</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">FALSE</span><span class="p">)</span><span class="w">
</span><span class="n">head</span><span class="p">(</span><span class="n">epl_1213</span><span class="p">[,</span><span class="m">1</span><span class="o">:</span><span class="m">10</span><span class="p">])</span><span class="w">
</span></code></pre>
</div>
<div class="highlighter-rouge"><pre class="highlight"><code>## Div Date HomeTeam AwayTeam FTHG FTAG FTR HTHG HTAG HTR
## 1 E0 18/08/12 Arsenal Sunderland 0 0 D 0 0 D
## 2 E0 18/08/12 Fulham Norwich 5 0 H 2 0 H
## 3 E0 18/08/12 Newcastle Tottenham 2 1 H 0 0 D
## 4 E0 18/08/12 QPR Swansea 0 5 A 0 1 A
## 5 E0 18/08/12 Reading Stoke 1 1 D 0 1 A
## 6 E0 18/08/12 West Brom Liverpool 3 0 H 1 0 H
</code></pre>
</div>
<p>For each match in a given season, the data frame includes the score and various other data we can ignore (mostly betting odds). First, we must think about our network. Networks are composed of nodes and edges, where an edge connecting two nodes indicates a relationship. In its simplest form, think of a network of people, where two nodes are joined by an edge if they’re friends. We can have either undirected or directed networks. The latter means that there’s a direction to the relationship (e.g. following someone on Twitter does imply that they follow you, which contrasts with Facebook friends). We’ll keep things simple, so we’ll opt for an undirected graph.</p>
<head>
<meta charset="utf-8" />
<script src="data:application/x-javascript,%28function%28%29%20%7B%0A%20%20%2F%2F%20If%20window%2EHTMLWidgets%20is%20already%20defined%2C%20then%20use%20it%3B%20otherwise%20create%20a%0A%20%20%2F%2F%20new%20object%2E%20This%20allows%20preceding%20code%20to%20set%20options%20that%20affect%20the%0A%20%20%2F%2F%20initialization%20process%20%28though%20none%20currently%20exist%29%2E%0A%20%20window%2EHTMLWidgets%20%3D%20window%2EHTMLWidgets%20%7C%7C%20%7B%7D%3B%0A%0A%20%20%2F%2F%20See%20if%20we%27re%20running%20in%20a%20viewer%20pane%2E%20If%20not%2C%20we%27re%20in%20a%20web%20browser%2E%0A%20%20var%20viewerMode%20%3D%20window%2EHTMLWidgets%2EviewerMode%20%3D%0A%20%20%20%20%20%20%2F%5Cbviewer%5Fpane%3D1%5Cb%2F%2Etest%28window%2Elocation%29%3B%0A%0A%20%20%2F%2F%20See%20if%20we%27re%20running%20in%20Shiny%20mode%2E%20If%20not%2C%20it%27s%20a%20static%20document%2E%0A%20%20%2F%2F%20Note%20that%20static%20widgets%20can%20appear%20in%20both%20Shiny%20and%20static%20modes%2C%20but%0A%20%20%2F%2F%20obviously%2C%20Shiny%20widgets%20can%20only%20appear%20in%20Shiny%20apps%2Fdocuments%2E%0A%20%20var%20shinyMode%20%3D%20window%2EHTMLWidgets%2EshinyMode%20%3D%0A%20%20%20%20%20%20typeof%28window%2EShiny%29%20%21%3D%3D%20%22undefined%22%20%26%26%20%21%21window%2EShiny%2EoutputBindings%3B%0A%0A%20%20%2F%2F%20We%20can%27t%20count%20on%20jQuery%20being%20available%2C%20so%20we%20implement%20our%20own%0A%20%20%2F%2F%20version%20if%20necessary%2E%0A%20%20function%20querySelectorAll%28scope%2C%20selector%29%20%7B%0A%20%20%20%20if%20%28typeof%28jQuery%29%20%21%3D%3D%20%22undefined%22%20%26%26%20scope%20instanceof%20jQuery%29%20%7B%0A%20%20%20%20%20%20return%20scope%2Efind%28selector%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20if%20%28scope%2EquerySelectorAll%29%20%7B%0A%20%20%20%20%20%20return%20scope%2EquerySelectorAll%28selector%29%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%20%20function%20asArray%28value%29%20%7B%0A%20%20%20%20if%20%28value%20%3D%3D%3D%20null%29%0A%20%20%20%20%20%20return%20%5B%5D%3B%0A%20%20%20%20if%20%28%24%2EisArray%28value%29%29%0A%20%20%20%20%20%20return%20value%3B%0A%20%20%20%20return%20%5Bvalue%5D%3B%0A%20%20%7D%0A%0A%20%20%2F%2F%20Implement%20jQuery%27s%20extend%0A%20%20function%20extend%28target%20%2F%2A%2C%20%2E%2E%2E%20%2A%2F%29%20%7B%0A%20%20%20%20if%20%28arguments%2Elength%20%3D%3D%201%29%20%7B%0A%20%20%20%20%20%20return%20target%3B%0A%20%20%20%20%7D%0A%20%20%20%20for%20%28var%20i%20%3D%201%3B%20i%20%3C%20arguments%2Elength%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20%20%20var%20source%20%3D%20arguments%5Bi%5D%3B%0A%20%20%20%20%20%20for%20%28var%20prop%20in%20source%29%20%7B%0A%20%20%20%20%20%20%20%20if%20%28source%2EhasOwnProperty%28prop%29%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20target%5Bprop%5D%20%3D%20source%5Bprop%5D%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20return%20target%3B%0A%20%20%7D%0A%0A%20%20%2F%2F%20IE8%20doesn%27t%20support%20Array%2EforEach%2E%0A%20%20function%20forEach%28values%2C%20callback%2C%20thisArg%29%20%7B%0A%20%20%20%20if%20%28values%2EforEach%29%20%7B%0A%20%20%20%20%20%20values%2EforEach%28callback%2C%20thisArg%29%3B%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20values%2Elength%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20%20%20%20%20callback%2Ecall%28thisArg%2C%20values%5Bi%5D%2C%20i%2C%20values%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%20%20%2F%2F%20Replaces%20the%20specified%20method%20with%20the%20return%20value%20of%20funcSource%2E%0A%20%20%2F%2F%0A%20%20%2F%2F%20Note%20that%20funcSource%20should%20not%20BE%20the%20new%20method%2C%20it%20should%20be%20a%20function%0A%20%20%2F%2F%20that%20RETURNS%20the%20new%20method%2E%20funcSource%20receives%20a%20single%20argument%20that%20is%0A%20%20%2F%2F%20the%20overridden%20method%2C%20it%20can%20be%20called%20from%20the%20new%20method%2E%20The%20overridden%0A%20%20%2F%2F%20method%20can%20be%20called%20like%20a%20regular%20function%2C%20it%20has%20the%20target%20permanently%0A%20%20%2F%2F%20bound%20to%20it%20so%20%22this%22%20will%20work%20correctly%2E%0A%20%20function%20overrideMethod%28target%2C%20methodName%2C%20funcSource%29%20%7B%0A%20%20%20%20var%20superFunc%20%3D%20target%5BmethodName%5D%20%7C%7C%20function%28%29%20%7B%7D%3B%0A%20%20%20%20var%20superFuncBound%20%3D%20function%28%29%20%7B%0A%20%20%20%20%20%20return%20superFunc%2Eapply%28target%2C%20arguments%29%3B%0A%20%20%20%20%7D%3B%0A%20%20%20%20target%5BmethodName%5D%20%3D%20funcSource%28superFuncBound%29%3B%0A%20%20%7D%0A%0A%20%20%2F%2F%20Add%20a%20method%20to%20delegator%20that%2C%20when%20invoked%2C%20calls%0A%20%20%2F%2F%20delegatee%2EmethodName%2E%20If%20there%20is%20no%20such%20method%20on%0A%20%20%2F%2F%20the%20delegatee%2C%20but%20there%20was%20one%20on%20delegator%20before%0A%20%20%2F%2F%20delegateMethod%20was%20called%2C%20then%20the%20original%20version%0A%20%20%2F%2F%20is%20invoked%20instead%2E%0A%20%20%2F%2F%20For%20example%3A%0A%20%20%2F%2F%0A%20%20%2F%2F%20var%20a%20%3D%20%7B%0A%20%20%2F%2F%20%20%20method1%3A%20function%28%29%20%7B%20console%2Elog%28%27a1%27%29%3B%20%7D%0A%20%20%2F%2F%20%20%20method2%3A%20function%28%29%20%7B%20console%2Elog%28%27a2%27%29%3B%20%7D%0A%20%20%2F%2F%20%7D%3B%0A%20%20%2F%2F%20var%20b%20%3D%20%7B%0A%20%20%2F%2F%20%20%20method1%3A%20function%28%29%20%7B%20console%2Elog%28%27b1%27%29%3B%20%7D%0A%20%20%2F%2F%20%7D%3B%0A%20%20%2F%2F%20delegateMethod%28a%2C%20b%2C%20%22method1%22%29%3B%0A%20%20%2F%2F%20delegateMethod%28a%2C%20b%2C%20%22method2%22%29%3B%0A%20%20%2F%2F%20a%2Emethod1%28%29%3B%0A%20%20%2F%2F%20a%2Emethod2%28%29%3B%0A%20%20%2F%2F%0A%20%20%2F%2F%20The%20output%20would%20be%20%22b1%22%2C%20%22a2%22%2E%0A%20%20function%20delegateMethod%28delegator%2C%20delegatee%2C%20methodName%29%20%7B%0A%20%20%20%20var%20inherited%20%3D%20delegator%5BmethodName%5D%3B%0A%20%20%20%20delegator%5BmethodName%5D%20%3D%20function%28%29%20%7B%0A%20%20%20%20%20%20var%20target%20%3D%20delegatee%3B%0A%20%20%20%20%20%20var%20method%20%3D%20delegatee%5BmethodName%5D%3B%0A%0A%20%20%20%20%20%20%2F%2F%20The%20method%20doesn%27t%20exist%20on%20the%20delegatee%2E%20Instead%2C%0A%20%20%20%20%20%20%2F%2F%20call%20the%20method%20on%20the%20delegator%2C%20if%20it%20exists%2E%0A%20%20%20%20%20%20if%20%28%21method%29%20%7B%0A%20%20%20%20%20%20%20%20target%20%3D%20delegator%3B%0A%20%20%20%20%20%20%20%20method%20%3D%20inherited%3B%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20if%20%28method%29%20%7B%0A%20%20%20%20%20%20%20%20return%20method%2Eapply%28target%2C%20arguments%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%3B%0A%20%20%7D%0A%0A%20%20%2F%2F%20Implement%20a%20vague%20facsimilie%20of%20jQuery%27s%20data%20method%0A%20%20function%20elementData%28el%2C%20name%2C%20value%29%20%7B%0A%20%20%20%20if%20%28arguments%2Elength%20%3D%3D%202%29%20%7B%0A%20%20%20%20%20%20return%20el%5B%22htmlwidget%5Fdata%5F%22%20%2B%20name%5D%3B%0A%20%20%20%20%7D%20else%20if%20%28arguments%2Elength%20%3D%3D%203%29%20%7B%0A%20%20%20%20%20%20el%5B%22htmlwidget%5Fdata%5F%22%20%2B%20name%5D%20%3D%20value%3B%0A%20%20%20%20%20%20return%20el%3B%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20throw%20new%20Error%28%22Wrong%20number%20of%20arguments%20for%20elementData%3A%20%22%20%2B%0A%20%20%20%20%20%20%20%20arguments%2Elength%29%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%20%20%2F%2F%20http%3A%2F%2Fstackoverflow%2Ecom%2Fquestions%2F3446170%2Fescape%2Dstring%2Dfor%2Duse%2Din%2Djavascript%2Dregex%0A%20%20function%20escapeRegExp%28str%29%20%7B%0A%20%20%20%20return%20str%2Ereplace%28%2F%5B%5C%2D%5C%5B%5C%5D%5C%2F%5C%7B%5C%7D%5C%28%5C%29%5C%2A%5C%2B%5C%3F%5C%2E%5C%5C%5C%5E%5C%24%5C%7C%5D%2Fg%2C%20%22%5C%5C%24%26%22%29%3B%0A%20%20%7D%0A%0A%20%20function%20hasClass%28el%2C%20className%29%20%7B%0A%20%20%20%20var%20re%20%3D%20new%20RegExp%28%22%5C%5Cb%22%20%2B%20escapeRegExp%28className%29%20%2B%20%22%5C%5Cb%22%29%3B%0A%20%20%20%20return%20re%2Etest%28el%2EclassName%29%3B%0A%20%20%7D%0A%0A%20%20%2F%2F%20elements%20%2D%20array%20%28or%20array%2Dlike%20object%29%20of%20HTML%20elements%0A%20%20%2F%2F%20className%20%2D%20class%20name%20to%20test%20for%0A%20%20%2F%2F%20include%20%2D%20if%20true%2C%20only%20return%20elements%20with%20given%20className%3B%0A%20%20%2F%2F%20%20%20if%20false%2C%20only%20return%20elements%20%2Awithout%2A%20given%20className%0A%20%20function%20filterByClass%28elements%2C%20className%2C%20include%29%20%7B%0A%20%20%20%20var%20results%20%3D%20%5B%5D%3B%0A%20%20%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20elements%2Elength%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20%20%20if%20%28hasClass%28elements%5Bi%5D%2C%20className%29%20%3D%3D%20include%29%0A%20%20%20%20%20%20%20%20results%2Epush%28elements%5Bi%5D%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20results%3B%0A%20%20%7D%0A%0A%20%20function%20on%28obj%2C%20eventName%2C%20func%29%20%7B%0A%20%20%20%20if%20%28obj%2EaddEventListener%29%20%7B%0A%20%20%20%20%20%20obj%2EaddEventListener%28eventName%2C%20func%2C%20false%29%3B%0A%20%20%20%20%7D%20else%20if%20%28obj%2EattachEvent%29%20%7B%0A%20%20%20%20%20%20obj%2EattachEvent%28eventName%2C%20func%29%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%20%20function%20off%28obj%2C%20eventName%2C%20func%29%20%7B%0A%20%20%20%20if%20%28obj%2EremoveEventListener%29%0A%20%20%20%20%20%20obj%2EremoveEventListener%28eventName%2C%20func%2C%20false%29%3B%0A%20%20%20%20else%20if%20%28obj%2EdetachEvent%29%20%7B%0A%20%20%20%20%20%20obj%2EdetachEvent%28eventName%2C%20func%29%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%20%20%2F%2F%20Translate%20array%20of%20values%20to%20top%2Fright%2Fbottom%2Fleft%2C%20as%20usual%20with%0A%20%20%2F%2F%20the%20%22padding%22%20CSS%20property%0A%20%20%2F%2F%20https%3A%2F%2Fdeveloper%2Emozilla%2Eorg%2Fen%2DUS%2Fdocs%2FWeb%2FCSS%2Fpadding%0A%20%20function%20unpackPadding%28value%29%20%7B%0A%20%20%20%20if%20%28typeof%28value%29%20%3D%3D%3D%20%22number%22%29%0A%20%20%20%20%20%20value%20%3D%20%5Bvalue%5D%3B%0A%20%20%20%20if%20%28value%2Elength%20%3D%3D%3D%201%29%20%7B%0A%20%20%20%20%20%20return%20%7Btop%3A%20value%5B0%5D%2C%20right%3A%20value%5B0%5D%2C%20bottom%3A%20value%5B0%5D%2C%20left%3A%20value%5B0%5D%7D%3B%0A%20%20%20%20%7D%0A%20%20%20%20if%20%28value%2Elength%20%3D%3D%3D%202%29%20%7B%0A%20%20%20%20%20%20return%20%7Btop%3A%20value%5B0%5D%2C%20right%3A%20value%5B1%5D%2C%20bottom%3A%20value%5B0%5D%2C%20left%3A%20value%5B1%5D%7D%3B%0A%20%20%20%20%7D%0A%20%20%20%20if%20%28value%2Elength%20%3D%3D%3D%203%29%20%7B%0A%20%20%20%20%20%20return%20%7Btop%3A%20value%5B0%5D%2C%20right%3A%20value%5B1%5D%2C%20bottom%3A%20value%5B2%5D%2C%20left%3A%20value%5B1%5D%7D%3B%0A%20%20%20%20%7D%0A%20%20%20%20if%20%28value%2Elength%20%3D%3D%3D%204%29%20%7B%0A%20%20%20%20%20%20return%20%7Btop%3A%20value%5B0%5D%2C%20right%3A%20value%5B1%5D%2C%20bottom%3A%20value%5B2%5D%2C%20left%3A%20value%5B3%5D%7D%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%20%20%2F%2F%20Convert%20an%20unpacked%20padding%20object%20to%20a%20CSS%20value%0A%20%20function%20paddingToCss%28paddingObj%29%20%7B%0A%20%20%20%20return%20paddingObj%2Etop%20%2B%20%22px%20%22%20%2B%20paddingObj%2Eright%20%2B%20%22px%20%22%20%2B%20paddingObj%2Ebottom%20%2B%20%22px%20%22%20%2B%20paddingObj%2Eleft%20%2B%20%22px%22%3B%0A%20%20%7D%0A%0A%20%20%2F%2F%20Makes%20a%20number%20suitable%20for%20CSS%0A%20%20function%20px%28x%29%20%7B%0A%20%20%20%20if%20%28typeof%28x%29%20%3D%3D%3D%20%22number%22%29%0A%20%20%20%20%20%20return%20x%20%2B%20%22px%22%3B%0A%20%20%20%20else%0A%20%20%20%20%20%20return%20x%3B%0A%20%20%7D%0A%0A%20%20%2F%2F%20Retrieves%20runtime%20widget%20sizing%20information%20for%20an%20element%2E%0A%20%20%2F%2F%20The%20return%20value%20is%20either%20null%2C%20or%20an%20object%20with%20fill%2C%20padding%2C%0A%20%20%2F%2F%20defaultWidth%2C%20defaultHeight%20fields%2E%0A%20%20function%20sizingPolicy%28el%29%20%7B%0A%20%20%20%20var%20sizingEl%20%3D%20document%2EquerySelector%28%22script%5Bdata%2Dfor%3D%27%22%20%2B%20el%2Eid%20%2B%20%22%27%5D%5Btype%3D%27application%2Fhtmlwidget%2Dsizing%27%5D%22%29%3B%0A%20%20%20%20if%20%28%21sizingEl%29%0A%20%20%20%20%20%20return%20null%3B%0A%20%20%20%20var%20sp%20%3D%20JSON%2Eparse%28sizingEl%2EtextContent%20%7C%7C%20sizingEl%2Etext%20%7C%7C%20%22%7B%7D%22%29%3B%0A%20%20%20%20if%20%28viewerMode%29%20%7B%0A%20%20%20%20%20%20return%20sp%2Eviewer%3B%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20return%20sp%2Ebrowser%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%20%20%2F%2F%20%40param%20tasks%20Array%20of%20strings%20%28or%20falsy%20value%2C%20in%20which%20case%20no%2Dop%29%2E%0A%20%20%2F%2F%20%20%20Each%20element%20must%20be%20a%20valid%20JavaScript%20expression%20that%20yields%20a%0A%20%20%2F%2F%20%20%20function%2E%20Or%2C%20can%20be%20an%20array%20of%20objects%20with%20%22code%22%20and%20%22data%22%0A%20%20%2F%2F%20%20%20properties%3B%20in%20this%20case%2C%20the%20%22code%22%20property%20should%20be%20a%20string%0A%20%20%2F%2F%20%20%20of%20JS%20that%27s%20an%20expr%20that%20yields%20a%20function%2C%20and%20%22data%22%20should%20be%0A%20%20%2F%2F%20%20%20an%20object%20that%20will%20be%20added%20as%20an%20additional%20argument%20when%20that%0A%20%20%2F%2F%20%20%20function%20is%20called%2E%0A%20%20%2F%2F%20%40param%20target%20The%20object%20that%20will%20be%20%22this%22%20for%20each%20function%0A%20%20%2F%2F%20%20%20execution%2E%0A%20%20%2F%2F%20%40param%20args%20Array%20of%20arguments%20to%20be%20passed%20to%20the%20functions%2E%20%28The%0A%20%20%2F%2F%20%20%20same%20arguments%20will%20be%20passed%20to%20all%20functions%2E%29%0A%20%20function%20evalAndRun%28tasks%2C%20target%2C%20args%29%20%7B%0A%20%20%20%20if%20%28tasks%29%20%7B%0A%20%20%20%20%20%20forEach%28tasks%2C%20function%28task%29%20%7B%0A%20%20%20%20%20%20%20%20var%20theseArgs%20%3D%20args%3B%0A%20%20%20%20%20%20%20%20if%20%28typeof%28task%29%20%3D%3D%3D%20%22object%22%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20theseArgs%20%3D%20theseArgs%2Econcat%28%5Btask%2Edata%5D%29%3B%0A%20%20%20%20%20%20%20%20%20%20task%20%3D%20task%2Ecode%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20var%20taskFunc%20%3D%20eval%28%22%28%22%20%2B%20task%20%2B%20%22%29%22%29%3B%0A%20%20%20%20%20%20%20%20if%20%28typeof%28taskFunc%29%20%21%3D%3D%20%22function%22%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20throw%20new%20Error%28%22Task%20must%20be%20a%20function%21%20Source%3A%5Cn%22%20%2B%20task%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20taskFunc%2Eapply%28target%2C%20theseArgs%29%3B%0A%20%20%20%20%20%20%7D%29%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%20%20function%20initSizing%28el%29%20%7B%0A%20%20%20%20var%20sizing%20%3D%20sizingPolicy%28el%29%3B%0A%20%20%20%20if%20%28%21sizing%29%0A%20%20%20%20%20%20return%3B%0A%0A%20%20%20%20var%20cel%20%3D%20document%2EgetElementById%28%22htmlwidget%5Fcontainer%22%29%3B%0A%20%20%20%20if%20%28%21cel%29%0A%20%20%20%20%20%20return%3B%0A%0A%20%20%20%20if%20%28typeof%28sizing%2Epadding%29%20%21%3D%3D%20%22undefined%22%29%20%7B%0A%20%20%20%20%20%20document%2Ebody%2Estyle%2Emargin%20%3D%20%220%22%3B%0A%20%20%20%20%20%20document%2Ebody%2Estyle%2Epadding%20%3D%20paddingToCss%28unpackPadding%28sizing%2Epadding%29%29%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20if%20%28sizing%2Efill%29%20%7B%0A%20%20%20%20%20%20document%2Ebody%2Estyle%2Eoverflow%20%3D%20%22hidden%22%3B%0A%20%20%20%20%20%20document%2Ebody%2Estyle%2Ewidth%20%3D%20%22100%25%22%3B%0A%20%20%20%20%20%20document%2Ebody%2Estyle%2Eheight%20%3D%20%22100%25%22%3B%0A%20%20%20%20%20%20document%2EdocumentElement%2Estyle%2Ewidth%20%3D%20%22100%25%22%3B%0A%20%20%20%20%20%20document%2EdocumentElement%2Estyle%2Eheight%20%3D%20%22100%25%22%3B%0A%20%20%20%20%20%20if%20%28cel%29%20%7B%0A%20%20%20%20%20%20%20%20cel%2Estyle%2Eposition%20%3D%20%22absolute%22%3B%0A%20%20%20%20%20%20%20%20var%20pad%20%3D%20unpackPadding%28sizing%2Epadding%29%3B%0A%20%20%20%20%20%20%20%20cel%2Estyle%2Etop%20%3D%20pad%2Etop%20%2B%20%22px%22%3B%0A%20%20%20%20%20%20%20%20cel%2Estyle%2Eright%20%3D%20pad%2Eright%20%2B%20%22px%22%3B%0A%20%20%20%20%20%20%20%20cel%2Estyle%2Ebottom%20%3D%20pad%2Ebottom%20%2B%20%22px%22%3B%0A%20%20%20%20%20%20%20%20cel%2Estyle%2Eleft%20%3D%20pad%2Eleft%20%2B%20%22px%22%3B%0A%20%20%20%20%20%20%20%20el%2Estyle%2Ewidth%20%3D%20%22100%25%22%3B%0A%20%20%20%20%20%20%20%20el%2Estyle%2Eheight%20%3D%20%22100%25%22%3B%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20return%20%7B%0A%20%20%20%20%20%20%20%20getWidth%3A%20function%28%29%20%7B%20return%20cel%2EoffsetWidth%3B%20%7D%2C%0A%20%20%20%20%20%20%20%20getHeight%3A%20function%28%29%20%7B%20return%20cel%2EoffsetHeight%3B%20%7D%0A%20%20%20%20%20%20%7D%3B%0A%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20el%2Estyle%2Ewidth%20%3D%20px%28sizing%2Ewidth%29%3B%0A%20%20%20%20%20%20el%2Estyle%2Eheight%20%3D%20px%28sizing%2Eheight%29%3B%0A%0A%20%20%20%20%20%20return%20%7B%0A%20%20%20%20%20%20%20%20getWidth%3A%20function%28%29%20%7B%20return%20el%2EoffsetWidth%3B%20%7D%2C%0A%20%20%20%20%20%20%20%20getHeight%3A%20function%28%29%20%7B%20return%20el%2EoffsetHeight%3B%20%7D%0A%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%20%20%2F%2F%20Default%20implementations%20for%20methods%0A%20%20var%20defaults%20%3D%20%7B%0A%20%20%20%20find%3A%20function%28scope%29%20%7B%0A%20%20%20%20%20%20return%20querySelectorAll%28scope%2C%20%22%2E%22%20%2B%20this%2Ename%29%3B%0A%20%20%20%20%7D%2C%0A%20%20%20%20renderError%3A%20function%28el%2C%20err%29%20%7B%0A%20%20%20%20%20%20var%20%24el%20%3D%20%24%28el%29%3B%0A%0A%20%20%20%20%20%20this%2EclearError%28el%29%3B%0A%0A%20%20%20%20%20%20%2F%2F%20Add%20all%20these%20error%20classes%2C%20as%20Shiny%20does%0A%20%20%20%20%20%20var%20errClass%20%3D%20%22shiny%2Doutput%2Derror%22%3B%0A%20%20%20%20%20%20if%20%28err%2Etype%20%21%3D%3D%20null%29%20%7B%0A%20%20%20%20%20%20%20%20%2F%2F%20use%20the%20classes%20of%20the%20error%20condition%20as%20CSS%20class%20names%0A%20%20%20%20%20%20%20%20errClass%20%3D%20errClass%20%2B%20%22%20%22%20%2B%20%24%2Emap%28asArray%28err%2Etype%29%2C%20function%28type%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20return%20errClass%20%2B%20%22%2D%22%20%2B%20type%3B%0A%20%20%20%20%20%20%20%20%7D%29%2Ejoin%28%22%20%22%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20errClass%20%3D%20errClass%20%2B%20%22%20htmlwidgets%2Derror%22%3B%0A%0A%20%20%20%20%20%20%2F%2F%20Is%20el%20inline%20or%20block%3F%20If%20inline%20or%20inline%2Dblock%2C%20just%20display%3Anone%20it%0A%20%20%20%20%20%20%2F%2F%20and%20add%20an%20inline%20error%2E%0A%20%20%20%20%20%20var%20display%20%3D%20%24el%2Ecss%28%22display%22%29%3B%0A%20%20%20%20%20%20%24el%2Edata%28%22restore%2Ddisplay%2Dmode%22%2C%20display%29%3B%0A%0A%20%20%20%20%20%20if%20%28display%20%3D%3D%3D%20%22inline%22%20%7C%7C%20display%20%3D%3D%3D%20%22inline%2Dblock%22%29%20%7B%0A%20%20%20%20%20%20%20%20%24el%2Ehide%28%29%3B%0A%20%20%20%20%20%20%20%20if%20%28err%2Emessage%20%21%3D%3D%20%22%22%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20errorSpan%20%3D%20%24%28%22%3Cspan%3E%22%29%2EaddClass%28errClass%29%3B%0A%20%20%20%20%20%20%20%20%20%20errorSpan%2Etext%28err%2Emessage%29%3B%0A%20%20%20%20%20%20%20%20%20%20%24el%2Eafter%28errorSpan%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%20else%20if%20%28display%20%3D%3D%3D%20%22block%22%29%20%7B%0A%20%20%20%20%20%20%20%20%2F%2F%20If%20block%2C%20add%20an%20error%20just%20after%20the%20el%2C%20set%20visibility%3Anone%20on%20the%0A%20%20%20%20%20%20%20%20%2F%2F%20el%2C%20and%20position%20the%20error%20to%20be%20on%20top%20of%20the%20el%2E%0A%20%20%20%20%20%20%20%20%2F%2F%20Mark%20it%20with%20a%20unique%20ID%20and%20CSS%20class%20so%20we%20can%20remove%20it%20later%2E%0A%20%20%20%20%20%20%20%20%24el%2Ecss%28%22visibility%22%2C%20%22hidden%22%29%3B%0A%20%20%20%20%20%20%20%20if%20%28err%2Emessage%20%21%3D%3D%20%22%22%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20errorDiv%20%3D%20%24%28%22%3Cdiv%3E%22%29%2EaddClass%28errClass%29%2Ecss%28%22position%22%2C%20%22absolute%22%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%2Ecss%28%22top%22%2C%20el%2EoffsetTop%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%2Ecss%28%22left%22%2C%20el%2EoffsetLeft%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20setting%20width%20can%20push%20out%20the%20page%20size%2C%20forcing%20otherwise%0A%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20unnecessary%20scrollbars%20to%20appear%20and%20making%20it%20impossible%20for%0A%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20the%20element%20to%20shrink%3B%20so%20use%20max%2Dwidth%20instead%0A%20%20%20%20%20%20%20%20%20%20%20%20%2Ecss%28%22maxWidth%22%2C%20el%2EoffsetWidth%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%2Ecss%28%22height%22%2C%20el%2EoffsetHeight%29%3B%0A%20%20%20%20%20%20%20%20%20%20errorDiv%2Etext%28err%2Emessage%29%3B%0A%20%20%20%20%20%20%20%20%20%20%24el%2Eafter%28errorDiv%29%3B%0A%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20Really%20dumb%20way%20to%20keep%20the%20size%2Fposition%20of%20the%20error%20in%20sync%20with%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20the%20parent%20element%20as%20the%20window%20is%20resized%20or%20whatever%2E%0A%20%20%20%20%20%20%20%20%20%20var%20intId%20%3D%20setInterval%28function%28%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20%28%21errorDiv%5B0%5D%2EparentElement%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20clearInterval%28intId%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20errorDiv%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2Ecss%28%22top%22%2C%20el%2EoffsetTop%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2Ecss%28%22left%22%2C%20el%2EoffsetLeft%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2Ecss%28%22maxWidth%22%2C%20el%2EoffsetWidth%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2Ecss%28%22height%22%2C%20el%2EoffsetHeight%29%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%20500%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%2C%0A%20%20%20%20clearError%3A%20function%28el%29%20%7B%0A%20%20%20%20%20%20var%20%24el%20%3D%20%24%28el%29%3B%0A%20%20%20%20%20%20var%20display%20%3D%20%24el%2Edata%28%22restore%2Ddisplay%2Dmode%22%29%3B%0A%20%20%20%20%20%20%24el%2Edata%28%22restore%2Ddisplay%2Dmode%22%2C%20null%29%3B%0A%0A%20%20%20%20%20%20if%20%28display%20%3D%3D%3D%20%22inline%22%20%7C%7C%20display%20%3D%3D%3D%20%22inline%2Dblock%22%29%20%7B%0A%20%20%20%20%20%20%20%20if%20%28display%29%0A%20%20%20%20%20%20%20%20%20%20%24el%2Ecss%28%22display%22%2C%20display%29%3B%0A%20%20%20%20%20%20%20%20%24%28el%2EnextSibling%29%2Efilter%28%22%2Ehtmlwidgets%2Derror%22%29%2Eremove%28%29%3B%0A%20%20%20%20%20%20%7D%20else%20if%20%28display%20%3D%3D%3D%20%22block%22%29%7B%0A%20%20%20%20%20%20%20%20%24el%2Ecss%28%22visibility%22%2C%20%22inherit%22%29%3B%0A%20%20%20%20%20%20%20%20%24%28el%2EnextSibling%29%2Efilter%28%22%2Ehtmlwidgets%2Derror%22%29%2Eremove%28%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%2C%0A%20%20%20%20sizing%3A%20%7B%7D%0A%20%20%7D%3B%0A%0A%20%20%2F%2F%20Called%20by%20widget%20bindings%20to%20register%20a%20new%20type%20of%20widget%2E%20The%20definition%0A%20%20%2F%2F%20object%20can%20contain%20the%20following%20properties%3A%0A%20%20%2F%2F%20%2D%20name%20%28required%29%20%2D%20A%20string%20indicating%20the%20binding%20name%2C%20which%20will%20be%0A%20%20%2F%2F%20%20%20used%20by%20default%20as%20the%20CSS%20classname%20to%20look%20for%2E%0A%20%20%2F%2F%20%2D%20initialize%20%28optional%29%20%2D%20A%20function%28el%29%20that%20will%20be%20called%20once%20per%0A%20%20%2F%2F%20%20%20widget%20element%3B%20if%20a%20value%20is%20returned%2C%20it%20will%20be%20passed%20as%20the%20third%0A%20%20%2F%2F%20%20%20value%20to%20renderValue%2E%0A%20%20%2F%2F%20%2D%20renderValue%20%28required%29%20%2D%20A%20function%28el%2C%20data%2C%20initValue%29%20that%20will%20be%0A%20%20%2F%2F%20%20%20called%20with%20data%2E%20Static%20contexts%20will%20cause%20this%20to%20be%20called%20once%20per%0A%20%20%2F%2F%20%20%20element%3B%20Shiny%20apps%20will%20cause%20this%20to%20be%20called%20multiple%20times%20per%0A%20%20%2F%2F%20%20%20element%2C%20as%20the%20data%20changes%2E%0A%20%20window%2EHTMLWidgets%2Ewidget%20%3D%20function%28definition%29%20%7B%0A%20%20%20%20if%20%28%21definition%2Ename%29%20%7B%0A%20%20%20%20%20%20throw%20new%20Error%28%22Widget%20must%20have%20a%20name%22%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20if%20%28%21definition%2Etype%29%20%7B%0A%20%20%20%20%20%20throw%20new%20Error%28%22Widget%20must%20have%20a%20type%22%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20%2F%2F%20Currently%20we%20only%20support%20output%20widgets%0A%20%20%20%20if%20%28definition%2Etype%20%21%3D%3D%20%22output%22%29%20%7B%0A%20%20%20%20%20%20throw%20new%20Error%28%22Unrecognized%20widget%20type%20%27%22%20%2B%20definition%2Etype%20%2B%20%22%27%22%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20%2F%2F%20TODO%3A%20Verify%20that%20%2Ename%20is%20a%20valid%20CSS%20classname%0A%0A%20%20%20%20%2F%2F%20Support%20new%2Dstyle%20instance%2Dbound%20definitions%2E%20Old%2Dstyle%20class%2Dbound%0A%20%20%20%20%2F%2F%20definitions%20have%20one%20widget%20%22object%22%20per%20widget%20per%20type%2Fclass%20of%0A%20%20%20%20%2F%2F%20widget%3B%20the%20renderValue%20and%20resize%20methods%20on%20such%20widget%20objects%0A%20%20%20%20%2F%2F%20take%20el%20and%20instance%20arguments%2C%20because%20the%20widget%20object%20can%27t%0A%20%20%20%20%2F%2F%20store%20them%2E%20New%2Dstyle%20instance%2Dbound%20definitions%20have%20one%20widget%0A%20%20%20%20%2F%2F%20object%20per%20widget%20instance%3B%20the%20definition%20that%27s%20passed%20in%20doesn%27t%0A%20%20%20%20%2F%2F%20provide%20renderValue%20or%20resize%20methods%20at%20all%2C%20just%20the%20single%20method%0A%20%20%20%20%2F%2F%20%20%20factory%28el%2C%20width%2C%20height%29%0A%20%20%20%20%2F%2F%20which%20returns%20an%20object%20that%20has%20renderValue%28x%29%20and%20resize%28w%2C%20h%29%2E%0A%20%20%20%20%2F%2F%20This%20enables%20a%20far%20more%20natural%20programming%20style%20for%20the%20widget%0A%20%20%20%20%2F%2F%20author%2C%20who%20can%20store%20per%2Dinstance%20state%20using%20either%20OO%2Dstyle%0A%20%20%20%20%2F%2F%20instance%20fields%20or%20functional%2Dstyle%20closure%20variables%20%28I%20guess%20this%0A%20%20%20%20%2F%2F%20is%20in%20contrast%20to%20what%20can%20only%20be%20called%20C%2Dstyle%20pseudo%2DOO%20which%20is%0A%20%20%20%20%2F%2F%20what%20we%20required%20before%29%2E%0A%20%20%20%20if%20%28definition%2Efactory%29%20%7B%0A%20%20%20%20%20%20definition%20%3D%20createLegacyDefinitionAdapter%28definition%29%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20if%20%28%21definition%2ErenderValue%29%20%7B%0A%20%20%20%20%20%20throw%20new%20Error%28%22Widget%20must%20have%20a%20renderValue%20function%22%29%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20%2F%2F%20For%20static%20rendering%20%28non%2DShiny%29%2C%20use%20a%20simple%20widget%20registration%0A%20%20%20%20%2F%2F%20scheme%2E%20We%20also%20use%20this%20scheme%20for%20Shiny%20apps%2Fdocuments%20that%20also%0A%20%20%20%20%2F%2F%20contain%20static%20widgets%2E%0A%20%20%20%20window%2EHTMLWidgets%2Ewidgets%20%3D%20window%2EHTMLWidgets%2Ewidgets%20%7C%7C%20%5B%5D%3B%0A%20%20%20%20%2F%2F%20Merge%20defaults%20into%20the%20definition%3B%20don%27t%20mutate%20the%20original%20definition%2E%0A%20%20%20%20var%20staticBinding%20%3D%20extend%28%7B%7D%2C%20defaults%2C%20definition%29%3B%0A%20%20%20%20overrideMethod%28staticBinding%2C%20%22find%22%2C%20function%28superfunc%29%20%7B%0A%20%20%20%20%20%20return%20function%28scope%29%20%7B%0A%20%20%20%20%20%20%20%20var%20results%20%3D%20superfunc%28scope%29%3B%0A%20%20%20%20%20%20%20%20%2F%2F%20Filter%20out%20Shiny%20outputs%2C%20we%20only%20want%20the%20static%20kind%0A%20%20%20%20%20%20%20%20return%20filterByClass%28results%2C%20%22html%2Dwidget%2Doutput%22%2C%20false%29%3B%0A%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%7D%29%3B%0A%20%20%20%20window%2EHTMLWidgets%2Ewidgets%2Epush%28staticBinding%29%3B%0A%0A%20%20%20%20if%20%28shinyMode%29%20%7B%0A%20%20%20%20%20%20%2F%2F%20Shiny%20is%20running%2E%20Register%20the%20definition%20with%20an%20output%20binding%2E%0A%20%20%20%20%20%20%2F%2F%20The%20definition%20itself%20will%20not%20be%20the%20output%20binding%2C%20instead%0A%20%20%20%20%20%20%2F%2F%20we%20will%20make%20an%20output%20binding%20object%20that%20delegates%20to%20the%0A%20%20%20%20%20%20%2F%2F%20definition%2E%20This%20is%20because%20we%20foolishly%20used%20the%20same%20method%0A%20%20%20%20%20%20%2F%2F%20name%20%28renderValue%29%20for%20htmlwidgets%20definition%20and%20Shiny%20bindings%0A%20%20%20%20%20%20%2F%2F%20but%20they%20actually%20have%20quite%20different%20semantics%20%28the%20Shiny%0A%20%20%20%20%20%20%2F%2F%20bindings%20receive%20data%20that%20includes%20lots%20of%20metadata%20that%20it%0A%20%20%20%20%20%20%2F%2F%20strips%20off%20before%20calling%20htmlwidgets%20renderValue%29%2E%20We%20can%27t%0A%20%20%20%20%20%20%2F%2F%20just%20ignore%20the%20difference%20because%20in%20some%20widgets%20it%27s%20helpful%0A%20%20%20%20%20%20%2F%2F%20to%20call%20this%2ErenderValue%28%29%20from%20inside%20of%20resize%28%29%2C%20and%20if%0A%20%20%20%20%20%20%2F%2F%20we%27re%20not%20delegating%2C%20then%20that%20call%20will%20go%20to%20the%20Shiny%0A%20%20%20%20%20%20%2F%2F%20version%20instead%20of%20the%20htmlwidgets%20version%2E%0A%0A%20%20%20%20%20%20%2F%2F%20Merge%20defaults%20with%20definition%2C%20without%20mutating%20either%2E%0A%20%20%20%20%20%20var%20bindingDef%20%3D%20extend%28%7B%7D%2C%20defaults%2C%20definition%29%3B%0A%0A%20%20%20%20%20%20%2F%2F%20This%20object%20will%20be%20our%20actual%20Shiny%20binding%2E%0A%20%20%20%20%20%20var%20shinyBinding%20%3D%20new%20Shiny%2EOutputBinding%28%29%3B%0A%0A%20%20%20%20%20%20%2F%2F%20With%20a%20few%20exceptions%2C%20we%27ll%20want%20to%20simply%20use%20the%20bindingDef%27s%0A%20%20%20%20%20%20%2F%2F%20version%20of%20methods%20if%20they%20are%20available%2C%20otherwise%20fall%20back%20to%0A%20%20%20%20%20%20%2F%2F%20Shiny%27s%20defaults%2E%20NOTE%3A%20If%20Shiny%27s%20output%20bindings%20gain%20additional%0A%20%20%20%20%20%20%2F%2F%20methods%20in%20the%20future%2C%20and%20we%20want%20them%20to%20be%20overrideable%20by%0A%20%20%20%20%20%20%2F%2F%20HTMLWidget%20binding%20definitions%2C%20then%20we%27ll%20need%20to%20add%20them%20to%20this%0A%20%20%20%20%20%20%2F%2F%20list%2E%0A%20%20%20%20%20%20delegateMethod%28shinyBinding%2C%20bindingDef%2C%20%22getId%22%29%3B%0A%20%20%20%20%20%20delegateMethod%28shinyBinding%2C%20bindingDef%2C%20%22onValueChange%22%29%3B%0A%20%20%20%20%20%20delegateMethod%28shinyBinding%2C%20bindingDef%2C%20%22onValueError%22%29%3B%0A%20%20%20%20%20%20delegateMethod%28shinyBinding%2C%20bindingDef%2C%20%22renderError%22%29%3B%0A%20%20%20%20%20%20delegateMethod%28shinyBinding%2C%20bindingDef%2C%20%22clearError%22%29%3B%0A%20%20%20%20%20%20delegateMethod%28shinyBinding%2C%20bindingDef%2C%20%22showProgress%22%29%3B%0A%0A%20%20%20%20%20%20%2F%2F%20The%20find%2C%20renderValue%2C%20and%20resize%20are%20handled%20differently%2C%20because%20we%0A%20%20%20%20%20%20%2F%2F%20want%20to%20actually%20decorate%20the%20behavior%20of%20the%20bindingDef%20methods%2E%0A%0A%20%20%20%20%20%20shinyBinding%2Efind%20%3D%20function%28scope%29%20%7B%0A%20%20%20%20%20%20%20%20var%20results%20%3D%20bindingDef%2Efind%28scope%29%3B%0A%0A%20%20%20%20%20%20%20%20%2F%2F%20Only%20return%20elements%20that%20are%20Shiny%20outputs%2C%20not%20static%20ones%0A%20%20%20%20%20%20%20%20var%20dynamicResults%20%3D%20results%2Efilter%28%22%2Ehtml%2Dwidget%2Doutput%22%29%3B%0A%0A%20%20%20%20%20%20%20%20%2F%2F%20It%27s%20possible%20that%20whatever%20caused%20Shiny%20to%20think%20there%20might%20be%0A%20%20%20%20%20%20%20%20%2F%2F%20new%20dynamic%20outputs%2C%20also%20caused%20there%20to%20be%20new%20static%20outputs%2E%0A%20%20%20%20%20%20%20%20%2F%2F%20Since%20there%20might%20be%20lots%20of%20different%20htmlwidgets%20bindings%2C%20we%0A%20%20%20%20%20%20%20%20%2F%2F%20schedule%20execution%20for%20later%2D%2Dno%20need%20to%20staticRender%20multiple%0A%20%20%20%20%20%20%20%20%2F%2F%20times%2E%0A%20%20%20%20%20%20%20%20if%20%28results%2Elength%20%21%3D%3D%20dynamicResults%2Elength%29%0A%20%20%20%20%20%20%20%20%20%20scheduleStaticRender%28%29%3B%0A%0A%20%20%20%20%20%20%20%20return%20dynamicResults%3B%0A%20%20%20%20%20%20%7D%3B%0A%0A%20%20%20%20%20%20%2F%2F%20Wrap%20renderValue%20to%20handle%20initialization%2C%20which%20unfortunately%20isn%27t%0A%20%20%20%20%20%20%2F%2F%20supported%20natively%20by%20Shiny%20at%20the%20time%20of%20this%20writing%2E%0A%0A%20%20%20%20%20%20shinyBinding%2ErenderValue%20%3D%20function%28el%2C%20data%29%20%7B%0A%20%20%20%20%20%20%20%20%2F%2F%20Resolve%20strings%20marked%20as%20javascript%20literals%20to%20objects%0A%20%20%20%20%20%20%20%20if%20%28%21%28data%2Eevals%20instanceof%20Array%29%29%20data%2Eevals%20%3D%20%5Bdata%2Eevals%5D%3B%0A%20%20%20%20%20%20%20%20for%20%28var%20i%20%3D%200%3B%20data%2Eevals%20%26%26%20i%20%3C%20data%2Eevals%2Elength%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20window%2EHTMLWidgets%2EevaluateStringMember%28data%2Ex%2C%20data%2Eevals%5Bi%5D%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20if%20%28%21bindingDef%2ErenderOnNullValue%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20if%20%28data%2Ex%20%3D%3D%3D%20null%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20el%2Estyle%2Evisibility%20%3D%20%22hidden%22%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20el%2Estyle%2Evisibility%20%3D%20%22inherit%22%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20if%20%28%21elementData%28el%2C%20%22initialized%22%29%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20initSizing%28el%29%3B%0A%0A%20%20%20%20%20%20%20%20%20%20elementData%28el%2C%20%22initialized%22%2C%20true%29%3B%0A%20%20%20%20%20%20%20%20%20%20if%20%28bindingDef%2Einitialize%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20result%20%3D%20bindingDef%2Einitialize%28el%2C%20el%2EoffsetWidth%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20el%2EoffsetHeight%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20elementData%28el%2C%20%22init%5Fresult%22%2C%20result%29%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20evalAndRun%28data%2EjsHooks%2Erender%2C%20elementData%28el%2C%20%22init%5Fresult%22%29%2C%20%5Bel%2C%20data%2Ex%5D%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20Shiny%2ErenderDependencies%28data%2Edeps%29%3B%0A%20%20%20%20%20%20%20%20bindingDef%2ErenderValue%28el%2C%20data%2Ex%2C%20elementData%28el%2C%20%22init%5Fresult%22%29%29%3B%0A%20%20%20%20%20%20%7D%3B%0A%0A%20%20%20%20%20%20%2F%2F%20Only%20override%20resize%20if%20bindingDef%20implements%20it%0A%20%20%20%20%20%20if%20%28bindingDef%2Eresize%29%20%7B%0A%20%20%20%20%20%20%20%20shinyBinding%2Eresize%20%3D%20function%28el%2C%20width%2C%20height%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20Shiny%20can%20call%20resize%20before%20initialize%2FrenderValue%20have%20been%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20called%2C%20which%20doesn%27t%20make%20sense%20for%20widgets%2E%0A%20%20%20%20%20%20%20%20%20%20if%20%28elementData%28el%2C%20%22initialized%22%29%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20bindingDef%2Eresize%28el%2C%20width%2C%20height%2C%20elementData%28el%2C%20%22init%5Fresult%22%29%29%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20Shiny%2EoutputBindings%2Eregister%28shinyBinding%2C%20bindingDef%2Ename%29%3B%0A%20%20%20%20%7D%0A%20%20%7D%3B%0A%0A%20%20var%20scheduleStaticRenderTimerId%20%3D%20null%3B%0A%20%20function%20scheduleStaticRender%28%29%20%7B%0A%20%20%20%20if%20%28%21scheduleStaticRenderTimerId%29%20%7B%0A%20%20%20%20%20%20scheduleStaticRenderTimerId%20%3D%20setTimeout%28function%28%29%20%7B%0A%20%20%20%20%20%20%20%20scheduleStaticRenderTimerId%20%3D%20null%3B%0A%20%20%20%20%20%20%20%20window%2EHTMLWidgets%2EstaticRender%28%29%3B%0A%20%20%20%20%20%20%7D%2C%201%29%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%20%20%2F%2F%20Render%20static%20widgets%20after%20the%20document%20finishes%20loading%0A%20%20%2F%2F%20Statically%20render%20all%20elements%20that%20are%20of%20this%20widget%27s%20class%0A%20%20window%2EHTMLWidgets%2EstaticRender%20%3D%20function%28%29%20%7B%0A%20%20%20%20var%20bindings%20%3D%20window%2EHTMLWidgets%2Ewidgets%20%7C%7C%20%5B%5D%3B%0A%20%20%20%20forEach%28bindings%2C%20function%28binding%29%20%7B%0A%20%20%20%20%20%20var%20matches%20%3D%20binding%2Efind%28document%2EdocumentElement%29%3B%0A%20%20%20%20%20%20forEach%28matches%2C%20function%28el%29%20%7B%0A%20%20%20%20%20%20%20%20var%20sizeObj%20%3D%20initSizing%28el%2C%20binding%29%3B%0A%0A%20%20%20%20%20%20%20%20if%20%28hasClass%28el%2C%20%22html%2Dwidget%2Dstatic%2Dbound%22%29%29%0A%20%20%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%20%20%20%20el%2EclassName%20%3D%20el%2EclassName%20%2B%20%22%20html%2Dwidget%2Dstatic%2Dbound%22%3B%0A%0A%20%20%20%20%20%20%20%20var%20initResult%3B%0A%20%20%20%20%20%20%20%20if%20%28binding%2Einitialize%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20initResult%20%3D%20binding%2Einitialize%28el%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20sizeObj%20%3F%20sizeObj%2EgetWidth%28%29%20%3A%20el%2EoffsetWidth%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20sizeObj%20%3F%20sizeObj%2EgetHeight%28%29%20%3A%20el%2EoffsetHeight%0A%20%20%20%20%20%20%20%20%20%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20elementData%28el%2C%20%22init%5Fresult%22%2C%20initResult%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20if%20%28binding%2Eresize%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20lastSize%20%3D%20%7B%7D%3B%0A%20%20%20%20%20%20%20%20%20%20var%20resizeHandler%20%3D%20function%28e%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20size%20%3D%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20w%3A%20sizeObj%20%3F%20sizeObj%2EgetWidth%28%29%20%3A%20el%2EoffsetWidth%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20h%3A%20sizeObj%20%3F%20sizeObj%2EgetHeight%28%29%20%3A%20el%2EoffsetHeight%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20%28size%2Ew%20%3D%3D%3D%200%20%26%26%20size%2Eh%20%3D%3D%3D%200%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20%28size%2Ew%20%3D%3D%3D%20lastSize%2Ew%20%26%26%20size%2Eh%20%3D%3D%3D%20lastSize%2Eh%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20lastSize%20%3D%20size%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20binding%2Eresize%28el%2C%20size%2Ew%2C%20size%2Eh%2C%20initResult%29%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%3B%0A%0A%20%20%20%20%20%20%20%20%20%20on%28window%2C%20%22resize%22%2C%20resizeHandler%29%3B%0A%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20This%20is%20needed%20for%20cases%20where%20we%27re%20running%20in%20a%20Shiny%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20app%2C%20but%20the%20widget%20itself%20is%20not%20a%20Shiny%20output%2C%20but%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20rather%20a%20simple%20static%20widget%2E%20One%20example%20of%20this%20is%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20an%20rmarkdown%20document%20that%20has%20runtime%3Ashiny%20and%20widget%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20that%20isn%27t%20in%20a%20render%20function%2E%20Shiny%20only%20knows%20to%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20call%20resize%20handlers%20for%20Shiny%20outputs%2C%20not%20for%20static%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20widgets%2C%20so%20we%20do%20it%20ourselves%2E%0A%20%20%20%20%20%20%20%20%20%20if%20%28window%2EjQuery%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20window%2EjQuery%28document%29%2Eon%28%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22shown%2Ehtmlwidgets%20shown%2Ebs%2Etab%2Ehtmlwidgets%20shown%2Ebs%2Ecollapse%2Ehtmlwidgets%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20resizeHandler%0A%20%20%20%20%20%20%20%20%20%20%20%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20window%2EjQuery%28document%29%2Eon%28%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22hidden%2Ehtmlwidgets%20hidden%2Ebs%2Etab%2Ehtmlwidgets%20hidden%2Ebs%2Ecollapse%2Ehtmlwidgets%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20resizeHandler%0A%20%20%20%20%20%20%20%20%20%20%20%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20This%20is%20needed%20for%20the%20specific%20case%20of%20ioslides%2C%20which%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20flips%20slides%20between%20display%3Anone%20and%20display%3Ablock%2E%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20Ideally%20we%20would%20not%20have%20to%20have%20ioslide%2Dspecific%20code%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20here%2C%20but%20rather%20have%20ioslides%20raise%20a%20generic%20event%2C%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20but%20the%20rmarkdown%20package%20just%20went%20to%20CRAN%20so%20the%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20window%20to%20getting%20that%20fixed%20may%20be%20long%2E%0A%20%20%20%20%20%20%20%20%20%20if%20%28window%2EaddEventListener%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20It%27s%20OK%20to%20limit%20this%20to%20window%2EaddEventListener%0A%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20browsers%20because%20ioslides%20itself%20only%20supports%0A%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20such%20browsers%2E%0A%20%20%20%20%20%20%20%20%20%20%20%20on%28document%2C%20%22slideenter%22%2C%20resizeHandler%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20on%28document%2C%20%22slideleave%22%2C%20resizeHandler%29%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20var%20scriptData%20%3D%20document%2EquerySelector%28%22script%5Bdata%2Dfor%3D%27%22%20%2B%20el%2Eid%20%2B%20%22%27%5D%5Btype%3D%27application%2Fjson%27%5D%22%29%3B%0A%20%20%20%20%20%20%20%20if%20%28scriptData%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20data%20%3D%20JSON%2Eparse%28scriptData%2EtextContent%20%7C%7C%20scriptData%2Etext%29%3B%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20Resolve%20strings%20marked%20as%20javascript%20literals%20to%20objects%0A%20%20%20%20%20%20%20%20%20%20if%20%28%21%28data%2Eevals%20instanceof%20Array%29%29%20data%2Eevals%20%3D%20%5Bdata%2Eevals%5D%3B%0A%20%20%20%20%20%20%20%20%20%20for%20%28var%20k%20%3D%200%3B%20data%2Eevals%20%26%26%20k%20%3C%20data%2Eevals%2Elength%3B%20k%2B%2B%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20window%2EHTMLWidgets%2EevaluateStringMember%28data%2Ex%2C%20data%2Eevals%5Bk%5D%29%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20binding%2ErenderValue%28el%2C%20data%2Ex%2C%20initResult%29%3B%0A%20%20%20%20%20%20%20%20%20%20evalAndRun%28data%2EjsHooks%2Erender%2C%20initResult%2C%20%5Bel%2C%20data%2Ex%5D%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%29%3B%0A%20%20%20%20%7D%29%3B%0A%0A%20%20%20%20invokePostRenderHandlers%28%29%3B%0A%20%20%7D%0A%0A%20%20%2F%2F%20Wait%20until%20after%20the%20document%20has%20loaded%20to%20render%20the%20widgets%2E%0A%20%20if%20%28document%2EaddEventListener%29%20%7B%0A%20%20%20%20document%2EaddEventListener%28%22DOMContentLoaded%22%2C%20function%28%29%20%7B%0A%20%20%20%20%20%20document%2EremoveEventListener%28%22DOMContentLoaded%22%2C%20arguments%2Ecallee%2C%20false%29%3B%0A%20%20%20%20%20%20window%2EHTMLWidgets%2EstaticRender%28%29%3B%0A%20%20%20%20%7D%2C%20false%29%3B%0A%20%20%7D%20else%20if%20%28document%2EattachEvent%29%20%7B%0A%20%20%20%20document%2EattachEvent%28%22onreadystatechange%22%2C%20function%28%29%20%7B%0A%20%20%20%20%20%20if%20%28document%2EreadyState%20%3D%3D%3D%20%22complete%22%29%20%7B%0A%20%20%20%20%20%20%20%20document%2EdetachEvent%28%22onreadystatechange%22%2C%20arguments%2Ecallee%29%3B%0A%20%20%20%20%20%20%20%20window%2EHTMLWidgets%2EstaticRender%28%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%29%3B%0A%20%20%7D%0A%0A%0A%20%20window%2EHTMLWidgets%2EgetAttachmentUrl%20%3D%20function%28depname%2C%20key%29%20%7B%0A%20%20%20%20%2F%2F%20If%20no%20key%2C%20default%20to%20the%20first%20item%0A%20%20%20%20if%20%28typeof%28key%29%20%3D%3D%3D%20%22undefined%22%29%0A%20%20%20%20%20%20key%20%3D%201%3B%0A%0A%20%20%20%20var%20link%20%3D%20document%2EgetElementById%28depname%20%2B%20%22%2D%22%20%2B%20key%20%2B%20%22%2Dattachment%22%29%3B%0A%20%20%20%20if%20%28%21link%29%20%7B%0A%20%20%20%20%20%20throw%20new%20Error%28%22Attachment%20%22%20%2B%20depname%20%2B%20%22%2F%22%20%2B%20key%20%2B%20%22%20not%20found%20in%20document%22%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20link%2EgetAttribute%28%22href%22%29%3B%0A%20%20%7D%3B%0A%0A%20%20window%2EHTMLWidgets%2EdataframeToD3%20%3D%20function%28df%29%20%7B%0A%20%20%20%20var%20names%20%3D%20%5B%5D%3B%0A%20%20%20%20var%20length%3B%0A%20%20%20%20for%20%28var%20name%20in%20df%29%20%7B%0A%20%20%20%20%20%20%20%20if%20%28df%2EhasOwnProperty%28name%29%29%0A%20%20%20%20%20%20%20%20%20%20%20%20names%2Epush%28name%29%3B%0A%20%20%20%20%20%20%20%20if%20%28typeof%28df%5Bname%5D%29%20%21%3D%3D%20%22object%22%20%7C%7C%20typeof%28df%5Bname%5D%2Elength%29%20%3D%3D%3D%20%22undefined%22%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20throw%20new%20Error%28%22All%20fields%20must%20be%20arrays%22%29%3B%0A%20%20%20%20%20%20%20%20%7D%20else%20if%20%28typeof%28length%29%20%21%3D%3D%20%22undefined%22%20%26%26%20length%20%21%3D%3D%20df%5Bname%5D%2Elength%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20throw%20new%20Error%28%22All%20fields%20must%20be%20arrays%20of%20the%20same%20length%22%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20length%20%3D%20df%5Bname%5D%2Elength%3B%0A%20%20%20%20%7D%0A%20%20%20%20var%20results%20%3D%20%5B%5D%3B%0A%20%20%20%20var%20item%3B%0A%20%20%20%20for%20%28var%20row%20%3D%200%3B%20row%20%3C%20length%3B%20row%2B%2B%29%20%7B%0A%20%20%20%20%20%20%20%20item%20%3D%20%7B%7D%3B%0A%20%20%20%20%20%20%20%20for%20%28var%20col%20%3D%200%3B%20col%20%3C%20names%2Elength%3B%20col%2B%2B%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20item%5Bnames%5Bcol%5D%5D%20%3D%20df%5Bnames%5Bcol%5D%5D%5Brow%5D%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20results%2Epush%28item%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20results%3B%0A%20%20%7D%3B%0A%0A%20%20window%2EHTMLWidgets%2EtransposeArray2D%20%3D%20function%28array%29%20%7B%0A%20%20%20%20%20%20if%20%28array%2Elength%20%3D%3D%3D%200%29%20return%20array%3B%0A%20%20%20%20%20%20var%20newArray%20%3D%20array%5B0%5D%2Emap%28function%28col%2C%20i%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20return%20array%2Emap%28function%28row%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20row%5Bi%5D%0A%20%20%20%20%20%20%20%20%20%20%7D%29%0A%20%20%20%20%20%20%7D%29%3B%0A%20%20%20%20%20%20return%20newArray%3B%0A%20%20%7D%3B%0A%20%20%2F%2F%20Split%20value%20at%20splitChar%2C%20but%20allow%20splitChar%20to%20be%20escaped%0A%20%20%2F%2F%20using%20escapeChar%2E%20Any%20other%20characters%20escaped%20by%20escapeChar%0A%20%20%2F%2F%20will%20be%20included%20as%20usual%20%28including%20escapeChar%20itself%29%2E%0A%20%20function%20splitWithEscape%28value%2C%20splitChar%2C%20escapeChar%29%20%7B%0A%20%20%20%20var%20results%20%3D%20%5B%5D%3B%0A%20%20%20%20var%20escapeMode%20%3D%20false%3B%0A%20%20%20%20var%20currentResult%20%3D%20%22%22%3B%0A%20%20%20%20for%20%28var%20pos%20%3D%200%3B%20pos%20%3C%20value%2Elength%3B%20pos%2B%2B%29%20%7B%0A%20%20%20%20%20%20if%20%28%21escapeMode%29%20%7B%0A%20%20%20%20%20%20%20%20if%20%28value%5Bpos%5D%20%3D%3D%3D%20splitChar%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20results%2Epush%28currentResult%29%3B%0A%20%20%20%20%20%20%20%20%20%20currentResult%20%3D%20%22%22%3B%0A%20%20%20%20%20%20%20%20%7D%20else%20if%20%28value%5Bpos%5D%20%3D%3D%3D%20escapeChar%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20escapeMode%20%3D%20true%3B%0A%20%20%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20currentResult%20%2B%3D%20value%5Bpos%5D%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20currentResult%20%2B%3D%20value%5Bpos%5D%3B%0A%20%20%20%20%20%20%20%20escapeMode%20%3D%20false%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20if%20%28currentResult%20%21%3D%3D%20%22%22%29%20%7B%0A%20%20%20%20%20%20results%2Epush%28currentResult%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20results%3B%0A%20%20%7D%0A%20%20%2F%2F%20Function%20authored%20by%20Yihui%2FJJ%20Allaire%0A%20%20window%2EHTMLWidgets%2EevaluateStringMember%20%3D%20function%28o%2C%20member%29%20%7B%0A%20%20%20%20var%20parts%20%3D%20splitWithEscape%28member%2C%20%27%2E%27%2C%20%27%5C%5C%27%29%3B%0A%20%20%20%20for%20%28var%20i%20%3D%200%2C%20l%20%3D%20parts%2Elength%3B%20i%20%3C%20l%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20%20%20var%20part%20%3D%20parts%5Bi%5D%3B%0A%20%20%20%20%20%20%2F%2F%20part%20may%20be%20a%20character%20or%20%27numeric%27%20member%20name%0A%20%20%20%20%20%20if%20%28o%20%21%3D%3D%20null%20%26%26%20typeof%20o%20%3D%3D%3D%20%22object%22%20%26%26%20part%20in%20o%29%20%7B%0A%20%20%20%20%20%20%20%20if%20%28i%20%3D%3D%20%28l%20%2D%201%29%29%20%7B%20%2F%2F%20if%20we%20are%20at%20the%20end%20of%20the%20line%20then%20evalulate%0A%20%20%20%20%20%20%20%20%20%20if%20%28typeof%20o%5Bpart%5D%20%3D%3D%3D%20%22string%22%29%0A%20%20%20%20%20%20%20%20%20%20%20%20o%5Bpart%5D%20%3D%20eval%28%22%28%22%20%2B%20o%5Bpart%5D%20%2B%20%22%29%22%29%3B%0A%20%20%20%20%20%20%20%20%7D%20else%20%7B%20%2F%2F%20otherwise%20continue%20to%20next%20embedded%20object%0A%20%20%20%20%20%20%20%20%20%20o%20%3D%20o%5Bpart%5D%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%7D%3B%0A%0A%20%20%2F%2F%20Retrieve%20the%20HTMLWidget%20instance%20%28i%2Ee%2E%20the%20return%20value%20of%20an%0A%20%20%2F%2F%20HTMLWidget%20binding%27s%20initialize%28%29%20or%20factory%28%29%20function%29%0A%20%20%2F%2F%20associated%20with%20an%20element%2C%20or%20null%20if%20none%2E%0A%20%20window%2EHTMLWidgets%2EgetInstance%20%3D%20function%28el%29%20%7B%0A%20%20%20%20return%20elementData%28el%2C%20%22init%5Fresult%22%29%3B%0A%20%20%7D%3B%0A%0A%20%20%2F%2F%20Finds%20the%20first%20element%20in%20the%20scope%20that%20matches%20the%20selector%2C%0A%20%20%2F%2F%20and%20returns%20the%20HTMLWidget%20instance%20%28i%2Ee%2E%20the%20return%20value%20of%0A%20%20%2F%2F%20an%20HTMLWidget%20binding%27s%20initialize%28%29%20or%20factory%28%29%20function%29%0A%20%20%2F%2F%20associated%20with%20that%20element%2C%20if%20any%2E%20If%20no%20element%20matches%20the%0A%20%20%2F%2F%20selector%2C%20or%20the%20first%20matching%20element%20has%20no%20HTMLWidget%0A%20%20%2F%2F%20instance%20associated%20with%20it%2C%20then%20null%20is%20returned%2E%0A%20%20%2F%2F%0A%20%20%2F%2F%20The%20scope%20argument%20is%20optional%2C%20and%20defaults%20to%20window%2Edocument%2E%0A%20%20window%2EHTMLWidgets%2Efind%20%3D%20function%28scope%2C%20selector%29%20%7B%0A%20%20%20%20if%20%28arguments%2Elength%20%3D%3D%201%29%20%7B%0A%20%20%20%20%20%20selector%20%3D%20scope%3B%0A%20%20%20%20%20%20scope%20%3D%20document%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20var%20el%20%3D%20scope%2EquerySelector%28selector%29%3B%0A%20%20%20%20if%20%28el%20%3D%3D%3D%20null%29%20%7B%0A%20%20%20%20%20%20return%20null%3B%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20return%20window%2EHTMLWidgets%2EgetInstance%28el%29%3B%0A%20%20%20%20%7D%0A%20%20%7D%3B%0A%0A%20%20%2F%2F%20Finds%20all%20elements%20in%20the%20scope%20that%20match%20the%20selector%2C%20and%0A%20%20%2F%2F%20returns%20the%20HTMLWidget%20instances%20%28i%2Ee%2E%20the%20return%20values%20of%0A%20%20%2F%2F%20an%20HTMLWidget%20binding%27s%20initialize%28%29%20or%20factory%28%29%20function%29%0A%20%20%2F%2F%20associated%20with%20the%20elements%2C%20in%20an%20array%2E%20If%20elements%20that%0A%20%20%2F%2F%20match%20the%20selector%20don%27t%20have%20an%20associated%20HTMLWidget%0A%20%20%2F%2F%20instance%2C%20the%20returned%20array%20will%20contain%20nulls%2E%0A%20%20%2F%2F%0A%20%20%2F%2F%20The%20scope%20argument%20is%20optional%2C%20and%20defaults%20to%20window%2Edocument%2E%0A%20%20window%2EHTMLWidgets%2EfindAll%20%3D%20function%28scope%2C%20selector%29%20%7B%0A%20%20%20%20if%20%28arguments%2Elength%20%3D%3D%201%29%20%7B%0A%20%20%20%20%20%20selector%20%3D%20scope%3B%0A%20%20%20%20%20%20scope%20%3D%20document%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20var%20nodes%20%3D%20scope%2EquerySelectorAll%28selector%29%3B%0A%20%20%20%20var%20results%20%3D%20%5B%5D%3B%0A%20%20%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20nodes%2Elength%3B%20i%2B%2B%29%20%7B%0A%20%20%20%20%20%20results%2Epush%28window%2EHTMLWidgets%2EgetInstance%28nodes%5Bi%5D%29%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20results%3B%0A%20%20%7D%3B%0A%0A%20%20var%20postRenderHandlers%20%3D%20%5B%5D%3B%0A%20%20function%20invokePostRenderHandlers%28%29%20%7B%0A%20%20%20%20while%20%28postRenderHandlers%2Elength%29%20%7B%0A%20%20%20%20%20%20var%20handler%20%3D%20postRenderHandlers%2Eshift%28%29%3B%0A%20%20%20%20%20%20if%20%28handler%29%20%7B%0A%20%20%20%20%20%20%20%20handler%28%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%20%20%2F%2F%20Register%20the%20given%20callback%20function%20to%20be%20invoked%20after%20the%0A%20%20%2F%2F%20next%20time%20static%20widgets%20are%20rendered%2E%0A%20%20window%2EHTMLWidgets%2EaddPostRenderHandler%20%3D%20function%28callback%29%20%7B%0A%20%20%20%20postRenderHandlers%2Epush%28callback%29%3B%0A%20%20%7D%3B%0A%0A%20%20%2F%2F%20Takes%20a%20new%2Dstyle%20instance%2Dbound%20definition%2C%20and%20returns%20an%0A%20%20%2F%2F%20old%2Dstyle%20class%2Dbound%20definition%2E%20This%20saves%20us%20from%20having%0A%20%20%2F%2F%20to%20rewrite%20all%20the%20logic%20in%20this%20file%20to%20accomodate%20both%0A%20%20%2F%2F%20types%20of%20definitions%2E%0A%20%20function%20createLegacyDefinitionAdapter%28defn%29%20%7B%0A%20%20%20%20var%20result%20%3D%20%7B%0A%20%20%20%20%20%20name%3A%20defn%2Ename%2C%0A%20%20%20%20%20%20type%3A%20defn%2Etype%2C%0A%20%20%20%20%20%20initialize%3A%20function%28el%2C%20width%2C%20height%29%20%7B%0A%20%20%20%20%20%20%20%20return%20defn%2Efactory%28el%2C%20width%2C%20height%29%3B%0A%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20renderValue%3A%20function%28el%2C%20x%2C%20instance%29%20%7B%0A%20%20%20%20%20%20%20%20return%20instance%2ErenderValue%28x%29%3B%0A%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20resize%3A%20function%28el%2C%20width%2C%20height%2C%20instance%29%20%7B%0A%20%20%20%20%20%20%20%20return%20instance%2Eresize%28width%2C%20height%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%3B%0A%0A%20%20%20%20if%20%28defn%2Efind%29%0A%20%20%20%20%20%20result%2Efind%20%3D%20defn%2Efind%3B%0A%20%20%20%20if%20%28defn%2ErenderError%29%0A%20%20%20%20%20%20result%2ErenderError%20%3D%20defn%2ErenderError%3B%0A%20%20%20%20if%20%28defn%2EclearError%29%0A%20%20%20%20%20%20result%2EclearError%20%3D%20defn%2EclearError%3B%0A%0A%20%20%20%20return%20result%3B%0A%20%20%7D%0A%7D%29%28%29%3B%0A%0A"></script>
<link href="data:text/css,%2Evis%2Dbackground%2C%2Evis%2Dlabelset%2C%2Evis%2Dtimeline%7Boverflow%3Ahidden%7D%2Evis%20%2Eoverlay%7Bposition%3Aabsolute%3Btop%3A0%3Bleft%3A0%3Bwidth%3A100%25%3Bheight%3A100%25%3Bz%2Dindex%3A10%7D%2Evis%2Dactive%7Bbox%2Dshadow%3A0%200%2010px%20%2386d5f8%7D%2Evis%20%5Bclass%2A%3Dspan%5D%7Bmin%2Dheight%3A0%3Bwidth%3Aauto%7Ddiv%2Evis%2Dconfiguration%7Bposition%3Arelative%3Bdisplay%3Ablock%3Bfloat%3Aleft%3Bfont%2Dsize%3A12px%7Ddiv%2Evis%2Dconfiguration%2Dwrapper%7Bdisplay%3Ablock%3Bwidth%3A700px%7Ddiv%2Evis%2Dconfiguration%2Dwrapper%3A%3Aafter%7Bclear%3Aboth%3Bcontent%3A%22%22%3Bdisplay%3Ablock%7Ddiv%2Evis%2Dconfiguration%2Evis%2Dconfig%2Doption%2Dcontainer%7Bdisplay%3Ablock%3Bwidth%3A495px%3Bbackground%2Dcolor%3A%23fff%3Bborder%3A2px%20solid%20%23f7f8fa%3Bborder%2Dradius%3A4px%3Bmargin%2Dtop%3A20px%3Bleft%3A10px%3Bpadding%2Dleft%3A5px%7Ddiv%2Evis%2Dconfiguration%2Evis%2Dconfig%2Dbutton%7Bdisplay%3Ablock%3Bwidth%3A495px%3Bheight%3A25px%3Bvertical%2Dalign%3Amiddle%3Bline%2Dheight%3A25px%3Bbackground%2Dcolor%3A%23f7f8fa%3Bborder%3A2px%20solid%20%23ceced0%3Bborder%2Dradius%3A4px%3Bmargin%2Dtop%3A20px%3Bleft%3A10px%3Bpadding%2Dleft%3A5px%3Bcursor%3Apointer%3Bmargin%2Dbottom%3A30px%7Ddiv%2Evis%2Dconfiguration%2Evis%2Dconfig%2Dbutton%2Ehover%7Bbackground%2Dcolor%3A%234588e6%3Bborder%3A2px%20solid%20%23214373%3Bcolor%3A%23fff%7Ddiv%2Evis%2Dconfiguration%2Evis%2Dconfig%2Ditem%7Bdisplay%3Ablock%3Bfloat%3Aleft%3Bwidth%3A495px%3Bheight%3A25px%3Bvertical%2Dalign%3Amiddle%3Bline%2Dheight%3A25px%7Ddiv%2Evis%2Dconfiguration%2Evis%2Dconfig%2Ditem%2Evis%2Dconfig%2Ds2%7Bleft%3A10px%3Bbackground%2Dcolor%3A%23f7f8fa%3Bpadding%2Dleft%3A5px%3Bborder%2Dradius%3A3px%7Ddiv%2Evis%2Dconfiguration%2Evis%2Dconfig%2Ditem%2Evis%2Dconfig%2Ds3%7Bleft%3A20px%3Bbackground%2Dcolor%3A%23e4e9f0%3Bpadding%2Dleft%3A5px%3Bborder%2Dradius%3A3px%7Ddiv%2Evis%2Dconfiguration%2Evis%2Dconfig%2Ditem%2Evis%2Dconfig%2Ds4%7Bleft%3A30px%3Bbackground%2Dcolor%3A%23cfd8e6%3Bpadding%2Dleft%3A5px%3Bborder%2Dradius%3A3px%7Ddiv%2Evis%2Dconfiguration%2Evis%2Dconfig%2Dheader%7Bfont%2Dsize%3A18px%3Bfont%2Dweight%3A700%7Ddiv%2Evis%2Dconfiguration%2Evis%2Dconfig%2Dlabel%7Bwidth%3A120px%3Bheight%3A25px%3Bline%2Dheight%3A25px%7Ddiv%2Evis%2Dconfiguration%2Evis%2Dconfig%2Dlabel%2Evis%2Dconfig%2Ds3%7Bwidth%3A110px%7Ddiv%2Evis%2Dconfiguration%2Evis%2Dconfig%2Dlabel%2Evis%2Dconfig%2Ds4%7Bwidth%3A100px%7Ddiv%2Evis%2Dconfiguration%2Evis%2Dconfig%2DcolorBlock%7Btop%3A1px%3Bwidth%3A30px%3Bheight%3A19px%3Bborder%3A1px%20solid%20%23444%3Bborder%2Dradius%3A2px%3Bpadding%3A0%3Bmargin%3A0%3Bcursor%3Apointer%7Dinput%2Evis%2Dconfiguration%2Evis%2Dconfig%2Dcheckbox%7Bleft%3A%2D5px%7Dinput%2Evis%2Dconfiguration%2Evis%2Dconfig%2Drangeinput%7Bposition%3Arelative%3Btop%3A%2D5px%3Bwidth%3A60px%3Bpadding%3A1px%3Bmargin%3A0%3Bpointer%2Devents%3Anone%7D%2Evis%2Dpanel%2C%2Evis%2Dtimeline%7Bpadding%3A0%3Bbox%2Dsizing%3Aborder%2Dbox%7Dinput%2Evis%2Dconfiguration%2Evis%2Dconfig%2Drange%7B%2Dwebkit%2Dappearance%3Anone%3Bborder%3A0%20solid%20%23fff%3Bbackground%2Dcolor%3Argba%280%2C0%2C0%2C0%29%3Bwidth%3A300px%3Bheight%3A20px%7Dinput%2Evis%2Dconfiguration%2Evis%2Dconfig%2Drange%3A%3A%2Dwebkit%2Dslider%2Drunnable%2Dtrack%7Bwidth%3A300px%3Bheight%3A5px%3Bbackground%3A%23dedede%3Bbackground%3A%2Dmoz%2Dlinear%2Dgradient%28top%2C%23dedede%200%2C%23c8c8c8%2099%25%29%3Bbackground%3A%2Dwebkit%2Dgradient%28linear%2Cleft%20top%2Cleft%20bottom%2Ccolor%2Dstop%280%2C%23dedede%29%2Ccolor%2Dstop%2899%25%2C%23c8c8c8%29%29%3Bbackground%3A%2Dwebkit%2Dlinear%2Dgradient%28top%2C%23dedede%200%2C%23c8c8c8%2099%25%29%3Bbackground%3A%2Do%2Dlinear%2Dgradient%28top%2C%23dedede%200%2C%23c8c8c8%2099%25%29%3Bbackground%3A%2Dms%2Dlinear%2Dgradient%28top%2C%23dedede%200%2C%23c8c8c8%2099%25%29%3Bbackground%3Alinear%2Dgradient%28to%20bottom%2C%23dedede%200%2C%23c8c8c8%2099%25%29%3Bfilter%3Aprogid%3ADXImageTransform%2EMicrosoft%2Egradient%28%20startColorstr%3D%27%23dedede%27%2C%20endColorstr%3D%27%23c8c8c8%27%2C%20GradientType%3D0%20%29%3Bborder%3A1px%20solid%20%23999%3Bbox%2Dshadow%3A%23aaa%200%200%203px%200%3Bborder%2Dradius%3A3px%7Dinput%2Evis%2Dconfiguration%2Evis%2Dconfig%2Drange%3A%3A%2Dwebkit%2Dslider%2Dthumb%7B%2Dwebkit%2Dappearance%3Anone%3Bborder%3A1px%20solid%20%2314334b%3Bheight%3A17px%3Bwidth%3A17px%3Bborder%2Dradius%3A50%25%3Bbackground%3A%233876c2%3Bbackground%3A%2Dmoz%2Dlinear%2Dgradient%28top%2C%233876c2%200%2C%23385380%20100%25%29%3Bbackground%3A%2Dwebkit%2Dgradient%28linear%2Cleft%20top%2Cleft%20bottom%2Ccolor%2Dstop%280%2C%233876c2%29%2Ccolor%2Dstop%28100%25%2C%23385380%29%29%3Bbackground%3A%2Dwebkit%2Dlinear%2Dgradient%28top%2C%233876c2%200%2C%23385380%20100%25%29%3Bbackground%3A%2Do%2Dlinear%2Dgradient%28top%2C%233876c2%200%2C%23385380%20100%25%29%3Bbackground%3A%2Dms%2Dlinear%2Dgradient%28top%2C%233876c2%200%2C%23385380%20100%25%29%3Bbackground%3Alinear%2Dgradient%28to%20bottom%2C%233876c2%200%2C%23385380%20100%25%29%3Bfilter%3Aprogid%3ADXImageTransform%2EMicrosoft%2Egradient%28%20startColorstr%3D%27%233876c2%27%2C%20endColorstr%3D%27%23385380%27%2C%20GradientType%3D0%20%29%3Bbox%2Dshadow%3A%23111927%200%200%201px%200%3Bmargin%2Dtop%3A%2D7px%7Dinput%2Evis%2Dconfiguration%2Evis%2Dconfig%2Drange%3Afocus%7Boutline%3A0%7Dinput%2Evis%2Dconfiguration%2Evis%2Dconfig%2Drange%3Afocus%3A%3A%2Dwebkit%2Dslider%2Drunnable%2Dtrack%7Bbackground%3A%239d9d9d%3Bbackground%3A%2Dmoz%2Dlinear%2Dgradient%28top%2C%239d9d9d%200%2C%23c8c8c8%2099%25%29%3Bbackground%3A%2Dwebkit%2Dgradient%28linear%2Cleft%20top%2Cleft%20bottom%2Ccolor%2Dstop%280%2C%239d9d9d%29%2Ccolor%2Dstop%2899%25%2C%23c8c8c8%29%29%3Bbackground%3A%2Dwebkit%2Dlinear%2Dgradient%28top%2C%239d9d9d%200%2C%23c8c8c8%2099%25%29%3Bbackground%3A%2Do%2Dlinear%2Dgradient%28top%2C%239d9d9d%200%2C%23c8c8c8%2099%25%29%3Bbackground%3A%2Dms%2Dlinear%2Dgradient%28top%2C%239d9d9d%200%2C%23c8c8c8%2099%25%29%3Bbackground%3Alinear%2Dgradient%28to%20bottom%2C%239d9d9d%200%2C%23c8c8c8%2099%25%29%3Bfilter%3Aprogid%3ADXImageTransform%2EMicrosoft%2Egradient%28%20startColorstr%3D%27%239d9d9d%27%2C%20endColorstr%3D%27%23c8c8c8%27%2C%20GradientType%3D0%20%29%7Dinput%2Evis%2Dconfiguration%2Evis%2Dconfig%2Drange%3A%3A%2Dmoz%2Drange%2Dtrack%7Bwidth%3A300px%3Bheight%3A10px%3Bbackground%3A%23dedede%3Bbackground%3A%2Dmoz%2Dlinear%2Dgradient%28top%2C%23dedede%200%2C%23c8c8c8%2099%25%29%3Bbackground%3A%2Dwebkit%2Dgradient%28linear%2Cleft%20top%2Cleft%20bottom%2Ccolor%2Dstop%280%2C%23dedede%29%2Ccolor%2Dstop%2899%25%2C%23c8c8c8%29%29%3Bbackground%3A%2Dwebkit%2Dlinear%2Dgradient%28top%2C%23dedede%200%2C%23c8c8c8%2099%25%29%3Bbackground%3A%2Do%2Dlinear%2Dgradient%28top%2C%23dedede%200%2C%23c8c8c8%2099%25%29%3Bbackground%3A%2Dms%2Dlinear%2Dgradient%28top%2C%23dedede%200%2C%23c8c8c8%2099%25%29%3Bbackground%3Alinear%2Dgradient%28to%20bottom%2C%23dedede%200%2C%23c8c8c8%2099%25%29%3Bfilter%3Aprogid%3ADXImageTransform%2EMicrosoft%2Egradient%28%20startColorstr%3D%27%23dedede%27%2C%20endColorstr%3D%27%23c8c8c8%27%2C%20GradientType%3D0%20%29%3Bborder%3A1px%20solid%20%23999%3Bbox%2Dshadow%3A%23aaa%200%200%203px%200%3Bborder%2Dradius%3A3px%7Dinput%2Evis%2Dconfiguration%2Evis%2Dconfig%2Drange%3A%3A%2Dmoz%2Drange%2Dthumb%7Bborder%3Anone%3Bheight%3A16px%3Bwidth%3A16px%3Bborder%2Dradius%3A50%25%3Bbackground%3A%23385380%7Dinput%2Evis%2Dconfiguration%2Evis%2Dconfig%2Drange%3A%2Dmoz%2Dfocusring%7Boutline%3A%23fff%20solid%201px%3Boutline%2Doffset%3A%2D1px%7Dinput%2Evis%2Dconfiguration%2Evis%2Dconfig%2Drange%3A%3A%2Dms%2Dtrack%7Bwidth%3A300px%3Bheight%3A5px%3Bbackground%3A0%200%3Bborder%2Dcolor%3Atransparent%3Bborder%2Dwidth%3A6px%200%3Bcolor%3Atransparent%7Dinput%2Evis%2Dconfiguration%2Evis%2Dconfig%2Drange%3A%3A%2Dms%2Dfill%2Dlower%7Bbackground%3A%23777%3Bborder%2Dradius%3A10px%7Dinput%2Evis%2Dconfiguration%2Evis%2Dconfig%2Drange%3A%3A%2Dms%2Dfill%2Dupper%7Bbackground%3A%23ddd%3Bborder%2Dradius%3A10px%7Dinput%2Evis%2Dconfiguration%2Evis%2Dconfig%2Drange%3A%3A%2Dms%2Dthumb%7Bborder%3Anone%3Bheight%3A16px%3Bwidth%3A16px%3Bborder%2Dradius%3A50%25%3Bbackground%3A%23385380%7Dinput%2Evis%2Dconfiguration%2Evis%2Dconfig%2Drange%3Afocus%3A%3A%2Dms%2Dfill%2Dlower%7Bbackground%3A%23888%7Dinput%2Evis%2Dconfiguration%2Evis%2Dconfig%2Drange%3Afocus%3A%3A%2Dms%2Dfill%2Dupper%7Bbackground%3A%23ccc%7D%2Evis%2Dconfiguration%2Dpopup%7Bposition%3Aabsolute%3Bbackground%3Argba%2857%2C76%2C89%2C%2E85%29%3Bborder%3A2px%20solid%20%23f2faff%3Bline%2Dheight%3A30px%3Bheight%3A30px%3Bwidth%3A150px%3Btext%2Dalign%3Acenter%3Bcolor%3A%23fff%3Bfont%2Dsize%3A14px%3Bborder%2Dradius%3A4px%3B%2Dwebkit%2Dtransition%3Aopacity%20%2E3s%20ease%2Din%2Dout%3B%2Dmoz%2Dtransition%3Aopacity%20%2E3s%20ease%2Din%2Dout%3Btransition%3Aopacity%20%2E3s%20ease%2Din%2Dout%7D%2Evis%2Dconfiguration%2Dpopup%3Aafter%2C%2Evis%2Dconfiguration%2Dpopup%3Abefore%7Bleft%3A100%25%3Btop%3A50%25%3Bborder%3Asolid%20transparent%3Bcontent%3A%22%20%22%3Bheight%3A0%3Bwidth%3A0%3Bposition%3Aabsolute%3Bpointer%2Devents%3Anone%7D%2Evis%2Dconfiguration%2Dpopup%3Aafter%7Bborder%2Dcolor%3Argba%28136%2C183%2C213%2C0%29%3Bborder%2Dleft%2Dcolor%3Argba%2857%2C76%2C89%2C%2E85%29%3Bborder%2Dwidth%3A8px%3Bmargin%2Dtop%3A%2D8px%7D%2Evis%2Dconfiguration%2Dpopup%3Abefore%7Bborder%2Dcolor%3Argba%28194%2C225%2C245%2C0%29%3Bborder%2Dleft%2Dcolor%3A%23f2faff%3Bborder%2Dwidth%3A12px%3Bmargin%2Dtop%3A%2D12px%7D%2Evis%2Dtimeline%7Bposition%3Arelative%3Bborder%3A1px%20solid%20%23bfbfbf%3Bmargin%3A0%7D%2Evis%2Dpanel%7Bposition%3Aabsolute%3Bmargin%3A0%7D%2Evis%2Dpanel%2Evis%2Dbottom%2C%2Evis%2Dpanel%2Evis%2Dcenter%2C%2Evis%2Dpanel%2Evis%2Dleft%2C%2Evis%2Dpanel%2Evis%2Dright%2C%2Evis%2Dpanel%2Evis%2Dtop%7Bborder%3A1px%20%23bfbfbf%7D%2Evis%2Dpanel%2Evis%2Dcenter%2C%2Evis%2Dpanel%2Evis%2Dleft%2C%2Evis%2Dpanel%2Evis%2Dright%7Bborder%2Dtop%2Dstyle%3Asolid%3Bborder%2Dbottom%2Dstyle%3Asolid%3Boverflow%3Ahidden%7D%2Evis%2Dpanel%2Evis%2Dbottom%2C%2Evis%2Dpanel%2Evis%2Dcenter%2C%2Evis%2Dpanel%2Evis%2Dtop%7Bborder%2Dleft%2Dstyle%3Asolid%3Bborder%2Dright%2Dstyle%3Asolid%7D%2Evis%2Dpanel%3E%2Evis%2Dcontent%7Bposition%3Arelative%7D%2Evis%2Dpanel%20%2Evis%2Dshadow%7Bposition%3Aabsolute%3Bwidth%3A100%25%3Bheight%3A1px%3Bbox%2Dshadow%3A0%200%2010px%20rgba%280%2C0%2C0%2C%2E8%29%7D%2Evis%2Ditemset%2C%2Evis%2Dlabelset%2C%2Evis%2Dlabelset%20%2Evis%2Dlabel%7Bposition%3Arelative%3Bbox%2Dsizing%3Aborder%2Dbox%7D%2Evis%2Dpanel%20%2Evis%2Dshadow%2Evis%2Dtop%7Btop%3A%2D1px%3Bleft%3A0%7D%2Evis%2Dpanel%20%2Evis%2Dshadow%2Evis%2Dbottom%7Bbottom%3A%2D1px%3Bleft%3A0%7D%2Evis%2Dlabelset%20%2Evis%2Dlabel%7Bleft%3A0%3Btop%3A0%3Bwidth%3A100%25%3Bcolor%3A%234d4d4d%3Bborder%2Dbottom%3A1px%20solid%20%23bfbfbf%7D%2Evis%2Dlabelset%20%2Evis%2Dlabel%2Edraggable%7Bcursor%3Apointer%7D%2Evis%2Dlabelset%20%2Evis%2Dlabel%3Alast%2Dchild%7Bborder%2Dbottom%3Anone%7D%2Evis%2Dlabelset%20%2Evis%2Dlabel%20%2Evis%2Dinner%7Bdisplay%3Ainline%2Dblock%3Bpadding%3A5px%7D%2Evis%2Dlabelset%20%2Evis%2Dlabel%20%2Evis%2Dinner%2Evis%2Dhidden%7Bpadding%3A0%7D%2Evis%2Ditemset%7Bpadding%3A0%3Bmargin%3A0%7D%2Evis%2Ditemset%20%2Evis%2Dbackground%2C%2Evis%2Ditemset%20%2Evis%2Dforeground%7Bposition%3Aabsolute%3Bwidth%3A100%25%3Bheight%3A100%25%3Boverflow%3Avisible%7D%2Evis%2Daxis%7Bposition%3Aabsolute%3Bwidth%3A100%25%3Bheight%3A0%3Bleft%3A0%3Bz%2Dindex%3A1%7D%2Evis%2Dforeground%20%2Evis%2Dgroup%7Bposition%3Arelative%3Bbox%2Dsizing%3Aborder%2Dbox%3Bborder%2Dbottom%3A1px%20solid%20%23bfbfbf%7D%2Evis%2Dforeground%20%2Evis%2Dgroup%3Alast%2Dchild%7Bborder%2Dbottom%3Anone%7D%2Evis%2Doverlay%7Bposition%3Aabsolute%3Btop%3A0%3Bleft%3A0%3Bwidth%3A100%25%3Bheight%3A100%25%3Bz%2Dindex%3A10%7D%2Evis%2Ditem%7Bposition%3Aabsolute%3Bcolor%3A%231A1A1A%3Bborder%2Dcolor%3A%2397B0F8%3Bborder%2Dwidth%3A1px%3Bbackground%2Dcolor%3A%23D5DDF6%3Bdisplay%3Ainline%2Dblock%7D%2Evis%2Ditem%2Evis%2Dpoint%2Evis%2Dselected%2C%2Evis%2Ditem%2Evis%2Dselected%7Bbackground%2Dcolor%3A%23FFF785%7D%2Evis%2Ditem%2Evis%2Dselected%7Bborder%2Dcolor%3A%23FFC200%3Bz%2Dindex%3A2%7D%2Evis%2Deditable%2Evis%2Dselected%7Bcursor%3Amove%7D%2Evis%2Ditem%2Evis%2Dbox%7Btext%2Dalign%3Acenter%3Bborder%2Dstyle%3Asolid%3Bborder%2Dradius%3A2px%7D%2Evis%2Ditem%2Evis%2Dpoint%7Bbackground%3A0%200%7D%2Evis%2Ditem%2Evis%2Ddot%7Bposition%3Aabsolute%3Bpadding%3A0%3Bborder%2Dwidth%3A4px%3Bborder%2Dstyle%3Asolid%3Bborder%2Dradius%3A4px%7D%2Evis%2Ditem%2Evis%2Drange%7Bborder%2Dstyle%3Asolid%3Bborder%2Dradius%3A2px%3Bbox%2Dsizing%3Aborder%2Dbox%7D%2Evis%2Ditem%2Evis%2Dbackground%7Bborder%3Anone%3Bbackground%2Dcolor%3Argba%28213%2C221%2C246%2C%2E4%29%3Bbox%2Dsizing%3Aborder%2Dbox%3Bpadding%3A0%3Bmargin%3A0%7D%2Evis%2Ditem%20%2Evis%2Ditem%2Doverflow%7Bposition%3Arelative%3Bwidth%3A100%25%3Bheight%3A100%25%3Bpadding%3A0%3Bmargin%3A0%3Boverflow%3Ahidden%7D%2Evis%2Ditem%20%2Evis%2Ddelete%2C%2Evis%2Ditem%20%2Evis%2Ddelete%2Drtl%7Bbackground%3Aurl%28data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8%2F9hAAAABGdBTUEAALGPC%2FxhBQAAAAFzUkdCAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAZiS0dEAP8A%2FwD%2FoL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAl2cEFnAAAAEAAAABAAXMatwwAAAVRJREFUOMt108FKG1EUBuBvYtxbRGwxiGBXeYCW0mVpDSKVvIJ0F%2FsyJsFdn6GCkaZ9gro3G1u0ILQgheJKRUwXPQNnxvTAcGf%2Bc%2F7%2FnPvfO8UEKLCFJg5w31aNqGtgG3c4xLSZyP0QgI8Tpu0quQhyPwTgsBnkAVYD3MM9DibVId5GbiW%2BB%2BVIt7hJha1IdhPWDayVsBvcFtHlDYZ4mgou8D7e%2BzXyN%2FTwuUhjbkSXLHIZ61KNvItxaYyayBDrZsf36DyGdilQE%2BngA57UyD%2Bxg08luTSxHvP%2FwRuRewDm7uV9WJ4hsBy5rczJJm7G%2FtcS6VesjxN2Hj4c5S10Qj2Tz%2FAunrOEr0VtB%2BZ6vMJ%2BzfkfcVQjnMbRvcRC5B%2FhBU4auMbVjBFHCRsFdp6wK1yXHjz37xItRuejfFQ1nwb4HXVfs4nPYsQv0p%2BoKlLgNf7gGP4Cw4ZUK7kMJVEAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDExLTA1LTE2VDExOjM1OjIxKzAyOjAw9uVF5gAAACV0RVh0ZGF0ZTptb2RpZnkAMjAxMS0wNS0xNlQxMTozNToyMSswMjowMIe4%2FVoAAAAASUVORK5CYII%3D%29%20center%20no%2Drepeat%3Bheight%3A24px%3Btop%3A%2D4px%3Bcursor%3Apointer%7D%2Evis%2Ditem%2Evis%2Drange%20%2Evis%2Ditem%2Dcontent%7Bposition%3Arelative%3Bdisplay%3Ainline%2Dblock%7D%2Evis%2Ditem%2Evis%2Dbackground%20%2Evis%2Ditem%2Dcontent%7Bposition%3Aabsolute%3Bdisplay%3Ainline%2Dblock%7D%2Evis%2Ditem%2Evis%2Dline%7Bpadding%3A0%3Bposition%3Aabsolute%3Bwidth%3A0%3Bborder%2Dleft%2Dwidth%3A1px%3Bborder%2Dleft%2Dstyle%3Asolid%7D%2Evis%2Ditem%20%2Evis%2Ditem%2Dcontent%7Bwhite%2Dspace%3Anowrap%3Bbox%2Dsizing%3Aborder%2Dbox%3Bpadding%3A5px%7D%2Evis%2Ditem%20%2Evis%2Ddelete%7Bposition%3Aabsolute%3Bwidth%3A24px%3Bright%3A%2D24px%7D%2Evis%2Ditem%20%2Evis%2Ddelete%2Drtl%7Bposition%3Aabsolute%3Bwidth%3A24px%3Bleft%3A%2D24px%7D%2Evis%2Ditem%2Evis%2Drange%20%2Evis%2Ddrag%2Dleft%7Bposition%3Aabsolute%3Bwidth%3A24px%3Bmax%2Dwidth%3A20%25%3Bmin%2Dwidth%3A2px%3Bheight%3A100%25%3Btop%3A0%3Bleft%3A%2D4px%3Bcursor%3Aw%2Dresize%7D%2Evis%2Ditem%2Evis%2Drange%20%2Evis%2Ddrag%2Dright%7Bposition%3Aabsolute%3Bwidth%3A24px%3Bmax%2Dwidth%3A20%25%3Bmin%2Dwidth%3A2px%3Bheight%3A100%25%3Btop%3A0%3Bright%3A%2D4px%3Bcursor%3Ae%2Dresize%7D%2Evis%2Drange%2Evis%2Ditem%2Evis%2Dreadonly%20%2Evis%2Ddrag%2Dleft%2C%2Evis%2Drange%2Evis%2Ditem%2Evis%2Dreadonly%20%2Evis%2Ddrag%2Dright%7Bcursor%3Aauto%7D%2Evis%2Dtime%2Daxis%7Bposition%3Arelative%3Boverflow%3Ahidden%7D%2Evis%2Dtime%2Daxis%2Evis%2Dforeground%7Btop%3A0%3Bleft%3A0%3Bwidth%3A100%25%7D%2Evis%2Dtime%2Daxis%2Evis%2Dbackground%7Bposition%3Aabsolute%3Btop%3A0%3Bleft%3A0%3Bwidth%3A100%25%3Bheight%3A100%25%7D%2Evis%2Dtime%2Daxis%20%2Evis%2Dtext%7Bposition%3Aabsolute%3Bcolor%3A%234d4d4d%3Bpadding%3A3px%3Boverflow%3Ahidden%3Bbox%2Dsizing%3Aborder%2Dbox%3Bwhite%2Dspace%3Anowrap%7D%2Evis%2Dtime%2Daxis%20%2Evis%2Dtext%2Evis%2Dmeasure%7Bposition%3Aabsolute%3Bpadding%2Dleft%3A0%3Bpadding%2Dright%3A0%3Bmargin%2Dleft%3A0%3Bmargin%2Dright%3A0%3Bvisibility%3Ahidden%7D%2Evis%2Dtime%2Daxis%20%2Evis%2Dgrid%2Evis%2Dvertical%7Bposition%3Aabsolute%3Bborder%2Dleft%3A1px%20solid%7D%2Evis%2Dtime%2Daxis%20%2Evis%2Dgrid%2Evis%2Dvertical%2Drtl%7Bposition%3Aabsolute%3Bborder%2Dright%3A1px%20solid%7D%2Evis%2Dtime%2Daxis%20%2Evis%2Dgrid%2Evis%2Dminor%7Bborder%2Dcolor%3A%23e5e5e5%7D%2Evis%2Dtime%2Daxis%20%2Evis%2Dgrid%2Evis%2Dmajor%7Bborder%2Dcolor%3A%23bfbfbf%7D%2Evis%2Dcurrent%2Dtime%7Bbackground%2Dcolor%3A%23FF7F6E%3Bwidth%3A2px%3Bz%2Dindex%3A1%7D%2Evis%2Dcustom%2Dtime%7Bbackground%2Dcolor%3A%236E94FF%3Bwidth%3A2px%3Bcursor%3Amove%3Bz%2Dindex%3A1%7Ddiv%2Evis%2Dnetwork%20div%2Evis%2Dclose%2Cdiv%2Evis%2Dnetwork%20div%2Evis%2Dedit%2Dmode%20div%2Evis%2Dbutton%2Cdiv%2Evis%2Dnetwork%20div%2Evis%2Dmanipulation%20div%2Evis%2Dbutton%7Bcursor%3Apointer%3B%2Dwebkit%2Duser%2Dselect%3Anone%3B%2Dmoz%2Duser%2Dselect%3Anone%3B%2Dms%2Duser%2Dselect%3Anone%3B%2Dwebkit%2Dtouch%2Dcallout%3Anone%3B%2Dkhtml%2Duser%2Dselect%3Anone%7D%2Evis%2Dpanel%2Evis%2Dbackground%2Evis%2Dhorizontal%20%2Evis%2Dgrid%2Evis%2Dhorizontal%7Bposition%3Aabsolute%3Bwidth%3A100%25%3Bheight%3A0%3Bborder%2Dbottom%3A1px%20solid%7D%2Evis%2Dpanel%2Evis%2Dbackground%2Evis%2Dhorizontal%20%2Evis%2Dgrid%2Evis%2Dminor%7Bborder%2Dcolor%3A%23e5e5e5%7D%2Evis%2Dpanel%2Evis%2Dbackground%2Evis%2Dhorizontal%20%2Evis%2Dgrid%2Evis%2Dmajor%7Bborder%2Dcolor%3A%23bfbfbf%7D%2Evis%2Ddata%2Daxis%20%2Evis%2Dy%2Daxis%2Evis%2Dmajor%7Bwidth%3A100%25%3Bposition%3Aabsolute%3Bcolor%3A%234d4d4d%3Bwhite%2Dspace%3Anowrap%7D%2Evis%2Ddata%2Daxis%20%2Evis%2Dy%2Daxis%2Evis%2Dmajor%2Evis%2Dmeasure%7Bpadding%3A0%3Bmargin%3A0%3Bborder%3A0%3Bvisibility%3Ahidden%3Bwidth%3Aauto%7D%2Evis%2Ddata%2Daxis%20%2Evis%2Dy%2Daxis%2Evis%2Dminor%7Bposition%3Aabsolute%3Bwidth%3A100%25%3Bcolor%3A%23bebebe%3Bwhite%2Dspace%3Anowrap%7D%2Evis%2Ddata%2Daxis%20%2Evis%2Dy%2Daxis%2Evis%2Dminor%2Evis%2Dmeasure%7Bpadding%3A0%3Bmargin%3A0%3Bborder%3A0%3Bvisibility%3Ahidden%3Bwidth%3Aauto%7D%2Evis%2Ddata%2Daxis%20%2Evis%2Dy%2Daxis%2Evis%2Dtitle%7Bposition%3Aabsolute%3Bcolor%3A%234d4d4d%3Bwhite%2Dspace%3Anowrap%3Bbottom%3A20px%3Btext%2Dalign%3Acenter%7D%2Evis%2Ddata%2Daxis%20%2Evis%2Dy%2Daxis%2Evis%2Dtitle%2Evis%2Dmeasure%7Bpadding%3A0%3Bmargin%3A0%3Bvisibility%3Ahidden%3Bwidth%3Aauto%7D%2Evis%2Ddata%2Daxis%20%2Evis%2Dy%2Daxis%2Evis%2Dtitle%2Evis%2Dleft%7Bbottom%3A0%3B%2Dwebkit%2Dtransform%2Dorigin%3Aleft%20top%3B%2Dmoz%2Dtransform%2Dorigin%3Aleft%20top%3B%2Dms%2Dtransform%2Dorigin%3Aleft%20top%3B%2Do%2Dtransform%2Dorigin%3Aleft%20top%3Btransform%2Dorigin%3Aleft%20bottom%3B%2Dwebkit%2Dtransform%3Arotate%28%2D90deg%29%3B%2Dmoz%2Dtransform%3Arotate%28%2D90deg%29%3B%2Dms%2Dtransform%3Arotate%28%2D90deg%29%3B%2Do%2Dtransform%3Arotate%28%2D90deg%29%3Btransform%3Arotate%28%2D90deg%29%7D%2Evis%2Ddata%2Daxis%20%2Evis%2Dy%2Daxis%2Evis%2Dtitle%2Evis%2Dright%7Bbottom%3A0%3B%2Dwebkit%2Dtransform%2Dorigin%3Aright%20bottom%3B%2Dmoz%2Dtransform%2Dorigin%3Aright%20bottom%3B%2Dms%2Dtransform%2Dorigin%3Aright%20bottom%3B%2Do%2Dtransform%2Dorigin%3Aright%20bottom%3Btransform%2Dorigin%3Aright%20bottom%3B%2Dwebkit%2Dtransform%3Arotate%2890deg%29%3B%2Dmoz%2Dtransform%3Arotate%2890deg%29%3B%2Dms%2Dtransform%3Arotate%2890deg%29%3B%2Do%2Dtransform%3Arotate%2890deg%29%3Btransform%3Arotate%2890deg%29%7D%2Evis%2Dlegend%7Bbackground%2Dcolor%3Argba%28247%2C252%2C255%2C%2E65%29%3Bpadding%3A5px%3Bborder%3A1px%20solid%20%23b3b3b3%3Bbox%2Dshadow%3A2px%202px%2010px%20rgba%28154%2C154%2C154%2C%2E55%29%7D%2Evis%2Dlegend%2Dtext%7Bwhite%2Dspace%3Anowrap%3Bdisplay%3Ainline%2Dblock%7D%2Evis%2Dgraph%2Dgroup0%7Bfill%3A%234f81bd%3Bfill%2Dopacity%3A0%3Bstroke%2Dwidth%3A2px%3Bstroke%3A%234f81bd%7D%2Evis%2Dgraph%2Dgroup1%7Bfill%3A%23f79646%3Bfill%2Dopacity%3A0%3Bstroke%2Dwidth%3A2px%3Bstroke%3A%23f79646%7D%2Evis%2Dgraph%2Dgroup2%7Bfill%3A%238c51cf%3Bfill%2Dopacity%3A0%3Bstroke%2Dwidth%3A2px%3Bstroke%3A%238c51cf%7D%2Evis%2Dgraph%2Dgroup3%7Bfill%3A%2375c841%3Bfill%2Dopacity%3A0%3Bstroke%2Dwidth%3A2px%3Bstroke%3A%2375c841%7D%2Evis%2Dgraph%2Dgroup4%7Bfill%3A%23ff0100%3Bfill%2Dopacity%3A0%3Bstroke%2Dwidth%3A2px%3Bstroke%3A%23ff0100%7D%2Evis%2Dgraph%2Dgroup5%7Bfill%3A%2337d8e6%3Bfill%2Dopacity%3A0%3Bstroke%2Dwidth%3A2px%3Bstroke%3A%2337d8e6%7D%2Evis%2Dgraph%2Dgroup6%7Bfill%3A%23042662%3Bfill%2Dopacity%3A0%3Bstroke%2Dwidth%3A2px%3Bstroke%3A%23042662%7D%2Evis%2Dgraph%2Dgroup7%7Bfill%3A%2300ff26%3Bfill%2Dopacity%3A0%3Bstroke%2Dwidth%3A2px%3Bstroke%3A%2300ff26%7D%2Evis%2Dgraph%2Dgroup8%7Bfill%3A%23f0f%3Bfill%2Dopacity%3A0%3Bstroke%2Dwidth%3A2px%3Bstroke%3A%23f0f%7D%2Evis%2Dgraph%2Dgroup9%7Bfill%3A%238f3938%3Bfill%2Dopacity%3A0%3Bstroke%2Dwidth%3A2px%3Bstroke%3A%238f3938%7D%2Evis%2Dtimeline%20%2Evis%2Dfill%7Bfill%2Dopacity%3A%2E1%3Bstroke%3Anone%7D%2Evis%2Dtimeline%20%2Evis%2Dbar%7Bfill%2Dopacity%3A%2E5%3Bstroke%2Dwidth%3A1px%7D%2Evis%2Dtimeline%20%2Evis%2Dpoint%7Bstroke%2Dwidth%3A2px%3Bfill%2Dopacity%3A1%7D%2Evis%2Dtimeline%20%2Evis%2Dlegend%2Dbackground%7Bstroke%2Dwidth%3A1px%3Bfill%2Dopacity%3A%2E9%3Bfill%3A%23fff%3Bstroke%3A%23c2c2c2%7D%2Evis%2Dtimeline%20%2Evis%2Doutline%7Bstroke%2Dwidth%3A1px%3Bfill%2Dopacity%3A1%3Bfill%3A%23fff%3Bstroke%3A%23e5e5e5%7D%2Evis%2Dtimeline%20%2Evis%2Dicon%2Dfill%7Bfill%2Dopacity%3A%2E3%3Bstroke%3Anone%7Ddiv%2Evis%2Dnetwork%20div%2Evis%2Dmanipulation%7Bborder%2Dwidth%3A0%3Bborder%2Dbottom%3A1px%3Bborder%2Dstyle%3Asolid%3Bborder%2Dcolor%3A%23d6d9d8%3Bbackground%3A%23fff%3Bbackground%3A%2Dmoz%2Dlinear%2Dgradient%28top%2C%23fff%200%2C%23fcfcfc%2048%25%2C%23fafafa%2050%25%2C%23fcfcfc%20100%25%29%3Bbackground%3A%2Dwebkit%2Dgradient%28linear%2Cleft%20top%2Cleft%20bottom%2Ccolor%2Dstop%280%2C%23fff%29%2Ccolor%2Dstop%2848%25%2C%23fcfcfc%29%2Ccolor%2Dstop%2850%25%2C%23fafafa%29%2Ccolor%2Dstop%28100%25%2C%23fcfcfc%29%29%3Bbackground%3A%2Dwebkit%2Dlinear%2Dgradient%28top%2C%23fff%200%2C%23fcfcfc%2048%25%2C%23fafafa%2050%25%2C%23fcfcfc%20100%25%29%3Bbackground%3A%2Do%2Dlinear%2Dgradient%28top%2C%23fff%200%2C%23fcfcfc%2048%25%2C%23fafafa%2050%25%2C%23fcfcfc%20100%25%29%3Bbackground%3A%2Dms%2Dlinear%2Dgradient%28top%2C%23fff%200%2C%23fcfcfc%2048%25%2C%23fafafa%2050%25%2C%23fcfcfc%20100%25%29%3Bbackground%3Alinear%2Dgradient%28to%20bottom%2C%23fff%200%2C%23fcfcfc%2048%25%2C%23fafafa%2050%25%2C%23fcfcfc%20100%25%29%3Bfilter%3Aprogid%3ADXImageTransform%2EMicrosoft%2Egradient%28%20startColorstr%3D%27%23ffffff%27%2C%20endColorstr%3D%27%23fcfcfc%27%2C%20GradientType%3D0%20%29%3Bpadding%2Dtop%3A4px%3Bposition%3Aabsolute%3Bleft%3A0%3Btop%3A0%3Bwidth%3A100%25%3Bheight%3A28px%7Ddiv%2Evis%2Dnetwork%20div%2Evis%2Dedit%2Dmode%7Bposition%3Aabsolute%3Bleft%3A0%3Btop%3A5px%3Bheight%3A30px%7Ddiv%2Evis%2Dnetwork%20div%2Evis%2Dclose%7Bposition%3Aabsolute%3Bright%3A0%3Btop%3A0%3Bwidth%3A30px%3Bheight%3A30px%3Bbackground%2Dposition%3A20px%203px%3Bbackground%2Drepeat%3Ano%2Drepeat%3Bbackground%2Dimage%3Aurl%28data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAAAcAAAAHCAYAAADEUlfTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89%2BbN%2FrXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz%2FSMBAPh%2BPDwrIsAHvgABeNMLCADATZvAMByH%2Fw%2FqQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf%2BbTAICd%2BJl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA%2Fg88wAAKCRFRHgg%2FP9eM4Ors7ONo62Dl8t6r8G%2FyJiYuP%2B5c%2BrcEAAAOF0ftH%2BLC%2BzGoA7BoBt%2FqIl7gRoXgugdfeLZrIPQLUAoOnaV%2FNw%2BH48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl%2FAV%2F1s%2BX48%2FPf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H%2FLcL%2F%2Fwd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s%2BwM%2B3zUAsGo%2BAXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93%2F%2B8%2F%2FUegJQCAZkmScQAAXkQkLlTKsz%2FHCAAARKCBKrBBG%2FTBGCzABhzBBdzBC%2FxgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD%2FphCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8%2BQ8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8%2BxdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR%2BcQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI%2BksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG%2BQh8lsKnWJAcaT4U%2BIoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr%2Bh0uhHdlR5Ol9BX0svpR%2BiX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK%2BYTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI%2BpXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q%2FpH5Z%2FYkGWcNMw09DpFGgsV%2FjvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY%2FR27iz2qqaE5QzNKM1ezUvOUZj8H45hx%2BJx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4%2FOBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up%2B6Ynr5egJ5Mb6feeb3n%2Bhx9L%2F1U%2FW36p%2FVHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm%2Beb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw%2B6TvZN9un2N%2FT0HDYfZDqsdWh1%2Bc7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc%2BLpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26%2FuNu5p7ofcn8w0nymeWTNz0MPIQ%2BBR5dE%2FC5%2BVMGvfrH5PQ0%2BBZ7XnIy9jL5FXrdewt6V3qvdh7xc%2B9j5yn%2BM%2B4zw33jLeWV%2FMN8C3yLfLT8Nvnl%2BF30N%2FI%2F9k%2F3r%2F0QCngCUBZwOJgUGBWwL7%2BHp8Ib%2BOPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo%2Bqi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt%2F87fOH4p3iC%2BN7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi%2FRNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z%2Bpn5mZ2y6xlhbL%2BxW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a%2FzYnKOZarnivN7cyzytuQN5zvn%2F%2FtEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1%2B1dT1gvWd%2B1YfqGnRs%2BFYmKrhTbF5cVf9go3HjlG4dvyr%2BZ3JS0qavEuWTPZtJm6ebeLZ5bDpaql%2BaXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO%2FPLi8ZafJzs07P1SkVPRU%2BlQ27tLdtWHX%2BG7R7ht7vPY07NXbW7z3%2FT7JvttVAVVN1WbVZftJ%2B7P3P66Jqun4lvttXa1ObXHtxwPSA%2F0HIw6217nU1R3SPVRSj9Yr60cOxx%2B%2B%2Fp3vdy0NNg1VjZzG4iNwRHnk6fcJ3%2FceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w%2B0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb%2B%2B6EHTh0kX%2Fi%2Bc7vDvOXPK4dPKy2%2BUTV7hXmq86X23qdOo8%2FpPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb%2F1tWeOT3dvfN6b%2FfF9%2FXfFt1%2Bcif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v%2B3Njv3H9qwHeg89HcR%2FcGhYPP%2FpH1jw9DBY%2BZj8uGDYbrnjg%2BOTniP3L96fynQ89kzyaeF%2F6i%2FsuuFxYvfvjV69fO0ZjRoZfyl5O%2FbXyl%2FerA6xmv28bCxh6%2ByXgzMV70VvvtwXfcdx3vo98PT%2BR8IH8o%2F2j5sfVT0Kf7kxmTk%2F8EA5jz%2FGMzLdsAADvGaVRYdFhNTDpjb20uYWRvYmUueG1wAAAAAAA8P3hwYWNrZXQgYmVnaW49Iu%2B7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI%2FPgo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjUtYzAyMSA3OS4xNTQ5MTEsIDIwMTMvMTAvMjktMTE6NDc6MTYgICAgICAgICI%2BCiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI%2BCiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIKICAgICAgICAgICAgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iCiAgICAgICAgICAgIHhtbG5zOnN0RXZ0PSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VFdmVudCMiCiAgICAgICAgICAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIKICAgICAgICAgICAgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIgogICAgICAgICAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyIKICAgICAgICAgICAgeG1sbnM6ZXhpZj0iaHR0cDovL25zLmFkb2JlLmNvbS9leGlmLzEuMC8iPgogICAgICAgICA8eG1wOkNyZWF0b3JUb29sPkFkb2JlIFBob3Rvc2hvcCBDQyAoV2luZG93cyk8L3htcDpDcmVhdG9yVG9vbD4KICAgICAgICAgPHhtcDpDcmVhdGVEYXRlPjIwMTQtMDItMTRUMTE6NTU6MzUrMDE6MDA8L3htcDpDcmVhdGVEYXRlPgogICAgICAgICA8eG1wOk1ldGFkYXRhRGF0ZT4yMDE0LTAyLTE0VDEyOjA1OjE3KzAxOjAwPC94bXA6TWV0YWRhdGFEYXRlPgogICAgICAgICA8eG1wOk1vZGlmeURhdGU%2BMjAxNC0wMi0xNFQxMjowNToxNyswMTowMDwveG1wOk1vZGlmeURhdGU%2BCiAgICAgICAgIDx4bXBNTTpJbnN0YW5jZUlEPnhtcC5paWQ6NjU0YmM5YmQtMWI2Yi1jYjRhLTllOWQtNWY2MzgxNDVjZjk0PC94bXBNTTpJbnN0YW5jZUlEPgogICAgICAgICA8eG1wTU06RG9jdW1lbnRJRD54bXAuZGlkOjk4MmM2MGIwLWUzZjMtMDk0MC04MjU0LTFiZTliNWE0ZTE4MzwveG1wTU06RG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD54bXAuZGlkOjk4MmM2MGIwLWUzZjMtMDk0MC04MjU0LTFiZTliNWE0ZTE4MzwveG1wTU06T3JpZ2luYWxEb2N1bWVudElEPgogICAgICAgICA8eG1wTU06SGlzdG9yeT4KICAgICAgICAgICAgPHJkZjpTZXE%2BCiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPmNyZWF0ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0Omluc3RhbmNlSUQ%2BeG1wLmlpZDo5ODJjNjBiMC1lM2YzLTA5NDAtODI1NC0xYmU5YjVhNGUxODM8L3N0RXZ0Omluc3RhbmNlSUQ%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMTQtMDItMTRUMTE6NTU6MzUrMDE6MDA8L3N0RXZ0OndoZW4%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIFBob3Rvc2hvcCBDQyAoV2luZG93cyk8L3N0RXZ0OnNvZnR3YXJlQWdlbnQ%2BCiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5zYXZlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOjIxODYxNmM2LTM1MWMtNDI0OS04YWFkLWJkZDQ2ZTczNWE0NDwvc3RFdnQ6aW5zdGFuY2VJRD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OndoZW4%2BMjAxNC0wMi0xNFQxMTo1NTozNSswMTowMDwvc3RFdnQ6d2hlbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnNvZnR3YXJlQWdlbnQ%2BQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmNoYW5nZWQ%2BLzwvc3RFdnQ6Y2hhbmdlZD4KICAgICAgICAgICAgICAgPC9yZGY6bGk%2BCiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPnNhdmVkPC9zdEV2dDphY3Rpb24%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDppbnN0YW5jZUlEPnhtcC5paWQ6NjU0YmM5YmQtMWI2Yi1jYjRhLTllOWQtNWY2MzgxNDVjZjk0PC9zdEV2dDppbnN0YW5jZUlEPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6d2hlbj4yMDE0LTAyLTE0VDEyOjA1OjE3KzAxOjAwPC9zdEV2dDp3aGVuPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6c29mdHdhcmVBZ2VudD5BZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpPC9zdEV2dDpzb2Z0d2FyZUFnZW50PgogICAgICAgICAgICAgICAgICA8c3RFdnQ6Y2hhbmdlZD4vPC9zdEV2dDpjaGFuZ2VkPgogICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgPC9yZGY6U2VxPgogICAgICAgICA8L3htcE1NOkhpc3Rvcnk%2BCiAgICAgICAgIDxkYzpmb3JtYXQ%2BaW1hZ2UvcG5nPC9kYzpmb3JtYXQ%2BCiAgICAgICAgIDxwaG90b3Nob3A6Q29sb3JNb2RlPjM8L3Bob3Rvc2hvcDpDb2xvck1vZGU%2BCiAgICAgICAgIDxwaG90b3Nob3A6SUNDUHJvZmlsZT5zUkdCIElFQzYxOTY2LTIuMTwvcGhvdG9zaG9wOklDQ1Byb2ZpbGU%2BCiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24%2BCiAgICAgICAgIDx0aWZmOlhSZXNvbHV0aW9uPjcyMDAwMC8xMDAwMDwvdGlmZjpYUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6WVJlc29sdXRpb24%2BNzIwMDAwLzEwMDAwPC90aWZmOllSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpSZXNvbHV0aW9uVW5pdD4yPC90aWZmOlJlc29sdXRpb25Vbml0PgogICAgICAgICA8ZXhpZjpDb2xvclNwYWNlPjE8L2V4aWY6Q29sb3JTcGFjZT4KICAgICAgICAgPGV4aWY6UGl4ZWxYRGltZW5zaW9uPjc8L2V4aWY6UGl4ZWxYRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpQaXhlbFlEaW1lbnNpb24%2BNzwvZXhpZjpQaXhlbFlEaW1lbnNpb24%2BCiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY%2BCjwveDp4bXBtZXRhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIAo8P3hwYWNrZXQgZW5kPSJ3Ij8%2BcZUZMwAAACBjSFJNAAB6JQAAgIMAAPn%2FAACA6QAAdTAAAOpgAAA6mAAAF2%2BSX8VGAAAA2ElEQVR42gDLADT%2FAS0tLUQFBQUVFxcXtPHx8fPl5eUNCAgITCkpKesEHx8fGgYGBjH%2B%2Fv4a%2BPj4qgQEBFU6OjodMTExzwQUFBSvEBAQEfX19SD19fVqNDQ0CElJSd%2F9%2Ff2vAwEBAfrn5%2BfkBwcHLRYWFgsXFxfz29vbo9LS0uwDDQ0NDfPz81orKysXIyMj%2BODg4Avh4eEa%2Ff391gMkJCRYPz8%2FKUhISOMCAgKh8fHxHRsbGx4UFBQQBDk5OeY7Ozv7CAgItPb29vMEBASaJSUlTQ0NDesDAEwpT0Ko8Ri2AAAAAElFTkSuQmCC%29%3Buser%2Dselect%3Anone%7Ddiv%2Evis%2Dnetwork%20div%2Evis%2Dclose%3Ahover%7Bopacity%3A%2E6%7Ddiv%2Evis%2Dnetwork%20div%2Evis%2Dedit%2Dmode%20div%2Evis%2Dbutton%2Cdiv%2Evis%2Dnetwork%20div%2Evis%2Dmanipulation%20div%2Evis%2Dbutton%7Bfloat%3Aleft%3Bfont%2Dfamily%3Averdana%3Bfont%2Dsize%3A12px%3B%2Dmoz%2Dborder%2Dradius%3A15px%3Bborder%2Dradius%3A15px%3Bdisplay%3Ainline%2Dblock%3Bbackground%2Dposition%3A0%200%3Bbackground%2Drepeat%3Ano%2Drepeat%3Bheight%3A24px%3Bmargin%2Dleft%3A10px%3Bpadding%3A0%208px%3Buser%2Dselect%3Anone%7Ddiv%2Evis%2Dnetwork%20div%2Evis%2Dmanipulation%20div%2Evis%2Dbutton%3Ahover%7Bbox%2Dshadow%3A1px%201px%208px%20rgba%280%2C0%2C0%2C%2E2%29%7Ddiv%2Evis%2Dnetwork%20div%2Evis%2Dmanipulation%20div%2Evis%2Dbutton%3Aactive%7Bbox%2Dshadow%3A1px%201px%208px%20rgba%280%2C0%2C0%2C%2E5%29%7Ddiv%2Evis%2Dnetwork%20div%2Evis%2Dmanipulation%20div%2Evis%2Dbutton%2Evis%2Dback%7Bbackground%2Dimage%3Aurl%28data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89%2BbN%2FrXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz%2FSMBAPh%2BPDwrIsAHvgABeNMLCADATZvAMByH%2Fw%2FqQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf%2BbTAICd%2BJl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA%2Fg88wAAKCRFRHgg%2FP9eM4Ors7ONo62Dl8t6r8G%2FyJiYuP%2B5c%2BrcEAAAOF0ftH%2BLC%2BzGoA7BoBt%2FqIl7gRoXgugdfeLZrIPQLUAoOnaV%2FNw%2BH48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl%2FAV%2F1s%2BX48%2FPf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H%2FLcL%2F%2Fwd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s%2BwM%2B3zUAsGo%2BAXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93%2F%2B8%2F%2FUegJQCAZkmScQAAXkQkLlTKsz%2FHCAAARKCBKrBBG%2FTBGCzABhzBBdzBC%2FxgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD%2FphCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8%2BQ8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8%2BxdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR%2BcQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI%2BksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG%2BQh8lsKnWJAcaT4U%2BIoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr%2Bh0uhHdlR5Ol9BX0svpR%2BiX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK%2BYTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI%2BpXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q%2FpH5Z%2FYkGWcNMw09DpFGgsV%2FjvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY%2FR27iz2qqaE5QzNKM1ezUvOUZj8H45hx%2BJx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4%2FOBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up%2B6Ynr5egJ5Mb6feeb3n%2Bhx9L%2F1U%2FW36p%2FVHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm%2Beb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw%2B6TvZN9un2N%2FT0HDYfZDqsdWh1%2Bc7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc%2BLpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26%2FuNu5p7ofcn8w0nymeWTNz0MPIQ%2BBR5dE%2FC5%2BVMGvfrH5PQ0%2BBZ7XnIy9jL5FXrdewt6V3qvdh7xc%2B9j5yn%2BM%2B4zw33jLeWV%2FMN8C3yLfLT8Nvnl%2BF30N%2FI%2F9k%2F3r%2F0QCngCUBZwOJgUGBWwL7%2BHp8Ib%2BOPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo%2Bqi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt%2F87fOH4p3iC%2BN7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi%2FRNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z%2Bpn5mZ2y6xlhbL%2BxW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a%2FzYnKOZarnivN7cyzytuQN5zvn%2F%2FtEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1%2B1dT1gvWd%2B1YfqGnRs%2BFYmKrhTbF5cVf9go3HjlG4dvyr%2BZ3JS0qavEuWTPZtJm6ebeLZ5bDpaql%2BaXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO%2FPLi8ZafJzs07P1SkVPRU%2BlQ27tLdtWHX%2BG7R7ht7vPY07NXbW7z3%2FT7JvttVAVVN1WbVZftJ%2B7P3P66Jqun4lvttXa1ObXHtxwPSA%2F0HIw6217nU1R3SPVRSj9Yr60cOxx%2B%2B%2Fp3vdy0NNg1VjZzG4iNwRHnk6fcJ3%2FceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w%2B0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb%2B%2B6EHTh0kX%2Fi%2Bc7vDvOXPK4dPKy2%2BUTV7hXmq86X23qdOo8%2FpPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb%2F1tWeOT3dvfN6b%2FfF9%2FXfFt1%2Bcif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v%2B3Njv3H9qwHeg89HcR%2FcGhYPP%2FpH1jw9DBY%2BZj8uGDYbrnjg%2BOTniP3L96fynQ89kzyaeF%2F6i%2FsuuFxYvfvjV69fO0ZjRoZfyl5O%2FbXyl%2FerA6xmv28bCxh6%2ByXgzMV70VvvtwXfcdx3vo98PT%2BR8IH8o%2F2j5sfVT0Kf7kxmTk%2F8EA5jz%2FGMzLdsAAEEOaVRYdFhNTDpjb20uYWRvYmUueG1wAAAAAAA8P3hwYWNrZXQgYmVnaW49Iu%2B7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI%2FPgo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjUtYzAyMSA3OS4xNTQ5MTEsIDIwMTMvMTAvMjktMTE6NDc6MTYgICAgICAgICI%2BCiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI%2BCiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIKICAgICAgICAgICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICAgICAgICAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgICAgICAgICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgICAgICAgICAgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiCiAgICAgICAgICAgIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPHhtcDpDcmVhdG9yVG9vbD5BZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpPC94bXA6Q3JlYXRvclRvb2w%2BCiAgICAgICAgIDx4bXA6Q3JlYXRlRGF0ZT4yMDE0LTAxLTIyVDE5OjI0OjUxKzAxOjAwPC94bXA6Q3JlYXRlRGF0ZT4KICAgICAgICAgPHhtcDpNZXRhZGF0YURhdGU%2BMjAxNC0wMi0wNFQxNTowMTowOSswMTowMDwveG1wOk1ldGFkYXRhRGF0ZT4KICAgICAgICAgPHhtcDpNb2RpZnlEYXRlPjIwMTQtMDItMDRUMTU6MDE6MDkrMDE6MDA8L3htcDpNb2RpZnlEYXRlPgogICAgICAgICA8ZGM6Zm9ybWF0PmltYWdlL3BuZzwvZGM6Zm9ybWF0PgogICAgICAgICA8eG1wTU06SW5zdGFuY2VJRD54bXAuaWlkOmI2YjQwMjVkLTAxNjQtMzU0OC1hOTdlLTQ4ZmYxMWM3NTYzMzwveG1wTU06SW5zdGFuY2VJRD4KICAgICAgICAgPHhtcE1NOkRvY3VtZW50SUQ%2BeG1wLmRpZDpFQTc2MkY5Njc0ODNFMzExOTQ4QkQxM0UyQkU3OTlBMTwveG1wTU06RG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD54bXAuZGlkOjczQjYyQUFEOTE4M0UzMTE5NDhCRDEzRTJCRTc5OUExPC94bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ%2BCiAgICAgICAgIDx4bXBNTTpIaXN0b3J5PgogICAgICAgICAgICA8cmRmOlNlcT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24%2BY3JlYXRlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOjczQjYyQUFEOTE4M0UzMTE5NDhCRDEzRTJCRTc5OUExPC9zdEV2dDppbnN0YW5jZUlEPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6d2hlbj4yMDE0LTAxLTIyVDE5OjI0OjUxKzAxOjAwPC9zdEV2dDp3aGVuPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6c29mdHdhcmVBZ2VudD5BZG9iZSBQaG90b3Nob3AgQ1M2IChXaW5kb3dzKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgPC9yZGY6bGk%2BCiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPnNhdmVkPC9zdEV2dDphY3Rpb24%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDppbnN0YW5jZUlEPnhtcC5paWQ6RUE2MEEyNEUxOTg0RTMxMUFEQUZFRkU2RUMzMzNFMDM8L3N0RXZ0Omluc3RhbmNlSUQ%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMTQtMDEtMjNUMTk6MTg6MDcrMDE6MDA8L3N0RXZ0OndoZW4%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpPC9zdEV2dDpzb2Z0d2FyZUFnZW50PgogICAgICAgICAgICAgICAgICA8c3RFdnQ6Y2hhbmdlZD4vPC9zdEV2dDpjaGFuZ2VkPgogICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24%2Bc2F2ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0Omluc3RhbmNlSUQ%2BeG1wLmlpZDpmOWQ3OGY4ZC1lNzY0LTc1NDgtODZiNy1iNmQ1OGMzZDg2OTc8L3N0RXZ0Omluc3RhbmNlSUQ%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMTQtMDItMDRUMTU6MDE6MDkrMDE6MDA8L3N0RXZ0OndoZW4%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIFBob3Rvc2hvcCBDQyAoV2luZG93cyk8L3N0RXZ0OnNvZnR3YXJlQWdlbnQ%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDpjaGFuZ2VkPi88L3N0RXZ0OmNoYW5nZWQ%2BCiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5jb252ZXJ0ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnBhcmFtZXRlcnM%2BZnJvbSBhcHBsaWNhdGlvbi92bmQuYWRvYmUucGhvdG9zaG9wIHRvIGltYWdlL3BuZzwvc3RFdnQ6cGFyYW1ldGVycz4KICAgICAgICAgICAgICAgPC9yZGY6bGk%2BCiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPmRlcml2ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnBhcmFtZXRlcnM%2BY29udmVydGVkIGZyb20gYXBwbGljYXRpb24vdm5kLmFkb2JlLnBob3Rvc2hvcCB0byBpbWFnZS9wbmc8L3N0RXZ0OnBhcmFtZXRlcnM%2BCiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5zYXZlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOmI2YjQwMjVkLTAxNjQtMzU0OC1hOTdlLTQ4ZmYxMWM3NTYzMzwvc3RFdnQ6aW5zdGFuY2VJRD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OndoZW4%2BMjAxNC0wMi0wNFQxNTowMTowOSswMTowMDwvc3RFdnQ6d2hlbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnNvZnR3YXJlQWdlbnQ%2BQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmNoYW5nZWQ%2BLzwvc3RFdnQ6Y2hhbmdlZD4KICAgICAgICAgICAgICAgPC9yZGY6bGk%2BCiAgICAgICAgICAgIDwvcmRmOlNlcT4KICAgICAgICAgPC94bXBNTTpIaXN0b3J5PgogICAgICAgICA8eG1wTU06RGVyaXZlZEZyb20gcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICA8c3RSZWY6aW5zdGFuY2VJRD54bXAuaWlkOmY5ZDc4ZjhkLWU3NjQtNzU0OC04NmI3LWI2ZDU4YzNkODY5Nzwvc3RSZWY6aW5zdGFuY2VJRD4KICAgICAgICAgICAgPHN0UmVmOmRvY3VtZW50SUQ%2BeG1wLmRpZDpFQTc2MkY5Njc0ODNFMzExOTQ4QkQxM0UyQkU3OTlBMTwvc3RSZWY6ZG9jdW1lbnRJRD4KICAgICAgICAgICAgPHN0UmVmOm9yaWdpbmFsRG9jdW1lbnRJRD54bXAuZGlkOjczQjYyQUFEOTE4M0UzMTE5NDhCRDEzRTJCRTc5OUExPC9zdFJlZjpvcmlnaW5hbERvY3VtZW50SUQ%2BCiAgICAgICAgIDwveG1wTU06RGVyaXZlZEZyb20%2BCiAgICAgICAgIDxwaG90b3Nob3A6Q29sb3JNb2RlPjM8L3Bob3Rvc2hvcDpDb2xvck1vZGU%2BCiAgICAgICAgIDxwaG90b3Nob3A6SUNDUHJvZmlsZT5zUkdCIElFQzYxOTY2LTIuMTwvcGhvdG9zaG9wOklDQ1Byb2ZpbGU%2BCiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24%2BCiAgICAgICAgIDx0aWZmOlhSZXNvbHV0aW9uPjcyMDA5MC8xMDAwMDwvdGlmZjpYUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6WVJlc29sdXRpb24%2BNzIwMDkwLzEwMDAwPC90aWZmOllSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpSZXNvbHV0aW9uVW5pdD4yPC90aWZmOlJlc29sdXRpb25Vbml0PgogICAgICAgICA8ZXhpZjpDb2xvclNwYWNlPjE8L2V4aWY6Q29sb3JTcGFjZT4KICAgICAgICAgPGV4aWY6UGl4ZWxYRGltZW5zaW9uPjI0PC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6UGl4ZWxZRGltZW5zaW9uPjI0PC9leGlmOlBpeGVsWURpbWVuc2lvbj4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24%2BCiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE%2BCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgCjw%2FeHBhY2tldCBlbmQ9InciPz4jq1U%2FAAAAIGNIUk0AAHolAACAgwAA%2Bf8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAVTSURBVHjanFVfTFNnFP%2Bd77ve8qeVFbBrpcVgRrCRFikFByLxwSAaE32oRCHD6JMxxhhn8G2RxxH3MsOTbyYsmCAxPMmMMYtkIUYmK60OO0qAK23BFlNob0uh3x7WS5jLZPpLbm6%2Bk%2FP9zrm5v9855PF4UFhYCABgjIExBgAgIqRSqRIi6gDQRkQ1RGTB3wgR0e8AHgH4Sa%2FXR%2FEBiAiJRAJ04cIF5Ofng4g2n0gkUkxENwF0c843LzHGQEQQQkCLExEA9ALotVgsUQAQQmgNQhJCbF5kjCEUCl0moj4t5na7fTU1NUpVVVXUYrEkASAcDhe8efOmxOfzWScmJqoBdBNR99LS0hWz2dynNSSEAF28eBGFhYVgjCEcDn9HRD1EhIMHD3o9Hs9kWVlZAh9BKBQqGB4edr58%2BdKZ%2B6JbJpOpBwBWV1fB6%2BrqIMsyIpHIFcZYL2MMra2tY5cuXRrfuXNnBtvAYDBk3G63oqpqZm5uzgrgSDKZjBoMhueZTAbc5XIhFouVEtFTxhiOHTs2dv78eS8%2BEfv374%2BoqpqZnZ21cs5PJJPJPlmWkyynnBuMMTQ0NHi7uro%2BmVyDx%2BPxulwu71ZOlkqlSonoJhGhvb39s8k1nDx50ss5hyRJN9PpdKlERB2aWjSVaEilUvzBgwcORVEs5eXloXPnzk1sV8BkMiUdDofP7%2FdXZ7PZDilnIhw4cGBeS1pbW2P37t1zBwKBikQiUUREWFhYsHHO0d7evm0Ru90%2B%2F%2BrVq2rO%2BXGJiJxEhMrKyhgAjI6OWoeHh5tWVla%2B4JzDZrO9bW5unhwcHGzz%2B%2F32np4e%2BxaDbfoHAMxmc6ijo2O0oqIiJkkSNjY2HBIRmRljMJvNyWfPnln7%2B%2FtPMMZQXl6%2B0NbW9qK2tjYcj8floaEhqKpq%2BHCkbD3PzMwYBgYG0NXV9UuusFna2kEgELAQEQ4dOvSis7PzN41Ar9dnrl27NqCNkv%2FC3bt3zy4tLVmICJxzEBFJRBQmorLFxcWCqqqq0Pj4eO3Y2JhbUZTdra2tL2pra8OJRGLHnTt3zkqS9K%2BhuHU4EhHMZnMoGo0W5OIh7nK5jjLGKq1W69vDhw8rRqMxMjc3t2t5eXnX5ORklc%2FnM%2Bfl5SWnpqa%2B0uv1K%2Fn5%2BWs6nW5NluXNd15e3ppOp1uz2WyzZ86cGQ0Gg6ZAIFCZzWZ%2FlYjokRDiuN%2Fvt7W0tMw3NTUpbrd78P79%2B%2B5gMFgRiUTKHj58WMYYQ3V19etTp05tq6Lp6Wkb5xxCiEfc7XZPM8a6FxcXTfX19a%2F1en2Gcy5qamreNjY2%2FqGq6joRZe12%2B9Tp06e3JY%2FFYgWPHz8%2Bmhvr3%2FCWlpbk%2Bvp6PmOseWVlBS6XS9GSJUkSdrs93NDQ8Oe%2BffvC%2F8fJIyMjddFo9Esi6pVleVjT2m0A8Hq9zqGhIefnjoknT544A4GAM%2FeDbxMReFNTE0pKSpKqqsaI6Pj8%2FLxVVdWM3W6PfCr5xMTE1zllXS0uLn6aSqXAGxsbodPpoNfrn6uqCs75EUVRrJFIZMfevXsXdTrdxseIE4mEPDIyUu%2F3%2B%2Btynd8yGo29RIR0Og26fv06ioqKwBgD5xzv3r27zBjrIyJIkgSHwzFZWVmp7NmzJ1ZaWpoAgGg0WqgoSvHMzIw1GAw6tvjhitFo7NPW5fv370Hd3d0oKCgA53zTQMvLy%2BVCiKuSJH0rSdLmztZytIWv5RPRD0T0Y3Fx8dzWfby6ugopHo%2F%2Fw4mcc8iyPMc5v5FOp7%2FPZrOdQohWInIC2C2EgBBigYi8Qoifs9lsv06nWyIiaFxagXg8jr8GAGxuIe7LBeWhAAAAAElFTkSuQmCC%29%7Ddiv%2Evis%2Dnetwork%20div%2Evis%2Dmanipulation%20div%2Evis%2Dbutton%2Evis%2Dnone%3Ahover%7Bbox%2Dshadow%3A1px%201px%208px%20transparent%3Bcursor%3Adefault%7Ddiv%2Evis%2Dnetwork%20div%2Evis%2Dmanipulation%20div%2Evis%2Dbutton%2Evis%2Dnone%3Aactive%7Bbox%2Dshadow%3A1px%201px%208px%20transparent%7Ddiv%2Evis%2Dnetwork%20div%2Evis%2Dmanipulation%20div%2Evis%2Dbutton%2Evis%2Dnone%7Bpadding%3A0%7Ddiv%2Evis%2Dnetwork%20div%2Evis%2Dmanipulation%20div%2Enotification%7Bmargin%3A2px%3Bfont%2Dweight%3A700%7Ddiv%2Evis%2Dnetwork%20div%2Evis%2Dmanipulation%20div%2Evis%2Dbutton%2Evis%2Dadd%7Bbackground%2Dimage%3Aurl%28data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89%2BbN%2FrXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz%2FSMBAPh%2BPDwrIsAHvgABeNMLCADATZvAMByH%2Fw%2FqQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf%2BbTAICd%2BJl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA%2Fg88wAAKCRFRHgg%2FP9eM4Ors7ONo62Dl8t6r8G%2FyJiYuP%2B5c%2BrcEAAAOF0ftH%2BLC%2BzGoA7BoBt%2FqIl7gRoXgugdfeLZrIPQLUAoOnaV%2FNw%2BH48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl%2FAV%2F1s%2BX48%2FPf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H%2FLcL%2F%2Fwd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s%2BwM%2B3zUAsGo%2BAXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93%2F%2B8%2F%2FUegJQCAZkmScQAAXkQkLlTKsz%2FHCAAARKCBKrBBG%2FTBGCzABhzBBdzBC%2FxgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD%2FphCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8%2BQ8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8%2BxdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR%2BcQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI%2BksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG%2BQh8lsKnWJAcaT4U%2BIoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr%2Bh0uhHdlR5Ol9BX0svpR%2BiX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK%2BYTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI%2BpXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q%2FpH5Z%2FYkGWcNMw09DpFGgsV%2FjvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY%2FR27iz2qqaE5QzNKM1ezUvOUZj8H45hx%2BJx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4%2FOBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up%2B6Ynr5egJ5Mb6feeb3n%2Bhx9L%2F1U%2FW36p%2FVHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm%2Beb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw%2B6TvZN9un2N%2FT0HDYfZDqsdWh1%2Bc7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc%2BLpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26%2FuNu5p7ofcn8w0nymeWTNz0MPIQ%2BBR5dE%2FC5%2BVMGvfrH5PQ0%2BBZ7XnIy9jL5FXrdewt6V3qvdh7xc%2B9j5yn%2BM%2B4zw33jLeWV%2FMN8C3yLfLT8Nvnl%2BF30N%2FI%2F9k%2F3r%2F0QCngCUBZwOJgUGBWwL7%2BHp8Ib%2BOPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo%2Bqi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt%2F87fOH4p3iC%2BN7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi%2FRNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z%2Bpn5mZ2y6xlhbL%2BxW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a%2FzYnKOZarnivN7cyzytuQN5zvn%2F%2FtEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1%2B1dT1gvWd%2B1YfqGnRs%2BFYmKrhTbF5cVf9go3HjlG4dvyr%2BZ3JS0qavEuWTPZtJm6ebeLZ5bDpaql%2BaXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO%2FPLi8ZafJzs07P1SkVPRU%2BlQ27tLdtWHX%2BG7R7ht7vPY07NXbW7z3%2FT7JvttVAVVN1WbVZftJ%2B7P3P66Jqun4lvttXa1ObXHtxwPSA%2F0HIw6217nU1R3SPVRSj9Yr60cOxx%2B%2B%2Fp3vdy0NNg1VjZzG4iNwRHnk6fcJ3%2FceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w%2B0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb%2B%2B6EHTh0kX%2Fi%2Bc7vDvOXPK4dPKy2%2BUTV7hXmq86X23qdOo8%2FpPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb%2F1tWeOT3dvfN6b%2FfF9%2FXfFt1%2Bcif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v%2B3Njv3H9qwHeg89HcR%2FcGhYPP%2FpH1jw9DBY%2BZj8uGDYbrnjg%2BOTniP3L96fynQ89kzyaeF%2F6i%2FsuuFxYvfvjV69fO0ZjRoZfyl5O%2FbXyl%2FerA6xmv28bCxh6%2ByXgzMV70VvvtwXfcdx3vo98PT%2BR8IH8o%2F2j5sfVT0Kf7kxmTk%2F8EA5jz%2FGMzLdsAAEEOaVRYdFhNTDpjb20uYWRvYmUueG1wAAAAAAA8P3hwYWNrZXQgYmVnaW49Iu%2B7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI%2FPgo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjUtYzAyMSA3OS4xNTQ5MTEsIDIwMTMvMTAvMjktMTE6NDc6MTYgICAgICAgICI%2BCiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI%2BCiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIKICAgICAgICAgICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICAgICAgICAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgICAgICAgICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgICAgICAgICAgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiCiAgICAgICAgICAgIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPHhtcDpDcmVhdG9yVG9vbD5BZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpPC94bXA6Q3JlYXRvclRvb2w%2BCiAgICAgICAgIDx4bXA6Q3JlYXRlRGF0ZT4yMDE0LTAxLTIyVDE5OjI0OjUxKzAxOjAwPC94bXA6Q3JlYXRlRGF0ZT4KICAgICAgICAgPHhtcDpNZXRhZGF0YURhdGU%2BMjAxNC0wMi0wNFQxNDo0MDoyOSswMTowMDwveG1wOk1ldGFkYXRhRGF0ZT4KICAgICAgICAgPHhtcDpNb2RpZnlEYXRlPjIwMTQtMDItMDRUMTQ6NDA6MjkrMDE6MDA8L3htcDpNb2RpZnlEYXRlPgogICAgICAgICA8ZGM6Zm9ybWF0PmltYWdlL3BuZzwvZGM6Zm9ybWF0PgogICAgICAgICA8eG1wTU06SW5zdGFuY2VJRD54bXAuaWlkOjVkNWIwNmQwLTVmMjAtOGE0NC1hMzIwLWZmMTEzMzQwNDc0YjwveG1wTU06SW5zdGFuY2VJRD4KICAgICAgICAgPHhtcE1NOkRvY3VtZW50SUQ%2BeG1wLmRpZDpFQTc2MkY5Njc0ODNFMzExOTQ4QkQxM0UyQkU3OTlBMTwveG1wTU06RG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD54bXAuZGlkOjczQjYyQUFEOTE4M0UzMTE5NDhCRDEzRTJCRTc5OUExPC94bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ%2BCiAgICAgICAgIDx4bXBNTTpIaXN0b3J5PgogICAgICAgICAgICA8cmRmOlNlcT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24%2BY3JlYXRlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOjczQjYyQUFEOTE4M0UzMTE5NDhCRDEzRTJCRTc5OUExPC9zdEV2dDppbnN0YW5jZUlEPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6d2hlbj4yMDE0LTAxLTIyVDE5OjI0OjUxKzAxOjAwPC9zdEV2dDp3aGVuPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6c29mdHdhcmVBZ2VudD5BZG9iZSBQaG90b3Nob3AgQ1M2IChXaW5kb3dzKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgPC9yZGY6bGk%2BCiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPnNhdmVkPC9zdEV2dDphY3Rpb24%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDppbnN0YW5jZUlEPnhtcC5paWQ6RUE2MEEyNEUxOTg0RTMxMUFEQUZFRkU2RUMzMzNFMDM8L3N0RXZ0Omluc3RhbmNlSUQ%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMTQtMDEtMjNUMTk6MTg6MDcrMDE6MDA8L3N0RXZ0OndoZW4%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpPC9zdEV2dDpzb2Z0d2FyZUFnZW50PgogICAgICAgICAgICAgICAgICA8c3RFdnQ6Y2hhbmdlZD4vPC9zdEV2dDpjaGFuZ2VkPgogICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24%2Bc2F2ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0Omluc3RhbmNlSUQ%2BeG1wLmlpZDo2OWVmYWE1NS01ZTI5LTIzNGUtYTUzMy0xNDkxYjM1NDNmYmE8L3N0RXZ0Omluc3RhbmNlSUQ%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMTQtMDItMDRUMTQ6NDA6MjkrMDE6MDA8L3N0RXZ0OndoZW4%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIFBob3Rvc2hvcCBDQyAoV2luZG93cyk8L3N0RXZ0OnNvZnR3YXJlQWdlbnQ%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDpjaGFuZ2VkPi88L3N0RXZ0OmNoYW5nZWQ%2BCiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5jb252ZXJ0ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnBhcmFtZXRlcnM%2BZnJvbSBhcHBsaWNhdGlvbi92bmQuYWRvYmUucGhvdG9zaG9wIHRvIGltYWdlL3BuZzwvc3RFdnQ6cGFyYW1ldGVycz4KICAgICAgICAgICAgICAgPC9yZGY6bGk%2BCiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPmRlcml2ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnBhcmFtZXRlcnM%2BY29udmVydGVkIGZyb20gYXBwbGljYXRpb24vdm5kLmFkb2JlLnBob3Rvc2hvcCB0byBpbWFnZS9wbmc8L3N0RXZ0OnBhcmFtZXRlcnM%2BCiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5zYXZlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOjVkNWIwNmQwLTVmMjAtOGE0NC1hMzIwLWZmMTEzMzQwNDc0Yjwvc3RFdnQ6aW5zdGFuY2VJRD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OndoZW4%2BMjAxNC0wMi0wNFQxNDo0MDoyOSswMTowMDwvc3RFdnQ6d2hlbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnNvZnR3YXJlQWdlbnQ%2BQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmNoYW5nZWQ%2BLzwvc3RFdnQ6Y2hhbmdlZD4KICAgICAgICAgICAgICAgPC9yZGY6bGk%2BCiAgICAgICAgICAgIDwvcmRmOlNlcT4KICAgICAgICAgPC94bXBNTTpIaXN0b3J5PgogICAgICAgICA8eG1wTU06RGVyaXZlZEZyb20gcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICA8c3RSZWY6aW5zdGFuY2VJRD54bXAuaWlkOjY5ZWZhYTU1LTVlMjktMjM0ZS1hNTMzLTE0OTFiMzU0M2ZiYTwvc3RSZWY6aW5zdGFuY2VJRD4KICAgICAgICAgICAgPHN0UmVmOmRvY3VtZW50SUQ%2BeG1wLmRpZDpFQTc2MkY5Njc0ODNFMzExOTQ4QkQxM0UyQkU3OTlBMTwvc3RSZWY6ZG9jdW1lbnRJRD4KICAgICAgICAgICAgPHN0UmVmOm9yaWdpbmFsRG9jdW1lbnRJRD54bXAuZGlkOjczQjYyQUFEOTE4M0UzMTE5NDhCRDEzRTJCRTc5OUExPC9zdFJlZjpvcmlnaW5hbERvY3VtZW50SUQ%2BCiAgICAgICAgIDwveG1wTU06RGVyaXZlZEZyb20%2BCiAgICAgICAgIDxwaG90b3Nob3A6Q29sb3JNb2RlPjM8L3Bob3Rvc2hvcDpDb2xvck1vZGU%2BCiAgICAgICAgIDxwaG90b3Nob3A6SUNDUHJvZmlsZT5zUkdCIElFQzYxOTY2LTIuMTwvcGhvdG9zaG9wOklDQ1Byb2ZpbGU%2BCiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24%2BCiAgICAgICAgIDx0aWZmOlhSZXNvbHV0aW9uPjcyMDA5MC8xMDAwMDwvdGlmZjpYUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6WVJlc29sdXRpb24%2BNzIwMDkwLzEwMDAwPC90aWZmOllSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpSZXNvbHV0aW9uVW5pdD4yPC90aWZmOlJlc29sdXRpb25Vbml0PgogICAgICAgICA8ZXhpZjpDb2xvclNwYWNlPjE8L2V4aWY6Q29sb3JTcGFjZT4KICAgICAgICAgPGV4aWY6UGl4ZWxYRGltZW5zaW9uPjI0PC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6UGl4ZWxZRGltZW5zaW9uPjI0PC9leGlmOlBpeGVsWURpbWVuc2lvbj4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24%2BCiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE%2BCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgCjw%2FeHBhY2tldCBlbmQ9InciPz5WKqp9AAAAIGNIUk0AAHolAACAgwAA%2Bf8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAYXSURBVHjafFZtUFTXGX7e9z27sveuMCwYV8ElrA7YSFYHtJUPkaaI0aRqG8wP00zUzljDINNSA%2F2ROtpO24SxnahlxjYd7SSjmUkymcxYlDhQPzHGisEVp8HwYWCVVVgEsrsuLnL74%2B5uqTF9Z%2B7cO%2Fd8PO95zvO851BlZSV0XQcAMDOYGQBARDhX3JRmMDYZwLPMWAzGHACYIgwS46oBNBNwtOL8CwE8EkSEUCgE2rJlC2w2G4go8Zwo%2FbMDgnoG6gxLfAAAYvPDMCCszKTAMIAGAhrWnf15AAAMwwARIRKJgDZv3gy73Q4iAjPjxIr9VVOMRhbAYKB8zvrO0llrfEsdKwLZek6YAPSFvtSu3GtLawu0ZJ6625SHGBQB1T88t6MxvopgMAjaunUrdF0HM%2BP4yv27DMYeJmB1RqW3Jnf3tQX2p0L4P9EXuqEd7PmDp%2BXuMU9sRbvXnnt1TxxACgoKYLVacbzsQDUJGkSATe6qi28uPtzusM6Kxie6NHLGUX3lxVUNX9StPHnn4wy3njuUYcu6n2pNi66avcEXnByP%2Fnv8aiaIyrqz2gO5A9%2B9FI1GIfn5%2BWhZdTAdjFMkwMvZOy7uWnTAOz3L4Yk71m3t69fdfTDoUGTBeHTUfiHQ6lo7Z2OXJvpDAChKe%2BaOCdKRKWxZ2%2B1qb3yyd3GYmRkQ7GQBVs99wfv6on3eR2k4PdTkDEbH7IuS8%2Fsvld%2F561PJS%2FpDk1%2Fbzwx94pze7xc5v%2FH%2BYPY6r5BAkdrJzODTK46lE6PeYEJt7u%2B8j%2BOZwCBiEAgAoNgKJoEQf6PvNvdrXgtZoNhSf7q0KZ3B2AQmVMze0Jmt54S%2FDcDCVig2NcvEUGxJAE4Pl%2BYOr0iv6BRSIPAmBeBZAmHlE2sH4p1uhrq1s0MnnEQMBsf8wRASAICQQCCITN1X7%2FsOuc0kgOVp3%2FfPs2WHv%2BcoG7gQOJUnLGsUCTxEjPzUohEA%2BNfIWUdtx0%2BefzA1kSSkIGyBAQNCKgHAEBAJ3u79U7kiAcWoem%2Fgb5Fd33nrH3kp%2BSMWtuAB%2BGllMJxMjCx9QRgA3uiqL5kwHiTlpxb3smlfMDGYGPP1hcMAkJvs8ScpfdJspdj%2BMK6Pf%2B5%2Bu29vyb4lR4%2BBGEziVESAkEpw6Av1OhUpHCz4qOXbzFWz4Ncdj%2Fv%2Fo08Lt92ODDgZDCEFJYoUGH4mzugP92puPTf0pD3H7wvfdFZdqSxnMtWjoGAAmG9fOLxjwesdjT2%2FXzIQ7ks3sycYMSEwGHNtWf5bkX5NkYCJBxUBXiGV0XHvosOt54Zey33j%2FK%2B8P33%2B%2BvjnbiGJbbLE%2BJ9SANAb6nJ2B79wcUwETAwQQ7fMjPzMvfP8ja87HUIKMOiaAqMZhrGmLdAy78eZrwwsTS0eObTs%2BIdtgVanxBUExqGbb5VzrIISGIoUXsmqbgEhJldCQWqRf27SvPAn%2Fo8XmgLhZsUkR4ll37mhk3n94Z4OlzY%2F7NLcYZfm7o1z2zT4vsvUNSXqprBCkmiTFbPX90%2Ffh8GIT2sf%2BzTPdDMf4dVnNg4z%2BE0ixsGeBs9jd5ViSgLHjCb%2FpeaR%2BMD3d4%2FZJg2llyuG2Vwy7QWAs8PNnn1f7vkGSGxAzE6mk%2Bkxkx%2Fp%2F4unffSCR0hAoL1EBCYiPNdWNcwkNQTCR7feWX6g%2B7f%2FA7I8rcw%2FU6UEe0Ndrhc%2FW7mtL9ztmqlSgstSS%2FzTJ28dalpOpkRryrwbhwBACgsLMWPGDOT4ll3qyeqAkJTdCF7P%2FCrUY%2FGkLL1rE%2B2hTbSH8%2B0Lb%2FWEuhzhyaA905blf9Vd%2F895WnZwLHrPevir%2FcvOB1oLYpTtLrm6oYGIMDExAaqtrUVKSgqYGSKCk0WHq5ikkWEWtNL0imv5qUW%2BRclLRjJsrhBAuH1%2FQL8R7HR4xy5nescuP23E6hOA6mLv%2Bsb4uTw6Ogqqq6uDpmkQkcStorX4XRcM1FjZ%2BkvFFjCJKU1WpkNJJUqIMtX1RyLeX3JtQ0JRhmGYZ%2FL27duRnJycuFGISOJ9pqh5lrB6iYgqGOxRrOaa54DcZmKvkJxk8JHC9rKh%2BKVhOsD4%2BDj%2BMwADIf8n5m4xGwAAAABJRU5ErkJggg%3D%3D%29%7Ddiv%2Evis%2Dnetwork%20div%2Evis%2Dedit%2Dmode%20div%2Evis%2Dbutton%2Evis%2Dedit%2Cdiv%2Evis%2Dnetwork%20div%2Evis%2Dmanipulation%20div%2Evis%2Dbutton%2Evis%2Dedit%7Bbackground%2Dimage%3Aurl%28data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89%2BbN%2FrXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz%2FSMBAPh%2BPDwrIsAHvgABeNMLCADATZvAMByH%2Fw%2FqQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf%2BbTAICd%2BJl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA%2Fg88wAAKCRFRHgg%2FP9eM4Ors7ONo62Dl8t6r8G%2FyJiYuP%2B5c%2BrcEAAAOF0ftH%2BLC%2BzGoA7BoBt%2FqIl7gRoXgugdfeLZrIPQLUAoOnaV%2FNw%2BH48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl%2FAV%2F1s%2BX48%2FPf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H%2FLcL%2F%2Fwd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s%2BwM%2B3zUAsGo%2BAXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93%2F%2B8%2F%2FUegJQCAZkmScQAAXkQkLlTKsz%2FHCAAARKCBKrBBG%2FTBGCzABhzBBdzBC%2FxgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD%2FphCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8%2BQ8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8%2BxdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR%2BcQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI%2BksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG%2BQh8lsKnWJAcaT4U%2BIoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr%2Bh0uhHdlR5Ol9BX0svpR%2BiX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK%2BYTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI%2BpXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q%2FpH5Z%2FYkGWcNMw09DpFGgsV%2FjvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY%2FR27iz2qqaE5QzNKM1ezUvOUZj8H45hx%2BJx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4%2FOBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up%2B6Ynr5egJ5Mb6feeb3n%2Bhx9L%2F1U%2FW36p%2FVHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm%2Beb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw%2B6TvZN9un2N%2FT0HDYfZDqsdWh1%2Bc7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc%2BLpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26%2FuNu5p7ofcn8w0nymeWTNz0MPIQ%2BBR5dE%2FC5%2BVMGvfrH5PQ0%2BBZ7XnIy9jL5FXrdewt6V3qvdh7xc%2B9j5yn%2BM%2B4zw33jLeWV%2FMN8C3yLfLT8Nvnl%2BF30N%2FI%2F9k%2F3r%2F0QCngCUBZwOJgUGBWwL7%2BHp8Ib%2BOPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo%2Bqi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt%2F87fOH4p3iC%2BN7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi%2FRNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z%2Bpn5mZ2y6xlhbL%2BxW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a%2FzYnKOZarnivN7cyzytuQN5zvn%2F%2FtEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1%2B1dT1gvWd%2B1YfqGnRs%2BFYmKrhTbF5cVf9go3HjlG4dvyr%2BZ3JS0qavEuWTPZtJm6ebeLZ5bDpaql%2BaXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO%2FPLi8ZafJzs07P1SkVPRU%2BlQ27tLdtWHX%2BG7R7ht7vPY07NXbW7z3%2FT7JvttVAVVN1WbVZftJ%2B7P3P66Jqun4lvttXa1ObXHtxwPSA%2F0HIw6217nU1R3SPVRSj9Yr60cOxx%2B%2B%2Fp3vdy0NNg1VjZzG4iNwRHnk6fcJ3%2FceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w%2B0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb%2B%2B6EHTh0kX%2Fi%2Bc7vDvOXPK4dPKy2%2BUTV7hXmq86X23qdOo8%2FpPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb%2F1tWeOT3dvfN6b%2FfF9%2FXfFt1%2Bcif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v%2B3Njv3H9qwHeg89HcR%2FcGhYPP%2FpH1jw9DBY%2BZj8uGDYbrnjg%2BOTniP3L96fynQ89kzyaeF%2F6i%2FsuuFxYvfvjV69fO0ZjRoZfyl5O%2FbXyl%2FerA6xmv28bCxh6%2ByXgzMV70VvvtwXfcdx3vo98PT%2BR8IH8o%2F2j5sfVT0Kf7kxmTk%2F8EA5jz%2FGMzLdsAAEEOaVRYdFhNTDpjb20uYWRvYmUueG1wAAAAAAA8P3hwYWNrZXQgYmVnaW49Iu%2B7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI%2FPgo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjUtYzAyMSA3OS4xNTQ5MTEsIDIwMTMvMTAvMjktMTE6NDc6MTYgICAgICAgICI%2BCiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI%2BCiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIKICAgICAgICAgICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICAgICAgICAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgICAgICAgICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgICAgICAgICAgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiCiAgICAgICAgICAgIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPHhtcDpDcmVhdG9yVG9vbD5BZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpPC94bXA6Q3JlYXRvclRvb2w%2BCiAgICAgICAgIDx4bXA6Q3JlYXRlRGF0ZT4yMDE0LTAxLTIyVDE5OjI0OjUxKzAxOjAwPC94bXA6Q3JlYXRlRGF0ZT4KICAgICAgICAgPHhtcDpNZXRhZGF0YURhdGU%2BMjAxNC0wMi0wNVQxNDoxMjoyNSswMTowMDwveG1wOk1ldGFkYXRhRGF0ZT4KICAgICAgICAgPHhtcDpNb2RpZnlEYXRlPjIwMTQtMDItMDVUMTQ6MTI6MjUrMDE6MDA8L3htcDpNb2RpZnlEYXRlPgogICAgICAgICA8ZGM6Zm9ybWF0PmltYWdlL3BuZzwvZGM6Zm9ybWF0PgogICAgICAgICA8eG1wTU06SW5zdGFuY2VJRD54bXAuaWlkOjY5OTM3ZGZjLTJjNzQtYTU0YS05OTIzLTQyMmZhNDNkMjljNDwveG1wTU06SW5zdGFuY2VJRD4KICAgICAgICAgPHhtcE1NOkRvY3VtZW50SUQ%2BeG1wLmRpZDpFQTc2MkY5Njc0ODNFMzExOTQ4QkQxM0UyQkU3OTlBMTwveG1wTU06RG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD54bXAuZGlkOjczQjYyQUFEOTE4M0UzMTE5NDhCRDEzRTJCRTc5OUExPC94bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ%2BCiAgICAgICAgIDx4bXBNTTpIaXN0b3J5PgogICAgICAgICAgICA8cmRmOlNlcT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24%2BY3JlYXRlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOjczQjYyQUFEOTE4M0UzMTE5NDhCRDEzRTJCRTc5OUExPC9zdEV2dDppbnN0YW5jZUlEPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6d2hlbj4yMDE0LTAxLTIyVDE5OjI0OjUxKzAxOjAwPC9zdEV2dDp3aGVuPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6c29mdHdhcmVBZ2VudD5BZG9iZSBQaG90b3Nob3AgQ1M2IChXaW5kb3dzKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgPC9yZGY6bGk%2BCiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPnNhdmVkPC9zdEV2dDphY3Rpb24%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDppbnN0YW5jZUlEPnhtcC5paWQ6RUE2MEEyNEUxOTg0RTMxMUFEQUZFRkU2RUMzMzNFMDM8L3N0RXZ0Omluc3RhbmNlSUQ%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMTQtMDEtMjNUMTk6MTg6MDcrMDE6MDA8L3N0RXZ0OndoZW4%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpPC9zdEV2dDpzb2Z0d2FyZUFnZW50PgogICAgICAgICAgICAgICAgICA8c3RFdnQ6Y2hhbmdlZD4vPC9zdEV2dDpjaGFuZ2VkPgogICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24%2Bc2F2ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0Omluc3RhbmNlSUQ%2BeG1wLmlpZDozOWNhNzE5ZC03YzNlLTUyNGEtYmY1NS03NGVmMmM1MzE0YTc8L3N0RXZ0Omluc3RhbmNlSUQ%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMTQtMDItMDVUMTQ6MTI6MjUrMDE6MDA8L3N0RXZ0OndoZW4%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIFBob3Rvc2hvcCBDQyAoV2luZG93cyk8L3N0RXZ0OnNvZnR3YXJlQWdlbnQ%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDpjaGFuZ2VkPi88L3N0RXZ0OmNoYW5nZWQ%2BCiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5jb252ZXJ0ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnBhcmFtZXRlcnM%2BZnJvbSBhcHBsaWNhdGlvbi92bmQuYWRvYmUucGhvdG9zaG9wIHRvIGltYWdlL3BuZzwvc3RFdnQ6cGFyYW1ldGVycz4KICAgICAgICAgICAgICAgPC9yZGY6bGk%2BCiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPmRlcml2ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnBhcmFtZXRlcnM%2BY29udmVydGVkIGZyb20gYXBwbGljYXRpb24vdm5kLmFkb2JlLnBob3Rvc2hvcCB0byBpbWFnZS9wbmc8L3N0RXZ0OnBhcmFtZXRlcnM%2BCiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5zYXZlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOjY5OTM3ZGZjLTJjNzQtYTU0YS05OTIzLTQyMmZhNDNkMjljNDwvc3RFdnQ6aW5zdGFuY2VJRD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OndoZW4%2BMjAxNC0wMi0wNVQxNDoxMjoyNSswMTowMDwvc3RFdnQ6d2hlbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnNvZnR3YXJlQWdlbnQ%2BQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmNoYW5nZWQ%2BLzwvc3RFdnQ6Y2hhbmdlZD4KICAgICAgICAgICAgICAgPC9yZGY6bGk%2BCiAgICAgICAgICAgIDwvcmRmOlNlcT4KICAgICAgICAgPC94bXBNTTpIaXN0b3J5PgogICAgICAgICA8eG1wTU06RGVyaXZlZEZyb20gcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICA8c3RSZWY6aW5zdGFuY2VJRD54bXAuaWlkOjM5Y2E3MTlkLTdjM2UtNTI0YS1iZjU1LTc0ZWYyYzUzMTRhNzwvc3RSZWY6aW5zdGFuY2VJRD4KICAgICAgICAgICAgPHN0UmVmOmRvY3VtZW50SUQ%2BeG1wLmRpZDpFQTc2MkY5Njc0ODNFMzExOTQ4QkQxM0UyQkU3OTlBMTwvc3RSZWY6ZG9jdW1lbnRJRD4KICAgICAgICAgICAgPHN0UmVmOm9yaWdpbmFsRG9jdW1lbnRJRD54bXAuZGlkOjczQjYyQUFEOTE4M0UzMTE5NDhCRDEzRTJCRTc5OUExPC9zdFJlZjpvcmlnaW5hbERvY3VtZW50SUQ%2BCiAgICAgICAgIDwveG1wTU06RGVyaXZlZEZyb20%2BCiAgICAgICAgIDxwaG90b3Nob3A6Q29sb3JNb2RlPjM8L3Bob3Rvc2hvcDpDb2xvck1vZGU%2BCiAgICAgICAgIDxwaG90b3Nob3A6SUNDUHJvZmlsZT5zUkdCIElFQzYxOTY2LTIuMTwvcGhvdG9zaG9wOklDQ1Byb2ZpbGU%2BCiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24%2BCiAgICAgICAgIDx0aWZmOlhSZXNvbHV0aW9uPjcyMDA5MC8xMDAwMDwvdGlmZjpYUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6WVJlc29sdXRpb24%2BNzIwMDkwLzEwMDAwPC90aWZmOllSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpSZXNvbHV0aW9uVW5pdD4yPC90aWZmOlJlc29sdXRpb25Vbml0PgogICAgICAgICA8ZXhpZjpDb2xvclNwYWNlPjE8L2V4aWY6Q29sb3JTcGFjZT4KICAgICAgICAgPGV4aWY6UGl4ZWxYRGltZW5zaW9uPjI0PC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6UGl4ZWxZRGltZW5zaW9uPjI0PC9leGlmOlBpeGVsWURpbWVuc2lvbj4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24%2BCiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE%2BCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgCjw%2FeHBhY2tldCBlbmQ9InciPz4ykninAAAAIGNIUk0AAHolAACAgwAA%2Bf8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAYpSURBVHjafFZtTFvnFX7Oea%2BNudiY2Hwam4CBlgQwXdKREDKUoYg0jbRJ29RJ2VZ1mjRFUxSpA3VTfkzJfkQbS7spU6rtx5Z2UtppScjaHxvLuiatWi2jLEoMIUDCh23g2gbj7%2BtPuPvhOurawPl1dc99n%2Bc55z33fV46ceIEZFkGADAziAgAQERoe%2F9ZK4GPM%2FAcgbsIXAcABCgMvkfAqAa89eDoJyF8LogIqqqChoaGYDAYHr8kItS8uc8iIH6iAa9IkAo5EAQX8pqmgUVBCBggYFgDhv0%2FGAsBgKZpICJkMhnQ4OAgZFkGEYGZUXmp%2B0cS%2BCKBwWA0DVRPOg5Zl2q6zaHyJlnVAMQXVTkwHrUqH0Xsvn%2BtdQAAMQDgpPLS2MViFY8rkGUZzIzaS%2Ft%2FxqCzGggtz9e697zsnKhoLUtim4jOq%2FLE6x7X0nsh16dEZ5a%2FO3a2SCAOHjwInU6Hujd6ThJ4mCDQ%2Bb2G232v7v6vwarPbQn8MGlMr%2BX0kpE3Wr5Zt5hL5HPhqYSdQIfKJ%2ByhxDPKWC6Xg%2Bjt7UXD5b5KBt1kCHS85Ljd8%2FOn3NupfnhFaZj4rWff1B98B1R%2FhnUmKd36bdtCNl4g0en4edNE%2FcXwLq8qMTMIPAQwmo%2FWuHvObA8%2B9c58k%2FdKtD0TyZWXN5YGA7ej7epKxspM%2F%2F7SoNOdWc%2FJyq2wiwhDzPxT8cP0jys3VMM7OmL0%2F77zn4Ydui3b8uiK0jD7RrA77c9Wd57cefPpF%2B2T6bWsFPWkaiPTCWvTsZpHFU%2BXrS%2B8G3AR08F6X%2B1FJvBxQQzHQOWk2SmrW4FPX%2FU2LVwPuDZj%2BfJKl2khPpeyAqA9rzR%2FYqwuiWXX8taN%2FCabGkrVuq9YJlkQQDjOAJ5jAhz9Vt9W4N5%2FrNp8I%2BvtMV%2FaZm4zLnUNNt0urdYnF68HWoJj4Wo1mLGUNRr8LEgDgNqeCh8xQIKOsgC7iAjVe83rT9zQa8uNM28u70kspessu8q8zq%2FV3NcZpVzb9%2B0zmVhOvvvrhaMVzrJg0zeq7xMVCCwdpnWSGBqjUyJwLTFgbvxie3w31uoWR1Y74r60rdxZqrR8q85t2W2MGCp12bm%2FKC3hyaSTiMhxuGrKcahqpbjOaDOoEhOEoFqJQCCJvqA85I6bfTdDjQlf2lbxVNlS6wt19yy7jRHZZlDnrinNj%2F6sHMhnNw2Ogco7O79e5fm%2FxQywRBBCEAuwn4gQ96bkYj4Vyuq9N1Z3Bj4Od5bs0MXt%2FdZZ21ctiqFan174q985P%2BLfp%2BU1g7XDON%2F1ctP458WlVjLyJhOISZE0wM0S1QfuRC3lTjkJAKKEtNC9eIOhSh9xHLZOJRZTFuXDsEoStLkR%2F768ummsaJG9Pb9oe%2B9J%2BxaeSVokiQDSJphAo5uaBuWjiKP4QTqS1cUWU7ayesN66wu22frD1vmVW6GW6T8u9eVjGyZzs%2Bw78Nqu0a2mbvVu1KEJQAgeZRL0liQYyx%2BGOmKeQpu0rMYsAJPNEFGD2dLodLIy6c9Ys7G8yeSUl3tf2%2FX3rcBVJSOv34l3sCBogi7z1LH%2FrBHjl4IJ93%2FncQFAnjeImJD0Z8zuCwu9q3djDXqTlAKID5xv%2B9t2R8n8VcUFBljQ8Gyfe40BYBM4DwDLt8Kue79ZcFkbzfEdbUbv%2BoN4c9KTtsfm1MbYQqqh%2B2zrVZYKs%2F7Ef%2Bbyimt1POYiJhDhPBFBIiIEXhxfs7%2FdfYoIF%2BauBfYTE%2Fpebx%2FV8hqBP2ODvD34yvuh%2FWCAmU75Bx6sIgaI%2Fv5%2B6PV6JLqUsYr7dpDAoehs0h73pHTWrvKgThYbRSt9UmSjef3MpaUvBz4O72UmADgTOPJguGiZor%2B%2FHyUlJWBmJFz%2BD8xTtlUiOpbwpmrmrweeSXrT%2Bg11k4SBN3RGKUcAVCVdFhyP1nreDbY%2F%2FNPyEXUlU%2FPp4XYycGT6V0Ux2WwWdO7cOZSWlkII8diX7SPPNgDaKdbxoNAxwATBAEkEEgSWCEQAqPAMwqvMdCEwMO0tVqZpWsGTT58%2BDaPR%2BPhGIYQAAAgh0P7B3ioW%2FB0iGiCGiwXbCuOHFSJys6AbYFye2T%2BxWhT3WYJEIoH%2FDQBMw3kes8OJPgAAAABJRU5ErkJggg%3D%3D%29%7Ddiv%2Evis%2Dnetwork%20div%2Evis%2Dedit%2Dmode%20div%2Evis%2Dbutton%2Evis%2Dedit%2Evis%2Dedit%2Dmode%7Bbackground%2Dcolor%3A%23fcfcfc%3Bborder%3A1px%20solid%20%23ccc%7Ddiv%2Evis%2Dnetwork%20div%2Evis%2Dmanipulation%20div%2Evis%2Dbutton%2Evis%2Dconnect%7Bbackground%2Dimage%3Aurl%28data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89%2BbN%2FrXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz%2FSMBAPh%2BPDwrIsAHvgABeNMLCADATZvAMByH%2Fw%2FqQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf%2BbTAICd%2BJl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA%2Fg88wAAKCRFRHgg%2FP9eM4Ors7ONo62Dl8t6r8G%2FyJiYuP%2B5c%2BrcEAAAOF0ftH%2BLC%2BzGoA7BoBt%2FqIl7gRoXgugdfeLZrIPQLUAoOnaV%2FNw%2BH48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl%2FAV%2F1s%2BX48%2FPf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H%2FLcL%2F%2Fwd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s%2BwM%2B3zUAsGo%2BAXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93%2F%2B8%2F%2FUegJQCAZkmScQAAXkQkLlTKsz%2FHCAAARKCBKrBBG%2FTBGCzABhzBBdzBC%2FxgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD%2FphCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8%2BQ8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8%2BxdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR%2BcQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI%2BksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG%2BQh8lsKnWJAcaT4U%2BIoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr%2Bh0uhHdlR5Ol9BX0svpR%2BiX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK%2BYTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI%2BpXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q%2FpH5Z%2FYkGWcNMw09DpFGgsV%2FjvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY%2FR27iz2qqaE5QzNKM1ezUvOUZj8H45hx%2BJx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4%2FOBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up%2B6Ynr5egJ5Mb6feeb3n%2Bhx9L%2F1U%2FW36p%2FVHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm%2Beb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw%2B6TvZN9un2N%2FT0HDYfZDqsdWh1%2Bc7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc%2BLpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26%2FuNu5p7ofcn8w0nymeWTNz0MPIQ%2BBR5dE%2FC5%2BVMGvfrH5PQ0%2BBZ7XnIy9jL5FXrdewt6V3qvdh7xc%2B9j5yn%2BM%2B4zw33jLeWV%2FMN8C3yLfLT8Nvnl%2BF30N%2FI%2F9k%2F3r%2F0QCngCUBZwOJgUGBWwL7%2BHp8Ib%2BOPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo%2Bqi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt%2F87fOH4p3iC%2BN7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi%2FRNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z%2Bpn5mZ2y6xlhbL%2BxW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a%2FzYnKOZarnivN7cyzytuQN5zvn%2F%2FtEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1%2B1dT1gvWd%2B1YfqGnRs%2BFYmKrhTbF5cVf9go3HjlG4dvyr%2BZ3JS0qavEuWTPZtJm6ebeLZ5bDpaql%2BaXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO%2FPLi8ZafJzs07P1SkVPRU%2BlQ27tLdtWHX%2BG7R7ht7vPY07NXbW7z3%2FT7JvttVAVVN1WbVZftJ%2B7P3P66Jqun4lvttXa1ObXHtxwPSA%2F0HIw6217nU1R3SPVRSj9Yr60cOxx%2B%2B%2Fp3vdy0NNg1VjZzG4iNwRHnk6fcJ3%2FceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w%2B0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb%2B%2B6EHTh0kX%2Fi%2Bc7vDvOXPK4dPKy2%2BUTV7hXmq86X23qdOo8%2FpPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb%2F1tWeOT3dvfN6b%2FfF9%2FXfFt1%2Bcif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v%2B3Njv3H9qwHeg89HcR%2FcGhYPP%2FpH1jw9DBY%2BZj8uGDYbrnjg%2BOTniP3L96fynQ89kzyaeF%2F6i%2FsuuFxYvfvjV69fO0ZjRoZfyl5O%2FbXyl%2FerA6xmv28bCxh6%2ByXgzMV70VvvtwXfcdx3vo98PT%2BR8IH8o%2F2j5sfVT0Kf7kxmTk%2F8EA5jz%2FGMzLdsAAEEOaVRYdFhNTDpjb20uYWRvYmUueG1wAAAAAAA8P3hwYWNrZXQgYmVnaW49Iu%2B7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI%2FPgo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjUtYzAyMSA3OS4xNTQ5MTEsIDIwMTMvMTAvMjktMTE6NDc6MTYgICAgICAgICI%2BCiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI%2BCiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIKICAgICAgICAgICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICAgICAgICAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgICAgICAgICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgICAgICAgICAgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiCiAgICAgICAgICAgIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPHhtcDpDcmVhdG9yVG9vbD5BZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpPC94bXA6Q3JlYXRvclRvb2w%2BCiAgICAgICAgIDx4bXA6Q3JlYXRlRGF0ZT4yMDE0LTAxLTIyVDE5OjI0OjUxKzAxOjAwPC94bXA6Q3JlYXRlRGF0ZT4KICAgICAgICAgPHhtcDpNZXRhZGF0YURhdGU%2BMjAxNC0wMi0wNFQxNDozODo1NyswMTowMDwveG1wOk1ldGFkYXRhRGF0ZT4KICAgICAgICAgPHhtcDpNb2RpZnlEYXRlPjIwMTQtMDItMDRUMTQ6Mzg6NTcrMDE6MDA8L3htcDpNb2RpZnlEYXRlPgogICAgICAgICA8ZGM6Zm9ybWF0PmltYWdlL3BuZzwvZGM6Zm9ybWF0PgogICAgICAgICA8eG1wTU06SW5zdGFuY2VJRD54bXAuaWlkOjlmYjUwMDU0LWE3ODEtMWQ0OC05ZTllLTU2ZWQ5YzhlYjdjNjwveG1wTU06SW5zdGFuY2VJRD4KICAgICAgICAgPHhtcE1NOkRvY3VtZW50SUQ%2BeG1wLmRpZDpFQTc2MkY5Njc0ODNFMzExOTQ4QkQxM0UyQkU3OTlBMTwveG1wTU06RG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD54bXAuZGlkOjczQjYyQUFEOTE4M0UzMTE5NDhCRDEzRTJCRTc5OUExPC94bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ%2BCiAgICAgICAgIDx4bXBNTTpIaXN0b3J5PgogICAgICAgICAgICA8cmRmOlNlcT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24%2BY3JlYXRlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOjczQjYyQUFEOTE4M0UzMTE5NDhCRDEzRTJCRTc5OUExPC9zdEV2dDppbnN0YW5jZUlEPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6d2hlbj4yMDE0LTAxLTIyVDE5OjI0OjUxKzAxOjAwPC9zdEV2dDp3aGVuPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6c29mdHdhcmVBZ2VudD5BZG9iZSBQaG90b3Nob3AgQ1M2IChXaW5kb3dzKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgPC9yZGY6bGk%2BCiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPnNhdmVkPC9zdEV2dDphY3Rpb24%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDppbnN0YW5jZUlEPnhtcC5paWQ6RUE2MEEyNEUxOTg0RTMxMUFEQUZFRkU2RUMzMzNFMDM8L3N0RXZ0Omluc3RhbmNlSUQ%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMTQtMDEtMjNUMTk6MTg6MDcrMDE6MDA8L3N0RXZ0OndoZW4%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpPC9zdEV2dDpzb2Z0d2FyZUFnZW50PgogICAgICAgICAgICAgICAgICA8c3RFdnQ6Y2hhbmdlZD4vPC9zdEV2dDpjaGFuZ2VkPgogICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24%2Bc2F2ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0Omluc3RhbmNlSUQ%2BeG1wLmlpZDo3ZWRhMjI0MC0yYTQxLTNlNDQtYWM2My1iNzNiYTE5OWI3Y2E8L3N0RXZ0Omluc3RhbmNlSUQ%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMTQtMDItMDRUMTQ6Mzg6NTcrMDE6MDA8L3N0RXZ0OndoZW4%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIFBob3Rvc2hvcCBDQyAoV2luZG93cyk8L3N0RXZ0OnNvZnR3YXJlQWdlbnQ%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDpjaGFuZ2VkPi88L3N0RXZ0OmNoYW5nZWQ%2BCiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5jb252ZXJ0ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnBhcmFtZXRlcnM%2BZnJvbSBhcHBsaWNhdGlvbi92bmQuYWRvYmUucGhvdG9zaG9wIHRvIGltYWdlL3BuZzwvc3RFdnQ6cGFyYW1ldGVycz4KICAgICAgICAgICAgICAgPC9yZGY6bGk%2BCiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPmRlcml2ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnBhcmFtZXRlcnM%2BY29udmVydGVkIGZyb20gYXBwbGljYXRpb24vdm5kLmFkb2JlLnBob3Rvc2hvcCB0byBpbWFnZS9wbmc8L3N0RXZ0OnBhcmFtZXRlcnM%2BCiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5zYXZlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOjlmYjUwMDU0LWE3ODEtMWQ0OC05ZTllLTU2ZWQ5YzhlYjdjNjwvc3RFdnQ6aW5zdGFuY2VJRD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OndoZW4%2BMjAxNC0wMi0wNFQxNDozODo1NyswMTowMDwvc3RFdnQ6d2hlbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnNvZnR3YXJlQWdlbnQ%2BQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmNoYW5nZWQ%2BLzwvc3RFdnQ6Y2hhbmdlZD4KICAgICAgICAgICAgICAgPC9yZGY6bGk%2BCiAgICAgICAgICAgIDwvcmRmOlNlcT4KICAgICAgICAgPC94bXBNTTpIaXN0b3J5PgogICAgICAgICA8eG1wTU06RGVyaXZlZEZyb20gcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICA8c3RSZWY6aW5zdGFuY2VJRD54bXAuaWlkOjdlZGEyMjQwLTJhNDEtM2U0NC1hYzYzLWI3M2JhMTk5YjdjYTwvc3RSZWY6aW5zdGFuY2VJRD4KICAgICAgICAgICAgPHN0UmVmOmRvY3VtZW50SUQ%2BeG1wLmRpZDpFQTc2MkY5Njc0ODNFMzExOTQ4QkQxM0UyQkU3OTlBMTwvc3RSZWY6ZG9jdW1lbnRJRD4KICAgICAgICAgICAgPHN0UmVmOm9yaWdpbmFsRG9jdW1lbnRJRD54bXAuZGlkOjczQjYyQUFEOTE4M0UzMTE5NDhCRDEzRTJCRTc5OUExPC9zdFJlZjpvcmlnaW5hbERvY3VtZW50SUQ%2BCiAgICAgICAgIDwveG1wTU06RGVyaXZlZEZyb20%2BCiAgICAgICAgIDxwaG90b3Nob3A6Q29sb3JNb2RlPjM8L3Bob3Rvc2hvcDpDb2xvck1vZGU%2BCiAgICAgICAgIDxwaG90b3Nob3A6SUNDUHJvZmlsZT5zUkdCIElFQzYxOTY2LTIuMTwvcGhvdG9zaG9wOklDQ1Byb2ZpbGU%2BCiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24%2BCiAgICAgICAgIDx0aWZmOlhSZXNvbHV0aW9uPjcyMDA5MC8xMDAwMDwvdGlmZjpYUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6WVJlc29sdXRpb24%2BNzIwMDkwLzEwMDAwPC90aWZmOllSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpSZXNvbHV0aW9uVW5pdD4yPC90aWZmOlJlc29sdXRpb25Vbml0PgogICAgICAgICA8ZXhpZjpDb2xvclNwYWNlPjE8L2V4aWY6Q29sb3JTcGFjZT4KICAgICAgICAgPGV4aWY6UGl4ZWxYRGltZW5zaW9uPjI0PC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6UGl4ZWxZRGltZW5zaW9uPjI0PC9leGlmOlBpeGVsWURpbWVuc2lvbj4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24%2BCiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE%2BCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgCjw%2FeHBhY2tldCBlbmQ9InciPz4ubxs%2BAAAAIGNIUk0AAHolAACAgwAA%2Bf8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAUtSURBVHjajJZ%2FbNT1Gcdfz%2FP53PV6B4W7VltLqdAaplIOiMOoyxxJCSs%2FGv%2FyB4gzJroAosmmDklwkYWR0bQsdmkykoojTpcsWYLxD%2FlRZdMQkTHRtkLZRqG0tIVe7662vTu43n32x%2FVKZ%2Fjh89cn38%2FzvN7P5%2Fl88zwf2blzJz6fDwARQUSm1n8s31CM0%2FVAnbNmsUPuAsDpgEO%2BBg4C7%2F%2Fiyv5hvmMiQiqVQpqamvB6vVNwEeG1JZtCBrYi%2FMrkAwDNgjhwAlbzICBLA0rDb0%2B%2F839C6XQaaWxspLCw8Dp86cbNmqVFJQddE6KzdjZ9D89g%2BB6fSyCOcyn1nxil%2BO9xKg5HqWFSHGXLjrP7W%2FICqVQK2bNnDz6fDxFh65KNvxbHDhF4rJj2bXPo%2BIGfcW5h5xL4f99P%2BFCEMIAob75x9t0dAMlkElNXV4e1lteXbNqiQoMaeOFOjrdU868SD2luYyEP6dUh%2BsYmSHeOU6GO5Z8VLx5%2BNNZxIpPJ5AS2L3upROCoCvz8Lo7vnkf77cAHhpiz%2FzIL9vWz8L8p%2FNvupmM0Q7pjnAoLqz8tDrc8MnQqYVUVhVdF4LEg7b%2BrvDn8wDDlH0WoPpukLJImSBaMwjcJqmwWts2jPZLG%2F8kwYVFeVdXXZcFf4yVDc2cNKfBFmD9X%2B0ncCP58F48eG%2BFeo2CAUkvs4dl0V%2FuJvdXLiiV%2But%2B%2Bn7YLSfxPfMMG54ChzB3WIesVWB2i82bw1AR6fJR7C4VsfYiv6u%2Fk3A9nEgP4zXke8DiYHyAOMK%2BQxPIgnZ9GqSHr1itQJ8DK2fTerDQ%2BS%2FbHRXQJaHSCwNIZ2Xh%2B7%2BS3VAmwNMBA%2FtuPZtErgKquUmdMWIFlRURvdamRNEXGwIWrlP47pTMzLiunxghGMwTLvcTWlHAp77s4QNSrYMQtss6ZMgWqCm5cHoDHO1nbk6K8zEN8%2B3zatv2Hn1b59EqJZdxmYUERg9P9KwpIiAOTdWUWBXuLzB%2FvZG3P1Un4PNp2d1MbmyD45TWCxuCsQm0x56bHGHFYEZwxok7toAA9Sfw3hCcoL%2FNOwi9QO5wmWO1j4JEgZxTkodmcWRGkf3pcX0r8xoAaBixKu4U5%2FxwndM%2B0tpAvS6mP%2BPZK2nb1UBvPEKwKMLDvPj4ESGc55lGy303sdJKQdZB2rkMdctAB%2F4gzN%2B%2FQ2ENNd4LyUi%2FxN%2BbTtquX2thk5nk4wI3gAF%2BOMNcA1nFQDfK%2BBY5GqbkwWabTY5QZhXWlnNx1ntrY1Rz87fuvw29m%2FSn8J%2BPUGAFj5T19baA1IspuBZp7cx1x4SwG1cEf%2BlgRSROs8jGwb%2BHt4QB%2FGSSsAhYano39LWIBxNEIbP14hPDuiyS2VtJuHXQlKKvxM%2FjiXDq%2FD%2FxPlwifGMkJZB2NIoKpr69nxeiZxLHicFSFVWfGqBidIP3LSjrWltD94CyufF%2F4kQgPuVz2Lz93%2BdDRa9eu5QQ8Hg8%2FiXee%2BDy4CKMs7xqn4nwKz9IirhQqmVuB42m8ey%2Bx7LMoD6iAON782eChhqmRuXfvXgKBAKqKqtI0%2F8nNKrQI4BVYXkzHgzPpC88gWuHL%2FcaXrhLoGiN0apSKr0ZZRBZM7q2w5ZnLR1oAnHOMjY0hra2tFBQUYIyZmstvVT1Z6eDlAuEVq7merxmwueNPDXy9PvybjKP5mctHLk4%2FXTKZRJqbm%2FH7%2FVNw1VyEMYbW4FN3WNWnnchKoy5sHeVGBRX6VWi3ymFx7r11Ix8MTX%2Fy5C2RSPC%2FAQB61erowbpqSwAAAABJRU5ErkJggg%3D%3D%29%7Ddiv%2Evis%2Dnetwork%20div%2Evis%2Dmanipulation%20div%2Evis%2Dbutton%2Evis%2Ddelete%7Bbackground%2Dimage%3Aurl%28data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89%2BbN%2FrXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz%2FSMBAPh%2BPDwrIsAHvgABeNMLCADATZvAMByH%2Fw%2FqQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf%2BbTAICd%2BJl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA%2Fg88wAAKCRFRHgg%2FP9eM4Ors7ONo62Dl8t6r8G%2FyJiYuP%2B5c%2BrcEAAAOF0ftH%2BLC%2BzGoA7BoBt%2FqIl7gRoXgugdfeLZrIPQLUAoOnaV%2FNw%2BH48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl%2FAV%2F1s%2BX48%2FPf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H%2FLcL%2F%2Fwd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s%2BwM%2B3zUAsGo%2BAXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93%2F%2B8%2F%2FUegJQCAZkmScQAAXkQkLlTKsz%2FHCAAARKCBKrBBG%2FTBGCzABhzBBdzBC%2FxgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD%2FphCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8%2BQ8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8%2BxdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR%2BcQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI%2BksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG%2BQh8lsKnWJAcaT4U%2BIoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr%2Bh0uhHdlR5Ol9BX0svpR%2BiX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK%2BYTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI%2BpXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q%2FpH5Z%2FYkGWcNMw09DpFGgsV%2FjvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY%2FR27iz2qqaE5QzNKM1ezUvOUZj8H45hx%2BJx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4%2FOBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up%2B6Ynr5egJ5Mb6feeb3n%2Bhx9L%2F1U%2FW36p%2FVHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm%2Beb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw%2B6TvZN9un2N%2FT0HDYfZDqsdWh1%2Bc7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc%2BLpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26%2FuNu5p7ofcn8w0nymeWTNz0MPIQ%2BBR5dE%2FC5%2BVMGvfrH5PQ0%2BBZ7XnIy9jL5FXrdewt6V3qvdh7xc%2B9j5yn%2BM%2B4zw33jLeWV%2FMN8C3yLfLT8Nvnl%2BF30N%2FI%2F9k%2F3r%2F0QCngCUBZwOJgUGBWwL7%2BHp8Ib%2BOPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo%2Bqi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt%2F87fOH4p3iC%2BN7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi%2FRNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z%2Bpn5mZ2y6xlhbL%2BxW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a%2FzYnKOZarnivN7cyzytuQN5zvn%2F%2FtEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1%2B1dT1gvWd%2B1YfqGnRs%2BFYmKrhTbF5cVf9go3HjlG4dvyr%2BZ3JS0qavEuWTPZtJm6ebeLZ5bDpaql%2BaXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO%2FPLi8ZafJzs07P1SkVPRU%2BlQ27tLdtWHX%2BG7R7ht7vPY07NXbW7z3%2FT7JvttVAVVN1WbVZftJ%2B7P3P66Jqun4lvttXa1ObXHtxwPSA%2F0HIw6217nU1R3SPVRSj9Yr60cOxx%2B%2B%2Fp3vdy0NNg1VjZzG4iNwRHnk6fcJ3%2FceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w%2B0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb%2B%2B6EHTh0kX%2Fi%2Bc7vDvOXPK4dPKy2%2BUTV7hXmq86X23qdOo8%2FpPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb%2F1tWeOT3dvfN6b%2FfF9%2FXfFt1%2Bcif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v%2B3Njv3H9qwHeg89HcR%2FcGhYPP%2FpH1jw9DBY%2BZj8uGDYbrnjg%2BOTniP3L96fynQ89kzyaeF%2F6i%2FsuuFxYvfvjV69fO0ZjRoZfyl5O%2FbXyl%2FerA6xmv28bCxh6%2ByXgzMV70VvvtwXfcdx3vo98PT%2BR8IH8o%2F2j5sfVT0Kf7kxmTk%2F8EA5jz%2FGMzLdsAAEEOaVRYdFhNTDpjb20uYWRvYmUueG1wAAAAAAA8P3hwYWNrZXQgYmVnaW49Iu%2B7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI%2FPgo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjUtYzAyMSA3OS4xNTQ5MTEsIDIwMTMvMTAvMjktMTE6NDc6MTYgICAgICAgICI%2BCiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI%2BCiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIKICAgICAgICAgICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICAgICAgICAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgICAgICAgICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgICAgICAgICAgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiCiAgICAgICAgICAgIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPHhtcDpDcmVhdG9yVG9vbD5BZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpPC94bXA6Q3JlYXRvclRvb2w%2BCiAgICAgICAgIDx4bXA6Q3JlYXRlRGF0ZT4yMDE0LTAxLTIyVDE5OjI0OjUxKzAxOjAwPC94bXA6Q3JlYXRlRGF0ZT4KICAgICAgICAgPHhtcDpNZXRhZGF0YURhdGU%2BMjAxNC0wMi0wNFQxNDo0MTowNCswMTowMDwveG1wOk1ldGFkYXRhRGF0ZT4KICAgICAgICAgPHhtcDpNb2RpZnlEYXRlPjIwMTQtMDItMDRUMTQ6NDE6MDQrMDE6MDA8L3htcDpNb2RpZnlEYXRlPgogICAgICAgICA8ZGM6Zm9ybWF0PmltYWdlL3BuZzwvZGM6Zm9ybWF0PgogICAgICAgICA8eG1wTU06SW5zdGFuY2VJRD54bXAuaWlkOjc3NDkzYmUxLTEyZGItOTg0NC1iNDYyLTg2NGVmNGIzMzM3MTwveG1wTU06SW5zdGFuY2VJRD4KICAgICAgICAgPHhtcE1NOkRvY3VtZW50SUQ%2BeG1wLmRpZDpFQTc2MkY5Njc0ODNFMzExOTQ4QkQxM0UyQkU3OTlBMTwveG1wTU06RG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD54bXAuZGlkOjczQjYyQUFEOTE4M0UzMTE5NDhCRDEzRTJCRTc5OUExPC94bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ%2BCiAgICAgICAgIDx4bXBNTTpIaXN0b3J5PgogICAgICAgICAgICA8cmRmOlNlcT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24%2BY3JlYXRlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOjczQjYyQUFEOTE4M0UzMTE5NDhCRDEzRTJCRTc5OUExPC9zdEV2dDppbnN0YW5jZUlEPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6d2hlbj4yMDE0LTAxLTIyVDE5OjI0OjUxKzAxOjAwPC9zdEV2dDp3aGVuPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6c29mdHdhcmVBZ2VudD5BZG9iZSBQaG90b3Nob3AgQ1M2IChXaW5kb3dzKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgPC9yZGY6bGk%2BCiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPnNhdmVkPC9zdEV2dDphY3Rpb24%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDppbnN0YW5jZUlEPnhtcC5paWQ6RUE2MEEyNEUxOTg0RTMxMUFEQUZFRkU2RUMzMzNFMDM8L3N0RXZ0Omluc3RhbmNlSUQ%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMTQtMDEtMjNUMTk6MTg6MDcrMDE6MDA8L3N0RXZ0OndoZW4%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpPC9zdEV2dDpzb2Z0d2FyZUFnZW50PgogICAgICAgICAgICAgICAgICA8c3RFdnQ6Y2hhbmdlZD4vPC9zdEV2dDpjaGFuZ2VkPgogICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24%2Bc2F2ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0Omluc3RhbmNlSUQ%2BeG1wLmlpZDowNmE3NWYwMy04MDdhLWUzNGYtYjk1Zi1jZGU2MjM0Mzg4OGY8L3N0RXZ0Omluc3RhbmNlSUQ%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMTQtMDItMDRUMTQ6NDE6MDQrMDE6MDA8L3N0RXZ0OndoZW4%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIFBob3Rvc2hvcCBDQyAoV2luZG93cyk8L3N0RXZ0OnNvZnR3YXJlQWdlbnQ%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDpjaGFuZ2VkPi88L3N0RXZ0OmNoYW5nZWQ%2BCiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5jb252ZXJ0ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnBhcmFtZXRlcnM%2BZnJvbSBhcHBsaWNhdGlvbi92bmQuYWRvYmUucGhvdG9zaG9wIHRvIGltYWdlL3BuZzwvc3RFdnQ6cGFyYW1ldGVycz4KICAgICAgICAgICAgICAgPC9yZGY6bGk%2BCiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPmRlcml2ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnBhcmFtZXRlcnM%2BY29udmVydGVkIGZyb20gYXBwbGljYXRpb24vdm5kLmFkb2JlLnBob3Rvc2hvcCB0byBpbWFnZS9wbmc8L3N0RXZ0OnBhcmFtZXRlcnM%2BCiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5zYXZlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOjc3NDkzYmUxLTEyZGItOTg0NC1iNDYyLTg2NGVmNGIzMzM3MTwvc3RFdnQ6aW5zdGFuY2VJRD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OndoZW4%2BMjAxNC0wMi0wNFQxNDo0MTowNCswMTowMDwvc3RFdnQ6d2hlbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnNvZnR3YXJlQWdlbnQ%2BQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmNoYW5nZWQ%2BLzwvc3RFdnQ6Y2hhbmdlZD4KICAgICAgICAgICAgICAgPC9yZGY6bGk%2BCiAgICAgICAgICAgIDwvcmRmOlNlcT4KICAgICAgICAgPC94bXBNTTpIaXN0b3J5PgogICAgICAgICA8eG1wTU06RGVyaXZlZEZyb20gcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICA8c3RSZWY6aW5zdGFuY2VJRD54bXAuaWlkOjA2YTc1ZjAzLTgwN2EtZTM0Zi1iOTVmLWNkZTYyMzQzODg4Zjwvc3RSZWY6aW5zdGFuY2VJRD4KICAgICAgICAgICAgPHN0UmVmOmRvY3VtZW50SUQ%2BeG1wLmRpZDpFQTc2MkY5Njc0ODNFMzExOTQ4QkQxM0UyQkU3OTlBMTwvc3RSZWY6ZG9jdW1lbnRJRD4KICAgICAgICAgICAgPHN0UmVmOm9yaWdpbmFsRG9jdW1lbnRJRD54bXAuZGlkOjczQjYyQUFEOTE4M0UzMTE5NDhCRDEzRTJCRTc5OUExPC9zdFJlZjpvcmlnaW5hbERvY3VtZW50SUQ%2BCiAgICAgICAgIDwveG1wTU06RGVyaXZlZEZyb20%2BCiAgICAgICAgIDxwaG90b3Nob3A6Q29sb3JNb2RlPjM8L3Bob3Rvc2hvcDpDb2xvck1vZGU%2BCiAgICAgICAgIDxwaG90b3Nob3A6SUNDUHJvZmlsZT5zUkdCIElFQzYxOTY2LTIuMTwvcGhvdG9zaG9wOklDQ1Byb2ZpbGU%2BCiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24%2BCiAgICAgICAgIDx0aWZmOlhSZXNvbHV0aW9uPjcyMDA5MC8xMDAwMDwvdGlmZjpYUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6WVJlc29sdXRpb24%2BNzIwMDkwLzEwMDAwPC90aWZmOllSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpSZXNvbHV0aW9uVW5pdD4yPC90aWZmOlJlc29sdXRpb25Vbml0PgogICAgICAgICA8ZXhpZjpDb2xvclNwYWNlPjE8L2V4aWY6Q29sb3JTcGFjZT4KICAgICAgICAgPGV4aWY6UGl4ZWxYRGltZW5zaW9uPjI0PC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6UGl4ZWxZRGltZW5zaW9uPjI0PC9leGlmOlBpeGVsWURpbWVuc2lvbj4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24%2BCiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE%2BCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgCjw%2FeHBhY2tldCBlbmQ9InciPz4aYJzYAAAAIGNIUk0AAHolAACAgwAA%2Bf8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAYGSURBVHjalJZ7UJTnFcZ%2F73m%2F72PdJY1RbhoQp6lkXRAvmIYxdCUadLVOozPNtGObap1JsKipjiShbdoRbeKEiQHpQK3xj0xa03aamTbaTGyAYV1QGeqFi%2BJyiZFLAlmESBkWRmS3fyzslGkmnZ5%2Fv%2FM873Oe75zzvqqoqAibzQaAiKCUAkApRdHIK%2FNFsx2NR91nOSILADDoJyzNaM4xxbtvPHh0iC%2BJiYkJ1OHDh4mJiUEpFSXPv%2FziPC28TIiXDCOSrAClQDSEpsCwJPIhrEBRQpiSytXlQwDhcBilFPfu3UMVFxdjt9ujFTzfcLBADCoEEAFr1ZbrrNjch2vtEImPBgHob7fTcWE%2BbVXJNJ%2FNiFQlEGLvieXHKmYqGB8fRx05cgSbzYaIsPvywV8pKFaA7fGtLTzz61YWpo%2FxVTHQbufsq5lcez9zWuWhk5mvFwMEg0H0%2BvXrMU2Tn1wp3CtCiQ5DjGd3A%2Fm%2Fv8IDCZP8r4iNmyRrWx%2Fj%2F5qktykZpXKzAjVDVxPzGqemptDr1q1jX3NRnIJarcDKK2hgR2ULXRfncv7UYv7xpovhnhiW5Mz%2BkefeSKO6LJ1A1xzEuk%2FOjm4mRibpuZaMZW3OCtRUND60NmiICCIUShisx7a2sLMiQn4s77uEQgIabnqdfHIlgT1%2FqQeg8vs5dHhdCNB1wYn3RIiC995j26stjAbsNH%2BYiZJCESnS1Y%2FXxIXu8r4YIPv%2FVkVs3CTnTy2ms34xro1%2Bsp9po6sxlTu34ultmsPVvy6is86FCHgO%2BDDs49zpjufBpCG%2BseYOC9OHaTidieicb9ouVAhKtouAseI710ma7pLuqwmgYfHqAFt%2B6WdLoQ%2FLBl11Lm7VudAa8vb72PCin9TlAWIsGGhLACD%2BkSAZnusYBii1XQAPYWDllt6ov2lrBkDBR2%2B6Ofuak2%2F%2F3M%2BG%2FT4wAAPW7fPhKfRTVeqk9qQbFKRmDUTxS3N7QYGYmwzCkqklBGlPDEcTNv%2Bsg9tNCbTXuvBWujE0bHrZj9JE1B%2FwU1Pm5PwJN6YBS9a2kVvQEcWnrh5GTFD3lxkYkqRMgYQlwVldUvDnen73LHTUuqitdKM0eAr9AFQfd1J%2Fyo2aJn%2B2sn4Wdn5qEFODJskgBIjx5T0uCrQA08pnIjS9PERDjPnfOKXAMEBECUoGEIHBj%2B2zkt76UQ6dXheGAev3%2Bcg74Kf6uJPqcicbfuond7cPy4SOiy7%2BtD9nFvZurx00KOk3CNEC%2BmE%2BvjSPBc7IWqgqTaPT60IMcO%2FxsXGa3HfKjRgRdbl7%2FKDg0jtubje6aHj7c7J3dgLQ2zoPwwQ91SooOQdAW1VKVMHty0kA5Bb48BycJn%2FLjWFGbLv4thvvb53kFvjJ%2BXEdWkPfjQVR%2FCcNKYgGMc8JWt5Fa2j%2BMIPPuyI2pa4IoHSkt6vLIuRaQ9q32khzt4GCxtNu6k46GeiIR2lIfDQQsafPzq1LGRGL9Gk9d%2BvrwewvfHPQOoexQVjxdB%2Fauk%2FzmaUMdsfz6bVUtIalT7bxveP1ZHh6GPDPYeSzeD69kcpIfxymFWLNrka%2BljhBTWkWwz2JiJT84YHnz2iPx0P20PkmRF5i6HYiwZFJsn%2FYzdezbzE3cQibY5xV266z6RfXohakb%2BxB9CjanCD9qTbW7Grk4WV38VZm0l6dhQiEw9taHSuDqrS0FIfDwXM3X9mHMsvRAk%2FsauDpQy38P%2BGtzOTGB9mEpkD0C2dS8n8zOjqK9ng8WJZFU%2BJTjasGvaCNXPpvJBPoMlm0OoDNMfWVxONfWNSUPUZ7TUQ56tCZlPwSgMnJSVRpaSmxsbFE1raw82ZxAZZRQUiBYUKGp5UlOX2krBzmoUVjiIKhHge9rfPo%2BWcy3ZeXIYASgL1%2FX5RfMXMvj46OosrLy7HZbGitUUohIuzoem0RofALaOsghgWGjky0MiJTL8b0lOvI8hN1DKXKP0jd3TNTWDgcJhgMoo4ePYrD4Yi%2BKmaeLlprnrtXFo9h%2FAAlG1AqE8yFmBrC%2BjO0bgH9EVpO%2F1F2Dc5g%2F%2FOAsbEx%2Fj0Af%2BUSsQynL1UAAAAASUVORK5CYII%3D%29%7Ddiv%2Evis%2Dnetwork%20div%2Evis%2Dedit%2Dmode%20div%2Evis%2Dlabel%2Cdiv%2Evis%2Dnetwork%20div%2Evis%2Dmanipulation%20div%2Evis%2Dlabel%7Bmargin%3A0%200%200%2023px%3Bline%2Dheight%3A25px%7Ddiv%2Evis%2Dnetwork%20div%2Evis%2Dmanipulation%20div%2Evis%2Dseparator%2Dline%7Bfloat%3Aleft%3Bdisplay%3Ainline%2Dblock%3Bwidth%3A1px%3Bheight%3A21px%3Bbackground%2Dcolor%3A%23bdbdbd%3Bmargin%3A0%207px%200%2015px%7Ddiv%2Evis%2Dnetwork%2Dtooltip%7Bposition%3Aabsolute%3Bvisibility%3Ahidden%3Bpadding%3A5px%3Bwhite%2Dspace%3Anowrap%3Bfont%2Dfamily%3Averdana%3Bfont%2Dsize%3A14px%3Bcolor%3A%23000%3Bbackground%2Dcolor%3A%23f5f4ed%3B%2Dmoz%2Dborder%2Dradius%3A3px%3B%2Dwebkit%2Dborder%2Dradius%3A3px%3Bborder%2Dradius%3A3px%3Bborder%3A1px%20solid%20%23808074%3Bbox%2Dshadow%3A3px%203px%2010px%20rgba%280%2C0%2C0%2C%2E2%29%3Bpointer%2Devents%3Anone%7Ddiv%2Evis%2Dnetwork%20div%2Evis%2Dnavigation%20div%2Evis%2Dbutton%7Bwidth%3A34px%3Bheight%3A34px%3B%2Dmoz%2Dborder%2Dradius%3A17px%3Bborder%2Dradius%3A17px%3Bposition%3Aabsolute%3Bdisplay%3Ainline%2Dblock%3Bbackground%2Dposition%3A2px%202px%3Bbackground%2Drepeat%3Ano%2Drepeat%3Bcursor%3Apointer%3B%2Dwebkit%2Dtouch%2Dcallout%3Anone%3B%2Dwebkit%2Duser%2Dselect%3Anone%3B%2Dkhtml%2Duser%2Dselect%3Anone%3B%2Dmoz%2Duser%2Dselect%3Anone%3B%2Dms%2Duser%2Dselect%3Anone%3Buser%2Dselect%3Anone%7Ddiv%2Evis%2Dnetwork%20div%2Evis%2Dnavigation%20div%2Evis%2Dbutton%3Ahover%7Bbox%2Dshadow%3A0%200%203px%203px%20rgba%2856%2C207%2C21%2C%2E3%29%7Ddiv%2Evis%2Dnetwork%20div%2Evis%2Dnavigation%20div%2Evis%2Dbutton%3Aactive%7Bbox%2Dshadow%3A0%200%201px%203px%20rgba%2856%2C207%2C21%2C%2E95%29%7Ddiv%2Evis%2Dnetwork%20div%2Evis%2Dnavigation%20div%2Evis%2Dbutton%2Evis%2Dup%7Bbackground%2Dimage%3Aurl%28data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89%2BbN%2FrXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz%2FSMBAPh%2BPDwrIsAHvgABeNMLCADATZvAMByH%2Fw%2FqQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf%2BbTAICd%2BJl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA%2Fg88wAAKCRFRHgg%2FP9eM4Ors7ONo62Dl8t6r8G%2FyJiYuP%2B5c%2BrcEAAAOF0ftH%2BLC%2BzGoA7BoBt%2FqIl7gRoXgugdfeLZrIPQLUAoOnaV%2FNw%2BH48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl%2FAV%2F1s%2BX48%2FPf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H%2FLcL%2F%2Fwd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s%2BwM%2B3zUAsGo%2BAXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93%2F%2B8%2F%2FUegJQCAZkmScQAAXkQkLlTKsz%2FHCAAARKCBKrBBG%2FTBGCzABhzBBdzBC%2FxgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD%2FphCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8%2BQ8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8%2BxdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR%2BcQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI%2BksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG%2BQh8lsKnWJAcaT4U%2BIoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr%2Bh0uhHdlR5Ol9BX0svpR%2BiX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK%2BYTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI%2BpXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q%2FpH5Z%2FYkGWcNMw09DpFGgsV%2FjvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY%2FR27iz2qqaE5QzNKM1ezUvOUZj8H45hx%2BJx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4%2FOBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up%2B6Ynr5egJ5Mb6feeb3n%2Bhx9L%2F1U%2FW36p%2FVHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm%2Beb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw%2B6TvZN9un2N%2FT0HDYfZDqsdWh1%2Bc7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc%2BLpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26%2FuNu5p7ofcn8w0nymeWTNz0MPIQ%2BBR5dE%2FC5%2BVMGvfrH5PQ0%2BBZ7XnIy9jL5FXrdewt6V3qvdh7xc%2B9j5yn%2BM%2B4zw33jLeWV%2FMN8C3yLfLT8Nvnl%2BF30N%2FI%2F9k%2F3r%2F0QCngCUBZwOJgUGBWwL7%2BHp8Ib%2BOPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo%2Bqi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt%2F87fOH4p3iC%2BN7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi%2FRNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z%2Bpn5mZ2y6xlhbL%2BxW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a%2FzYnKOZarnivN7cyzytuQN5zvn%2F%2FtEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1%2B1dT1gvWd%2B1YfqGnRs%2BFYmKrhTbF5cVf9go3HjlG4dvyr%2BZ3JS0qavEuWTPZtJm6ebeLZ5bDpaql%2BaXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO%2FPLi8ZafJzs07P1SkVPRU%2BlQ27tLdtWHX%2BG7R7ht7vPY07NXbW7z3%2FT7JvttVAVVN1WbVZftJ%2B7P3P66Jqun4lvttXa1ObXHtxwPSA%2F0HIw6217nU1R3SPVRSj9Yr60cOxx%2B%2B%2Fp3vdy0NNg1VjZzG4iNwRHnk6fcJ3%2FceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w%2B0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb%2B%2B6EHTh0kX%2Fi%2Bc7vDvOXPK4dPKy2%2BUTV7hXmq86X23qdOo8%2FpPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb%2F1tWeOT3dvfN6b%2FfF9%2FXfFt1%2Bcif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v%2B3Njv3H9qwHeg89HcR%2FcGhYPP%2FpH1jw9DBY%2BZj8uGDYbrnjg%2BOTniP3L96fynQ89kzyaeF%2F6i%2FsuuFxYvfvjV69fO0ZjRoZfyl5O%2FbXyl%2FerA6xmv28bCxh6%2ByXgzMV70VvvtwXfcdx3vo98PT%2BR8IH8o%2F2j5sfVT0Kf7kxmTk%2F8EA5jz%2FGMzLdsAAAAgY0hSTQAAeiUAAICDAAD5%2FwAAgOkAAHUwAADqYAAAOpgAABdvkl%2FFRgAABphJREFUeNqcV2twU9cR%2FnbPlVTHxpKRbNnBLyEbPyJisLEcPwgwUMKQtjNJAzNJZkgNNJOmJaZAaDKlxaXDTIBAcJtOOzSYKSkdiimhAdIMjyT4bYgBYxA2BgcUQPLrCiGDR4qt2x%2ByXTASFt1%2F957d7zt3z3d39xDCMQWUfgAz%2FRI%2FT4pSTAJpAGL8rECAXX7QFQGq9wOHOxYO1oCgjAdJj1wtB095Giv9TFuZAIWHAziATMPhTAwiHgUkYPXFJu92lMP%2F2MTpB1AKUCVEgNAcleUo1M%2B2F8TO6crSTncb1QleAOj2OTSX3Ge1p%2BVa42m5JrnzbnsCE8Ov%2BEHgpa0LPLvCJjZ%2FwhuIlN8wAcXG%2Be1LUn9hm238QU84p1Ld83nsXvuO7Lq%2BLzKYGAT6%2Fdn58m%2FHJTYf4O3EShkT8Irpzab1Uz9sGevT5%2BtWn%2Bj6NB4A5hp%2F5NSr43xjfd5rW5tT9e3OAhCBiCua5%2FWsDEls%2FhdvYklZSwDefmrT8eXmtzuDkb5YZ33p9ndylICAVjWxf39xw%2F5g5Luv%2F9H84ZWNcwNEypZT87rXjqyJB85UYDMJYN3U7UdLJ6%2F6JlgqV517teRqf9uTlug8e1zEk27HgD22o98WsTBh8fWxvjm6ApdONbGvse8LM5NUPOm1Cfabuz3nACAgxX0QEFTJAnjNvLJ%2BSepb14KRHnN%2BEv%2B1XJOhZs3Qu1mbG97J2NQgsXroa1dtxrGuf8cHi1mUtPTay0lv1DMJSCRVLtoX%2BFgGgDQNysBAcez89l9nbbsQSji7rlXkEhjPxb%2FQatHOcFu0M9zz419oFSRhj%2F3PuaHiyqasv1Con9NGxHAYUsoCxAqImbYSgCWmFbZQwdsur7N0eC4m6tT6%2FjUZ750Zeb82c%2BOZGLWh%2F2p%2FW%2BKfrmy0hIp%2FaVKpTSIJEqu2QgFx2iE8CwDp0RbH7Ljng%2F4yXr%2BXT3QdyhYsodS0slGr0g2OrEUK7eCrKW82SqzCVz3%2Fyfb6vRwM4xn9rN7JkRkOQRLmfJn2LBPxQjDBqp9lD7XbX7X8pKTP160zR2bdeiX5jYeU%2FnLSTztNkem3XL5eXbltRUkonBxdgZ2IIUmahUxERQSCVT%2BrK5hzQ89xQ6P8VaaK1f5VmRvqQ4G%2Blba%2Bnlnlb5brMhvlk7FBiaPzuwQEmEQhg5BOxMjWTncHc2501cQLkjDTsMCWpyuRQxFP0xXIJfp5FyVW4Zy7KajC06ItbiIGg6ZITBxDxIgbrr1jTSM0fibGIHz8O9sKK0GAibEua9spANh4aY2VmcEg%2BDEkiBgR%2FL2hYFgGtcErkQQAMVJgBxyy9hboZzv32v%2BKpr7qbEECTAIMAoaJa3qPTmNiiAAgJAjk6J5xhu6HDAIgQYGLmI29PocmMcI8MNYvT1ckfzD9H%2Fub5br4e4Me9WfOKqtyX6Ud2cwC449PRamifDm6Auc0rTXokci%2BXo1EAgBckiDuYGLjpTvntcGIA%2BSFcp6uUAaAI879VhWrRteYAqn%2Fedq758brXJ1327QMhgJcZjA3EBjNrgZjOG1PkAjyTGENMjZPq5ECQ0MDE9ERBqFZrk0OJ3i4x%2F7vyIjBxGERt3takgVJEAp9xq3f769WiPDNvSsJdT3HDOEASPelmoBRYT3Kzt5uMtwauJEgSOCpwrk1DIJCoNUMwj9v7MweP9XSQ8%2FhJPp496fZTAICvLqcyv2B7nRbrgCA03JN5h8ub7A8VqpB437xHvsOy3l3cyaB4L2uqxhti1WLMcSgZQCw7%2BbOooO3Pk4JBZIYYXISMV5sKH59UePM10GESRGpIf%2FbE92HU452HywSJIGIllctrhp6YAK5%2BfHds0lLtJFMXNwkV6fFqA29mROefqiMJj1h6um4a5vY%2F92dKGaBxIhU5zJTWW2cJmEgGOmeb3c8FxAfb9mdf2RzyGGv5MvU7QwuEySwKHFp%2Fc%2FM71zA%2F2F7b1RajnYdLAqMukMVu2YcfmDYE2MD7H%2B7%2FXlq6cRIJqm4zXM%2Bqd3TGjVBir43KSLlXjiELe5TsX%2B3%2FyW%2FST45PaAHbKmccWh12AP93JNZywj0kSABIobpiXRHjtZ6faout2tyZMadGLXBCxBcvl6NfaAz%2BtKdFmObpzWl2%2BtIIBACYy0t%2Fyj34M7HvsKUK%2BCGassvicX7alYDwwq%2BvykIEqPVa%2BQ9gdYk5%2BV%2BUE7lj3%2BFGbuBM%2FX5JUT8QwIVSSSZiTgmoFR2MfiqYFFPfjpkyrfWPopwxP47AP1pK1g9%2FdqeAAAAAElFTkSuQmCC%29%3Bbottom%3A50px%3Bleft%3A55px%7Ddiv%2Evis%2Dnetwork%20div%2Evis%2Dnavigation%20div%2Evis%2Dbutton%2Evis%2Ddown%7Bbackground%2Dimage%3Aurl%28data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89%2BbN%2FrXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz%2FSMBAPh%2BPDwrIsAHvgABeNMLCADATZvAMByH%2Fw%2FqQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf%2BbTAICd%2BJl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA%2Fg88wAAKCRFRHgg%2FP9eM4Ors7ONo62Dl8t6r8G%2FyJiYuP%2B5c%2BrcEAAAOF0ftH%2BLC%2BzGoA7BoBt%2FqIl7gRoXgugdfeLZrIPQLUAoOnaV%2FNw%2BH48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl%2FAV%2F1s%2BX48%2FPf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H%2FLcL%2F%2Fwd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s%2BwM%2B3zUAsGo%2BAXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93%2F%2B8%2F%2FUegJQCAZkmScQAAXkQkLlTKsz%2FHCAAARKCBKrBBG%2FTBGCzABhzBBdzBC%2FxgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD%2FphCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8%2BQ8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8%2BxdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR%2BcQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI%2BksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG%2BQh8lsKnWJAcaT4U%2BIoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr%2Bh0uhHdlR5Ol9BX0svpR%2BiX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK%2BYTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI%2BpXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q%2FpH5Z%2FYkGWcNMw09DpFGgsV%2FjvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY%2FR27iz2qqaE5QzNKM1ezUvOUZj8H45hx%2BJx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4%2FOBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up%2B6Ynr5egJ5Mb6feeb3n%2Bhx9L%2F1U%2FW36p%2FVHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm%2Beb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw%2B6TvZN9un2N%2FT0HDYfZDqsdWh1%2Bc7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc%2BLpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26%2FuNu5p7ofcn8w0nymeWTNz0MPIQ%2BBR5dE%2FC5%2BVMGvfrH5PQ0%2BBZ7XnIy9jL5FXrdewt6V3qvdh7xc%2B9j5yn%2BM%2B4zw33jLeWV%2FMN8C3yLfLT8Nvnl%2BF30N%2FI%2F9k%2F3r%2F0QCngCUBZwOJgUGBWwL7%2BHp8Ib%2BOPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo%2Bqi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt%2F87fOH4p3iC%2BN7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi%2FRNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z%2Bpn5mZ2y6xlhbL%2BxW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a%2FzYnKOZarnivN7cyzytuQN5zvn%2F%2FtEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1%2B1dT1gvWd%2B1YfqGnRs%2BFYmKrhTbF5cVf9go3HjlG4dvyr%2BZ3JS0qavEuWTPZtJm6ebeLZ5bDpaql%2BaXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO%2FPLi8ZafJzs07P1SkVPRU%2BlQ27tLdtWHX%2BG7R7ht7vPY07NXbW7z3%2FT7JvttVAVVN1WbVZftJ%2B7P3P66Jqun4lvttXa1ObXHtxwPSA%2F0HIw6217nU1R3SPVRSj9Yr60cOxx%2B%2B%2Fp3vdy0NNg1VjZzG4iNwRHnk6fcJ3%2FceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w%2B0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb%2B%2B6EHTh0kX%2Fi%2Bc7vDvOXPK4dPKy2%2BUTV7hXmq86X23qdOo8%2FpPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb%2F1tWeOT3dvfN6b%2FfF9%2FXfFt1%2Bcif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v%2B3Njv3H9qwHeg89HcR%2FcGhYPP%2FpH1jw9DBY%2BZj8uGDYbrnjg%2BOTniP3L96fynQ89kzyaeF%2F6i%2FsuuFxYvfvjV69fO0ZjRoZfyl5O%2FbXyl%2FerA6xmv28bCxh6%2ByXgzMV70VvvtwXfcdx3vo98PT%2BR8IH8o%2F2j5sfVT0Kf7kxmTk%2F8EA5jz%2FGMzLdsAAAAgY0hSTQAAeiUAAICDAAD5%2FwAAgOkAAHUwAADqYAAAOpgAABdvkl%2FFRgAABpdJREFUeNqcV21QlNcVfp5zX9ikoAvLEsAIIgsoHwpqWAQUNKLNaNv8iZ1JMkNG6%2FQj%2FdDUyCSTtCHpmEkwVk3TToZRMjXj5MOG2KidjIkxQYSAQUAtX6IgIN8su8KCoOzbH4sk4q5g77%2F33uee555z7rnneYmZDB2MKcJKlyYbqOsZVIgGEOgSHQoy4AKbFFjqAo5dWn%2FrNAh9OpO852oeJHYxtrmEu4WALhMbxG2ZE9uFAlImDRLY%2Ft%2Fy0b3Ig%2Bu%2BiWOKsAlgIZSb0OIf15kWtKo1NXh1d5xxiSPEN2wUAHrGOg11jirjWVtJyFnb6YgrzoYwocClu0DI5guPDb43Y2LLp%2FIaqf9JCGSErGvIifxd7aqQn%2FTOJCvFvZ8Hf9haEH%2Bm%2F6sFQgHBv1Sts%2F15WmJLkeyl6FuFwFPzny1%2FZdE7Nfg%2Fxhv1uUmH2w6kggQp%2Byqze7d5JbZ8Im%2BKpucSwI6EN7%2FcYtlxZarBCts3ptfrtq9odjaGKihE%2BsV0vRC3u8RqWmmbij149W%2BWd5p2rnET6bsqsntyb6%2BpO3KqkE8FvLxo74lNUX9s9uTJb8%2F9fG2L81KoogJFYfCm3b9usNq0MXxzw1RsUkDqQICPqf%2Fb%2Fq8sQi3j4WdmtV47OFgNAO6r%2BDEUFAtFAc9YtpXmRP6hxVsI24cvhyoqnFtrK6jM7isgBa3Dl0O94TeGb255MvzXpUIFjVrhxo%2FdzgoARBuwFQJkBK9reCnurxfvXX8CRW3yW1G749vT2Br7ysW0oNX1pKDTPG%2Brm1gHRbibAHLm%2F7522sKnQCZqFgCUaBCqaS%2FbEw9vqtWoQROf3dBBiT6KTACImZ3YueqhDdOWjDbFQ4IzIl4elNUX5begU1HD6lPRmULKeghhDcpqnUmZuD3%2BnkgTH6gZEE9ctlZSoGmG9UIynSCsQVndMyX%2BIZGiBoHMjHh2SreCglClaSBiSEG8cYnD24bv7CWms%2F3FocO3hnw13plTggAFb196NdlPM44tC0zrSg5ItXmyEz070UEKCMRqQgkkBQ9NvL2eSJ%2BrevoJTORSpoT6do4%2F7%2F7UShBFHQexM%2BHdfyUHWO8iN%2FuaRzX3%2FQjUSLlnqM72F4cCRIY5u9Zf%2BY%2BBAv4AvzpkQ7WAIBRujA%2F7Vg6cia9xlId6InafVEAAGnQMUCSkb6zTMPdBy8hU3JjrphIq%2BCrD%2BMvxeyumrr%2B4IH9y7o2GF5eDghuuGx4L2zbWZ9Dc0RoQRbkkFNRdP2%2F0BH7EtLJLKCjr%2Bzqh2l5u8haZ847vTBW24kRFQXKAtcsT5oqz3igQENIoECkjBJUDZSGewBlBj%2FammjLrdX1c%2Ft70ero34gMte9IByLLAjPrUwKweT5jawQshdIuGMiF5XEBU2koivBl9NeEfJeYHwuxtI81zPrn2z6ip60c6DkV1jLTOCTaE2HNjd5Z4s9MwWBOhqEHp%2FI9cWDtUrJNoHm4KO9P7hdnTBoMYXI8Gb6gVCg63FS53jg9O5tA57tSOdHywnCAygrJrfcTgUe5U2cvNHSPtYYoKCWlrTgsIneB2AfFR%2B4F4b6f9ZdTzF6P8Ytud407%2Fdy%2FnL7k9X9i8J9l5y%2BEf6RfbnjPvWa8N5suez%2BKFCgqyPY95Lnd3stv2AcBZ2%2BmFbze%2Blui1xc3dXCUUlPafXNx4%2FaKxcajWWNp%2FMklRw8%2FmPFntbd%2Bh1oLE847KhQQxejVg36QQqD0MPTzHv42Ux%2BuGasJNBnPfwllJd71kkX7RQ3WDNf7dox3BLcNNs6vt34bbbvYHJhlTGp6O%2BJVHb0%2F2HJtX1PH%2BaqECqG%2F5YN1nlXcokGvvO6vCc4x%2BQskotxVHB%2Fqa%2BxbOWuzw8NB3nuo%2BHt0z2hHsuGU3GrWAoZfi3jrxgHpw3BPpobaCH7vbqOw6mHI836vYW3Eqcq9AtioqbJy7ufQ3lhfu8sR%2Bs9%2B3vL8klACsQSu7AnxMY1MxH7YXJp7oPpLulrrj%2B9575Ni2aeVt1teWfEWfHQLCaspseHzOU7VWU%2BaM5G2NoyL4i%2B6j8XWDNQsmGsKu%2Fcv%2BnTtjQb%2Fmm7hfENyvqEAK5v8opjPJaL26KGBpd5TfguuBvuZRgBgY6zO0jlyZXXe9JqR%2B8MK8ntHOMHfHIkhu2b%2F0yIH7%2FoXJ0yFlxYnPUdRbvuILgO7%2By%2B91l6Ka6M%2BcnCf4fMSypXvymHf%2FvzBTD3CuNGUFKT8lmK5Rs5ASqKiBlAGBXFaiSuni0fkp1pJ7Ed4e%2FxsAqLk46EWsG1EAAAAASUVORK5CYII%3D%29%3Bbottom%3A10px%3Bleft%3A55px%7Ddiv%2Evis%2Dnetwork%20div%2Evis%2Dnavigation%20div%2Evis%2Dbutton%2Evis%2Dleft%7Bbackground%2Dimage%3Aurl%28data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89%2BbN%2FrXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz%2FSMBAPh%2BPDwrIsAHvgABeNMLCADATZvAMByH%2Fw%2FqQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf%2BbTAICd%2BJl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA%2Fg88wAAKCRFRHgg%2FP9eM4Ors7ONo62Dl8t6r8G%2FyJiYuP%2B5c%2BrcEAAAOF0ftH%2BLC%2BzGoA7BoBt%2FqIl7gRoXgugdfeLZrIPQLUAoOnaV%2FNw%2BH48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl%2FAV%2F1s%2BX48%2FPf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H%2FLcL%2F%2Fwd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s%2BwM%2B3zUAsGo%2BAXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93%2F%2B8%2F%2FUegJQCAZkmScQAAXkQkLlTKsz%2FHCAAARKCBKrBBG%2FTBGCzABhzBBdzBC%2FxgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD%2FphCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8%2BQ8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8%2BxdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR%2BcQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI%2BksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG%2BQh8lsKnWJAcaT4U%2BIoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr%2Bh0uhHdlR5Ol9BX0svpR%2BiX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK%2BYTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI%2BpXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q%2FpH5Z%2FYkGWcNMw09DpFGgsV%2FjvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY%2FR27iz2qqaE5QzNKM1ezUvOUZj8H45hx%2BJx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4%2FOBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up%2B6Ynr5egJ5Mb6feeb3n%2Bhx9L%2F1U%2FW36p%2FVHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm%2Beb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw%2B6TvZN9un2N%2FT0HDYfZDqsdWh1%2Bc7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc%2BLpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26%2FuNu5p7ofcn8w0nymeWTNz0MPIQ%2BBR5dE%2FC5%2BVMGvfrH5PQ0%2BBZ7XnIy9jL5FXrdewt6V3qvdh7xc%2B9j5yn%2BM%2B4zw33jLeWV%2FMN8C3yLfLT8Nvnl%2BF30N%2FI%2F9k%2F3r%2F0QCngCUBZwOJgUGBWwL7%2BHp8Ib%2BOPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo%2Bqi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt%2F87fOH4p3iC%2BN7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi%2FRNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z%2Bpn5mZ2y6xlhbL%2BxW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a%2FzYnKOZarnivN7cyzytuQN5zvn%2F%2FtEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1%2B1dT1gvWd%2B1YfqGnRs%2BFYmKrhTbF5cVf9go3HjlG4dvyr%2BZ3JS0qavEuWTPZtJm6ebeLZ5bDpaql%2BaXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO%2FPLi8ZafJzs07P1SkVPRU%2BlQ27tLdtWHX%2BG7R7ht7vPY07NXbW7z3%2FT7JvttVAVVN1WbVZftJ%2B7P3P66Jqun4lvttXa1ObXHtxwPSA%2F0HIw6217nU1R3SPVRSj9Yr60cOxx%2B%2B%2Fp3vdy0NNg1VjZzG4iNwRHnk6fcJ3%2FceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w%2B0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb%2B%2B6EHTh0kX%2Fi%2Bc7vDvOXPK4dPKy2%2BUTV7hXmq86X23qdOo8%2FpPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb%2F1tWeOT3dvfN6b%2FfF9%2FXfFt1%2Bcif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v%2B3Njv3H9qwHeg89HcR%2FcGhYPP%2FpH1jw9DBY%2BZj8uGDYbrnjg%2BOTniP3L96fynQ89kzyaeF%2F6i%2FsuuFxYvfvjV69fO0ZjRoZfyl5O%2FbXyl%2FerA6xmv28bCxh6%2ByXgzMV70VvvtwXfcdx3vo98PT%2BR8IH8o%2F2j5sfVT0Kf7kxmTk%2F8EA5jz%2FGMzLdsAAAAgY0hSTQAAeiUAAICDAAD5%2FwAAgOkAAHUwAADqYAAAOpgAABdvkl%2FFRgAABt5JREFUeNqsl2lUlOcVx%2F%2F3Pi9DZRsGBgYiS2RYBQKIjAhEJW4pNrXNMbZpWtTGNkttYmJMG5soSZckRk%2B0p%2BdYPYY0Gk0ihlhRj63GhVUgBhDD5oIOy8AAMwzD4lCYtx%2BGqCQKuNyP7%2FPc%2B3u2%2B7%2F3JUzEZFBYLh62S7yIZDmVBEIBqOwsQ4DNdtBFASq2A4cuZAwVgCCPF5LGHM0Chz%2BE1XamzUyAzCMO7IhMI%2B5MDCK%2BHpCANd%2BU2rYgC%2FY7BoflYgVA2RAOoNYtyjDTe45%2Bhk96e5QywaJR%2BNsAwDhocK61VCjLTYWaclNB0OW%2Ben8mhl22g8C%2Frn7U%2BuGEwdov%2BC0i%2BQ0mIFWzoD7zwVU1czQ%2F6pjIreR3HPX5VL9jalHXiQgmBoH%2BXLHAtH5csDaXtxDLLzIBv5jyfOmG2H9U4S7snbpX43KaPpgBIhDx1rPzOlbfPC5GQT%2Fnd1mS1zABa6PfPf5y5F%2FrcJeWpp7fPkly6f7KXBRCoOSATFfXll19x74HDsvFCghsJAG8HrvlvytCXm7EPVqc5wyzp5NX15muE1omKXXyMnd9yy5r5Q3wPghvJzrLAlimXV38%2B7D1DbhPFq1M6O4b6rPVWKsCBfHi5EWWv9TkQBYAEPpLvERMC9N8FtRvjt9dPl6wwo5jPvuas7WV5jNqEjz8wA%2BCBsaan%2Bw9x1hrrXJtuaZX97ooLfqPLCUEGRR%2BiOwAsF2X98Uc30W3fb02u41frVqeVmo6FUkkwCAwCWxJ2Ls%2F0TPFNBb8TNdp9WvnVz4OAKdmX2QOzcMsAAjziDGMBd3asCF6SXHyknJTfqQTK%2BzpvhnVKT5zawCgzFTgN94pJXvP7gxxjTAIkpB%2BMnSWRMQZYEDnPVt%2FK4ejbZ%2F77726Lb6h95tAAiPELaJ1bcTbRfGeM8xv1azWSeyEa0P9igk%2BNr1%2BoNFfkpwzJCJKIQA679ntN08yDXYo3qh%2BLuUrc0E4EcNL4dP7VNDzpU8FP3vpekoQQ5CEw4bPdEfa9%2BsAgEZUmkmAAAS5hLQ9p11XGO%2BpM8V5JLUfMeQARDMlEMKIGFOVCZYb0C7Fz0oeXmIZ6nZzYoV9od%2FjVS%2BGbahUOnn9b7T6sEOviUGyA8bMDlUa0W79wBW%2FbZf%2BlrY98cDBUI8YCxGDgHCJiVVEDN8R7QWAE8Z%2F%2B1mGut2i3eP1r0S%2BXRztkdBzq6NbF7WpbF3UprKxjvfHxbrfttla%2FQBArVDbJJIAQCURMRg8ugrKIAKBSNxzHtN3VdmxY0iQYSZmTeegwTlgknYAAB7RZBh2Nm7urbeeC1r19ROT52kWn3shfH2Fu1AO3RxjY%2F0fdac7%2FhPPJMDE11GC%2BHpBJmIEuAS3Oa6w01lybMbMgvgCE6O255zy24DeCr%2FBvckn9%2Bu8ZjXYIYvjxoMJy8oeXZrT9GHIqMWTwA2oI6cFMeDIcAiSEOyibXsmZG0hAFzuq1OyY6xBAnMJgdPOmks08zU%2FbbsB9x18P37PqS%2Fb8%2Bo%2Fa96ZcLm3PmBH46Z5x40HW1eFvl4Uq0w0MwiCBOb7%2FqTsd6GvVY537DXWas1Iw1AiNJnOgwJi%2BbXhAbE08OnvaXSIW0TvYw88eaF%2FuM%2FWNdju3m5r9TlhPBzVNNDoPGC%2F5tRma%2FGJ80xqjPPUjVuvP2narrMOWd1Jlv%2FE1fN782UiNPZf9C%2FqOKa%2BndOz2j%2Bcz046sn%2B6KrVOsODirpOxld0lUxmEBK%2FktvGgFd2l6taBZn9BAtEz5xYIvAn4%2F8rFKkgstAyZ6Yf%2BS67ezlkiSU73XXRV6xqh93TyssR4JF75efBvymLdE03jgT%2FWb5tutLWpGbTm7wHZxQQAT%2ByDuKLyHRIk4cnAZ4pfCF9%2FHvfR9uh3xBxtz00BANsVDylnac6wAICaHMiBmW5NRLy4trcq0MtZ3RnpHme5H9AvjYeCc1t3pzMJgOSVnyw4eHZUB9Kyu68iMFPpysSppab8UJVC3Rnp%2FpDlXqF7mnYsdKQbv7cr6fDGW%2FZczbt6jgUtV6kIlFxuyg%2FtH%2B6zJXmlGe8G%2BmlzdsyB1j3pTAwZ9q3%2FSspbc9tmDwD0H3UffXCFlyuTlFpnPRdYb612c5c8%2BidPCu6fCLDKUubzsf6fSaWm0wmO9hbvZU8fDR2zoZ97OuppAu0UJEDEmOISZohT6q7Gek5rD3GN6FEp1DaAYB7sdNYPXPao7anS1Fmrg402g7%2BjYhGIaOXOaQc%2BuONfmCwZXJIf8xKx2KRgxYgOS%2BCROuyoyQKCxIhkOr4T6JWgxGnvZ1HWnf%2FCfHcBXxcnpRHxYwRKkUjSErFKkAQiNjP4kmBRTHbKm5KkKxwL%2BK39fwDX1XGF8ct%2B%2BQAAAABJRU5ErkJggg%3D%3D%29%3Bbottom%3A10px%3Bleft%3A15px%7Ddiv%2Evis%2Dnetwork%20div%2Evis%2Dnavigation%20div%2Evis%2Dbutton%2Evis%2Dright%7Bbackground%2Dimage%3Aurl%28data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89%2BbN%2FrXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz%2FSMBAPh%2BPDwrIsAHvgABeNMLCADATZvAMByH%2Fw%2FqQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf%2BbTAICd%2BJl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA%2Fg88wAAKCRFRHgg%2FP9eM4Ors7ONo62Dl8t6r8G%2FyJiYuP%2B5c%2BrcEAAAOF0ftH%2BLC%2BzGoA7BoBt%2FqIl7gRoXgugdfeLZrIPQLUAoOnaV%2FNw%2BH48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl%2FAV%2F1s%2BX48%2FPf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H%2FLcL%2F%2Fwd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s%2BwM%2B3zUAsGo%2BAXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93%2F%2B8%2F%2FUegJQCAZkmScQAAXkQkLlTKsz%2FHCAAARKCBKrBBG%2FTBGCzABhzBBdzBC%2FxgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD%2FphCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8%2BQ8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8%2BxdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR%2BcQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI%2BksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG%2BQh8lsKnWJAcaT4U%2BIoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr%2Bh0uhHdlR5Ol9BX0svpR%2BiX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK%2BYTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI%2BpXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q%2FpH5Z%2FYkGWcNMw09DpFGgsV%2FjvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY%2FR27iz2qqaE5QzNKM1ezUvOUZj8H45hx%2BJx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4%2FOBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up%2B6Ynr5egJ5Mb6feeb3n%2Bhx9L%2F1U%2FW36p%2FVHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm%2Beb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw%2B6TvZN9un2N%2FT0HDYfZDqsdWh1%2Bc7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc%2BLpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26%2FuNu5p7ofcn8w0nymeWTNz0MPIQ%2BBR5dE%2FC5%2BVMGvfrH5PQ0%2BBZ7XnIy9jL5FXrdewt6V3qvdh7xc%2B9j5yn%2BM%2B4zw33jLeWV%2FMN8C3yLfLT8Nvnl%2BF30N%2FI%2F9k%2F3r%2F0QCngCUBZwOJgUGBWwL7%2BHp8Ib%2BOPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo%2Bqi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt%2F87fOH4p3iC%2BN7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi%2FRNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z%2Bpn5mZ2y6xlhbL%2BxW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a%2FzYnKOZarnivN7cyzytuQN5zvn%2F%2FtEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1%2B1dT1gvWd%2B1YfqGnRs%2BFYmKrhTbF5cVf9go3HjlG4dvyr%2BZ3JS0qavEuWTPZtJm6ebeLZ5bDpaql%2BaXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO%2FPLi8ZafJzs07P1SkVPRU%2BlQ27tLdtWHX%2BG7R7ht7vPY07NXbW7z3%2FT7JvttVAVVN1WbVZftJ%2B7P3P66Jqun4lvttXa1ObXHtxwPSA%2F0HIw6217nU1R3SPVRSj9Yr60cOxx%2B%2B%2Fp3vdy0NNg1VjZzG4iNwRHnk6fcJ3%2FceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w%2B0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb%2B%2B6EHTh0kX%2Fi%2Bc7vDvOXPK4dPKy2%2BUTV7hXmq86X23qdOo8%2FpPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb%2F1tWeOT3dvfN6b%2FfF9%2FXfFt1%2Bcif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v%2B3Njv3H9qwHeg89HcR%2FcGhYPP%2FpH1jw9DBY%2BZj8uGDYbrnjg%2BOTniP3L96fynQ89kzyaeF%2F6i%2FsuuFxYvfvjV69fO0ZjRoZfyl5O%2FbXyl%2FerA6xmv28bCxh6%2ByXgzMV70VvvtwXfcdx3vo98PT%2BR8IH8o%2F2j5sfVT0Kf7kxmTk%2F8EA5jz%2FGMzLdsAAAAgY0hSTQAAeiUAAICDAAD5%2FwAAgOkAAHUwAADqYAAAOpgAABdvkl%2FFRgAABs1JREFUeNqsl3tQlOcVxp9z3m%2BXygK7C4sLxkW5o4CAkYssFSkRjabjJEOSJm1IbZx2krapiZdeprW0NVVJ0pqMM0kYJQlqkoZImGioE1ItiCAgIsFwE4Es99vCslwChf36xy5EW1A0Pn9%2B73fO772e93kJC5EMCszFd20SbyFZNpJAAACtjWUI8KAN1CRAJTbg9LXNU%2BdBkG%2BXkm7Zmg4OWoUdNqZXmQCZHQFsz0yOcCYGEc8mJGDnl2UTh5AO2x2DA3OxDaAsCDvQ32VF11qP9aZYz6SeFeooi17pPQEAvZNdTnWWKnWFuVhfYT7v0zza4M3EsMk2EPgnNZusby8Y7P8x%2F5lI%2FgMTYNSnNKQt%2F0Xtev1DfQtZlaK%2BM54fmDJXXhg4G8zEINBfqlLMe28L9s%2FlQ8Tyr5iAJ32fK%2Ftj%2BOFq3IUO1O%2BJyGk7GgsiEPFrlQ%2F07bixXdwEPckHWZJ3MgG7Qw9%2B%2FmLIS%2FW4SyXoNvQskpyHLg1e8CNQ3NI0laoje7Tg%2F8CBudgGgQwSwO%2FDD322ze%2FFFnxLRWhiBzUK94GLA2f9mSTjfU%2B7mjqyrVe%2BAX8I4aGgShbA0%2F47Sn4ZuLcR90ih6qih0anRiVprtUEQb43bYtlXmwNZAEDAj%2FACMW1M8ExpeDXyWMVCEl4yF7vntR%2FzLeov8JJlWfZR%2BY3N92%2Bcx%2FreOmu1quNrk27EWW0xvWspJcigoNNkA4C3Yk59vH7xltvu3ktDxe7PX34ilQCQfeci1j2xfn94ZrGCneY8uxcHCnW%2Fvbr9EQD4d2ITc8AprAOAQLewroVAAaB8oMiLiRHvmVy7znNTjWCFrXKoJOSHFQ%2BkvnF9f%2Bjco07s91MFdwmSkHQuYB0T8WYwIcYj0bTQdRufGlFKJMFVaCb%2FGvZW6aGI4yeXOwd2mr%2Fu05zsyDY%2BW5X64Nm%2BfO85NpuJiCFJTpslIoonADEeiT2zIzIXuh%2Bo25PQNtbsNVMOBUn2g08MiSTHN3uZjNTEDr4dnX%2F6H%2B1H%2FXPasmKvW%2BsMGfW%2FMXzende4K3h%2FibvSYxIAItyie%2FK7cgCitQxCIBFjpTrKMgM%2BWPfrhLbxFi9iMQtlYjAJSCSBSYBAIPBNI3p86TPXj8bk56R4PVylFE626uFLQc9efiTVPDmgBIAAtzALEYNBQRITa4kYix21FwBax655CVagPLk7806Pj1qo%2F7MraF%2FFQ14%2FaMhszYhvGqn3KTef89rklWrSKXUTkn3mtJK9Bzf3XJA0e%2FPcrdgxIwSCDPmbZMQgABJkDBKzvn%2Byy2npIv9xAPB1Ceo2jTZ7Gc8afipIgEhAkACDwcSQQZBIIGnx5it7gg%2BU3wgcnbZKR1r%2BFnW%2Bv2DVtDwtXCXNSKz797oAwDzZ7ySRAIBBFsTXmBh1w1%2BoZ4J3h%2Bwv9lUFdbMDOrO%2B5IAqWIGZthuV13nC77nKRx8r7PssyibLIkoT1%2Fh65HsfzWyu5tF6NYNB4EYJzKUETqgcLNVv0D%2FcDQBrNAnm9%2BLOfTLfNB5u2hf5z%2B6TMexYji%2BtVdrM5leMbWOtSwQx%2FF1C2rcuebIqwSO568a4WmuN3mEYSiUi%2BpRl2l1pLvYBsKArUKVwnZRYgdHpMWVG4%2B%2FWXhwoDBXE7OmkHzJ6JNemLfv51bniGqzVPoIkyLbpfK7ZMFIkE6FlrMn7Ql%2BBbiHg%2BzXGbgLjylDpyosD58KZmKM0cfWHI9%2F%2FaD5o1VCZrnO83VuQQOja5PMCfwK8n3K2ChIbLVOD9KB36le3A%2Bu%2Fs2Q81C2yRavQmQNdVnamLnmq4nHD9jpB0rwm77jpjTW9E906Bu18fWlWCQHAox9CtGoXTwmS8IThZyXPB%2B29inuoE6bMsDM9ufEAMNHqJuU8ljMtAKA2B7IhzaWNiLfWjVQb3J10%2FSGuEZZ7Af1X7%2BlluZ3HkpgEQPL291M%2BqbzJgXQcG60ypKlVTGwsMxcFaJW6%2FhDXVZZvCz3RlrmRiQHwy9nRn2bM6bnas4cLfH6s1RIorsJcFDA2PToR7Z7QezfQD9qzwvI6TyTZC47ttXeiT%2B2c1%2BwBgOndoTPLt7mrmCRjvfULQ4O1xsVVchu7b9GysYUAqy3lnsdNb0aXmQuj7PYWL2etuRl6S0OfXLjiGQIdEY6K5esc2BWhjvkqXLO6x08VPKxV6iYAwuBkv5NpvNmtbrhaX2%2BtWdY70eVNINhtLW0%2Fsjrv6B0%2FYdJlcGlR2AvE4hUlKwHQ7BU5cz8LRx0HaPY7gXb53L%2F67%2BmUfudPmP%2FtwOWS6AQi%2Fj6B4iWS%2FIlYK%2ByGYJDB1wWLErLRKd%2FomOJbAWf03wEAyO9m%2B%2FTtS3AAAAAASUVORK5CYII%3D%29%3Bbottom%3A10px%3Bleft%3A95px%7Ddiv%2Evis%2Dnetwork%20div%2Evis%2Dnavigation%20div%2Evis%2Dbutton%2Evis%2DzoomIn%7Bbackground%2Dimage%3Aurl%28data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89%2BbN%2FrXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz%2FSMBAPh%2BPDwrIsAHvgABeNMLCADATZvAMByH%2Fw%2FqQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf%2BbTAICd%2BJl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA%2Fg88wAAKCRFRHgg%2FP9eM4Ors7ONo62Dl8t6r8G%2FyJiYuP%2B5c%2BrcEAAAOF0ftH%2BLC%2BzGoA7BoBt%2FqIl7gRoXgugdfeLZrIPQLUAoOnaV%2FNw%2BH48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl%2FAV%2F1s%2BX48%2FPf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H%2FLcL%2F%2Fwd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s%2BwM%2B3zUAsGo%2BAXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93%2F%2B8%2F%2FUegJQCAZkmScQAAXkQkLlTKsz%2FHCAAARKCBKrBBG%2FTBGCzABhzBBdzBC%2FxgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD%2FphCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8%2BQ8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8%2BxdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR%2BcQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI%2BksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG%2BQh8lsKnWJAcaT4U%2BIoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr%2Bh0uhHdlR5Ol9BX0svpR%2BiX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK%2BYTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI%2BpXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q%2FpH5Z%2FYkGWcNMw09DpFGgsV%2FjvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY%2FR27iz2qqaE5QzNKM1ezUvOUZj8H45hx%2BJx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4%2FOBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up%2B6Ynr5egJ5Mb6feeb3n%2Bhx9L%2F1U%2FW36p%2FVHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm%2Beb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw%2B6TvZN9un2N%2FT0HDYfZDqsdWh1%2Bc7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc%2BLpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26%2FuNu5p7ofcn8w0nymeWTNz0MPIQ%2BBR5dE%2FC5%2BVMGvfrH5PQ0%2BBZ7XnIy9jL5FXrdewt6V3qvdh7xc%2B9j5yn%2BM%2B4zw33jLeWV%2FMN8C3yLfLT8Nvnl%2BF30N%2FI%2F9k%2F3r%2F0QCngCUBZwOJgUGBWwL7%2BHp8Ib%2BOPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo%2Bqi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt%2F87fOH4p3iC%2BN7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi%2FRNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z%2Bpn5mZ2y6xlhbL%2BxW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a%2FzYnKOZarnivN7cyzytuQN5zvn%2F%2FtEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1%2B1dT1gvWd%2B1YfqGnRs%2BFYmKrhTbF5cVf9go3HjlG4dvyr%2BZ3JS0qavEuWTPZtJm6ebeLZ5bDpaql%2BaXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO%2FPLi8ZafJzs07P1SkVPRU%2BlQ27tLdtWHX%2BG7R7ht7vPY07NXbW7z3%2FT7JvttVAVVN1WbVZftJ%2B7P3P66Jqun4lvttXa1ObXHtxwPSA%2F0HIw6217nU1R3SPVRSj9Yr60cOxx%2B%2B%2Fp3vdy0NNg1VjZzG4iNwRHnk6fcJ3%2FceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w%2B0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb%2B%2B6EHTh0kX%2Fi%2Bc7vDvOXPK4dPKy2%2BUTV7hXmq86X23qdOo8%2FpPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb%2F1tWeOT3dvfN6b%2FfF9%2FXfFt1%2Bcif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v%2B3Njv3H9qwHeg89HcR%2FcGhYPP%2FpH1jw9DBY%2BZj8uGDYbrnjg%2BOTniP3L96fynQ89kzyaeF%2F6i%2FsuuFxYvfvjV69fO0ZjRoZfyl5O%2FbXyl%2FerA6xmv28bCxh6%2ByXgzMV70VvvtwXfcdx3vo98PT%2BR8IH8o%2F2j5sfVT0Kf7kxmTk%2F8EA5jz%2FGMzLdsAAAAgY0hSTQAAeiUAAICDAAD5%2FwAAgOkAAHUwAADqYAAAOpgAABdvkl%2FFRgAABiBJREFUeNqkV2tQlOcVfp7zvgvDRe66y8htXUBR1GoFI%2BBtFJvRtjPJBGeaH2a8DGmbttgSTWbSJEw6TWOsrbbpTIeJZGqaTipTa6LJZDTVUTYQdNAohoso6qLucnERN0Axcb%2F8%2BHaJUHDX9Pz6vnnPe57vXJ5zzkeEIwaYcwBL%2FVrW0TCKqZANINEvBhSk3w9eUmC9HzjcsfarOhBGKJN84GkVJHcetvqFu4SAIYELYlpm4LpQQMqoQQKVnzeO7EYV%2FA8NnHMAGwHWQJmAjtg895LkFa7FU1d258UvGLBGpI4AQM9dd2TrwNn4016n9bS3LqNzsD1VKPAbfhCyqflR31thAzv%2BLa%2BQxotCoNi6pn1D1s9aVli%2F3xtOVk72fjT1XVf17E9uHZspFBD8zdk13pdCAjsOyG6KUSEEnrT%2FtPHluW%2Bcw7eQ19q2z6%2Ft2rsYJEjZ07S6d%2BukwI5%2FyQ7RxnYC2DZnx8dbHNs6xxs85T2R9GprZcmVwYs2BYWsmBzP83m7nIVJS73jdfdd%2B7PjjUu%2FXWUCGTtPre7ZHjxTY3Kq8DoV8Ou5u49snPGrKxN58syZ9aVXBztsigoUBd%2BXt2NbfZ8llaVvah%2BvOz9hcX%2BCJenWp7eOOYS6ePpTU1w39vk%2BAwCzFPdDQbFGFPCUY2v9hqxfXJ0shNeHLtsUFc6UequbVvdVkwLX0GXbZPpl6Zuu%2Fij9x%2FVCBU1dU7bfdFYAIDsSFRCgeOqa9hfy%2FnDhwfwTKOrRd0U95n0iqch9%2BcKS5JVtpMCdkllhAhugCHcRwAb7z1tCEp8CCXAWAJRoCFXIYnti%2BsYWTQ0tll0wQMk%2BhGUAkBOX714xbV1IyuhxHhIMC%2FiR5OV9M2JmuhU1Vh7PXiakrIUQhcnLXeHQxPT4GyAtFqgwgAPF5iIFWkeu1SSLCKAweXn3%2FZR5rXV7SddQpy3YDoNems9qTI5hGCitm1MOAAx0aaFCerTd84zjBed3Egq9ADA%2FrqD7Q3ctQC4REDmkYHb8goGgsR2tz5V0DV%2BxUdQoqAQ81RybU4IgFWgACgpaLLCIBUo0bv63y%2FaXy6%2BWBHWz4%2FIHSIGAuVooiaRgWqD3AsDVoQ6bEgtOrfJUhwrf0WUtk%2Br8sL6wvHvk5ijVUiJSRrQZuURtfoGMuaCoRyfP%2FyMy0XykgAA0DPRTxNp31x2ZFuUYBgB7bK7HNdhpKz6WXq6oQCooKghMKhkgji77vBoA1jkXlAvVfRQjFMUcmxSkRWd6gpjeu32R2kxTvyhKh1DQeud8fFBh26zfOe0xuR4JgAbzywCoRSzfeDUKatJKUQK%2BCjKiHZ6nZ2xzBnU7B9vixTy7qCHSQEhJU3%2BDtdT6mAcAFiWUeP%2FxyPH3Jwrfo3XzysemRcEA8F5RY8h6aPE1WwMLQ4OQ%2FEBANHmdGWHlzZyxk3ayB0m771yGooYy%2BKE0l35x0iBxZehS6ie9R1PCMaDvCzWDXA4hZ283ptwcvp6qqDBnyao6AWEQrBQQ%2F7y%2Bd3YoA%2BNBTAaElo973p8tVFCQyipW%2Bc3pdNu7BwBOe%2Btm%2FeniK%2FkPFWowpMfvuKrzzw80zSKIkWsJe0bHYu163BNwMwDsv7G36ODNtzMnM5IWZfeQgscbisvLPl1aDhLTo7I8k%2Bn%2Fp%2Bdw5pGeg0WKGiS31K6vvTdmA7nx9uDZ9A3xMUIpbvSezE6MSOmbNWXewHhD6dH23o7BlqQvvrwTK6KQFpXl2WyvcE6LTB2eCPSdrurvmcUnO%2FcVfPD6pMteyfGs3QKpUFQoS9tU%2FxPH8xe%2BTdd693pN%2FpHug0Xmqntvz1uLDo9Z9v5nnrn%2BdvujrI1JMUJd3OY7n97ua46douOGpkdlDoUDeG7g1NS%2Fu%2F5a0Og9scCsB%2BysWXSoMuyFftWJvM0E31SBjmWPznHPjy%2B8NjdhYfeMmJl3EiNSRgCi%2F25fpGu4M671zjlrm685s2fEnUoQ5lrLLW8uPLj3oX9hqgxIw8n8X1LU7yMkItCHzREZrGQV6ONmy5TggHk247sL%2F1jFqof%2FhRn%2FAWfqC0pI%2BQHBIk3tICXRrFTpF8hlJaqefh6yFxQ6HwQYlK8HAKyt3WsWxl7fAAAAAElFTkSuQmCC%29%3Bbottom%3A10px%3Bright%3A15px%7Ddiv%2Evis%2Dnetwork%20div%2Evis%2Dnavigation%20div%2Evis%2Dbutton%2Evis%2DzoomOut%7Bbackground%2Dimage%3Aurl%28data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89%2BbN%2FrXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz%2FSMBAPh%2BPDwrIsAHvgABeNMLCADATZvAMByH%2Fw%2FqQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf%2BbTAICd%2BJl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA%2Fg88wAAKCRFRHgg%2FP9eM4Ors7ONo62Dl8t6r8G%2FyJiYuP%2B5c%2BrcEAAAOF0ftH%2BLC%2BzGoA7BoBt%2FqIl7gRoXgugdfeLZrIPQLUAoOnaV%2FNw%2BH48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl%2FAV%2F1s%2BX48%2FPf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H%2FLcL%2F%2Fwd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s%2BwM%2B3zUAsGo%2BAXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93%2F%2B8%2F%2FUegJQCAZkmScQAAXkQkLlTKsz%2FHCAAARKCBKrBBG%2FTBGCzABhzBBdzBC%2FxgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD%2FphCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8%2BQ8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8%2BxdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR%2BcQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI%2BksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG%2BQh8lsKnWJAcaT4U%2BIoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr%2Bh0uhHdlR5Ol9BX0svpR%2BiX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK%2BYTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI%2BpXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q%2FpH5Z%2FYkGWcNMw09DpFGgsV%2FjvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY%2FR27iz2qqaE5QzNKM1ezUvOUZj8H45hx%2BJx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4%2FOBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up%2B6Ynr5egJ5Mb6feeb3n%2Bhx9L%2F1U%2FW36p%2FVHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm%2Beb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw%2B6TvZN9un2N%2FT0HDYfZDqsdWh1%2Bc7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc%2BLpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26%2FuNu5p7ofcn8w0nymeWTNz0MPIQ%2BBR5dE%2FC5%2BVMGvfrH5PQ0%2BBZ7XnIy9jL5FXrdewt6V3qvdh7xc%2B9j5yn%2BM%2B4zw33jLeWV%2FMN8C3yLfLT8Nvnl%2BF30N%2FI%2F9k%2F3r%2F0QCngCUBZwOJgUGBWwL7%2BHp8Ib%2BOPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo%2Bqi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt%2F87fOH4p3iC%2BN7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi%2FRNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z%2Bpn5mZ2y6xlhbL%2BxW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a%2FzYnKOZarnivN7cyzytuQN5zvn%2F%2FtEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1%2B1dT1gvWd%2B1YfqGnRs%2BFYmKrhTbF5cVf9go3HjlG4dvyr%2BZ3JS0qavEuWTPZtJm6ebeLZ5bDpaql%2BaXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO%2FPLi8ZafJzs07P1SkVPRU%2BlQ27tLdtWHX%2BG7R7ht7vPY07NXbW7z3%2FT7JvttVAVVN1WbVZftJ%2B7P3P66Jqun4lvttXa1ObXHtxwPSA%2F0HIw6217nU1R3SPVRSj9Yr60cOxx%2B%2B%2Fp3vdy0NNg1VjZzG4iNwRHnk6fcJ3%2FceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w%2B0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb%2B%2B6EHTh0kX%2Fi%2Bc7vDvOXPK4dPKy2%2BUTV7hXmq86X23qdOo8%2FpPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb%2F1tWeOT3dvfN6b%2FfF9%2FXfFt1%2Bcif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v%2B3Njv3H9qwHeg89HcR%2FcGhYPP%2FpH1jw9DBY%2BZj8uGDYbrnjg%2BOTniP3L96fynQ89kzyaeF%2F6i%2FsuuFxYvfvjV69fO0ZjRoZfyl5O%2FbXyl%2FerA6xmv28bCxh6%2ByXgzMV70VvvtwXfcdx3vo98PT%2BR8IH8o%2F2j5sfVT0Kf7kxmTk%2F8EA5jz%2FGMzLdsAAAAgY0hSTQAAeiUAAICDAAD5%2FwAAgOkAAHUwAADqYAAAOpgAABdvkl%2FFRgAABV5JREFUeNq0l2tQVVUYht%2F3W%2FvACMr16IFRQDiAgChpgiikMqY1WjnN9KsfGOXYTOVgkvbDUsZuXrK0qZmGUSvNspjI8TZOmo6AGBoZYly8YB6Qw80DBwQ6jJ3dj30OZZmiwvtv77XW96y91l7v9y1iMNLBuCI84tZkIXU9gwqxAILdokNBOtzgJQWWuYEDFxfcLAGh3y0k79iaD4mfjOVu4WYhoItngBiR6RkuFJAyEJBA3m%2Flri3Ih%2FuewXFFyAG4A8oAWkcm2meEzrFNH53Vkhg4xWnxCXcBQGu%2F3bfGeTbwjKPUcsZRElnfUxcuFLh1Nwh5vurx7s8GDbZ%2BL%2BtI%2FU0hkGGZX5c9%2FpXqOZYn2gazK8Vth0fvsRUknbx%2BbIJQQPCts%2FMda%2B4KthbJFoqeKwSejX6pfO2kjytxH1pfuyqlsGH7dJAgZWvFo23L%2F9muboF%2BJxtE0%2FOEwMqJG46uSHinFvepTPO8lhGaX%2BfPHSdjCKaPy%2Fb3v7az58h%2FwHFFyIHCRirgjUlbfsiJWXEFD6iUoOkdQaaQ6z9dP2YVahljF4%2ByXdvZ%2Fevf4G%2BhQk2sEAUsti4vWxa35gKGSBMDp3T23OxxVXdXRijKovSFzrerC6ELAMT6IhcCZIyeX7c68YPzGGLlxq89PyM0q5YU2M1RuQAg0EERbiaA7Ohl1RgmPTM2p1qjBk1Mm6GDErsfswAgLiDZPmfMwrbhAqeHzm6P8Z9gV9SQdTx2lpCyAEKkhc62YZiVEjTdRgo0zXeBRnImAaSFzm7xdjjtOBGyvmZVZkNvfZjXDhU14%2BBToFEDKRAQpAJ0HRTjP6XHpYUKEX7RzS9bV5c%2BFJTmAICUgNSWQ%2FZCgJwhIOJIQVLgFKcXvKHm9cyGvithFDUAFQqECho1CBUIggYapAJ1QEFBExNMYoISDU1%2FNIR9cvndTG%2Fc2IBkp2fC8ZpQgknBGI%2F3AsDvvRfDlJhwem5zwYMs7VNlaUtbXE1h3mezj9mlGSsXrBkzkFsGKGoDmedBJLfLjxQQgAYdHRSxtPfbfceNsPYBQPTI%2BGZbT31YxrGIpYoKpIKigkAgFOggNBrbQBBCBaEM2L%2BiGGmTgnF%2BUc1epqO%2F3VejAoAOUZSLQkFN17lAb4eVCe%2BVRvvHN4sH6t1feqAmMUGoPHvvhdLzTjzfKoj0sza%2FGLOy1Bu3vqc20Pgl5YIGkVOEZFZ0nLLMszzdDADTgjIdX6Uf3zfUx6m6u8riKRhOCcmDAqLCURo53Oe4rrsyUlGD0nlIqubdKNZJXOm9FH6y7Yh5uKBnO8vNTX2N4YoKE2fMLREQOsE8AfFN4%2Fak4QIfbd2XJFRQkLx85ruN7NTp2AoAZxwlCR9dWJc81NDdtoLkc86KBIJwXQ3aOpCPqwuhR2SPbCBlUc2NyogQX3N7wqgU51BAf2w9EFXUtCtLqADqS76ev6%2Filgrk2q6esxHZgf5CySh3FMcG%2B5jbE0ZNdj4odHdDwWPGcZNNO1MPbrxtzdW4s%2BtI5HPBwQTTzziKY3v%2F7HGlhmS23g90T%2BOO5L1Nu7MMw3Fv%2FTx1f97%2FFnsAYPui8%2FD4nBB%2FoZZR230uoq67auQoLaB37Iio3sEAK52nR39p%2BzS13HFiilHeYtOOabdC71jQzz2R%2BALBbcrjWNF%2BcfaUwLSrk4KmtsT4T%2BgK9jG7AKKjv93X1lcfUNNVaantropqddnDCcIoa7lk29S92%2B%2F5CpOvQ04VJ79KUe%2F7iI%2FHh40U6c3PyuPjhmWKN8G8Fvnw1A%2FzmX%2FvV5h%2FT%2BCXstRMUp4kOFOjZiUlWBkFQYdALitRZXRzf3RqWumdgF79NQDBOa2V%2FiYSHAAAAABJRU5ErkJggg%3D%3D%29%3Bbottom%3A10px%3Bright%3A55px%7Ddiv%2Evis%2Dnetwork%20div%2Evis%2Dnavigation%20div%2Evis%2Dbutton%2Evis%2DzoomExtends%7Bbackground%2Dimage%3Aurl%28data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89%2BbN%2FrXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz%2FSMBAPh%2BPDwrIsAHvgABeNMLCADATZvAMByH%2Fw%2FqQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf%2BbTAICd%2BJl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA%2Fg88wAAKCRFRHgg%2FP9eM4Ors7ONo62Dl8t6r8G%2FyJiYuP%2B5c%2BrcEAAAOF0ftH%2BLC%2BzGoA7BoBt%2FqIl7gRoXgugdfeLZrIPQLUAoOnaV%2FNw%2BH48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl%2FAV%2F1s%2BX48%2FPf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H%2FLcL%2F%2Fwd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s%2BwM%2B3zUAsGo%2BAXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93%2F%2B8%2F%2FUegJQCAZkmScQAAXkQkLlTKsz%2FHCAAARKCBKrBBG%2FTBGCzABhzBBdzBC%2FxgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD%2FphCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8%2BQ8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8%2BxdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR%2BcQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI%2BksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG%2BQh8lsKnWJAcaT4U%2BIoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr%2Bh0uhHdlR5Ol9BX0svpR%2BiX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK%2BYTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI%2BpXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q%2FpH5Z%2FYkGWcNMw09DpFGgsV%2FjvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY%2FR27iz2qqaE5QzNKM1ezUvOUZj8H45hx%2BJx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4%2FOBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up%2B6Ynr5egJ5Mb6feeb3n%2Bhx9L%2F1U%2FW36p%2FVHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm%2Beb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw%2B6TvZN9un2N%2FT0HDYfZDqsdWh1%2Bc7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc%2BLpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26%2FuNu5p7ofcn8w0nymeWTNz0MPIQ%2BBR5dE%2FC5%2BVMGvfrH5PQ0%2BBZ7XnIy9jL5FXrdewt6V3qvdh7xc%2B9j5yn%2BM%2B4zw33jLeWV%2FMN8C3yLfLT8Nvnl%2BF30N%2FI%2F9k%2F3r%2F0QCngCUBZwOJgUGBWwL7%2BHp8Ib%2BOPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo%2Bqi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt%2F87fOH4p3iC%2BN7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi%2FRNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z%2Bpn5mZ2y6xlhbL%2BxW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a%2FzYnKOZarnivN7cyzytuQN5zvn%2F%2FtEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1%2B1dT1gvWd%2B1YfqGnRs%2BFYmKrhTbF5cVf9go3HjlG4dvyr%2BZ3JS0qavEuWTPZtJm6ebeLZ5bDpaql%2BaXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO%2FPLi8ZafJzs07P1SkVPRU%2BlQ27tLdtWHX%2BG7R7ht7vPY07NXbW7z3%2FT7JvttVAVVN1WbVZftJ%2B7P3P66Jqun4lvttXa1ObXHtxwPSA%2F0HIw6217nU1R3SPVRSj9Yr60cOxx%2B%2B%2Fp3vdy0NNg1VjZzG4iNwRHnk6fcJ3%2FceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w%2B0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb%2B%2B6EHTh0kX%2Fi%2Bc7vDvOXPK4dPKy2%2BUTV7hXmq86X23qdOo8%2FpPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb%2F1tWeOT3dvfN6b%2FfF9%2FXfFt1%2Bcif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v%2B3Njv3H9qwHeg89HcR%2FcGhYPP%2FpH1jw9DBY%2BZj8uGDYbrnjg%2BOTniP3L96fynQ89kzyaeF%2F6i%2FsuuFxYvfvjV69fO0ZjRoZfyl5O%2FbXyl%2FerA6xmv28bCxh6%2ByXgzMV70VvvtwXfcdx3vo98PT%2BR8IH8o%2F2j5sfVT0Kf7kxmTk%2F8EA5jz%2FGMzLdsAAAAgY0hSTQAAeiUAAICDAAD5%2FwAAgOkAAHUwAADqYAAAOpgAABdvkl%2FFRgAABptJREFUeNqsl21QlNcVx%2F%2F%2Fcx9hIipuAJHasgHlRdw0xay7yK7smg6sb2DSdtqZduLUNENmOk1tQuM4U7UzTvshSRlFZzoNCWSSSTJp%2B6VNkLCAeQHBoCCgqNBE0wUqL%2BKuwIiiZZ9%2BeHa3aAS3Sf8zO8%2FL3nt%2B95x7z7n3YWlpKUQEJAEgch9%2BJola9xEC2ADBVgAOKqwCYAqKDgUJBIHPBWwFWQNdbyZFBwAC0GGIAHQSj3%2F8HHRdhzYbdDfwg4IjAsGvICgXAroYBiCEDkBBACBZoyST4gDwQqh7mQ4cEkhQD0EBIIggRMQAh2EiEvEYAGrdR3YSqIYCIEDaotVDeYnu%2FryEjSOr43PHl8WmTBPA6PRQ7IWJrvhT%2FubkU%2F7m1EvX%2B1KEUh7Ug%2BWkPEXgdUSkR%2Bxrd0NJ4qjr8AEI9pGAI7mo78mHfnF%2BY%2FK2K7iHUheuvJG6cOUNz%2FLvDwPobrpSl%2FRuf2VOy9UPs4RSTSANwH4Y449EVdnt9ojHIeghCHYLgR%2Bn%2F7zt4Np32tIWZU4hSpnjVk1t%2FcaPfOO3%2Ff%2B%2BMNH5TVJcisoEoo4ksgbsXwYfdR1%2BkQplQuCFNS82Pp%2F9%2B158RTkTC0ce0OKutQeOp5PME0qcUBqyBmwGOC8vz4AWVOyE4CUqYO%2FDh%2Bp3pj%2F%2FBb6mHllqCyxd8ODVT69%2BuFKoOYTSnzFg7SJpzHFNQYWiQrUIsCN9V%2BuOh375zz179pSGI1FSUuK12%2B2%2BaGDt7e3muro6T%2Fh57969lZdvDrT%2BZbA6n0B1nfPVN7e0PjMjIgIIdkEAR1JR329yDvaE0%2Bl%2FhQKA1Wr1bd682SsikUW7K%2BO3PesTNvaSAiXaLhGBvO86RFEoJ4Adac%2BeDxsgiZKSEm9NTY3n5MmT5mjBHR0d5vr6es%2BmTZu8SqnI%2Bx%2Bs%2BOl5jRo0auX1jtepQaEAADKWWIbcy7ZGUmb79u1eu93uI%2Bmtra31HLj5TGDs9rBJICCNn1GRCKGCUJAUuzzw6CfbTB6Px7t27VofAG%2FYXl6Ceyw9LmvIN3UxZUafKRACWyCELcHVP3vk4fDabDZf%2B2N%2FD9g%2BfsLEEFSooFGDogZNFkBRgSCsTcWm066jgRAU4et%2FF5u9nxRosmCLRmE%2BQdgSXCNzhW%2Fs9rDJ63wVJx77V%2BV8YS6UNaW8BdOcqzx%2B3Ujt0F8Bcr1GMIMU5CzJHZ%2Brg6IGCYV2PimoyIK6lzIWrxkPTVGmRoqJFCyLTZmeq4MB5f3BVADnbpcQkzStUQMAk0YKBPfzxlhA95NQQe43QBotBECAFFyZHo6dz6CKCizAPFPivzUWqxm2AqIgnwkFvZNn4uczGK3Hah7wpet98UZ85R8aKScIcXYEWpMLkx8fvleHpNjlAWtTsakQa0pVKGcJQqMGUqCHBvfdjp%2FgTP6xwFzg85PdyaH2J4SUowKiw3889e4KBACnT582W5uKTV2uusAdUFlgzBcFQoFGDT35HwW%2B82mhqaenxwwA4WtYfRNnUkMZUqsJpEkn8cXU5yktYw2JjsTCMQDwer0ekt6GhgZPUVGRd3fu7qjqdU9Mj7mlpcVD0tvS0uKxWCyVANB5rS3x8s3BFEUFgTTLtuZndQHLBMSfB6pyZtfqMDQ3NzfqTcJisficTqc3BI%2B8bxh9L8corarM3fnDoIT%2BrACAU%2F7m7MOfHbCEwQDQ2Njo6erqinqTOHfuXNjjiI23%2BystZ8c7smmkWgVJcN%2B%2BfRARfLDhlacEUqVEQ1nm77xPrHjSh%2F%2BDjo3WmN%2Fs%2F6OHEOgIPr2h63tVuq5Dud1ukETWoK3zorkzTiiONn%2FTKlNM4lj24m%2BPf13o2wOVHqGA5MsAXjKPrDaqnMvlQnjTzhy0Nlw0d5oI5p3yN62amrk%2Bve5B5%2BhXgb47WGX52%2BV3NgoFOvQKAGUkkTqcbZy5XC7XHYf4zEFr3aXU7jih5uidPPOtvsmzixZr8VMrHjBHddLsHj%2BZ9Fb%2Fn9a1%2BT%2FJDaXey0IpEzEKkHnU8Jj79%2B%2BPeEwSSimQRGP%2BGz8j5DVFBVKQtjBj6JGlNt%2FD8Y%2BOpMdlTphiEqcB4tqtsVjfjUtLLkx0J%2FdOnjWPTg%2BlEARIEHwaQJVQIYggACC%2Fqxi6rn8ZHL4XETSsf0MU1HOk%2FCFGYgAwskUqY5eBitRxzn7%2Fa0V1EEBwdqkN6jPI7y4xPmHmC5unbWdQRMqP2d86qANOksU6gvmArNQRNClqABnQgYuK0krI%2BwCOAyH3DK%2FvqOXhaf3PAO7mIRjDNV25AAAAAElFTkSuQmCC%29%3Bbottom%3A50px%3Bright%3A15px%7Ddiv%2Evis%2Dcolor%2Dpicker%7Bposition%3Aabsolute%3Btop%3A0%3Bleft%3A30px%3Bmargin%2Dtop%3A%2D140px%3Bmargin%2Dleft%3A30px%3Bwidth%3A310px%3Bheight%3A444px%3Bz%2Dindex%3A1%3Bpadding%3A10px%3Bborder%2Dradius%3A15px%3Bbackground%2Dcolor%3A%23fff%3Bdisplay%3Anone%3Bbox%2Dshadow%3Argba%280%2C0%2C0%2C%2E5%29%200%200%2010px%200%7Ddiv%2Evis%2Dcolor%2Dpicker%20div%2Evis%2Darrow%7Bposition%3Aabsolute%3Btop%3A147px%3Bleft%3A5px%7Ddiv%2Evis%2Dcolor%2Dpicker%20div%2Evis%2Darrow%3A%3Aafter%2Cdiv%2Evis%2Dcolor%2Dpicker%20div%2Evis%2Darrow%3A%3Abefore%7Bright%3A100%25%3Btop%3A50%25%3Bborder%3Asolid%20transparent%3Bcontent%3A%22%20%22%3Bheight%3A0%3Bwidth%3A0%3Bposition%3Aabsolute%3Bpointer%2Devents%3Anone%7Ddiv%2Evis%2Dcolor%2Dpicker%20div%2Evis%2Darrow%3Aafter%7Bborder%2Dcolor%3Argba%28255%2C255%2C255%2C0%29%3Bborder%2Dright%2Dcolor%3A%23fff%3Bborder%2Dwidth%3A30px%3Bmargin%2Dtop%3A%2D30px%7Ddiv%2Evis%2Dcolor%2Dpicker%20div%2Evis%2Dcolor%7Bposition%3Aabsolute%3Bwidth%3A289px%3Bheight%3A289px%3Bcursor%3Apointer%7Ddiv%2Evis%2Dcolor%2Dpicker%20div%2Evis%2Dbrightness%7Bposition%3Aabsolute%3Btop%3A313px%7Ddiv%2Evis%2Dcolor%2Dpicker%20div%2Evis%2Dopacity%7Bposition%3Aabsolute%3Btop%3A350px%7Ddiv%2Evis%2Dcolor%2Dpicker%20div%2Evis%2Dselector%7Bposition%3Aabsolute%3Btop%3A137px%3Bleft%3A137px%3Bwidth%3A15px%3Bheight%3A15px%3Bborder%2Dradius%3A15px%3Bborder%3A1px%20solid%20%23fff%3Bbackground%3A%234c4c4c%3Bbackground%3A%2Dmoz%2Dlinear%2Dgradient%28top%2C%234c4c4c%200%2C%23595959%2012%25%2C%23666%2025%25%2C%23474747%2039%25%2C%232c2c2c%2050%25%2C%23000%2051%25%2C%23111%2060%25%2C%232b2b2b%2076%25%2C%231c1c1c%2091%25%2C%23131313%20100%25%29%3Bbackground%3A%2Dwebkit%2Dgradient%28linear%2Cleft%20top%2Cleft%20bottom%2Ccolor%2Dstop%280%2C%234c4c4c%29%2Ccolor%2Dstop%2812%25%2C%23595959%29%2Ccolor%2Dstop%2825%25%2C%23666%29%2Ccolor%2Dstop%2839%25%2C%23474747%29%2Ccolor%2Dstop%2850%25%2C%232c2c2c%29%2Ccolor%2Dstop%2851%25%2C%23000%29%2Ccolor%2Dstop%2860%25%2C%23111%29%2Ccolor%2Dstop%2876%25%2C%232b2b2b%29%2Ccolor%2Dstop%2891%25%2C%231c1c1c%29%2Ccolor%2Dstop%28100%25%2C%23131313%29%29%3Bbackground%3A%2Dwebkit%2Dlinear%2Dgradient%28top%2C%234c4c4c%200%2C%23595959%2012%25%2C%23666%2025%25%2C%23474747%2039%25%2C%232c2c2c%2050%25%2C%23000%2051%25%2C%23111%2060%25%2C%232b2b2b%2076%25%2C%231c1c1c%2091%25%2C%23131313%20100%25%29%3Bbackground%3A%2Do%2Dlinear%2Dgradient%28top%2C%234c4c4c%200%2C%23595959%2012%25%2C%23666%2025%25%2C%23474747%2039%25%2C%232c2c2c%2050%25%2C%23000%2051%25%2C%23111%2060%25%2C%232b2b2b%2076%25%2C%231c1c1c%2091%25%2C%23131313%20100%25%29%3Bbackground%3A%2Dms%2Dlinear%2Dgradient%28top%2C%234c4c4c%200%2C%23595959%2012%25%2C%23666%2025%25%2C%23474747%2039%25%2C%232c2c2c%2050%25%2C%23000%2051%25%2C%23111%2060%25%2C%232b2b2b%2076%25%2C%231c1c1c%2091%25%2C%23131313%20100%25%29%3Bbackground%3Alinear%2Dgradient%28to%20bottom%2C%234c4c4c%200%2C%23595959%2012%25%2C%23666%2025%25%2C%23474747%2039%25%2C%232c2c2c%2050%25%2C%23000%2051%25%2C%23111%2060%25%2C%232b2b2b%2076%25%2C%231c1c1c%2091%25%2C%23131313%20100%25%29%3Bfilter%3Aprogid%3ADXImageTransform%2EMicrosoft%2Egradient%28%20startColorstr%3D%27%234c4c4c%27%2C%20endColorstr%3D%27%23131313%27%2C%20GradientType%3D0%20%29%7Ddiv%2Evis%2Dcolor%2Dpicker%20div%2Evis%2Dinitial%2Dcolor%2Cdiv%2Evis%2Dcolor%2Dpicker%20div%2Evis%2Dnew%2Dcolor%7Bwidth%3A140px%3Bheight%3A20px%3Btop%3A380px%3Bfont%2Dsize%3A10px%3Bcolor%3Argba%280%2C0%2C0%2C%2E4%29%3Bline%2Dheight%3A20px%3Bposition%3Aabsolute%3Bvertical%2Dalign%3Amiddle%7Ddiv%2Evis%2Dcolor%2Dpicker%20div%2Evis%2Dnew%2Dcolor%7Bborder%3A1px%20solid%20rgba%280%2C0%2C0%2C%2E1%29%3Bborder%2Dradius%3A5px%3Bleft%3A159px%3Btext%2Dalign%3Aright%3Bpadding%2Dright%3A2px%7Ddiv%2Evis%2Dcolor%2Dpicker%20div%2Evis%2Dinitial%2Dcolor%7Bborder%3A1px%20solid%20rgba%280%2C0%2C0%2C%2E1%29%3Bborder%2Dradius%3A5px%3Bleft%3A10px%3Btext%2Dalign%3Aleft%3Bpadding%2Dleft%3A2px%7Ddiv%2Evis%2Dcolor%2Dpicker%20div%2Evis%2Dlabel%7Bposition%3Aabsolute%3Bwidth%3A300px%3Bleft%3A10px%7Ddiv%2Evis%2Dcolor%2Dpicker%20div%2Evis%2Dlabel%2Evis%2Dbrightness%7Btop%3A300px%7Ddiv%2Evis%2Dcolor%2Dpicker%20div%2Evis%2Dlabel%2Evis%2Dopacity%7Btop%3A338px%7Ddiv%2Evis%2Dcolor%2Dpicker%20div%2Evis%2Dbutton%7Bposition%3Aabsolute%3Bwidth%3A68px%3Bheight%3A25px%3Bborder%2Dradius%3A10px%3Bvertical%2Dalign%3Amiddle%3Btext%2Dalign%3Acenter%3Bline%2Dheight%3A25px%3Btop%3A410px%3Bborder%3A2px%20solid%20%23d9d9d9%3Bbackground%2Dcolor%3A%23f7f7f7%3Bcursor%3Apointer%7Ddiv%2Evis%2Dcolor%2Dpicker%20div%2Evis%2Dbutton%2Evis%2Dcancel%7Bleft%3A5px%7Ddiv%2Evis%2Dcolor%2Dpicker%20div%2Evis%2Dbutton%2Evis%2Dload%7Bleft%3A82px%7Ddiv%2Evis%2Dcolor%2Dpicker%20div%2Evis%2Dbutton%2Evis%2Dapply%7Bleft%3A159px%7Ddiv%2Evis%2Dcolor%2Dpicker%20div%2Evis%2Dbutton%2Evis%2Dsave%7Bleft%3A236px%7Ddiv%2Evis%2Dcolor%2Dpicker%20input%2Evis%2Drange%7Bwidth%3A290px%3Bheight%3A20px%7D" rel="stylesheet" />
<script src="data:application/x-javascript,%2F%2A%2A%0A%20%2A%20vis%2Ejs%0A%20%2A%20https%3A%2F%2Fgithub%2Ecom%2Falmende%2Fvis%0A%20%2A%0A%20%2A%20A%20dynamic%2C%20browser%2Dbased%20visualization%20library%2E%0A%20%2A%0A%20%2A%20%40version%204%2E16%2E1%0A%20%2A%20%40date%20%20%20%202016%2D04%2D18%0A%20%2A%0A%20%2A%20%40license%0A%20%2A%20Copyright%20%28C%29%202011%2D2016%20Almende%20B%2EV%2C%20http%3A%2F%2Falmende%2Ecom%0A%20%2A%0A%20%2A%20Vis%2Ejs%20is%20dual%20licensed%20under%20both%0A%20%2A%0A%20%2A%20%2A%20The%20Apache%202%2E0%20License%0A%20%2A%20%20%20http%3A%2F%2Fwww%2Eapache%2Eorg%2Flicenses%2FLICENSE%2D2%2E0%0A%20%2A%0A%20%2A%20and%0A%20%2A%0A%20%2A%20%2A%20The%20MIT%20License%0A%20%2A%20%20%20http%3A%2F%2Fopensource%2Eorg%2Flicenses%2FMIT%0A%20%2A%0A%20%2A%20Vis%2Ejs%20may%20be%20distributed%20under%20either%20license%2E%0A%20%2A%2F%0A%22use%20strict%22%3B%21function%28t%2Ce%29%7B%22object%22%3D%3Dtypeof%20exports%26%26%22object%22%3D%3Dtypeof%20module%3Fmodule%2Eexports%3De%28%29%3A%22function%22%3D%3Dtypeof%20define%26%26define%2Eamd%3Fdefine%28%5B%5D%2Ce%29%3A%22object%22%3D%3Dtypeof%20exports%3Fexports%2Evis%3De%28%29%3At%2Evis%3De%28%29%7D%28this%2Cfunction%28%29%7Breturn%20function%28t%29%7Bfunction%20e%28o%29%7Bif%28i%5Bo%5D%29return%20i%5Bo%5D%2Eexports%3Bvar%20n%3Di%5Bo%5D%3D%7Bexports%3A%7B%7D%2Cid%3Ao%2Cloaded%3A%211%7D%3Breturn%20t%5Bo%5D%2Ecall%28n%2Eexports%2Cn%2Cn%2Eexports%2Ce%29%2Cn%2Eloaded%3D%210%2Cn%2Eexports%7Dvar%20i%3D%7B%7D%3Breturn%20e%2Em%3Dt%2Ce%2Ec%3Di%2Ce%2Ep%3D%22%22%2Ce%280%29%7D%28%5Bfunction%28t%2Ce%2Ci%29%7Bvar%20o%3Di%281%29%3Bo%2Eextend%28e%2Ci%287%29%29%2Co%2Eextend%28e%2Ci%2824%29%29%2Co%2Eextend%28e%2Ci%2860%29%29%7D%2Cfunction%28t%2Ce%2Ci%29%7Bvar%20o%3D%22function%22%3D%3Dtypeof%20Symbol%26%26%22symbol%22%3D%3Dtypeof%20Symbol%2Eiterator%3Ffunction%28t%29%7Breturn%20typeof%20t%7D%3Afunction%28t%29%7Breturn%20t%26%26%22function%22%3D%3Dtypeof%20Symbol%26%26t%2Econstructor%3D%3D%3DSymbol%3F%22symbol%22%3Atypeof%20t%7D%2Cn%3Di%282%29%2Cs%3Di%286%29%3Be%2EisNumber%3Dfunction%28t%29%7Breturn%20t%20instanceof%20Number%7C%7C%22number%22%3D%3Dtypeof%20t%7D%2Ce%2ErecursiveDOMDelete%3Dfunction%28t%29%7Bif%28t%29for%28%3Bt%2EhasChildNodes%28%29%3D%3D%3D%210%3B%29e%2ErecursiveDOMDelete%28t%2EfirstChild%29%2Ct%2EremoveChild%28t%2EfirstChild%29%7D%2Ce%2EgiveRange%3Dfunction%28t%2Ce%2Ci%2Co%29%7Bif%28e%3D%3Dt%29return%2E5%3Bvar%20n%3D1%2F%28e%2Dt%29%3Breturn%20Math%2Emax%280%2C%28o%2Dt%29%2An%29%7D%2Ce%2EisString%3Dfunction%28t%29%7Breturn%20t%20instanceof%20String%7C%7C%22string%22%3D%3Dtypeof%20t%7D%2Ce%2EisDate%3Dfunction%28t%29%7Bif%28t%20instanceof%20Date%29return%210%3Bif%28e%2EisString%28t%29%29%7Bvar%20i%3Dr%2Eexec%28t%29%3Bif%28i%29return%210%3Bif%28%21isNaN%28Date%2Eparse%28t%29%29%29return%210%7Dreturn%211%7D%2Ce%2ErandomUUID%3Dfunction%28%29%7Breturn%20s%2Ev4%28%29%7D%2Ce%2EassignAllKeys%3Dfunction%28t%2Ce%29%7Bfor%28var%20i%20in%20t%29t%2EhasOwnProperty%28i%29%26%26%22object%22%21%3D%3Do%28t%5Bi%5D%29%26%26%28t%5Bi%5D%3De%29%7D%2Ce%2EfillIfDefined%3Dfunction%28t%2Ci%29%7Bvar%20n%3Darguments%2Elength%3C%3D2%7C%7Cvoid%200%3D%3D%3Darguments%5B2%5D%3F%211%3Aarguments%5B2%5D%3Bfor%28var%20s%20in%20t%29void%200%21%3D%3Di%5Bs%5D%26%26%28%22object%22%21%3D%3Do%28i%5Bs%5D%29%3Fvoid%200%21%3D%3Di%5Bs%5D%26%26null%21%3D%3Di%5Bs%5D%7C%7Cvoid%200%3D%3D%3Dt%5Bs%5D%7C%7Cn%21%3D%3D%210%3Ft%5Bs%5D%3Di%5Bs%5D%3Adelete%20t%5Bs%5D%3A%22object%22%3D%3D%3Do%28t%5Bs%5D%29%26%26e%2EfillIfDefined%28t%5Bs%5D%2Ci%5Bs%5D%2Cn%29%29%7D%2Ce%2EprotoExtend%3Dfunction%28t%2Ce%29%7Bfor%28var%20i%3D1%3Bi%3Carguments%2Elength%3Bi%2B%2B%29%7Bvar%20o%3Darguments%5Bi%5D%3Bfor%28var%20n%20in%20o%29t%5Bn%5D%3Do%5Bn%5D%7Dreturn%20t%7D%2Ce%2Eextend%3Dfunction%28t%2Ce%29%7Bfor%28var%20i%3D1%3Bi%3Carguments%2Elength%3Bi%2B%2B%29%7Bvar%20o%3Darguments%5Bi%5D%3Bfor%28var%20n%20in%20o%29o%2EhasOwnProperty%28n%29%26%26%28t%5Bn%5D%3Do%5Bn%5D%29%7Dreturn%20t%7D%2Ce%2EselectiveExtend%3Dfunction%28t%2Ce%2Ci%29%7Bif%28%21Array%2EisArray%28t%29%29throw%20new%20Error%28%22Array%20with%20property%20names%20expected%20as%20first%20argument%22%29%3Bfor%28var%20o%3D2%3Bo%3Carguments%2Elength%3Bo%2B%2B%29for%28var%20n%3Darguments%5Bo%5D%2Cs%3D0%3Bs%3Ct%2Elength%3Bs%2B%2B%29%7Bvar%20r%3Dt%5Bs%5D%3Bn%2EhasOwnProperty%28r%29%26%26%28e%5Br%5D%3Dn%5Br%5D%29%7Dreturn%20e%7D%2Ce%2EselectiveDeepExtend%3Dfunction%28t%2Ci%2Co%29%7Bvar%20n%3Darguments%2Elength%3C%3D3%7C%7Cvoid%200%3D%3D%3Darguments%5B3%5D%3F%211%3Aarguments%5B3%5D%3Bif%28Array%2EisArray%28o%29%29throw%20new%20TypeError%28%22Arrays%20are%20not%20supported%20by%20deepExtend%22%29%3Bfor%28var%20s%3D2%3Bs%3Carguments%2Elength%3Bs%2B%2B%29for%28var%20r%3Darguments%5Bs%5D%2Ca%3D0%3Ba%3Ct%2Elength%3Ba%2B%2B%29%7Bvar%20h%3Dt%5Ba%5D%3Bif%28r%2EhasOwnProperty%28h%29%29if%28o%5Bh%5D%26%26o%5Bh%5D%2Econstructor%3D%3D%3DObject%29void%200%3D%3D%3Di%5Bh%5D%26%26%28i%5Bh%5D%3D%7B%7D%29%2Ci%5Bh%5D%2Econstructor%3D%3D%3DObject%3Fe%2EdeepExtend%28i%5Bh%5D%2Co%5Bh%5D%2C%211%2Cn%29%3Anull%3D%3D%3Do%5Bh%5D%26%26void%200%21%3D%3Di%5Bh%5D%26%26n%3D%3D%3D%210%3Fdelete%20i%5Bh%5D%3Ai%5Bh%5D%3Do%5Bh%5D%3Belse%7Bif%28Array%2EisArray%28o%5Bh%5D%29%29throw%20new%20TypeError%28%22Arrays%20are%20not%20supported%20by%20deepExtend%22%29%3Bnull%3D%3D%3Do%5Bh%5D%26%26void%200%21%3D%3Di%5Bh%5D%26%26n%3D%3D%3D%210%3Fdelete%20i%5Bh%5D%3Ai%5Bh%5D%3Do%5Bh%5D%7D%7Dreturn%20i%7D%2Ce%2EselectiveNotDeepExtend%3Dfunction%28t%2Ci%2Co%29%7Bvar%20n%3Darguments%2Elength%3C%3D3%7C%7Cvoid%200%3D%3D%3Darguments%5B3%5D%3F%211%3Aarguments%5B3%5D%3Bif%28Array%2EisArray%28o%29%29throw%20new%20TypeError%28%22Arrays%20are%20not%20supported%20by%20deepExtend%22%29%3Bfor%28var%20s%20in%20o%29if%28o%2EhasOwnProperty%28s%29%26%26%2D1%3D%3Dt%2EindexOf%28s%29%29if%28o%5Bs%5D%26%26o%5Bs%5D%2Econstructor%3D%3D%3DObject%29void%200%3D%3D%3Di%5Bs%5D%26%26%28i%5Bs%5D%3D%7B%7D%29%2Ci%5Bs%5D%2Econstructor%3D%3D%3DObject%3Fe%2EdeepExtend%28i%5Bs%5D%2Co%5Bs%5D%29%3Anull%3D%3D%3Do%5Bs%5D%26%26void%200%21%3D%3Di%5Bs%5D%26%26n%3D%3D%3D%210%3Fdelete%20i%5Bs%5D%3Ai%5Bs%5D%3Do%5Bs%5D%3Belse%20if%28Array%2EisArray%28o%5Bs%5D%29%29%7Bi%5Bs%5D%3D%5B%5D%3Bfor%28var%20r%3D0%3Br%3Co%5Bs%5D%2Elength%3Br%2B%2B%29i%5Bs%5D%2Epush%28o%5Bs%5D%5Br%5D%29%7Delse%20null%3D%3D%3Do%5Bs%5D%26%26void%200%21%3D%3Di%5Bs%5D%26%26n%3D%3D%3D%210%3Fdelete%20i%5Bs%5D%3Ai%5Bs%5D%3Do%5Bs%5D%3Breturn%20i%7D%2Ce%2EdeepExtend%3Dfunction%28t%2Ci%2Co%2Cn%29%7Bfor%28var%20s%20in%20i%29if%28i%2EhasOwnProperty%28s%29%7C%7Co%3D%3D%3D%210%29if%28i%5Bs%5D%26%26i%5Bs%5D%2Econstructor%3D%3D%3DObject%29void%200%3D%3D%3Dt%5Bs%5D%26%26%28t%5Bs%5D%3D%7B%7D%29%2Ct%5Bs%5D%2Econstructor%3D%3D%3DObject%3Fe%2EdeepExtend%28t%5Bs%5D%2Ci%5Bs%5D%2Co%29%3Anull%3D%3D%3Di%5Bs%5D%26%26void%200%21%3D%3Dt%5Bs%5D%26%26n%3D%3D%3D%210%3Fdelete%20t%5Bs%5D%3At%5Bs%5D%3Di%5Bs%5D%3Belse%20if%28Array%2EisArray%28i%5Bs%5D%29%29%7Bt%5Bs%5D%3D%5B%5D%3Bfor%28var%20r%3D0%3Br%3Ci%5Bs%5D%2Elength%3Br%2B%2B%29t%5Bs%5D%2Epush%28i%5Bs%5D%5Br%5D%29%7Delse%20null%3D%3D%3Di%5Bs%5D%26%26void%200%21%3D%3Dt%5Bs%5D%26%26n%3D%3D%3D%210%3Fdelete%20t%5Bs%5D%3At%5Bs%5D%3Di%5Bs%5D%3Breturn%20t%7D%2Ce%2EequalArray%3Dfunction%28t%2Ce%29%7Bif%28t%2Elength%21%3De%2Elength%29return%211%3Bfor%28var%20i%3D0%2Co%3Dt%2Elength%3Bo%3Ei%3Bi%2B%2B%29if%28t%5Bi%5D%21%3De%5Bi%5D%29return%211%3Breturn%210%7D%2Ce%2Econvert%3Dfunction%28t%2Ci%29%7Bvar%20o%3Bif%28void%200%21%3D%3Dt%29%7Bif%28null%3D%3D%3Dt%29return%20null%3Bif%28%21i%29return%20t%3Bif%28%22string%22%21%3Dtypeof%20i%26%26%21%28i%20instanceof%20String%29%29throw%20new%20Error%28%22Type%20must%20be%20a%20string%22%29%3Bswitch%28i%29%7Bcase%22boolean%22%3Acase%22Boolean%22%3Areturn%20Boolean%28t%29%3Bcase%22number%22%3Acase%22Number%22%3Areturn%20Number%28t%2EvalueOf%28%29%29%3Bcase%22string%22%3Acase%22String%22%3Areturn%20String%28t%29%3Bcase%22Date%22%3Aif%28e%2EisNumber%28t%29%29return%20new%20Date%28t%29%3Bif%28t%20instanceof%20Date%29return%20new%20Date%28t%2EvalueOf%28%29%29%3Bif%28n%2EisMoment%28t%29%29return%20new%20Date%28t%2EvalueOf%28%29%29%3Bif%28e%2EisString%28t%29%29return%20o%3Dr%2Eexec%28t%29%2Co%3Fnew%20Date%28Number%28o%5B1%5D%29%29%3An%28t%29%2EtoDate%28%29%3Bthrow%20new%20Error%28%22Cannot%20convert%20object%20of%20type%20%22%2Be%2EgetType%28t%29%2B%22%20to%20type%20Date%22%29%3Bcase%22Moment%22%3Aif%28e%2EisNumber%28t%29%29return%20n%28t%29%3Bif%28t%20instanceof%20Date%29return%20n%28t%2EvalueOf%28%29%29%3Bif%28n%2EisMoment%28t%29%29return%20n%28t%29%3Bif%28e%2EisString%28t%29%29return%20o%3Dr%2Eexec%28t%29%2Cn%28o%3FNumber%28o%5B1%5D%29%3At%29%3Bthrow%20new%20Error%28%22Cannot%20convert%20object%20of%20type%20%22%2Be%2EgetType%28t%29%2B%22%20to%20type%20Date%22%29%3Bcase%22ISODate%22%3Aif%28e%2EisNumber%28t%29%29return%20new%20Date%28t%29%3Bif%28t%20instanceof%20Date%29return%20t%2EtoISOString%28%29%3Bif%28n%2EisMoment%28t%29%29return%20t%2EtoDate%28%29%2EtoISOString%28%29%3Bif%28e%2EisString%28t%29%29return%20o%3Dr%2Eexec%28t%29%2Co%3Fnew%20Date%28Number%28o%5B1%5D%29%29%2EtoISOString%28%29%3Anew%20Date%28t%29%2EtoISOString%28%29%3Bthrow%20new%20Error%28%22Cannot%20convert%20object%20of%20type%20%22%2Be%2EgetType%28t%29%2B%22%20to%20type%20ISODate%22%29%3Bcase%22ASPDate%22%3Aif%28e%2EisNumber%28t%29%29return%22%2FDate%28%22%2Bt%2B%22%29%2F%22%3Bif%28t%20instanceof%20Date%29return%22%2FDate%28%22%2Bt%2EvalueOf%28%29%2B%22%29%2F%22%3Bif%28e%2EisString%28t%29%29%7Bo%3Dr%2Eexec%28t%29%3Bvar%20s%3Breturn%20s%3Do%3Fnew%20Date%28Number%28o%5B1%5D%29%29%2EvalueOf%28%29%3Anew%20Date%28t%29%2EvalueOf%28%29%2C%22%2FDate%28%22%2Bs%2B%22%29%2F%22%7Dthrow%20new%20Error%28%22Cannot%20convert%20object%20of%20type%20%22%2Be%2EgetType%28t%29%2B%22%20to%20type%20ASPDate%22%29%3Bdefault%3Athrow%20new%20Error%28%27Unknown%20type%20%22%27%2Bi%2B%27%22%27%29%7D%7D%7D%3Bvar%20r%3D%2F%5E%5C%2F%3FDate%5C%28%28%5C%2D%3F%5Cd%2B%29%2Fi%3Be%2EgetType%3Dfunction%28t%29%7Bvar%20e%3D%22undefined%22%3D%3Dtypeof%20t%3F%22undefined%22%3Ao%28t%29%3Breturn%22object%22%3D%3De%3Fnull%3D%3D%3Dt%3F%22null%22%3At%20instanceof%20Boolean%3F%22Boolean%22%3At%20instanceof%20Number%3F%22Number%22%3At%20instanceof%20String%3F%22String%22%3AArray%2EisArray%28t%29%3F%22Array%22%3At%20instanceof%20Date%3F%22Date%22%3A%22Object%22%3A%22number%22%3D%3De%3F%22Number%22%3A%22boolean%22%3D%3De%3F%22Boolean%22%3A%22string%22%3D%3De%3F%22String%22%3Avoid%200%3D%3D%3De%3F%22undefined%22%3Ae%7D%2Ce%2EcopyAndExtendArray%3Dfunction%28t%2Ce%29%7Bfor%28var%20i%3D%5B%5D%2Co%3D0%3Bo%3Ct%2Elength%3Bo%2B%2B%29i%2Epush%28t%5Bo%5D%29%3Breturn%20i%2Epush%28e%29%2Ci%7D%2Ce%2EcopyArray%3Dfunction%28t%29%7Bfor%28var%20e%3D%5B%5D%2Ci%3D0%3Bi%3Ct%2Elength%3Bi%2B%2B%29e%2Epush%28t%5Bi%5D%29%3Breturn%20e%7D%2Ce%2EgetAbsoluteLeft%3Dfunction%28t%29%7Breturn%20t%2EgetBoundingClientRect%28%29%2Eleft%7D%2Ce%2EgetAbsoluteRight%3Dfunction%28t%29%7Breturn%20t%2EgetBoundingClientRect%28%29%2Eright%7D%2Ce%2EgetAbsoluteTop%3Dfunction%28t%29%7Breturn%20t%2EgetBoundingClientRect%28%29%2Etop%7D%2Ce%2EaddClassName%3Dfunction%28t%2Ce%29%7Bvar%20i%3Dt%2EclassName%2Esplit%28%22%20%22%29%3B%2D1%3D%3Di%2EindexOf%28e%29%26%26%28i%2Epush%28e%29%2Ct%2EclassName%3Di%2Ejoin%28%22%20%22%29%29%7D%2Ce%2EremoveClassName%3Dfunction%28t%2Ce%29%7Bvar%20i%3Dt%2EclassName%2Esplit%28%22%20%22%29%2Co%3Di%2EindexOf%28e%29%3B%2D1%21%3Do%26%26%28i%2Esplice%28o%2C1%29%2Ct%2EclassName%3Di%2Ejoin%28%22%20%22%29%29%7D%2Ce%2EforEach%3Dfunction%28t%2Ce%29%7Bvar%20i%2Co%3Bif%28Array%2EisArray%28t%29%29for%28i%3D0%2Co%3Dt%2Elength%3Bo%3Ei%3Bi%2B%2B%29e%28t%5Bi%5D%2Ci%2Ct%29%3Belse%20for%28i%20in%20t%29t%2EhasOwnProperty%28i%29%26%26e%28t%5Bi%5D%2Ci%2Ct%29%7D%2Ce%2EtoArray%3Dfunction%28t%29%7Bvar%20e%3D%5B%5D%3Bfor%28var%20i%20in%20t%29t%2EhasOwnProperty%28i%29%26%26e%2Epush%28t%5Bi%5D%29%3Breturn%20e%7D%2Ce%2EupdateProperty%3Dfunction%28t%2Ce%2Ci%29%7Breturn%20t%5Be%5D%21%3D%3Di%3F%28t%5Be%5D%3Di%2C%210%29%3A%211%7D%2Ce%2Ethrottle%3Dfunction%28t%2Ce%29%7Bvar%20i%3Dnull%2Co%3D%211%3Breturn%20function%20n%28%29%7Bi%3Fo%3D%210%3A%28o%3D%211%2Ct%28%29%2Ci%3DsetTimeout%28function%28%29%7Bi%3Dnull%2Co%26%26n%28%29%7D%2Ce%29%29%7D%7D%2Ce%2EaddEventListener%3Dfunction%28t%2Ce%2Ci%2Co%29%7Bt%2EaddEventListener%3F%28void%200%3D%3D%3Do%26%26%28o%3D%211%29%2C%22mousewheel%22%3D%3D%3De%26%26navigator%2EuserAgent%2EindexOf%28%22Firefox%22%29%3E%3D0%26%26%28e%3D%22DOMMouseScroll%22%29%2Ct%2EaddEventListener%28e%2Ci%2Co%29%29%3At%2EattachEvent%28%22on%22%2Be%2Ci%29%7D%2Ce%2EremoveEventListener%3Dfunction%28t%2Ce%2Ci%2Co%29%7Bt%2EremoveEventListener%3F%28void%200%3D%3D%3Do%26%26%28o%3D%211%29%2C%22mousewheel%22%3D%3D%3De%26%26navigator%2EuserAgent%2EindexOf%28%22Firefox%22%29%3E%3D0%26%26%28e%3D%22DOMMouseScroll%22%29%2Ct%2EremoveEventListener%28e%2Ci%2Co%29%29%3At%2EdetachEvent%28%22on%22%2Be%2Ci%29%7D%2Ce%2EpreventDefault%3Dfunction%28t%29%7Bt%7C%7C%28t%3Dwindow%2Eevent%29%2Ct%2EpreventDefault%3Ft%2EpreventDefault%28%29%3At%2EreturnValue%3D%211%7D%2Ce%2EgetTarget%3Dfunction%28t%29%7Bt%7C%7C%28t%3Dwindow%2Eevent%29%3Bvar%20e%3Breturn%20t%2Etarget%3Fe%3Dt%2Etarget%3At%2EsrcElement%26%26%28e%3Dt%2EsrcElement%29%2Cvoid%200%21%3De%2EnodeType%26%263%3D%3De%2EnodeType%26%26%28e%3De%2EparentNode%29%2Ce%7D%2Ce%2EhasParent%3Dfunction%28t%2Ce%29%7Bfor%28var%20i%3Dt%3Bi%3B%29%7Bif%28i%3D%3D%3De%29return%210%3Bi%3Di%2EparentNode%7Dreturn%211%7D%2Ce%2Eoption%3D%7B%7D%2Ce%2Eoption%2EasBoolean%3Dfunction%28t%2Ce%29%7Breturn%22function%22%3D%3Dtypeof%20t%26%26%28t%3Dt%28%29%29%2Cnull%21%3Dt%3F0%21%3Dt%3Ae%7C%7Cnull%7D%2Ce%2Eoption%2EasNumber%3Dfunction%28t%2Ce%29%7Breturn%22function%22%3D%3Dtypeof%20t%26%26%28t%3Dt%28%29%29%2Cnull%21%3Dt%3FNumber%28t%29%7C%7Ce%7C%7Cnull%3Ae%7C%7Cnull%7D%2Ce%2Eoption%2EasString%3Dfunction%28t%2Ce%29%7Breturn%22function%22%3D%3Dtypeof%20t%26%26%28t%3Dt%28%29%29%2Cnull%21%3Dt%3FString%28t%29%3Ae%7C%7Cnull%7D%2Ce%2Eoption%2EasSize%3Dfunction%28t%2Ci%29%7Breturn%22function%22%3D%3Dtypeof%20t%26%26%28t%3Dt%28%29%29%2Ce%2EisString%28t%29%3Ft%3Ae%2EisNumber%28t%29%3Ft%2B%22px%22%3Ai%7C%7Cnull%7D%2Ce%2Eoption%2EasElement%3Dfunction%28t%2Ce%29%7Breturn%22function%22%3D%3Dtypeof%20t%26%26%28t%3Dt%28%29%29%2Ct%7C%7Ce%7C%7Cnull%7D%2Ce%2EhexToRGB%3Dfunction%28t%29%7Bvar%20e%3D%2F%5E%23%3F%28%5Ba%2Df%5Cd%5D%29%28%5Ba%2Df%5Cd%5D%29%28%5Ba%2Df%5Cd%5D%29%24%2Fi%3Bt%3Dt%2Ereplace%28e%2Cfunction%28t%2Ce%2Ci%2Co%29%7Breturn%20e%2Be%2Bi%2Bi%2Bo%2Bo%7D%29%3Bvar%20i%3D%2F%5E%23%3F%28%5Ba%2Df%5Cd%5D%7B2%7D%29%28%5Ba%2Df%5Cd%5D%7B2%7D%29%28%5Ba%2Df%5Cd%5D%7B2%7D%29%24%2Fi%2Eexec%28t%29%3Breturn%20i%3F%7Br%3AparseInt%28i%5B1%5D%2C16%29%2Cg%3AparseInt%28i%5B2%5D%2C16%29%2Cb%3AparseInt%28i%5B3%5D%2C16%29%7D%3Anull%7D%2Ce%2EoverrideOpacity%3Dfunction%28t%2Ci%29%7Bif%28%2D1%21%3Dt%2EindexOf%28%22rgba%22%29%29return%20t%3Bif%28%2D1%21%3Dt%2EindexOf%28%22rgb%22%29%29%7Bvar%20o%3Dt%2Esubstr%28t%2EindexOf%28%22%28%22%29%2B1%29%2Ereplace%28%22%29%22%2C%22%22%29%2Esplit%28%22%2C%22%29%3Breturn%22rgba%28%22%2Bo%5B0%5D%2B%22%2C%22%2Bo%5B1%5D%2B%22%2C%22%2Bo%5B2%5D%2B%22%2C%22%2Bi%2B%22%29%22%7Dvar%20o%3De%2EhexToRGB%28t%29%3Breturn%20null%3D%3Do%3Ft%3A%22rgba%28%22%2Bo%2Er%2B%22%2C%22%2Bo%2Eg%2B%22%2C%22%2Bo%2Eb%2B%22%2C%22%2Bi%2B%22%29%22%7D%2Ce%2ERGBToHex%3Dfunction%28t%2Ce%2Ci%29%7Breturn%22%23%22%2B%28%281%3C%3C24%29%2B%28t%3C%3C16%29%2B%28e%3C%3C8%29%2Bi%29%2EtoString%2816%29%2Eslice%281%29%7D%2Ce%2EparseColor%3Dfunction%28t%29%7Bvar%20i%3Bif%28e%2EisString%28t%29%3D%3D%3D%210%29%7Bif%28e%2EisValidRGB%28t%29%3D%3D%3D%210%29%7Bvar%20o%3Dt%2Esubstr%284%29%2Esubstr%280%2Ct%2Elength%2D5%29%2Esplit%28%22%2C%22%29%2Emap%28function%28t%29%7Breturn%20parseInt%28t%29%7D%29%3Bt%3De%2ERGBToHex%28o%5B0%5D%2Co%5B1%5D%2Co%5B2%5D%29%7Dif%28e%2EisValidHex%28t%29%3D%3D%3D%210%29%7Bvar%20n%3De%2EhexToHSV%28t%29%2Cs%3D%7Bh%3An%2Eh%2Cs%3A%2E8%2An%2Es%2Cv%3AMath%2Emin%281%2C1%2E02%2An%2Ev%29%7D%2Cr%3D%7Bh%3An%2Eh%2Cs%3AMath%2Emin%281%2C1%2E25%2An%2Es%29%2Cv%3A%2E8%2An%2Ev%7D%2Ca%3De%2EHSVToHex%28r%2Eh%2Cr%2Es%2Cr%2Ev%29%2Ch%3De%2EHSVToHex%28s%2Eh%2Cs%2Es%2Cs%2Ev%29%3Bi%3D%7Bbackground%3At%2Cborder%3Aa%2Chighlight%3A%7Bbackground%3Ah%2Cborder%3Aa%7D%2Chover%3A%7Bbackground%3Ah%2Cborder%3Aa%7D%7D%7Delse%20i%3D%7Bbackground%3At%2Cborder%3At%2Chighlight%3A%7Bbackground%3At%2Cborder%3At%7D%2Chover%3A%7Bbackground%3At%2Cborder%3At%7D%7D%7Delse%20i%3D%7B%7D%2Ci%2Ebackground%3Dt%2Ebackground%7C%7Cvoid%200%2Ci%2Eborder%3Dt%2Eborder%7C%7Cvoid%200%2Ce%2EisString%28t%2Ehighlight%29%3Fi%2Ehighlight%3D%7Bborder%3At%2Ehighlight%2Cbackground%3At%2Ehighlight%7D%3A%28i%2Ehighlight%3D%7B%7D%2Ci%2Ehighlight%2Ebackground%3Dt%2Ehighlight%26%26t%2Ehighlight%2Ebackground%7C%7Cvoid%200%2Ci%2Ehighlight%2Eborder%3Dt%2Ehighlight%26%26t%2Ehighlight%2Eborder%7C%7Cvoid%200%29%2Ce%2EisString%28t%2Ehover%29%3Fi%2Ehover%3D%7Bborder%3At%2Ehover%2Cbackground%3At%2Ehover%7D%3A%28i%2Ehover%3D%7B%7D%2Ci%2Ehover%2Ebackground%3Dt%2Ehover%26%26t%2Ehover%2Ebackground%7C%7Cvoid%200%2Ci%2Ehover%2Eborder%3Dt%2Ehover%26%26t%2Ehover%2Eborder%7C%7Cvoid%200%29%3Breturn%20i%7D%2Ce%2ERGBToHSV%3Dfunction%28t%2Ce%2Ci%29%7Bt%2F%3D255%2Ce%2F%3D255%2Ci%2F%3D255%3Bvar%20o%3DMath%2Emin%28t%2CMath%2Emin%28e%2Ci%29%29%2Cn%3DMath%2Emax%28t%2CMath%2Emax%28e%2Ci%29%29%3Bif%28o%3D%3Dn%29return%7Bh%3A0%2Cs%3A0%2Cv%3Ao%7D%3Bvar%20s%3Dt%3D%3Do%3Fe%2Di%3Ai%3D%3Do%3Ft%2De%3Ai%2Dt%2Cr%3Dt%3D%3Do%3F3%3Ai%3D%3Do%3F1%3A5%2Ca%3D60%2A%28r%2Ds%2F%28n%2Do%29%29%2F360%2Ch%3D%28n%2Do%29%2Fn%2Cd%3Dn%3Breturn%7Bh%3Aa%2Cs%3Ah%2Cv%3Ad%7D%7D%3Bvar%20a%3D%7Bsplit%3Afunction%28t%29%7Bvar%20e%3D%7B%7D%3Breturn%20t%2Esplit%28%22%3B%22%29%2EforEach%28function%28t%29%7Bif%28%22%22%21%3Dt%2Etrim%28%29%29%7Bvar%20i%3Dt%2Esplit%28%22%3A%22%29%2Co%3Di%5B0%5D%2Etrim%28%29%2Cn%3Di%5B1%5D%2Etrim%28%29%3Be%5Bo%5D%3Dn%7D%7D%29%2Ce%7D%2Cjoin%3Afunction%28t%29%7Breturn%20Object%2Ekeys%28t%29%2Emap%28function%28e%29%7Breturn%20e%2B%22%3A%20%22%2Bt%5Be%5D%7D%29%2Ejoin%28%22%3B%20%22%29%7D%7D%3Be%2EaddCssText%3Dfunction%28t%2Ci%29%7Bvar%20o%3Da%2Esplit%28t%2Estyle%2EcssText%29%2Cn%3Da%2Esplit%28i%29%2Cs%3De%2Eextend%28o%2Cn%29%3Bt%2Estyle%2EcssText%3Da%2Ejoin%28s%29%7D%2Ce%2EremoveCssText%3Dfunction%28t%2Ce%29%7Bvar%20i%3Da%2Esplit%28t%2Estyle%2EcssText%29%2Co%3Da%2Esplit%28e%29%3Bfor%28var%20n%20in%20o%29o%2EhasOwnProperty%28n%29%26%26delete%20i%5Bn%5D%3Bt%2Estyle%2EcssText%3Da%2Ejoin%28i%29%7D%2Ce%2EHSVToRGB%3Dfunction%28t%2Ce%2Ci%29%7Bvar%20o%2Cn%2Cs%2Cr%3DMath%2Efloor%286%2At%29%2Ca%3D6%2At%2Dr%2Ch%3Di%2A%281%2De%29%2Cd%3Di%2A%281%2Da%2Ae%29%2Cl%3Di%2A%281%2D%281%2Da%29%2Ae%29%3Bswitch%28r%256%29%7Bcase%200%3Ao%3Di%2Cn%3Dl%2Cs%3Dh%3Bbreak%3Bcase%201%3Ao%3Dd%2Cn%3Di%2Cs%3Dh%3Bbreak%3Bcase%202%3Ao%3Dh%2Cn%3Di%2Cs%3Dl%3Bbreak%3Bcase%203%3Ao%3Dh%2Cn%3Dd%2Cs%3Di%3Bbreak%3Bcase%204%3Ao%3Dl%2Cn%3Dh%2Cs%3Di%3Bbreak%3Bcase%205%3Ao%3Di%2Cn%3Dh%2Cs%3Dd%7Dreturn%7Br%3AMath%2Efloor%28255%2Ao%29%2Cg%3AMath%2Efloor%28255%2An%29%2Cb%3AMath%2Efloor%28255%2As%29%7D%7D%2Ce%2EHSVToHex%3Dfunction%28t%2Ci%2Co%29%7Bvar%20n%3De%2EHSVToRGB%28t%2Ci%2Co%29%3Breturn%20e%2ERGBToHex%28n%2Er%2Cn%2Eg%2Cn%2Eb%29%7D%2Ce%2EhexToHSV%3Dfunction%28t%29%7Bvar%20i%3De%2EhexToRGB%28t%29%3Breturn%20e%2ERGBToHSV%28i%2Er%2Ci%2Eg%2Ci%2Eb%29%7D%2Ce%2EisValidHex%3Dfunction%28t%29%7Bvar%20e%3D%2F%28%5E%23%5B0%2D9A%2DF%5D%7B6%7D%24%29%7C%28%5E%23%5B0%2D9A%2DF%5D%7B3%7D%24%29%2Fi%2Etest%28t%29%3Breturn%20e%7D%2Ce%2EisValidRGB%3Dfunction%28t%29%7Bt%3Dt%2Ereplace%28%22%20%22%2C%22%22%29%3Bvar%20e%3D%2Frgb%5C%28%28%5Cd%7B1%2C3%7D%29%2C%28%5Cd%7B1%2C3%7D%29%2C%28%5Cd%7B1%2C3%7D%29%5C%29%2Fi%2Etest%28t%29%3Breturn%20e%7D%2Ce%2EisValidRGBA%3Dfunction%28t%29%7Bt%3Dt%2Ereplace%28%22%20%22%2C%22%22%29%3Bvar%20e%3D%2Frgba%5C%28%28%5Cd%7B1%2C3%7D%29%2C%28%5Cd%7B1%2C3%7D%29%2C%28%5Cd%7B1%2C3%7D%29%2C%28%2E%7B1%2C3%7D%29%5C%29%2Fi%2Etest%28t%29%3Breturn%20e%7D%2Ce%2EselectiveBridgeObject%3Dfunction%28t%2Ci%29%7Bif%28%22object%22%3D%3D%28%22undefined%22%3D%3Dtypeof%20i%3F%22undefined%22%3Ao%28i%29%29%29%7Bfor%28var%20n%3DObject%2Ecreate%28i%29%2Cs%3D0%3Bs%3Ct%2Elength%3Bs%2B%2B%29i%2EhasOwnProperty%28t%5Bs%5D%29%26%26%22object%22%3D%3Do%28i%5Bt%5Bs%5D%5D%29%26%26%28n%5Bt%5Bs%5D%5D%3De%2EbridgeObject%28i%5Bt%5Bs%5D%5D%29%29%3Breturn%20n%7Dreturn%20null%7D%2Ce%2EbridgeObject%3Dfunction%28t%29%7Bif%28%22object%22%3D%3D%28%22undefined%22%3D%3Dtypeof%20t%3F%22undefined%22%3Ao%28t%29%29%29%7Bvar%20i%3DObject%2Ecreate%28t%29%3Bfor%28var%20n%20in%20t%29t%2EhasOwnProperty%28n%29%26%26%22object%22%3D%3Do%28t%5Bn%5D%29%26%26%28i%5Bn%5D%3De%2EbridgeObject%28t%5Bn%5D%29%29%3Breturn%20i%7Dreturn%20null%7D%2Ce%2EinsertSort%3Dfunction%28t%2Ce%29%7Bfor%28var%20i%3D0%3Bi%3Ct%2Elength%3Bi%2B%2B%29%7Bfor%28var%20o%3Dt%5Bi%5D%2Cn%3Di%3Bn%3E0%26%26e%28o%2Ct%5Bn%2D1%5D%29%3C0%3Bn%2D%2D%29t%5Bn%5D%3Dt%5Bn%2D1%5D%3Bt%5Bn%5D%3Do%7Dreturn%20t%7D%2Ce%2EmergeOptions%3Dfunction%28t%2Ce%2Ci%29%7Bvar%20o%3D%28arguments%2Elength%3C%3D3%7C%7Cvoid%200%3D%3D%3Darguments%5B3%5D%3F%211%3Aarguments%5B3%5D%2Carguments%2Elength%3C%3D4%7C%7Cvoid%200%3D%3D%3Darguments%5B4%5D%3F%7B%7D%3Aarguments%5B4%5D%29%3Bif%28null%3D%3D%3De%5Bi%5D%29t%5Bi%5D%3DObject%2Ecreate%28o%5Bi%5D%29%3Belse%20if%28void%200%21%3D%3De%5Bi%5D%29if%28%22boolean%22%3D%3Dtypeof%20e%5Bi%5D%29t%5Bi%5D%2Eenabled%3De%5Bi%5D%3Belse%7Bvoid%200%3D%3D%3De%5Bi%5D%2Eenabled%26%26%28t%5Bi%5D%2Eenabled%3D%210%29%3Bfor%28var%20n%20in%20e%5Bi%5D%29e%5Bi%5D%2EhasOwnProperty%28n%29%26%26%28t%5Bi%5D%5Bn%5D%3De%5Bi%5D%5Bn%5D%29%7D%7D%2Ce%2EbinarySearchCustom%3Dfunction%28t%2Ce%2Ci%2Co%29%7Bfor%28var%20n%3D1e4%2Cs%3D0%2Cr%3D0%2Ca%3Dt%2Elength%2D1%3Ba%3E%3Dr%26%26n%3Es%3B%29%7Bvar%20h%3DMath%2Efloor%28%28r%2Ba%29%2F2%29%2Cd%3Dt%5Bh%5D%2Cl%3Dvoid%200%3D%3D%3Do%3Fd%5Bi%5D%3Ad%5Bi%5D%5Bo%5D%2Cc%3De%28l%29%3Bif%280%3D%3Dc%29return%20h%3B%2D1%3D%3Dc%3Fr%3Dh%2B1%3Aa%3Dh%2D1%2Cs%2B%2B%7Dreturn%2D1%7D%2Ce%2EbinarySearchValue%3Dfunction%28t%2Ce%2Ci%2Co%2Cn%29%7Bfor%28var%20s%2Cr%2Ca%2Ch%2Cd%3D1e4%2Cl%3D0%2Cc%3D0%2Cu%3Dt%2Elength%2D1%2Cn%3Dvoid%200%21%3Dn%3Fn%3Afunction%28t%2Ce%29%7Breturn%20t%3D%3De%3F0%3Ae%3Et%3F%2D1%3A1%7D%3Bu%3E%3Dc%26%26d%3El%3B%29%7Bif%28h%3DMath%2Efloor%28%2E5%2A%28u%2Bc%29%29%2Cs%3Dt%5BMath%2Emax%280%2Ch%2D1%29%5D%5Bi%5D%2Cr%3Dt%5Bh%5D%5Bi%5D%2Ca%3Dt%5BMath%2Emin%28t%2Elength%2D1%2Ch%2B1%29%5D%5Bi%5D%2C0%3D%3Dn%28r%2Ce%29%29return%20h%3Bif%28n%28s%2Ce%29%3C0%26%26n%28r%2Ce%29%3E0%29return%22before%22%3D%3Do%3FMath%2Emax%280%2Ch%2D1%29%3Ah%3Bif%28n%28r%2Ce%29%3C0%26%26n%28a%2Ce%29%3E0%29return%22before%22%3D%3Do%3Fh%3AMath%2Emin%28t%2Elength%2D1%2Ch%2B1%29%3Bn%28r%2Ce%29%3C0%3Fc%3Dh%2B1%3Au%3Dh%2D1%2Cl%2B%2B%7Dreturn%2D1%7D%2Ce%2EeasingFunctions%3D%7Blinear%3Afunction%28t%29%7Breturn%20t%7D%2CeaseInQuad%3Afunction%28t%29%7Breturn%20t%2At%7D%2CeaseOutQuad%3Afunction%28t%29%7Breturn%20t%2A%282%2Dt%29%7D%2CeaseInOutQuad%3Afunction%28t%29%7Breturn%2E5%3Et%3F2%2At%2At%3A%2D1%2B%284%2D2%2At%29%2At%7D%2CeaseInCubic%3Afunction%28t%29%7Breturn%20t%2At%2At%7D%2CeaseOutCubic%3Afunction%28t%29%7Breturn%2D%2Dt%2At%2At%2B1%7D%2CeaseInOutCubic%3Afunction%28t%29%7Breturn%2E5%3Et%3F4%2At%2At%2At%3A%28t%2D1%29%2A%282%2At%2D2%29%2A%282%2At%2D2%29%2B1%7D%2CeaseInQuart%3Afunction%28t%29%7Breturn%20t%2At%2At%2At%7D%2CeaseOutQuart%3Afunction%28t%29%7Breturn%201%2D%20%2D%2Dt%2At%2At%2At%7D%2CeaseInOutQuart%3Afunction%28t%29%7Breturn%2E5%3Et%3F8%2At%2At%2At%2At%3A1%2D8%2A%2D%2Dt%2At%2At%2At%7D%2CeaseInQuint%3Afunction%28t%29%7Breturn%20t%2At%2At%2At%2At%7D%2CeaseOutQuint%3Afunction%28t%29%7Breturn%201%2B%2D%2Dt%2At%2At%2At%2At%7D%2CeaseInOutQuint%3Afunction%28t%29%7Breturn%2E5%3Et%3F16%2At%2At%2At%2At%2At%3A1%2B16%2A%2D%2Dt%2At%2At%2At%2At%7D%7D%7D%2Cfunction%28t%2Ce%2Ci%29%7Bt%2Eexports%3D%22undefined%22%21%3Dtypeof%20window%26%26window%2Emoment%7C%7Ci%283%29%7D%2Cfunction%28t%2Ce%2Ci%29%7B%28function%28t%29%7B%21function%28e%2Ci%29%7Bt%2Eexports%3Di%28%29%7D%28this%2Cfunction%28%29%7Bfunction%20e%28%29%7Breturn%20ro%2Eapply%28null%2Carguments%29%7Dfunction%20i%28t%29%7Bro%3Dt%7Dfunction%20o%28t%29%7Breturn%20t%20instanceof%20Array%7C%7C%22%5Bobject%20Array%5D%22%3D%3D%3DObject%2Eprototype%2EtoString%2Ecall%28t%29%7Dfunction%20n%28t%29%7Breturn%20t%20instanceof%20Date%7C%7C%22%5Bobject%20Date%5D%22%3D%3D%3DObject%2Eprototype%2EtoString%2Ecall%28t%29%7Dfunction%20s%28t%2Ce%29%7Bvar%20i%2Co%3D%5B%5D%3Bfor%28i%3D0%3Bi%3Ct%2Elength%3B%2B%2Bi%29o%2Epush%28e%28t%5Bi%5D%2Ci%29%29%3Breturn%20o%7Dfunction%20r%28t%2Ce%29%7Breturn%20Object%2Eprototype%2EhasOwnProperty%2Ecall%28t%2Ce%29%7Dfunction%20a%28t%2Ce%29%7Bfor%28var%20i%20in%20e%29r%28e%2Ci%29%26%26%28t%5Bi%5D%3De%5Bi%5D%29%3Breturn%20r%28e%2C%22toString%22%29%26%26%28t%2EtoString%3De%2EtoString%29%2Cr%28e%2C%22valueOf%22%29%26%26%28t%2EvalueOf%3De%2EvalueOf%29%2Ct%7Dfunction%20h%28t%2Ce%2Ci%2Co%29%7Breturn%20Lt%28t%2Ce%2Ci%2Co%2C%210%29%2Eutc%28%29%7Dfunction%20d%28%29%7Breturn%7Bempty%3A%211%2CunusedTokens%3A%5B%5D%2CunusedInput%3A%5B%5D%2Coverflow%3A%2D2%2CcharsLeftOver%3A0%2CnullInput%3A%211%2CinvalidMonth%3Anull%2CinvalidFormat%3A%211%2CuserInvalidated%3A%211%2Ciso%3A%211%2CparsedDateParts%3A%5B%5D%2Cmeridiem%3Anull%7D%7Dfunction%20l%28t%29%7Breturn%20null%3D%3Dt%2E%5Fpf%26%26%28t%2E%5Fpf%3Dd%28%29%29%2Ct%2E%5Fpf%7Dfunction%20c%28t%29%7Bif%28null%3D%3Dt%2E%5FisValid%29%7Bvar%20e%3Dl%28t%29%2Ci%3Dao%2Ecall%28e%2EparsedDateParts%2Cfunction%28t%29%7Breturn%20null%21%3Dt%7D%29%3Bt%2E%5FisValid%3D%21isNaN%28t%2E%5Fd%2EgetTime%28%29%29%26%26e%2Eoverflow%3C0%26%26%21e%2Eempty%26%26%21e%2EinvalidMonth%26%26%21e%2EinvalidWeekday%26%26%21e%2EnullInput%26%26%21e%2EinvalidFormat%26%26%21e%2EuserInvalidated%26%26%28%21e%2Emeridiem%7C%7Ce%2Emeridiem%26%26i%29%2Ct%2E%5Fstrict%26%26%28t%2E%5FisValid%3Dt%2E%5FisValid%26%260%3D%3D%3De%2EcharsLeftOver%26%260%3D%3D%3De%2EunusedTokens%2Elength%26%26void%200%3D%3D%3De%2EbigHour%29%7Dreturn%20t%2E%5FisValid%7Dfunction%20u%28t%29%7Bvar%20e%3Dh%28NaN%29%3Breturn%20null%21%3Dt%3Fa%28l%28e%29%2Ct%29%3Al%28e%29%2EuserInvalidated%3D%210%2Ce%7Dfunction%20p%28t%29%7Breturn%20void%200%3D%3D%3Dt%7Dfunction%20f%28t%2Ce%29%7Bvar%20i%2Co%2Cn%3Bif%28p%28e%2E%5FisAMomentObject%29%7C%7C%28t%2E%5FisAMomentObject%3De%2E%5FisAMomentObject%29%2Cp%28e%2E%5Fi%29%7C%7C%28t%2E%5Fi%3De%2E%5Fi%29%2Cp%28e%2E%5Ff%29%7C%7C%28t%2E%5Ff%3De%2E%5Ff%29%2Cp%28e%2E%5Fl%29%7C%7C%28t%2E%5Fl%3De%2E%5Fl%29%2Cp%28e%2E%5Fstrict%29%7C%7C%28t%2E%5Fstrict%3De%2E%5Fstrict%29%2Cp%28e%2E%5Ftzm%29%7C%7C%28t%2E%5Ftzm%3De%2E%5Ftzm%29%2Cp%28e%2E%5FisUTC%29%7C%7C%28t%2E%5FisUTC%3De%2E%5FisUTC%29%2Cp%28e%2E%5Foffset%29%7C%7C%28t%2E%5Foffset%3De%2E%5Foffset%29%2Cp%28e%2E%5Fpf%29%7C%7C%28t%2E%5Fpf%3Dl%28e%29%29%2Cp%28e%2E%5Flocale%29%7C%7C%28t%2E%5Flocale%3De%2E%5Flocale%29%2Cho%2Elength%3E0%29for%28i%20in%20ho%29o%3Dho%5Bi%5D%2Cn%3De%5Bo%5D%2Cp%28n%29%7C%7C%28t%5Bo%5D%3Dn%29%3Breturn%20t%7Dfunction%20m%28t%29%7Bf%28this%2Ct%29%2Cthis%2E%5Fd%3Dnew%20Date%28null%21%3Dt%2E%5Fd%3Ft%2E%5Fd%2EgetTime%28%29%3ANaN%29%2Clo%3D%3D%3D%211%26%26%28lo%3D%210%2Ce%2EupdateOffset%28this%29%2Clo%3D%211%29%7Dfunction%20v%28t%29%7Breturn%20t%20instanceof%20m%7C%7Cnull%21%3Dt%26%26null%21%3Dt%2E%5FisAMomentObject%7Dfunction%20g%28t%29%7Breturn%200%3Et%3FMath%2Eceil%28t%29%3AMath%2Efloor%28t%29%7Dfunction%20y%28t%29%7Bvar%20e%3D%2Bt%2Ci%3D0%3Breturn%200%21%3D%3De%26%26isFinite%28e%29%26%26%28i%3Dg%28e%29%29%2Ci%7Dfunction%20b%28t%2Ce%2Ci%29%7Bvar%20o%2Cn%3DMath%2Emin%28t%2Elength%2Ce%2Elength%29%2Cs%3DMath%2Eabs%28t%2Elength%2De%2Elength%29%2Cr%3D0%3Bfor%28o%3D0%3Bn%3Eo%3Bo%2B%2B%29%28i%26%26t%5Bo%5D%21%3D%3De%5Bo%5D%7C%7C%21i%26%26y%28t%5Bo%5D%29%21%3D%3Dy%28e%5Bo%5D%29%29%26%26r%2B%2B%3Breturn%20r%2Bs%7Dfunction%20w%28t%29%7Be%2EsuppressDeprecationWarnings%3D%3D%3D%211%26%26%22undefined%22%21%3Dtypeof%20console%26%26console%2Ewarn%26%26console%2Ewarn%28%22Deprecation%20warning%3A%20%22%2Bt%29%7Dfunction%20%5F%28t%2Ci%29%7Bvar%20o%3D%210%3Breturn%20a%28function%28%29%7Breturn%20null%21%3De%2EdeprecationHandler%26%26e%2EdeprecationHandler%28null%2Ct%29%2Co%26%26%28w%28t%2B%22%5CnArguments%3A%20%22%2BArray%2Eprototype%2Eslice%2Ecall%28arguments%29%2Ejoin%28%22%2C%20%22%29%2B%22%5Cn%22%2B%28new%20Error%29%2Estack%29%2Co%3D%211%29%2Ci%2Eapply%28this%2Carguments%29%7D%2Ci%29%7Dfunction%20x%28t%2Ci%29%7Bnull%21%3De%2EdeprecationHandler%26%26e%2EdeprecationHandler%28t%2Ci%29%2Cco%5Bt%5D%7C%7C%28w%28i%29%2Cco%5Bt%5D%3D%210%29%7Dfunction%20k%28t%29%7Breturn%20t%20instanceof%20Function%7C%7C%22%5Bobject%20Function%5D%22%3D%3D%3DObject%2Eprototype%2EtoString%2Ecall%28t%29%7Dfunction%20O%28t%29%7Breturn%22%5Bobject%20Object%5D%22%3D%3D%3DObject%2Eprototype%2EtoString%2Ecall%28t%29%7Dfunction%20M%28t%29%7Bvar%20e%2Ci%3Bfor%28i%20in%20t%29e%3Dt%5Bi%5D%2Ck%28e%29%3Fthis%5Bi%5D%3De%3Athis%5B%22%5F%22%2Bi%5D%3De%3Bthis%2E%5Fconfig%3Dt%2Cthis%2E%5FordinalParseLenient%3Dnew%20RegExp%28this%2E%5FordinalParse%2Esource%2B%22%7C%22%2B%2F%5Cd%7B1%2C2%7D%2F%2Esource%29%7Dfunction%20D%28t%2Ce%29%7Bvar%20i%2Co%3Da%28%7B%7D%2Ct%29%3Bfor%28i%20in%20e%29r%28e%2Ci%29%26%26%28O%28t%5Bi%5D%29%26%26O%28e%5Bi%5D%29%3F%28o%5Bi%5D%3D%7B%7D%2Ca%28o%5Bi%5D%2Ct%5Bi%5D%29%2Ca%28o%5Bi%5D%2Ce%5Bi%5D%29%29%3Anull%21%3De%5Bi%5D%3Fo%5Bi%5D%3De%5Bi%5D%3Adelete%20o%5Bi%5D%29%3Breturn%20o%7Dfunction%20S%28t%29%7Bnull%21%3Dt%26%26this%2Eset%28t%29%7Dfunction%20C%28t%29%7Breturn%20t%3Ft%2EtoLowerCase%28%29%2Ereplace%28%22%5F%22%2C%22%2D%22%29%3At%7Dfunction%20T%28t%29%7Bfor%28var%20e%2Ci%2Co%2Cn%2Cs%3D0%3Bs%3Ct%2Elength%3B%29%7Bfor%28n%3DC%28t%5Bs%5D%29%2Esplit%28%22%2D%22%29%2Ce%3Dn%2Elength%2Ci%3DC%28t%5Bs%2B1%5D%29%2Ci%3Di%3Fi%2Esplit%28%22%2D%22%29%3Anull%3Be%3E0%3B%29%7Bif%28o%3DE%28n%2Eslice%280%2Ce%29%2Ejoin%28%22%2D%22%29%29%29return%20o%3Bif%28i%26%26i%2Elength%3E%3De%26%26b%28n%2Ci%2C%210%29%3E%3De%2D1%29break%3Be%2D%2D%7Ds%2B%2B%7Dreturn%20null%7Dfunction%20E%28e%29%7Bvar%20i%3Dnull%3Bif%28%21mo%5Be%5D%26%26%22undefined%22%21%3Dtypeof%20t%26%26t%26%26t%2Eexports%29try%7Bi%3Dpo%2E%5Fabbr%2C%21function%28%29%7Bvar%20t%3Dnew%20Error%28%27Cannot%20find%20module%20%22%2E%2Flocale%22%27%29%3Bthrow%20t%2Ecode%3D%22MODULE%5FNOT%5FFOUND%22%2Ct%7D%28%29%2CP%28i%29%7Dcatch%28o%29%7B%7Dreturn%20mo%5Be%5D%7Dfunction%20P%28t%2Ce%29%7Bvar%20i%3Breturn%20t%26%26%28i%3Dp%28e%29%3FR%28t%29%3AI%28t%2Ce%29%2Ci%26%26%28po%3Di%29%29%2Cpo%2E%5Fabbr%7Dfunction%20I%28t%2Ce%29%7Breturn%20null%21%3D%3De%3F%28e%2Eabbr%3Dt%2Cnull%21%3Dmo%5Bt%5D%3F%28x%28%22defineLocaleOverride%22%2C%22use%20moment%2EupdateLocale%28localeName%2C%20config%29%20to%20change%20an%20existing%20locale%2E%20moment%2EdefineLocale%28localeName%2C%20config%29%20should%20only%20be%20used%20for%20creating%20a%20new%20locale%22%29%2Ce%3DD%28mo%5Bt%5D%2E%5Fconfig%2Ce%29%29%3Anull%21%3De%2EparentLocale%26%26%28null%21%3Dmo%5Be%2EparentLocale%5D%3Fe%3DD%28mo%5Be%2EparentLocale%5D%2E%5Fconfig%2Ce%29%3Ax%28%22parentLocaleUndefined%22%2C%22specified%20parentLocale%20is%20not%20defined%20yet%22%29%29%2Cmo%5Bt%5D%3Dnew%20S%28e%29%2CP%28t%29%2Cmo%5Bt%5D%29%3A%28delete%20mo%5Bt%5D%2Cnull%29%7Dfunction%20N%28t%2Ce%29%7Bif%28null%21%3De%29%7Bvar%20i%3Bnull%21%3Dmo%5Bt%5D%26%26%28e%3DD%28mo%5Bt%5D%2E%5Fconfig%2Ce%29%29%2Ci%3Dnew%20S%28e%29%2Ci%2EparentLocale%3Dmo%5Bt%5D%2Cmo%5Bt%5D%3Di%2CP%28t%29%7Delse%20null%21%3Dmo%5Bt%5D%26%26%28null%21%3Dmo%5Bt%5D%2EparentLocale%3Fmo%5Bt%5D%3Dmo%5Bt%5D%2EparentLocale%3Anull%21%3Dmo%5Bt%5D%26%26delete%20mo%5Bt%5D%29%3Breturn%20mo%5Bt%5D%7Dfunction%20R%28t%29%7Bvar%20e%3Bif%28t%26%26t%2E%5Flocale%26%26t%2E%5Flocale%2E%5Fabbr%26%26%28t%3Dt%2E%5Flocale%2E%5Fabbr%29%2C%21t%29return%20po%3Bif%28%21o%28t%29%29%7Bif%28e%3DE%28t%29%29return%20e%3Bt%3D%5Bt%5D%7Dreturn%20T%28t%29%7Dfunction%20z%28%29%7Breturn%20uo%28mo%29%7Dfunction%20L%28t%2Ce%29%7Bvar%20i%3Dt%2EtoLowerCase%28%29%3Bvo%5Bi%5D%3Dvo%5Bi%2B%22s%22%5D%3Dvo%5Be%5D%3Dt%7Dfunction%20A%28t%29%7Breturn%22string%22%3D%3Dtypeof%20t%3Fvo%5Bt%5D%7C%7Cvo%5Bt%2EtoLowerCase%28%29%5D%3Avoid%200%7Dfunction%20B%28t%29%7Bvar%20e%2Ci%2Co%3D%7B%7D%3Bfor%28i%20in%20t%29r%28t%2Ci%29%26%26%28e%3DA%28i%29%2Ce%26%26%28o%5Be%5D%3Dt%5Bi%5D%29%29%3Breturn%20o%7Dfunction%20F%28t%2Ci%29%7Breturn%20function%28o%29%7Breturn%20null%21%3Do%3F%28H%28this%2Ct%2Co%29%2Ce%2EupdateOffset%28this%2Ci%29%2Cthis%29%3Aj%28this%2Ct%29%7D%7Dfunction%20j%28t%2Ce%29%7Breturn%20t%2EisValid%28%29%3Ft%2E%5Fd%5B%22get%22%2B%28t%2E%5FisUTC%3F%22UTC%22%3A%22%22%29%2Be%5D%28%29%3ANaN%7Dfunction%20H%28t%2Ce%2Ci%29%7Bt%2EisValid%28%29%26%26t%2E%5Fd%5B%22set%22%2B%28t%2E%5FisUTC%3F%22UTC%22%3A%22%22%29%2Be%5D%28i%29%7Dfunction%20W%28t%2Ce%29%7Bvar%20i%3Bif%28%22object%22%3D%3Dtypeof%20t%29for%28i%20in%20t%29this%2Eset%28i%2Ct%5Bi%5D%29%3Belse%20if%28t%3DA%28t%29%2Ck%28this%5Bt%5D%29%29return%20this%5Bt%5D%28e%29%3Breturn%20this%7Dfunction%20Y%28t%2Ce%2Ci%29%7Bvar%20o%3D%22%22%2BMath%2Eabs%28t%29%2Cn%3De%2Do%2Elength%2Cs%3Dt%3E%3D0%3Breturn%28s%3Fi%3F%22%2B%22%3A%22%22%3A%22%2D%22%29%2BMath%2Epow%2810%2CMath%2Emax%280%2Cn%29%29%2EtoString%28%29%2Esubstr%281%29%2Bo%7Dfunction%20G%28t%2Ce%2Ci%2Co%29%7Bvar%20n%3Do%3B%22string%22%3D%3Dtypeof%20o%26%26%28n%3Dfunction%28%29%7Breturn%20this%5Bo%5D%28%29%7D%29%2Ct%26%26%28wo%5Bt%5D%3Dn%29%2Ce%26%26%28wo%5Be%5B0%5D%5D%3Dfunction%28%29%7Breturn%20Y%28n%2Eapply%28this%2Carguments%29%2Ce%5B1%5D%2Ce%5B2%5D%29%7D%29%2Ci%26%26%28wo%5Bi%5D%3Dfunction%28%29%7Breturn%20this%2ElocaleData%28%29%2Eordinal%28n%2Eapply%28this%2Carguments%29%2Ct%29%7D%29%7Dfunction%20V%28t%29%7Breturn%20t%2Ematch%28%2F%5C%5B%5B%5Cs%5CS%5D%2F%29%3Ft%2Ereplace%28%2F%5E%5C%5B%7C%5C%5D%24%2Fg%2C%22%22%29%3At%2Ereplace%28%2F%5C%5C%2Fg%2C%22%22%29%7Dfunction%20U%28t%29%7Bvar%20e%2Ci%2Co%3Dt%2Ematch%28go%29%3Bfor%28e%3D0%2Ci%3Do%2Elength%3Bi%3Ee%3Be%2B%2B%29wo%5Bo%5Be%5D%5D%3Fo%5Be%5D%3Dwo%5Bo%5Be%5D%5D%3Ao%5Be%5D%3DV%28o%5Be%5D%29%3Breturn%20function%28e%29%7Bvar%20n%2Cs%3D%22%22%3Bfor%28n%3D0%3Bi%3En%3Bn%2B%2B%29s%2B%3Do%5Bn%5Dinstanceof%20Function%3Fo%5Bn%5D%2Ecall%28e%2Ct%29%3Ao%5Bn%5D%3Breturn%20s%7D%7Dfunction%20q%28t%2Ce%29%7Breturn%20t%2EisValid%28%29%3F%28e%3DX%28e%2Ct%2ElocaleData%28%29%29%2Cbo%5Be%5D%3Dbo%5Be%5D%7C%7CU%28e%29%2Cbo%5Be%5D%28t%29%29%3At%2ElocaleData%28%29%2EinvalidDate%28%29%7Dfunction%20X%28t%2Ce%29%7Bfunction%20i%28t%29%7Breturn%20e%2ElongDateFormat%28t%29%7C%7Ct%7Dvar%20o%3D5%3Bfor%28yo%2ElastIndex%3D0%3Bo%3E%3D0%26%26yo%2Etest%28t%29%3B%29t%3Dt%2Ereplace%28yo%2Ci%29%2Cyo%2ElastIndex%3D0%2Co%2D%3D1%3Breturn%20t%7Dfunction%20Z%28t%2Ce%2Ci%29%7BBo%5Bt%5D%3Dk%28e%29%3Fe%3Afunction%28t%2Co%29%7Breturn%20t%26%26i%3Fi%3Ae%7D%7Dfunction%20K%28t%2Ce%29%7Breturn%20r%28Bo%2Ct%29%3FBo%5Bt%5D%28e%2E%5Fstrict%2Ce%2E%5Flocale%29%3Anew%20RegExp%28J%28t%29%29%7Dfunction%20J%28t%29%7Breturn%20Q%28t%2Ereplace%28%22%5C%5C%22%2C%22%22%29%2Ereplace%28%2F%5C%5C%28%5C%5B%29%7C%5C%5C%28%5C%5D%29%7C%5C%5B%28%5B%5E%5C%5D%5C%5B%5D%2A%29%5C%5D%7C%5C%5C%28%2E%29%2Fg%2Cfunction%28t%2Ce%2Ci%2Co%2Cn%29%7Breturn%20e%7C%7Ci%7C%7Co%7C%7Cn%7D%29%29%7Dfunction%20Q%28t%29%7Breturn%20t%2Ereplace%28%2F%5B%2D%5C%2F%5C%5C%5E%24%2A%2B%3F%2E%28%29%7C%5B%5C%5D%7B%7D%5D%2Fg%2C%22%5C%5C%24%26%22%29%7Dfunction%20%24%28t%2Ce%29%7Bvar%20i%2Co%3De%3Bfor%28%22string%22%3D%3Dtypeof%20t%26%26%28t%3D%5Bt%5D%29%2C%22number%22%3D%3Dtypeof%20e%26%26%28o%3Dfunction%28t%2Ci%29%7Bi%5Be%5D%3Dy%28t%29%7D%29%2Ci%3D0%3Bi%3Ct%2Elength%3Bi%2B%2B%29Fo%5Bt%5Bi%5D%5D%3Do%7Dfunction%20tt%28t%2Ce%29%7B%24%28t%2Cfunction%28t%2Ci%2Co%2Cn%29%7Bo%2E%5Fw%3Do%2E%5Fw%7C%7C%7B%7D%2Ce%28t%2Co%2E%5Fw%2Co%2Cn%29%7D%29%7Dfunction%20et%28t%2Ce%2Ci%29%7Bnull%21%3De%26%26r%28Fo%2Ct%29%26%26Fo%5Bt%5D%28e%2Ci%2E%5Fa%2Ci%2Ct%29%7Dfunction%20it%28t%2Ce%29%7Breturn%20new%20Date%28Date%2EUTC%28t%2Ce%2B1%2C0%29%29%2EgetUTCDate%28%29%7Dfunction%20ot%28t%2Ce%29%7Breturn%20o%28this%2E%5Fmonths%29%3Fthis%2E%5Fmonths%5Bt%2Emonth%28%29%5D%3Athis%2E%5Fmonths%5BZo%2Etest%28e%29%3F%22format%22%3A%22standalone%22%5D%5Bt%2Emonth%28%29%5D%7Dfunction%20nt%28t%2Ce%29%7Breturn%20o%28this%2E%5FmonthsShort%29%3Fthis%2E%5FmonthsShort%5Bt%2Emonth%28%29%5D%3Athis%2E%5FmonthsShort%5BZo%2Etest%28e%29%3F%22format%22%3A%22standalone%22%5D%5Bt%2Emonth%28%29%5D%7Dfunction%20st%28t%2Ce%2Ci%29%7Bvar%20o%2Cn%2Cs%2Cr%3Dt%2EtoLocaleLowerCase%28%29%3Bif%28%21this%2E%5FmonthsParse%29for%28this%2E%5FmonthsParse%3D%5B%5D%2Cthis%2E%5FlongMonthsParse%3D%5B%5D%2Cthis%2E%5FshortMonthsParse%3D%5B%5D%2Co%3D0%3B12%3Eo%3B%2B%2Bo%29s%3Dh%28%5B2e3%2Co%5D%29%2Cthis%2E%5FshortMonthsParse%5Bo%5D%3Dthis%2EmonthsShort%28s%2C%22%22%29%2EtoLocaleLowerCase%28%29%2Cthis%2E%5FlongMonthsParse%5Bo%5D%3Dthis%2Emonths%28s%2C%22%22%29%2EtoLocaleLowerCase%28%29%3Breturn%20i%3F%22MMM%22%3D%3D%3De%3F%28n%3Dfo%2Ecall%28this%2E%5FshortMonthsParse%2Cr%29%2C%2D1%21%3D%3Dn%3Fn%3Anull%29%3A%28n%3Dfo%2Ecall%28this%2E%5FlongMonthsParse%2Cr%29%2C%2D1%21%3D%3Dn%3Fn%3Anull%29%3A%22MMM%22%3D%3D%3De%3F%28n%3Dfo%2Ecall%28this%2E%5FshortMonthsParse%2Cr%29%2C%2D1%21%3D%3Dn%3Fn%3A%28n%3Dfo%2Ecall%28this%2E%5FlongMonthsParse%2Cr%29%2C%2D1%21%3D%3Dn%3Fn%3Anull%29%29%3A%28n%3Dfo%2Ecall%28this%2E%5FlongMonthsParse%2Cr%29%2C%2D1%21%3D%3Dn%3Fn%3A%28n%3Dfo%2Ecall%28this%2E%5FshortMonthsParse%2Cr%29%2C%2D1%21%3D%3Dn%3Fn%3Anull%29%29%7Dfunction%20rt%28t%2Ce%2Ci%29%7Bvar%20o%2Cn%2Cs%3Bif%28this%2E%5FmonthsParseExact%29return%20st%2Ecall%28this%2Ct%2Ce%2Ci%29%3Bfor%28this%2E%5FmonthsParse%7C%7C%28this%2E%5FmonthsParse%3D%5B%5D%2Cthis%2E%5FlongMonthsParse%3D%5B%5D%2Cthis%2E%5FshortMonthsParse%3D%5B%5D%29%2Co%3D0%3B12%3Eo%3Bo%2B%2B%29%7Bif%28n%3Dh%28%5B2e3%2Co%5D%29%2Ci%26%26%21this%2E%5FlongMonthsParse%5Bo%5D%26%26%28this%2E%5FlongMonthsParse%5Bo%5D%3Dnew%20RegExp%28%22%5E%22%2Bthis%2Emonths%28n%2C%22%22%29%2Ereplace%28%22%2E%22%2C%22%22%29%2B%22%24%22%2C%22i%22%29%2Cthis%2E%5FshortMonthsParse%5Bo%5D%3Dnew%20RegExp%28%22%5E%22%2Bthis%2EmonthsShort%28n%2C%22%22%29%2Ereplace%28%22%2E%22%2C%22%22%29%2B%22%24%22%2C%22i%22%29%29%2Ci%7C%7Cthis%2E%5FmonthsParse%5Bo%5D%7C%7C%28s%3D%22%5E%22%2Bthis%2Emonths%28n%2C%22%22%29%2B%22%7C%5E%22%2Bthis%2EmonthsShort%28n%2C%22%22%29%2Cthis%2E%5FmonthsParse%5Bo%5D%3Dnew%20RegExp%28s%2Ereplace%28%22%2E%22%2C%22%22%29%2C%22i%22%29%29%2Ci%26%26%22MMMM%22%3D%3D%3De%26%26this%2E%5FlongMonthsParse%5Bo%5D%2Etest%28t%29%29return%20o%3Bif%28i%26%26%22MMM%22%3D%3D%3De%26%26this%2E%5FshortMonthsParse%5Bo%5D%2Etest%28t%29%29return%20o%3Bif%28%21i%26%26this%2E%5FmonthsParse%5Bo%5D%2Etest%28t%29%29return%20o%7D%7Dfunction%20at%28t%2Ce%29%7Bvar%20i%3Bif%28%21t%2EisValid%28%29%29return%20t%3Bif%28%22string%22%3D%3Dtypeof%20e%29if%28%2F%5E%5Cd%2B%24%2F%2Etest%28e%29%29e%3Dy%28e%29%3Belse%20if%28e%3Dt%2ElocaleData%28%29%2EmonthsParse%28e%29%2C%22number%22%21%3Dtypeof%20e%29return%20t%3Breturn%20i%3DMath%2Emin%28t%2Edate%28%29%2Cit%28t%2Eyear%28%29%2Ce%29%29%2Ct%2E%5Fd%5B%22set%22%2B%28t%2E%5FisUTC%3F%22UTC%22%3A%22%22%29%2B%22Month%22%5D%28e%2Ci%29%2Ct%7Dfunction%20ht%28t%29%7Breturn%20null%21%3Dt%3F%28at%28this%2Ct%29%2Ce%2EupdateOffset%28this%2C%210%29%2Cthis%29%3Aj%28this%2C%22Month%22%29%7Dfunction%20dt%28%29%7Breturn%20it%28this%2Eyear%28%29%2Cthis%2Emonth%28%29%29%7Dfunction%20lt%28t%29%7Breturn%20this%2E%5FmonthsParseExact%3F%28r%28this%2C%22%5FmonthsRegex%22%29%7C%7Cut%2Ecall%28this%29%2Ct%3Fthis%2E%5FmonthsShortStrictRegex%3Athis%2E%5FmonthsShortRegex%29%3Athis%2E%5FmonthsShortStrictRegex%26%26t%3Fthis%2E%5FmonthsShortStrictRegex%3Athis%2E%5FmonthsShortRegex%7Dfunction%20ct%28t%29%7Breturn%20this%2E%5FmonthsParseExact%3F%28r%28this%2C%22%5FmonthsRegex%22%29%7C%7Cut%2Ecall%28this%29%2Ct%3Fthis%2E%5FmonthsStrictRegex%3Athis%2E%5FmonthsRegex%29%3Athis%2E%5FmonthsStrictRegex%26%26t%3Fthis%2E%5FmonthsStrictRegex%3Athis%2E%5FmonthsRegex%7Dfunction%20ut%28%29%7Bfunction%20t%28t%2Ce%29%7Breturn%20e%2Elength%2Dt%2Elength%7Dvar%20e%2Ci%2Co%3D%5B%5D%2Cn%3D%5B%5D%2Cs%3D%5B%5D%3Bfor%28e%3D0%3B12%3Ee%3Be%2B%2B%29i%3Dh%28%5B2e3%2Ce%5D%29%2Co%2Epush%28this%2EmonthsShort%28i%2C%22%22%29%29%2Cn%2Epush%28this%2Emonths%28i%2C%22%22%29%29%2Cs%2Epush%28this%2Emonths%28i%2C%22%22%29%29%2Cs%2Epush%28this%2EmonthsShort%28i%2C%22%22%29%29%3Bfor%28o%2Esort%28t%29%2Cn%2Esort%28t%29%2Cs%2Esort%28t%29%2Ce%3D0%3B12%3Ee%3Be%2B%2B%29o%5Be%5D%3DQ%28o%5Be%5D%29%2Cn%5Be%5D%3DQ%28n%5Be%5D%29%2Cs%5Be%5D%3DQ%28s%5Be%5D%29%3Bthis%2E%5FmonthsRegex%3Dnew%20RegExp%28%22%5E%28%22%2Bs%2Ejoin%28%22%7C%22%29%2B%22%29%22%2C%22i%22%29%2Cthis%2E%5FmonthsShortRegex%3Dthis%2E%5FmonthsRegex%2Cthis%2E%5FmonthsStrictRegex%3Dnew%20RegExp%28%22%5E%28%22%2Bn%2Ejoin%28%22%7C%22%29%2B%22%29%22%2C%22i%22%29%2Cthis%2E%5FmonthsShortStrictRegex%3Dnew%20RegExp%28%22%5E%28%22%2Bo%2Ejoin%28%22%7C%22%29%2B%22%29%22%2C%22i%22%29%7Dfunction%20pt%28t%29%7Bvar%20e%2Ci%3Dt%2E%5Fa%3Breturn%20i%26%26%2D2%3D%3D%3Dl%28t%29%2Eoverflow%26%26%28e%3Di%5BHo%5D%3C0%7C%7Ci%5BHo%5D%3E11%3FHo%3Ai%5BWo%5D%3C1%7C%7Ci%5BWo%5D%3Eit%28i%5Bjo%5D%2Ci%5BHo%5D%29%3FWo%3Ai%5BYo%5D%3C0%7C%7Ci%5BYo%5D%3E24%7C%7C24%3D%3D%3Di%5BYo%5D%26%26%280%21%3D%3Di%5BGo%5D%7C%7C0%21%3D%3Di%5BVo%5D%7C%7C0%21%3D%3Di%5BUo%5D%29%3FYo%3Ai%5BGo%5D%3C0%7C%7Ci%5BGo%5D%3E59%3FGo%3Ai%5BVo%5D%3C0%7C%7Ci%5BVo%5D%3E59%3FVo%3Ai%5BUo%5D%3C0%7C%7Ci%5BUo%5D%3E999%3FUo%3A%2D1%2Cl%28t%29%2E%5FoverflowDayOfYear%26%26%28jo%3Ee%7C%7Ce%3EWo%29%26%26%28e%3DWo%29%2Cl%28t%29%2E%5FoverflowWeeks%26%26%2D1%3D%3D%3De%26%26%28e%3Dqo%29%2Cl%28t%29%2E%5FoverflowWeekday%26%26%2D1%3D%3D%3De%26%26%28e%3DXo%29%2Cl%28t%29%2Eoverflow%3De%29%2Ct%7Dfunction%20ft%28t%29%7Bvar%20e%2Ci%2Co%2Cn%2Cs%2Cr%2Ca%3Dt%2E%5Fi%2Ch%3Dtn%2Eexec%28a%29%7C%7Cen%2Eexec%28a%29%3Bif%28h%29%7Bfor%28l%28t%29%2Eiso%3D%210%2Ce%3D0%2Ci%3Dnn%2Elength%3Bi%3Ee%3Be%2B%2B%29if%28nn%5Be%5D%5B1%5D%2Eexec%28h%5B1%5D%29%29%7Bn%3Dnn%5Be%5D%5B0%5D%2Co%3Dnn%5Be%5D%5B2%5D%21%3D%3D%211%3Bbreak%7Dif%28null%3D%3Dn%29return%20void%28t%2E%5FisValid%3D%211%29%3Bif%28h%5B3%5D%29%7Bfor%28e%3D0%2Ci%3Dsn%2Elength%3Bi%3Ee%3Be%2B%2B%29if%28sn%5Be%5D%5B1%5D%2Eexec%28h%5B3%5D%29%29%7Bs%3D%28h%5B2%5D%7C%7C%22%20%22%29%2Bsn%5Be%5D%5B0%5D%3Bbreak%7Dif%28null%3D%3Ds%29return%20void%28t%2E%5FisValid%3D%211%29%7Dif%28%21o%26%26null%21%3Ds%29return%20void%28t%2E%5FisValid%3D%211%29%3Bif%28h%5B4%5D%29%7Bif%28%21on%2Eexec%28h%5B4%5D%29%29return%20void%28t%2E%5FisValid%3D%211%29%3Br%3D%22Z%22%7Dt%2E%5Ff%3Dn%2B%28s%7C%7C%22%22%29%2B%28r%7C%7C%22%22%29%2CTt%28t%29%7Delse%20t%2E%5FisValid%3D%211%7Dfunction%20mt%28t%29%7Bvar%20i%3Drn%2Eexec%28t%2E%5Fi%29%3Breturn%20null%21%3D%3Di%3Fvoid%28t%2E%5Fd%3Dnew%20Date%28%2Bi%5B1%5D%29%29%3A%28ft%28t%29%2Cvoid%28t%2E%5FisValid%3D%3D%3D%211%26%26%28delete%20t%2E%5FisValid%2Ce%2EcreateFromInputFallback%28t%29%29%29%29%7Dfunction%20vt%28t%2Ce%2Ci%2Co%2Cn%2Cs%2Cr%29%7Bvar%20a%3Dnew%20Date%28t%2Ce%2Ci%2Co%2Cn%2Cs%2Cr%29%3Breturn%20100%3Et%26%26t%3E%3D0%26%26isFinite%28a%2EgetFullYear%28%29%29%26%26a%2EsetFullYear%28t%29%2Ca%7Dfunction%20gt%28t%29%7Bvar%20e%3Dnew%20Date%28Date%2EUTC%2Eapply%28null%2Carguments%29%29%3Breturn%20100%3Et%26%26t%3E%3D0%26%26isFinite%28e%2EgetUTCFullYear%28%29%29%26%26e%2EsetUTCFullYear%28t%29%2Ce%7Dfunction%20yt%28t%29%7Breturn%20bt%28t%29%3F366%3A365%7Dfunction%20bt%28t%29%7Breturn%20t%254%3D%3D%3D0%26%26t%25100%21%3D%3D0%7C%7Ct%25400%3D%3D%3D0%7Dfunction%20wt%28%29%7Breturn%20bt%28this%2Eyear%28%29%29%7Dfunction%20%5Ft%28t%2Ce%2Ci%29%7Bvar%20o%3D7%2Be%2Di%2Cn%3D%287%2Bgt%28t%2C0%2Co%29%2EgetUTCDay%28%29%2De%29%257%3Breturn%2Dn%2Bo%2D1%7Dfunction%20xt%28t%2Ce%2Ci%2Co%2Cn%29%7Bvar%20s%2Cr%2Ca%3D%287%2Bi%2Do%29%257%2Ch%3D%5Ft%28t%2Co%2Cn%29%2Cd%3D1%2B7%2A%28e%2D1%29%2Ba%2Bh%3Breturn%200%3E%3Dd%3F%28s%3Dt%2D1%2Cr%3Dyt%28s%29%2Bd%29%3Ad%3Eyt%28t%29%3F%28s%3Dt%2B1%2Cr%3Dd%2Dyt%28t%29%29%3A%28s%3Dt%2Cr%3Dd%29%2C%7Byear%3As%2CdayOfYear%3Ar%7D%7Dfunction%20kt%28t%2Ce%2Ci%29%7Bvar%20o%2Cn%2Cs%3D%5Ft%28t%2Eyear%28%29%2Ce%2Ci%29%2Cr%3DMath%2Efloor%28%28t%2EdayOfYear%28%29%2Ds%2D1%29%2F7%29%2B1%3Breturn%201%3Er%3F%28n%3Dt%2Eyear%28%29%2D1%2Co%3Dr%2BOt%28n%2Ce%2Ci%29%29%3Ar%3EOt%28t%2Eyear%28%29%2Ce%2Ci%29%3F%28o%3Dr%2DOt%28t%2Eyear%28%29%2Ce%2Ci%29%2Cn%3Dt%2Eyear%28%29%2B1%29%3A%28n%3Dt%2Eyear%28%29%2Co%3Dr%29%2C%7Bweek%3Ao%2Cyear%3An%7D%7Dfunction%20Ot%28t%2Ce%2Ci%29%7Bvar%20o%3D%5Ft%28t%2Ce%2Ci%29%2Cn%3D%5Ft%28t%2B1%2Ce%2Ci%29%3Breturn%28yt%28t%29%2Do%2Bn%29%2F7%7Dfunction%20Mt%28t%2Ce%2Ci%29%7Breturn%20null%21%3Dt%3Ft%3Anull%21%3De%3Fe%3Ai%7Dfunction%20Dt%28t%29%7Bvar%20i%3Dnew%20Date%28e%2Enow%28%29%29%3Breturn%20t%2E%5FuseUTC%3F%5Bi%2EgetUTCFullYear%28%29%2Ci%2EgetUTCMonth%28%29%2Ci%2EgetUTCDate%28%29%5D%3A%5Bi%2EgetFullYear%28%29%2Ci%2EgetMonth%28%29%2Ci%2EgetDate%28%29%5D%7Dfunction%20St%28t%29%7Bvar%20e%2Ci%2Co%2Cn%2Cs%3D%5B%5D%3Bif%28%21t%2E%5Fd%29%7Bfor%28o%3DDt%28t%29%2Ct%2E%5Fw%26%26null%3D%3Dt%2E%5Fa%5BWo%5D%26%26null%3D%3Dt%2E%5Fa%5BHo%5D%26%26Ct%28t%29%2Ct%2E%5FdayOfYear%26%26%28n%3DMt%28t%2E%5Fa%5Bjo%5D%2Co%5Bjo%5D%29%2Ct%2E%5FdayOfYear%3Eyt%28n%29%26%26%28l%28t%29%2E%5FoverflowDayOfYear%3D%210%29%2Ci%3Dgt%28n%2C0%2Ct%2E%5FdayOfYear%29%2Ct%2E%5Fa%5BHo%5D%3Di%2EgetUTCMonth%28%29%2Ct%2E%5Fa%5BWo%5D%3Di%2EgetUTCDate%28%29%29%2Ce%3D0%3B3%3Ee%26%26null%3D%3Dt%2E%5Fa%5Be%5D%3B%2B%2Be%29t%2E%5Fa%5Be%5D%3Ds%5Be%5D%3Do%5Be%5D%3Bfor%28%3B7%3Ee%3Be%2B%2B%29t%2E%5Fa%5Be%5D%3Ds%5Be%5D%3Dnull%3D%3Dt%2E%5Fa%5Be%5D%3F2%3D%3D%3De%3F1%3A0%3At%2E%5Fa%5Be%5D%3B24%3D%3D%3Dt%2E%5Fa%5BYo%5D%26%260%3D%3D%3Dt%2E%5Fa%5BGo%5D%26%260%3D%3D%3Dt%2E%5Fa%5BVo%5D%26%260%3D%3D%3Dt%2E%5Fa%5BUo%5D%26%26%28t%2E%5FnextDay%3D%210%2Ct%2E%5Fa%5BYo%5D%3D0%29%2Ct%2E%5Fd%3D%28t%2E%5FuseUTC%3Fgt%3Avt%29%2Eapply%28null%2Cs%29%2Cnull%21%3Dt%2E%5Ftzm%26%26t%2E%5Fd%2EsetUTCMinutes%28t%2E%5Fd%2EgetUTCMinutes%28%29%2Dt%2E%5Ftzm%29%2Ct%2E%5FnextDay%26%26%28t%2E%5Fa%5BYo%5D%3D24%29%7D%7Dfunction%20Ct%28t%29%7Bvar%20e%2Ci%2Co%2Cn%2Cs%2Cr%2Ca%2Ch%3Be%3Dt%2E%5Fw%2Cnull%21%3De%2EGG%7C%7Cnull%21%3De%2EW%7C%7Cnull%21%3De%2EE%3F%28s%3D1%2Cr%3D4%2Ci%3DMt%28e%2EGG%2Ct%2E%5Fa%5Bjo%5D%2Ckt%28At%28%29%2C1%2C4%29%2Eyear%29%2Co%3DMt%28e%2EW%2C1%29%2Cn%3DMt%28e%2EE%2C1%29%2C%281%3En%7C%7Cn%3E7%29%26%26%28h%3D%210%29%29%3A%28s%3Dt%2E%5Flocale%2E%5Fweek%2Edow%2Cr%3Dt%2E%5Flocale%2E%5Fweek%2Edoy%2Ci%3DMt%28e%2Egg%2Ct%2E%5Fa%5Bjo%5D%2Ckt%28At%28%29%2Cs%2Cr%29%2Eyear%29%2Co%3DMt%28e%2Ew%2C1%29%2Cnull%21%3De%2Ed%3F%28n%3De%2Ed%2C%280%3En%7C%7Cn%3E6%29%26%26%28h%3D%210%29%29%3Anull%21%3De%2Ee%3F%28n%3De%2Ee%2Bs%2C%28e%2Ee%3C0%7C%7Ce%2Ee%3E6%29%26%26%28h%3D%210%29%29%3An%3Ds%29%2C1%3Eo%7C%7Co%3EOt%28i%2Cs%2Cr%29%3Fl%28t%29%2E%5FoverflowWeeks%3D%210%3Anull%21%3Dh%3Fl%28t%29%2E%5FoverflowWeekday%3D%210%3A%28a%3Dxt%28i%2Co%2Cn%2Cs%2Cr%29%2Ct%2E%5Fa%5Bjo%5D%3Da%2Eyear%2Ct%2E%5FdayOfYear%3Da%2EdayOfYear%29%7Dfunction%20Tt%28t%29%7Bif%28t%2E%5Ff%3D%3D%3De%2EISO%5F8601%29return%20void%20ft%28t%29%3Bt%2E%5Fa%3D%5B%5D%2Cl%28t%29%2Eempty%3D%210%3Bvar%20i%2Co%2Cn%2Cs%2Cr%2Ca%3D%22%22%2Bt%2E%5Fi%2Ch%3Da%2Elength%2Cd%3D0%3Bfor%28n%3DX%28t%2E%5Ff%2Ct%2E%5Flocale%29%2Ematch%28go%29%7C%7C%5B%5D%2Ci%3D0%3Bi%3Cn%2Elength%3Bi%2B%2B%29s%3Dn%5Bi%5D%2Co%3D%28a%2Ematch%28K%28s%2Ct%29%29%7C%7C%5B%5D%29%5B0%5D%2Co%26%26%28r%3Da%2Esubstr%280%2Ca%2EindexOf%28o%29%29%2Cr%2Elength%3E0%26%26l%28t%29%2EunusedInput%2Epush%28r%29%2Ca%3Da%2Eslice%28a%2EindexOf%28o%29%2Bo%2Elength%29%2Cd%2B%3Do%2Elength%29%2Cwo%5Bs%5D%3F%28o%3Fl%28t%29%2Eempty%3D%211%3Al%28t%29%2EunusedTokens%2Epush%28s%29%2Cet%28s%2Co%2Ct%29%29%3At%2E%5Fstrict%26%26%21o%26%26l%28t%29%2EunusedTokens%2Epush%28s%29%3Bl%28t%29%2EcharsLeftOver%3Dh%2Dd%2Ca%2Elength%3E0%26%26l%28t%29%2EunusedInput%2Epush%28a%29%2Cl%28t%29%2EbigHour%3D%3D%3D%210%26%26t%2E%5Fa%5BYo%5D%3C%3D12%26%26t%2E%5Fa%5BYo%5D%3E0%26%26%28l%28t%29%2EbigHour%3Dvoid%200%29%2Cl%28t%29%2EparsedDateParts%3Dt%2E%5Fa%2Eslice%280%29%2Cl%28t%29%2Emeridiem%3Dt%2E%5Fmeridiem%2Ct%2E%5Fa%5BYo%5D%3DEt%28t%2E%5Flocale%2Ct%2E%5Fa%5BYo%5D%2Ct%2E%5Fmeridiem%29%2CSt%28t%29%2Cpt%28t%29%7Dfunction%20Et%28t%2Ce%2Ci%29%7Bvar%20o%3Breturn%20null%3D%3Di%3Fe%3Anull%21%3Dt%2EmeridiemHour%3Ft%2EmeridiemHour%28e%2Ci%29%3Anull%21%3Dt%2EisPM%3F%28o%3Dt%2EisPM%28i%29%2Co%26%2612%3Ee%26%26%28e%2B%3D12%29%2Co%7C%7C12%21%3D%3De%7C%7C%28e%3D0%29%2Ce%29%3Ae%7Dfunction%20Pt%28t%29%7Bvar%20e%2Ci%2Co%2Cn%2Cs%3Bif%280%3D%3D%3Dt%2E%5Ff%2Elength%29return%20l%28t%29%2EinvalidFormat%3D%210%2Cvoid%28t%2E%5Fd%3Dnew%20Date%28NaN%29%29%3Bfor%28n%3D0%3Bn%3Ct%2E%5Ff%2Elength%3Bn%2B%2B%29s%3D0%2Ce%3Df%28%7B%7D%2Ct%29%2Cnull%21%3Dt%2E%5FuseUTC%26%26%28e%2E%5FuseUTC%3Dt%2E%5FuseUTC%29%2Ce%2E%5Ff%3Dt%2E%5Ff%5Bn%5D%2CTt%28e%29%2Cc%28e%29%26%26%28s%2B%3Dl%28e%29%2EcharsLeftOver%2Cs%2B%3D10%2Al%28e%29%2EunusedTokens%2Elength%2Cl%28e%29%2Escore%3Ds%2C%28null%3D%3Do%7C%7Co%3Es%29%26%26%28o%3Ds%2Ci%3De%29%29%3Ba%28t%2Ci%7C%7Ce%29%7Dfunction%20It%28t%29%7Bif%28%21t%2E%5Fd%29%7Bvar%20e%3DB%28t%2E%5Fi%29%3Bt%2E%5Fa%3Ds%28%5Be%2Eyear%2Ce%2Emonth%2Ce%2Eday%7C%7Ce%2Edate%2Ce%2Ehour%2Ce%2Eminute%2Ce%2Esecond%2Ce%2Emillisecond%5D%2Cfunction%28t%29%7Breturn%20t%26%26parseInt%28t%2C10%29%7D%29%2CSt%28t%29%7D%7Dfunction%20Nt%28t%29%7Bvar%20e%3Dnew%20m%28pt%28Rt%28t%29%29%29%3Breturn%20e%2E%5FnextDay%26%26%28e%2Eadd%281%2C%22d%22%29%2Ce%2E%5FnextDay%3Dvoid%200%29%2Ce%7Dfunction%20Rt%28t%29%7Bvar%20e%3Dt%2E%5Fi%2Ci%3Dt%2E%5Ff%3Breturn%20t%2E%5Flocale%3Dt%2E%5Flocale%7C%7CR%28t%2E%5Fl%29%2Cnull%3D%3D%3De%7C%7Cvoid%200%3D%3D%3Di%26%26%22%22%3D%3D%3De%3Fu%28%7BnullInput%3A%210%7D%29%3A%28%22string%22%3D%3Dtypeof%20e%26%26%28t%2E%5Fi%3De%3Dt%2E%5Flocale%2Epreparse%28e%29%29%2Cv%28e%29%3Fnew%20m%28pt%28e%29%29%3A%28o%28i%29%3FPt%28t%29%3Ai%3FTt%28t%29%3An%28e%29%3Ft%2E%5Fd%3De%3Azt%28t%29%2Cc%28t%29%7C%7C%28t%2E%5Fd%3Dnull%29%2Ct%29%29%7Dfunction%20zt%28t%29%7Bvar%20i%3Dt%2E%5Fi%3Bvoid%200%3D%3D%3Di%3Ft%2E%5Fd%3Dnew%20Date%28e%2Enow%28%29%29%3An%28i%29%3Ft%2E%5Fd%3Dnew%20Date%28i%2EvalueOf%28%29%29%3A%22string%22%3D%3Dtypeof%20i%3Fmt%28t%29%3Ao%28i%29%3F%28t%2E%5Fa%3Ds%28i%2Eslice%280%29%2Cfunction%28t%29%7Breturn%20parseInt%28t%2C10%29%7D%29%2CSt%28t%29%29%3A%22object%22%3D%3Dtypeof%20i%3FIt%28t%29%3A%22number%22%3D%3Dtypeof%20i%3Ft%2E%5Fd%3Dnew%20Date%28i%29%3Ae%2EcreateFromInputFallback%28t%29%7Dfunction%20Lt%28t%2Ce%2Ci%2Co%2Cn%29%7Bvar%20s%3D%7B%7D%3Breturn%22boolean%22%3D%3Dtypeof%20i%26%26%28o%3Di%2Ci%3Dvoid%200%29%2Cs%2E%5FisAMomentObject%3D%210%2Cs%2E%5FuseUTC%3Ds%2E%5FisUTC%3Dn%2Cs%2E%5Fl%3Di%2Cs%2E%5Fi%3Dt%2Cs%2E%5Ff%3De%2Cs%2E%5Fstrict%3Do%2CNt%28s%29%7Dfunction%20At%28t%2Ce%2Ci%2Co%29%7Breturn%20Lt%28t%2Ce%2Ci%2Co%2C%211%29%7Dfunction%20Bt%28t%2Ce%29%7Bvar%20i%2Cn%3Bif%281%3D%3D%3De%2Elength%26%26o%28e%5B0%5D%29%26%26%28e%3De%5B0%5D%29%2C%21e%2Elength%29return%20At%28%29%3Bfor%28i%3De%5B0%5D%2Cn%3D1%3Bn%3Ce%2Elength%3B%2B%2Bn%29e%5Bn%5D%2EisValid%28%29%26%26%21e%5Bn%5D%5Bt%5D%28i%29%7C%7C%28i%3De%5Bn%5D%29%3Breturn%20i%7Dfunction%20Ft%28%29%7Bvar%20t%3D%5B%5D%2Eslice%2Ecall%28arguments%2C0%29%3Breturn%20Bt%28%22isBefore%22%2Ct%29%7Dfunction%20jt%28%29%7Bvar%20t%3D%5B%5D%2Eslice%2Ecall%28arguments%2C0%29%3Breturn%20Bt%28%22isAfter%22%2Ct%29%7Dfunction%20Ht%28t%29%7Bvar%20e%3DB%28t%29%2Ci%3De%2Eyear%7C%7C0%2Co%3De%2Equarter%7C%7C0%2Cn%3De%2Emonth%7C%7C0%2Cs%3De%2Eweek%7C%7C0%2Cr%3De%2Eday%7C%7C0%2Ca%3De%2Ehour%7C%7C0%2Ch%3De%2Eminute%7C%7C0%2Cd%3De%2Esecond%7C%7C0%2Cl%3De%2Emillisecond%7C%7C0%3Bthis%2E%5Fmilliseconds%3D%2Bl%2B1e3%2Ad%2B6e4%2Ah%2B1e3%2Aa%2A60%2A60%2Cthis%2E%5Fdays%3D%2Br%2B7%2As%2Cthis%2E%5Fmonths%3D%2Bn%2B3%2Ao%2B12%2Ai%2Cthis%2E%5Fdata%3D%7B%7D%2Cthis%2E%5Flocale%3DR%28%29%2Cthis%2E%5Fbubble%28%29%7Dfunction%20Wt%28t%29%7Breturn%20t%20instanceof%20Ht%7Dfunction%20Yt%28t%2Ce%29%7BG%28t%2C0%2C0%2Cfunction%28%29%7Bvar%20t%3Dthis%2EutcOffset%28%29%2Ci%3D%22%2B%22%3Breturn%200%3Et%26%26%28t%3D%2Dt%2Ci%3D%22%2D%22%29%2Ci%2BY%28%7E%7E%28t%2F60%29%2C2%29%2Be%2BY%28%7E%7Et%2560%2C2%29%7D%29%7Dfunction%20Gt%28t%2Ce%29%7Bvar%20i%3D%28e%7C%7C%22%22%29%2Ematch%28t%29%7C%7C%5B%5D%2Co%3Di%5Bi%2Elength%2D1%5D%7C%7C%5B%5D%2Cn%3D%28o%2B%22%22%29%2Ematch%28cn%29%7C%7C%5B%22%2D%22%2C0%2C0%5D%2Cs%3D%2B%2860%2An%5B1%5D%29%2By%28n%5B2%5D%29%3Breturn%22%2B%22%3D%3D%3Dn%5B0%5D%3Fs%3A%2Ds%7Dfunction%20Vt%28t%2Ci%29%7Bvar%20o%2Cs%3Breturn%20i%2E%5FisUTC%3F%28o%3Di%2Eclone%28%29%2Cs%3D%28v%28t%29%7C%7Cn%28t%29%3Ft%2EvalueOf%28%29%3AAt%28t%29%2EvalueOf%28%29%29%2Do%2EvalueOf%28%29%2Co%2E%5Fd%2EsetTime%28o%2E%5Fd%2EvalueOf%28%29%2Bs%29%2Ce%2EupdateOffset%28o%2C%211%29%2Co%29%3AAt%28t%29%2Elocal%28%29%7Dfunction%20Ut%28t%29%7Breturn%2015%2A%2DMath%2Eround%28t%2E%5Fd%2EgetTimezoneOffset%28%29%2F15%29%7Dfunction%20qt%28t%2Ci%29%7Bvar%20o%2Cn%3Dthis%2E%5Foffset%7C%7C0%3Breturn%20this%2EisValid%28%29%3Fnull%21%3Dt%3F%28%22string%22%3D%3Dtypeof%20t%3Ft%3DGt%28zo%2Ct%29%3AMath%2Eabs%28t%29%3C16%26%26%28t%3D60%2At%29%2C%21this%2E%5FisUTC%26%26i%26%26%28o%3DUt%28this%29%29%2Cthis%2E%5Foffset%3Dt%2Cthis%2E%5FisUTC%3D%210%2Cnull%21%3Do%26%26this%2Eadd%28o%2C%22m%22%29%2Cn%21%3D%3Dt%26%26%28%21i%7C%7Cthis%2E%5FchangeInProgress%3Fle%28this%2Cne%28t%2Dn%2C%22m%22%29%2C1%2C%211%29%3Athis%2E%5FchangeInProgress%7C%7C%28this%2E%5FchangeInProgress%3D%210%2Ce%2EupdateOffset%28this%2C%210%29%2Cthis%2E%5FchangeInProgress%3Dnull%29%29%2Cthis%29%3Athis%2E%5FisUTC%3Fn%3AUt%28this%29%3Anull%21%3Dt%3Fthis%3ANaN%7Dfunction%20Xt%28t%2Ce%29%7Breturn%20null%21%3Dt%3F%28%22string%22%21%3Dtypeof%20t%26%26%28t%3D%2Dt%29%2Cthis%2EutcOffset%28t%2Ce%29%2Cthis%29%3A%2Dthis%2EutcOffset%28%29%7Dfunction%20Zt%28t%29%7Breturn%20this%2EutcOffset%280%2Ct%29%7Dfunction%20Kt%28t%29%7Breturn%20this%2E%5FisUTC%26%26%28this%2EutcOffset%280%2Ct%29%2Cthis%2E%5FisUTC%3D%211%2Ct%26%26this%2Esubtract%28Ut%28this%29%2C%22m%22%29%29%2Cthis%7Dfunction%20Jt%28%29%7Breturn%20this%2E%5Ftzm%3Fthis%2EutcOffset%28this%2E%5Ftzm%29%3A%22string%22%3D%3Dtypeof%20this%2E%5Fi%26%26this%2EutcOffset%28Gt%28Ro%2Cthis%2E%5Fi%29%29%2Cthis%7Dfunction%20Qt%28t%29%7Breturn%20this%2EisValid%28%29%3F%28t%3Dt%3FAt%28t%29%2EutcOffset%28%29%3A0%2C%28this%2EutcOffset%28%29%2Dt%29%2560%3D%3D%3D0%29%3A%211%7Dfunction%20%24t%28%29%7Breturn%20this%2EutcOffset%28%29%3Ethis%2Eclone%28%29%2Emonth%280%29%2EutcOffset%28%29%7C%7Cthis%2EutcOffset%28%29%3Ethis%2Eclone%28%29%2Emonth%285%29%2EutcOffset%28%29%7Dfunction%20te%28%29%7Bif%28%21p%28this%2E%5FisDSTShifted%29%29return%20this%2E%5FisDSTShifted%3Bvar%20t%3D%7B%7D%3Bif%28f%28t%2Cthis%29%2Ct%3DRt%28t%29%2Ct%2E%5Fa%29%7Bvar%20e%3Dt%2E%5FisUTC%3Fh%28t%2E%5Fa%29%3AAt%28t%2E%5Fa%29%3Bthis%2E%5FisDSTShifted%3Dthis%2EisValid%28%29%26%26b%28t%2E%5Fa%2Ce%2EtoArray%28%29%29%3E0%7Delse%20this%2E%5FisDSTShifted%3D%211%3Breturn%20this%2E%5FisDSTShifted%7Dfunction%20ee%28%29%7Breturn%20this%2EisValid%28%29%3F%21this%2E%5FisUTC%3A%211%7Dfunction%20ie%28%29%7Breturn%20this%2EisValid%28%29%3Fthis%2E%5FisUTC%3A%211%7Dfunction%20oe%28%29%7Breturn%20this%2EisValid%28%29%3Fthis%2E%5FisUTC%26%260%3D%3D%3Dthis%2E%5Foffset%3A%211%7Dfunction%20ne%28t%2Ce%29%7Bvar%20i%2Co%2Cn%2Cs%3Dt%2Ca%3Dnull%3Breturn%20Wt%28t%29%3Fs%3D%7Bms%3At%2E%5Fmilliseconds%2Cd%3At%2E%5Fdays%2CM%3At%2E%5Fmonths%7D%3A%22number%22%3D%3Dtypeof%20t%3F%28s%3D%7B%7D%2Ce%3Fs%5Be%5D%3Dt%3As%2Emilliseconds%3Dt%29%3A%28a%3Dun%2Eexec%28t%29%29%3F%28i%3D%22%2D%22%3D%3D%3Da%5B1%5D%3F%2D1%3A1%2Cs%3D%7By%3A0%2Cd%3Ay%28a%5BWo%5D%29%2Ai%2Ch%3Ay%28a%5BYo%5D%29%2Ai%2Cm%3Ay%28a%5BGo%5D%29%2Ai%2Cs%3Ay%28a%5BVo%5D%29%2Ai%2Cms%3Ay%28a%5BUo%5D%29%2Ai%7D%29%3A%28a%3Dpn%2Eexec%28t%29%29%3F%28i%3D%22%2D%22%3D%3D%3Da%5B1%5D%3F%2D1%3A1%2Cs%3D%7By%3Ase%28a%5B2%5D%2Ci%29%2CM%3Ase%28a%5B3%5D%2Ci%29%2Cw%3Ase%28a%5B4%5D%2Ci%29%2Cd%3Ase%28a%5B5%5D%2Ci%29%2Ch%3Ase%28a%5B6%5D%2Ci%29%2Cm%3Ase%28a%5B7%5D%2Ci%29%2Cs%3Ase%28a%5B8%5D%2Ci%29%7D%29%3Anull%3D%3Ds%3Fs%3D%7B%7D%3A%22object%22%3D%3Dtypeof%20s%26%26%28%22from%22in%20s%7C%7C%22to%22in%20s%29%26%26%28n%3Dae%28At%28s%2Efrom%29%2CAt%28s%2Eto%29%29%2Cs%3D%7B%7D%2Cs%2Ems%3Dn%2Emilliseconds%2Cs%2EM%3Dn%2Emonths%29%2Co%3Dnew%20Ht%28s%29%2CWt%28t%29%26%26r%28t%2C%22%5Flocale%22%29%26%26%28o%2E%5Flocale%3Dt%2E%5Flocale%29%2Co%7Dfunction%20se%28t%2Ce%29%7Bvar%20i%3Dt%26%26parseFloat%28t%2Ereplace%28%22%2C%22%2C%22%2E%22%29%29%3Breturn%28isNaN%28i%29%3F0%3Ai%29%2Ae%7Dfunction%20re%28t%2Ce%29%7Bvar%20i%3D%7Bmilliseconds%3A0%2Cmonths%3A0%7D%3Breturn%20i%2Emonths%3De%2Emonth%28%29%2Dt%2Emonth%28%29%2B12%2A%28e%2Eyear%28%29%2Dt%2Eyear%28%29%29%2Ct%2Eclone%28%29%2Eadd%28i%2Emonths%2C%22M%22%29%2EisAfter%28e%29%26%26%2D%2Di%2Emonths%2C%0Ai%2Emilliseconds%3D%2Be%2D%2Bt%2Eclone%28%29%2Eadd%28i%2Emonths%2C%22M%22%29%2Ci%7Dfunction%20ae%28t%2Ce%29%7Bvar%20i%3Breturn%20t%2EisValid%28%29%26%26e%2EisValid%28%29%3F%28e%3DVt%28e%2Ct%29%2Ct%2EisBefore%28e%29%3Fi%3Dre%28t%2Ce%29%3A%28i%3Dre%28e%2Ct%29%2Ci%2Emilliseconds%3D%2Di%2Emilliseconds%2Ci%2Emonths%3D%2Di%2Emonths%29%2Ci%29%3A%7Bmilliseconds%3A0%2Cmonths%3A0%7D%7Dfunction%20he%28t%29%7Breturn%200%3Et%3F%2D1%2AMath%2Eround%28%2D1%2At%29%3AMath%2Eround%28t%29%7Dfunction%20de%28t%2Ce%29%7Breturn%20function%28i%2Co%29%7Bvar%20n%2Cs%3Breturn%20null%3D%3D%3Do%7C%7CisNaN%28%2Bo%29%7C%7C%28x%28e%2C%22moment%28%29%2E%22%2Be%2B%22%28period%2C%20number%29%20is%20deprecated%2E%20Please%20use%20moment%28%29%2E%22%2Be%2B%22%28number%2C%20period%29%2E%22%29%2Cs%3Di%2Ci%3Do%2Co%3Ds%29%2Ci%3D%22string%22%3D%3Dtypeof%20i%3F%2Bi%3Ai%2Cn%3Dne%28i%2Co%29%2Cle%28this%2Cn%2Ct%29%2Cthis%7D%7Dfunction%20le%28t%2Ci%2Co%2Cn%29%7Bvar%20s%3Di%2E%5Fmilliseconds%2Cr%3Dhe%28i%2E%5Fdays%29%2Ca%3Dhe%28i%2E%5Fmonths%29%3Bt%2EisValid%28%29%26%26%28n%3Dnull%3D%3Dn%3F%210%3An%2Cs%26%26t%2E%5Fd%2EsetTime%28t%2E%5Fd%2EvalueOf%28%29%2Bs%2Ao%29%2Cr%26%26H%28t%2C%22Date%22%2Cj%28t%2C%22Date%22%29%2Br%2Ao%29%2Ca%26%26at%28t%2Cj%28t%2C%22Month%22%29%2Ba%2Ao%29%2Cn%26%26e%2EupdateOffset%28t%2Cr%7C%7Ca%29%29%7Dfunction%20ce%28t%2Ce%29%7Bvar%20i%3Dt%7C%7CAt%28%29%2Co%3DVt%28i%2Cthis%29%2EstartOf%28%22day%22%29%2Cn%3Dthis%2Ediff%28o%2C%22days%22%2C%210%29%2Cs%3D%2D6%3En%3F%22sameElse%22%3A%2D1%3En%3F%22lastWeek%22%3A0%3En%3F%22lastDay%22%3A1%3En%3F%22sameDay%22%3A2%3En%3F%22nextDay%22%3A7%3En%3F%22nextWeek%22%3A%22sameElse%22%2Cr%3De%26%26%28k%28e%5Bs%5D%29%3Fe%5Bs%5D%28%29%3Ae%5Bs%5D%29%3Breturn%20this%2Eformat%28r%7C%7Cthis%2ElocaleData%28%29%2Ecalendar%28s%2Cthis%2CAt%28i%29%29%29%7Dfunction%20ue%28%29%7Breturn%20new%20m%28this%29%7Dfunction%20pe%28t%2Ce%29%7Bvar%20i%3Dv%28t%29%3Ft%3AAt%28t%29%3Breturn%20this%2EisValid%28%29%26%26i%2EisValid%28%29%3F%28e%3DA%28p%28e%29%3F%22millisecond%22%3Ae%29%2C%22millisecond%22%3D%3D%3De%3Fthis%2EvalueOf%28%29%3Ei%2EvalueOf%28%29%3Ai%2EvalueOf%28%29%3Cthis%2Eclone%28%29%2EstartOf%28e%29%2EvalueOf%28%29%29%3A%211%7Dfunction%20fe%28t%2Ce%29%7Bvar%20i%3Dv%28t%29%3Ft%3AAt%28t%29%3Breturn%20this%2EisValid%28%29%26%26i%2EisValid%28%29%3F%28e%3DA%28p%28e%29%3F%22millisecond%22%3Ae%29%2C%22millisecond%22%3D%3D%3De%3Fthis%2EvalueOf%28%29%3Ci%2EvalueOf%28%29%3Athis%2Eclone%28%29%2EendOf%28e%29%2EvalueOf%28%29%3Ci%2EvalueOf%28%29%29%3A%211%7Dfunction%20me%28t%2Ce%2Ci%2Co%29%7Breturn%20o%3Do%7C%7C%22%28%29%22%2C%28%22%28%22%3D%3D%3Do%5B0%5D%3Fthis%2EisAfter%28t%2Ci%29%3A%21this%2EisBefore%28t%2Ci%29%29%26%26%28%22%29%22%3D%3D%3Do%5B1%5D%3Fthis%2EisBefore%28e%2Ci%29%3A%21this%2EisAfter%28e%2Ci%29%29%7Dfunction%20ve%28t%2Ce%29%7Bvar%20i%2Co%3Dv%28t%29%3Ft%3AAt%28t%29%3Breturn%20this%2EisValid%28%29%26%26o%2EisValid%28%29%3F%28e%3DA%28e%7C%7C%22millisecond%22%29%2C%22millisecond%22%3D%3D%3De%3Fthis%2EvalueOf%28%29%3D%3D%3Do%2EvalueOf%28%29%3A%28i%3Do%2EvalueOf%28%29%2Cthis%2Eclone%28%29%2EstartOf%28e%29%2EvalueOf%28%29%3C%3Di%26%26i%3C%3Dthis%2Eclone%28%29%2EendOf%28e%29%2EvalueOf%28%29%29%29%3A%211%7Dfunction%20ge%28t%2Ce%29%7Breturn%20this%2EisSame%28t%2Ce%29%7C%7Cthis%2EisAfter%28t%2Ce%29%7Dfunction%20ye%28t%2Ce%29%7Breturn%20this%2EisSame%28t%2Ce%29%7C%7Cthis%2EisBefore%28t%2Ce%29%7Dfunction%20be%28t%2Ce%2Ci%29%7Bvar%20o%2Cn%2Cs%2Cr%3Breturn%20this%2EisValid%28%29%3F%28o%3DVt%28t%2Cthis%29%2Co%2EisValid%28%29%3F%28n%3D6e4%2A%28o%2EutcOffset%28%29%2Dthis%2EutcOffset%28%29%29%2Ce%3DA%28e%29%2C%22year%22%3D%3D%3De%7C%7C%22month%22%3D%3D%3De%7C%7C%22quarter%22%3D%3D%3De%3F%28r%3Dwe%28this%2Co%29%2C%22quarter%22%3D%3D%3De%3Fr%2F%3D3%3A%22year%22%3D%3D%3De%26%26%28r%2F%3D12%29%29%3A%28s%3Dthis%2Do%2Cr%3D%22second%22%3D%3D%3De%3Fs%2F1e3%3A%22minute%22%3D%3D%3De%3Fs%2F6e4%3A%22hour%22%3D%3D%3De%3Fs%2F36e5%3A%22day%22%3D%3D%3De%3F%28s%2Dn%29%2F864e5%3A%22week%22%3D%3D%3De%3F%28s%2Dn%29%2F6048e5%3As%29%2Ci%3Fr%3Ag%28r%29%29%3ANaN%29%3ANaN%7Dfunction%20we%28t%2Ce%29%7Bvar%20i%2Co%2Cn%3D12%2A%28e%2Eyear%28%29%2Dt%2Eyear%28%29%29%2B%28e%2Emonth%28%29%2Dt%2Emonth%28%29%29%2Cs%3Dt%2Eclone%28%29%2Eadd%28n%2C%22months%22%29%3Breturn%200%3Ee%2Ds%3F%28i%3Dt%2Eclone%28%29%2Eadd%28n%2D1%2C%22months%22%29%2Co%3D%28e%2Ds%29%2F%28s%2Di%29%29%3A%28i%3Dt%2Eclone%28%29%2Eadd%28n%2B1%2C%22months%22%29%2Co%3D%28e%2Ds%29%2F%28i%2Ds%29%29%2C%2D%28n%2Bo%29%7C%7C0%7Dfunction%20%5Fe%28%29%7Breturn%20this%2Eclone%28%29%2Elocale%28%22en%22%29%2Eformat%28%22ddd%20MMM%20DD%20YYYY%20HH%3Amm%3Ass%20%5BGMT%5DZZ%22%29%7Dfunction%20xe%28%29%7Bvar%20t%3Dthis%2Eclone%28%29%2Eutc%28%29%3Breturn%200%3Ct%2Eyear%28%29%26%26t%2Eyear%28%29%3C%3D9999%3Fk%28Date%2Eprototype%2EtoISOString%29%3Fthis%2EtoDate%28%29%2EtoISOString%28%29%3Aq%28t%2C%22YYYY%2DMM%2DDD%5BT%5DHH%3Amm%3Ass%2ESSS%5BZ%5D%22%29%3Aq%28t%2C%22YYYYYY%2DMM%2DDD%5BT%5DHH%3Amm%3Ass%2ESSS%5BZ%5D%22%29%7Dfunction%20ke%28t%29%7Bt%7C%7C%28t%3Dthis%2EisUtc%28%29%3Fe%2EdefaultFormatUtc%3Ae%2EdefaultFormat%29%3Bvar%20i%3Dq%28this%2Ct%29%3Breturn%20this%2ElocaleData%28%29%2Epostformat%28i%29%7Dfunction%20Oe%28t%2Ce%29%7Breturn%20this%2EisValid%28%29%26%26%28v%28t%29%26%26t%2EisValid%28%29%7C%7CAt%28t%29%2EisValid%28%29%29%3Fne%28%7Bto%3Athis%2Cfrom%3At%7D%29%2Elocale%28this%2Elocale%28%29%29%2Ehumanize%28%21e%29%3Athis%2ElocaleData%28%29%2EinvalidDate%28%29%7Dfunction%20Me%28t%29%7Breturn%20this%2Efrom%28At%28%29%2Ct%29%7Dfunction%20De%28t%2Ce%29%7Breturn%20this%2EisValid%28%29%26%26%28v%28t%29%26%26t%2EisValid%28%29%7C%7CAt%28t%29%2EisValid%28%29%29%3Fne%28%7Bfrom%3Athis%2Cto%3At%7D%29%2Elocale%28this%2Elocale%28%29%29%2Ehumanize%28%21e%29%3Athis%2ElocaleData%28%29%2EinvalidDate%28%29%7Dfunction%20Se%28t%29%7Breturn%20this%2Eto%28At%28%29%2Ct%29%7Dfunction%20Ce%28t%29%7Bvar%20e%3Breturn%20void%200%3D%3D%3Dt%3Fthis%2E%5Flocale%2E%5Fabbr%3A%28e%3DR%28t%29%2Cnull%21%3De%26%26%28this%2E%5Flocale%3De%29%2Cthis%29%7Dfunction%20Te%28%29%7Breturn%20this%2E%5Flocale%7Dfunction%20Ee%28t%29%7Bswitch%28t%3DA%28t%29%29%7Bcase%22year%22%3Athis%2Emonth%280%29%3Bcase%22quarter%22%3Acase%22month%22%3Athis%2Edate%281%29%3Bcase%22week%22%3Acase%22isoWeek%22%3Acase%22day%22%3Acase%22date%22%3Athis%2Ehours%280%29%3Bcase%22hour%22%3Athis%2Eminutes%280%29%3Bcase%22minute%22%3Athis%2Eseconds%280%29%3Bcase%22second%22%3Athis%2Emilliseconds%280%29%7Dreturn%22week%22%3D%3D%3Dt%26%26this%2Eweekday%280%29%2C%22isoWeek%22%3D%3D%3Dt%26%26this%2EisoWeekday%281%29%2C%22quarter%22%3D%3D%3Dt%26%26this%2Emonth%283%2AMath%2Efloor%28this%2Emonth%28%29%2F3%29%29%2Cthis%7Dfunction%20Pe%28t%29%7Breturn%20t%3DA%28t%29%2Cvoid%200%3D%3D%3Dt%7C%7C%22millisecond%22%3D%3D%3Dt%3Fthis%3A%28%22date%22%3D%3D%3Dt%26%26%28t%3D%22day%22%29%2Cthis%2EstartOf%28t%29%2Eadd%281%2C%22isoWeek%22%3D%3D%3Dt%3F%22week%22%3At%29%2Esubtract%281%2C%22ms%22%29%29%7Dfunction%20Ie%28%29%7Breturn%20this%2E%5Fd%2EvalueOf%28%29%2D6e4%2A%28this%2E%5Foffset%7C%7C0%29%7Dfunction%20Ne%28%29%7Breturn%20Math%2Efloor%28this%2EvalueOf%28%29%2F1e3%29%7Dfunction%20Re%28%29%7Breturn%20this%2E%5Foffset%3Fnew%20Date%28this%2EvalueOf%28%29%29%3Athis%2E%5Fd%7Dfunction%20ze%28%29%7Bvar%20t%3Dthis%3Breturn%5Bt%2Eyear%28%29%2Ct%2Emonth%28%29%2Ct%2Edate%28%29%2Ct%2Ehour%28%29%2Ct%2Eminute%28%29%2Ct%2Esecond%28%29%2Ct%2Emillisecond%28%29%5D%7Dfunction%20Le%28%29%7Bvar%20t%3Dthis%3Breturn%7Byears%3At%2Eyear%28%29%2Cmonths%3At%2Emonth%28%29%2Cdate%3At%2Edate%28%29%2Chours%3At%2Ehours%28%29%2Cminutes%3At%2Eminutes%28%29%2Cseconds%3At%2Eseconds%28%29%2Cmilliseconds%3At%2Emilliseconds%28%29%7D%7Dfunction%20Ae%28%29%7Breturn%20this%2EisValid%28%29%3Fthis%2EtoISOString%28%29%3Anull%7Dfunction%20Be%28%29%7Breturn%20c%28this%29%7Dfunction%20Fe%28%29%7Breturn%20a%28%7B%7D%2Cl%28this%29%29%7Dfunction%20je%28%29%7Breturn%20l%28this%29%2Eoverflow%7Dfunction%20He%28%29%7Breturn%7Binput%3Athis%2E%5Fi%2Cformat%3Athis%2E%5Ff%2Clocale%3Athis%2E%5Flocale%2CisUTC%3Athis%2E%5FisUTC%2Cstrict%3Athis%2E%5Fstrict%7D%7Dfunction%20We%28t%2Ce%29%7BG%280%2C%5Bt%2Ct%2Elength%5D%2C0%2Ce%29%7Dfunction%20Ye%28t%29%7Breturn%20qe%2Ecall%28this%2Ct%2Cthis%2Eweek%28%29%2Cthis%2Eweekday%28%29%2Cthis%2ElocaleData%28%29%2E%5Fweek%2Edow%2Cthis%2ElocaleData%28%29%2E%5Fweek%2Edoy%29%7Dfunction%20Ge%28t%29%7Breturn%20qe%2Ecall%28this%2Ct%2Cthis%2EisoWeek%28%29%2Cthis%2EisoWeekday%28%29%2C1%2C4%29%7Dfunction%20Ve%28%29%7Breturn%20Ot%28this%2Eyear%28%29%2C1%2C4%29%7Dfunction%20Ue%28%29%7Bvar%20t%3Dthis%2ElocaleData%28%29%2E%5Fweek%3Breturn%20Ot%28this%2Eyear%28%29%2Ct%2Edow%2Ct%2Edoy%29%7Dfunction%20qe%28t%2Ce%2Ci%2Co%2Cn%29%7Bvar%20s%3Breturn%20null%3D%3Dt%3Fkt%28this%2Co%2Cn%29%2Eyear%3A%28s%3DOt%28t%2Co%2Cn%29%2Ce%3Es%26%26%28e%3Ds%29%2CXe%2Ecall%28this%2Ct%2Ce%2Ci%2Co%2Cn%29%29%7Dfunction%20Xe%28t%2Ce%2Ci%2Co%2Cn%29%7Bvar%20s%3Dxt%28t%2Ce%2Ci%2Co%2Cn%29%2Cr%3Dgt%28s%2Eyear%2C0%2Cs%2EdayOfYear%29%3Breturn%20this%2Eyear%28r%2EgetUTCFullYear%28%29%29%2Cthis%2Emonth%28r%2EgetUTCMonth%28%29%29%2Cthis%2Edate%28r%2EgetUTCDate%28%29%29%2Cthis%7Dfunction%20Ze%28t%29%7Breturn%20null%3D%3Dt%3FMath%2Eceil%28%28this%2Emonth%28%29%2B1%29%2F3%29%3Athis%2Emonth%283%2A%28t%2D1%29%2Bthis%2Emonth%28%29%253%29%7Dfunction%20Ke%28t%29%7Breturn%20kt%28t%2Cthis%2E%5Fweek%2Edow%2Cthis%2E%5Fweek%2Edoy%29%2Eweek%7Dfunction%20Je%28%29%7Breturn%20this%2E%5Fweek%2Edow%7Dfunction%20Qe%28%29%7Breturn%20this%2E%5Fweek%2Edoy%7Dfunction%20%24e%28t%29%7Bvar%20e%3Dthis%2ElocaleData%28%29%2Eweek%28this%29%3Breturn%20null%3D%3Dt%3Fe%3Athis%2Eadd%287%2A%28t%2De%29%2C%22d%22%29%7Dfunction%20ti%28t%29%7Bvar%20e%3Dkt%28this%2C1%2C4%29%2Eweek%3Breturn%20null%3D%3Dt%3Fe%3Athis%2Eadd%287%2A%28t%2De%29%2C%22d%22%29%7Dfunction%20ei%28t%2Ce%29%7Breturn%22string%22%21%3Dtypeof%20t%3Ft%3AisNaN%28t%29%3F%28t%3De%2EweekdaysParse%28t%29%2C%22number%22%3D%3Dtypeof%20t%3Ft%3Anull%29%3AparseInt%28t%2C10%29%7Dfunction%20ii%28t%2Ce%29%7Breturn%20o%28this%2E%5Fweekdays%29%3Fthis%2E%5Fweekdays%5Bt%2Eday%28%29%5D%3Athis%2E%5Fweekdays%5Bthis%2E%5Fweekdays%2EisFormat%2Etest%28e%29%3F%22format%22%3A%22standalone%22%5D%5Bt%2Eday%28%29%5D%7Dfunction%20oi%28t%29%7Breturn%20this%2E%5FweekdaysShort%5Bt%2Eday%28%29%5D%7Dfunction%20ni%28t%29%7Breturn%20this%2E%5FweekdaysMin%5Bt%2Eday%28%29%5D%7Dfunction%20si%28t%2Ce%2Ci%29%7Bvar%20o%2Cn%2Cs%2Cr%3Dt%2EtoLocaleLowerCase%28%29%3Bif%28%21this%2E%5FweekdaysParse%29for%28this%2E%5FweekdaysParse%3D%5B%5D%2Cthis%2E%5FshortWeekdaysParse%3D%5B%5D%2Cthis%2E%5FminWeekdaysParse%3D%5B%5D%2Co%3D0%3B7%3Eo%3B%2B%2Bo%29s%3Dh%28%5B2e3%2C1%5D%29%2Eday%28o%29%2Cthis%2E%5FminWeekdaysParse%5Bo%5D%3Dthis%2EweekdaysMin%28s%2C%22%22%29%2EtoLocaleLowerCase%28%29%2Cthis%2E%5FshortWeekdaysParse%5Bo%5D%3Dthis%2EweekdaysShort%28s%2C%22%22%29%2EtoLocaleLowerCase%28%29%2Cthis%2E%5FweekdaysParse%5Bo%5D%3Dthis%2Eweekdays%28s%2C%22%22%29%2EtoLocaleLowerCase%28%29%3Breturn%20i%3F%22dddd%22%3D%3D%3De%3F%28n%3Dfo%2Ecall%28this%2E%5FweekdaysParse%2Cr%29%2C%2D1%21%3D%3Dn%3Fn%3Anull%29%3A%22ddd%22%3D%3D%3De%3F%28n%3Dfo%2Ecall%28this%2E%5FshortWeekdaysParse%2Cr%29%2C%2D1%21%3D%3Dn%3Fn%3Anull%29%3A%28n%3Dfo%2Ecall%28this%2E%5FminWeekdaysParse%2Cr%29%2C%2D1%21%3D%3Dn%3Fn%3Anull%29%3A%22dddd%22%3D%3D%3De%3F%28n%3Dfo%2Ecall%28this%2E%5FweekdaysParse%2Cr%29%2C%2D1%21%3D%3Dn%3Fn%3A%28n%3Dfo%2Ecall%28this%2E%5FshortWeekdaysParse%2Cr%29%2C%2D1%21%3D%3Dn%3Fn%3A%28n%3Dfo%2Ecall%28this%2E%5FminWeekdaysParse%2Cr%29%2C%2D1%21%3D%3Dn%3Fn%3Anull%29%29%29%3A%22ddd%22%3D%3D%3De%3F%28n%3Dfo%2Ecall%28this%2E%5FshortWeekdaysParse%2Cr%29%2C%2D1%21%3D%3Dn%3Fn%3A%28n%3Dfo%2Ecall%28this%2E%5FweekdaysParse%2Cr%29%2C%2D1%21%3D%3Dn%3Fn%3A%28n%3Dfo%2Ecall%28this%2E%5FminWeekdaysParse%2Cr%29%2C%2D1%21%3D%3Dn%3Fn%3Anull%29%29%29%3A%28n%3Dfo%2Ecall%28this%2E%5FminWeekdaysParse%2Cr%29%2C%2D1%21%3D%3Dn%3Fn%3A%28n%3Dfo%2Ecall%28this%2E%5FweekdaysParse%2Cr%29%2C%2D1%21%3D%3Dn%3Fn%3A%28n%3Dfo%2Ecall%28this%2E%5FshortWeekdaysParse%2Cr%29%2C%2D1%21%3D%3Dn%3Fn%3Anull%29%29%29%7Dfunction%20ri%28t%2Ce%2Ci%29%7Bvar%20o%2Cn%2Cs%3Bif%28this%2E%5FweekdaysParseExact%29return%20si%2Ecall%28this%2Ct%2Ce%2Ci%29%3Bfor%28this%2E%5FweekdaysParse%7C%7C%28this%2E%5FweekdaysParse%3D%5B%5D%2Cthis%2E%5FminWeekdaysParse%3D%5B%5D%2Cthis%2E%5FshortWeekdaysParse%3D%5B%5D%2Cthis%2E%5FfullWeekdaysParse%3D%5B%5D%29%2Co%3D0%3B7%3Eo%3Bo%2B%2B%29%7Bif%28n%3Dh%28%5B2e3%2C1%5D%29%2Eday%28o%29%2Ci%26%26%21this%2E%5FfullWeekdaysParse%5Bo%5D%26%26%28this%2E%5FfullWeekdaysParse%5Bo%5D%3Dnew%20RegExp%28%22%5E%22%2Bthis%2Eweekdays%28n%2C%22%22%29%2Ereplace%28%22%2E%22%2C%22%2E%3F%22%29%2B%22%24%22%2C%22i%22%29%2Cthis%2E%5FshortWeekdaysParse%5Bo%5D%3Dnew%20RegExp%28%22%5E%22%2Bthis%2EweekdaysShort%28n%2C%22%22%29%2Ereplace%28%22%2E%22%2C%22%2E%3F%22%29%2B%22%24%22%2C%22i%22%29%2Cthis%2E%5FminWeekdaysParse%5Bo%5D%3Dnew%20RegExp%28%22%5E%22%2Bthis%2EweekdaysMin%28n%2C%22%22%29%2Ereplace%28%22%2E%22%2C%22%2E%3F%22%29%2B%22%24%22%2C%22i%22%29%29%2Cthis%2E%5FweekdaysParse%5Bo%5D%7C%7C%28s%3D%22%5E%22%2Bthis%2Eweekdays%28n%2C%22%22%29%2B%22%7C%5E%22%2Bthis%2EweekdaysShort%28n%2C%22%22%29%2B%22%7C%5E%22%2Bthis%2EweekdaysMin%28n%2C%22%22%29%2Cthis%2E%5FweekdaysParse%5Bo%5D%3Dnew%20RegExp%28s%2Ereplace%28%22%2E%22%2C%22%22%29%2C%22i%22%29%29%2Ci%26%26%22dddd%22%3D%3D%3De%26%26this%2E%5FfullWeekdaysParse%5Bo%5D%2Etest%28t%29%29return%20o%3Bif%28i%26%26%22ddd%22%3D%3D%3De%26%26this%2E%5FshortWeekdaysParse%5Bo%5D%2Etest%28t%29%29return%20o%3Bif%28i%26%26%22dd%22%3D%3D%3De%26%26this%2E%5FminWeekdaysParse%5Bo%5D%2Etest%28t%29%29return%20o%3Bif%28%21i%26%26this%2E%5FweekdaysParse%5Bo%5D%2Etest%28t%29%29return%20o%7D%7Dfunction%20ai%28t%29%7Bif%28%21this%2EisValid%28%29%29return%20null%21%3Dt%3Fthis%3ANaN%3Bvar%20e%3Dthis%2E%5FisUTC%3Fthis%2E%5Fd%2EgetUTCDay%28%29%3Athis%2E%5Fd%2EgetDay%28%29%3Breturn%20null%21%3Dt%3F%28t%3Dei%28t%2Cthis%2ElocaleData%28%29%29%2Cthis%2Eadd%28t%2De%2C%22d%22%29%29%3Ae%7Dfunction%20hi%28t%29%7Bif%28%21this%2EisValid%28%29%29return%20null%21%3Dt%3Fthis%3ANaN%3Bvar%20e%3D%28this%2Eday%28%29%2B7%2Dthis%2ElocaleData%28%29%2E%5Fweek%2Edow%29%257%3Breturn%20null%3D%3Dt%3Fe%3Athis%2Eadd%28t%2De%2C%22d%22%29%7Dfunction%20di%28t%29%7Breturn%20this%2EisValid%28%29%3Fnull%3D%3Dt%3Fthis%2Eday%28%29%7C%7C7%3Athis%2Eday%28this%2Eday%28%29%257%3Ft%3At%2D7%29%3Anull%21%3Dt%3Fthis%3ANaN%7Dfunction%20li%28t%29%7Breturn%20this%2E%5FweekdaysParseExact%3F%28r%28this%2C%22%5FweekdaysRegex%22%29%7C%7Cpi%2Ecall%28this%29%2Ct%3Fthis%2E%5FweekdaysStrictRegex%3Athis%2E%5FweekdaysRegex%29%3Athis%2E%5FweekdaysStrictRegex%26%26t%3Fthis%2E%5FweekdaysStrictRegex%3Athis%2E%5FweekdaysRegex%7Dfunction%20ci%28t%29%7Breturn%20this%2E%5FweekdaysParseExact%3F%28r%28this%2C%22%5FweekdaysRegex%22%29%7C%7Cpi%2Ecall%28this%29%2Ct%3Fthis%2E%5FweekdaysShortStrictRegex%3Athis%2E%5FweekdaysShortRegex%29%3Athis%2E%5FweekdaysShortStrictRegex%26%26t%3Fthis%2E%5FweekdaysShortStrictRegex%3Athis%2E%5FweekdaysShortRegex%7Dfunction%20ui%28t%29%7Breturn%20this%2E%5FweekdaysParseExact%3F%28r%28this%2C%22%5FweekdaysRegex%22%29%7C%7Cpi%2Ecall%28this%29%2Ct%3Fthis%2E%5FweekdaysMinStrictRegex%3Athis%2E%5FweekdaysMinRegex%29%3Athis%2E%5FweekdaysMinStrictRegex%26%26t%3Fthis%2E%5FweekdaysMinStrictRegex%3Athis%2E%5FweekdaysMinRegex%7Dfunction%20pi%28%29%7Bfunction%20t%28t%2Ce%29%7Breturn%20e%2Elength%2Dt%2Elength%7Dvar%20e%2Ci%2Co%2Cn%2Cs%2Cr%3D%5B%5D%2Ca%3D%5B%5D%2Cd%3D%5B%5D%2Cl%3D%5B%5D%3Bfor%28e%3D0%3B7%3Ee%3Be%2B%2B%29i%3Dh%28%5B2e3%2C1%5D%29%2Eday%28e%29%2Co%3Dthis%2EweekdaysMin%28i%2C%22%22%29%2Cn%3Dthis%2EweekdaysShort%28i%2C%22%22%29%2Cs%3Dthis%2Eweekdays%28i%2C%22%22%29%2Cr%2Epush%28o%29%2Ca%2Epush%28n%29%2Cd%2Epush%28s%29%2Cl%2Epush%28o%29%2Cl%2Epush%28n%29%2Cl%2Epush%28s%29%3Bfor%28r%2Esort%28t%29%2Ca%2Esort%28t%29%2Cd%2Esort%28t%29%2Cl%2Esort%28t%29%2Ce%3D0%3B7%3Ee%3Be%2B%2B%29a%5Be%5D%3DQ%28a%5Be%5D%29%2Cd%5Be%5D%3DQ%28d%5Be%5D%29%2Cl%5Be%5D%3DQ%28l%5Be%5D%29%3Bthis%2E%5FweekdaysRegex%3Dnew%20RegExp%28%22%5E%28%22%2Bl%2Ejoin%28%22%7C%22%29%2B%22%29%22%2C%22i%22%29%2Cthis%2E%5FweekdaysShortRegex%3Dthis%2E%5FweekdaysRegex%2Cthis%2E%5FweekdaysMinRegex%3Dthis%2E%5FweekdaysRegex%2Cthis%2E%5FweekdaysStrictRegex%3Dnew%20RegExp%28%22%5E%28%22%2Bd%2Ejoin%28%22%7C%22%29%2B%22%29%22%2C%22i%22%29%2Cthis%2E%5FweekdaysShortStrictRegex%3Dnew%20RegExp%28%22%5E%28%22%2Ba%2Ejoin%28%22%7C%22%29%2B%22%29%22%2C%22i%22%29%2Cthis%2E%5FweekdaysMinStrictRegex%3Dnew%20RegExp%28%22%5E%28%22%2Br%2Ejoin%28%22%7C%22%29%2B%22%29%22%2C%22i%22%29%7Dfunction%20fi%28t%29%7Bvar%20e%3DMath%2Eround%28%28this%2Eclone%28%29%2EstartOf%28%22day%22%29%2Dthis%2Eclone%28%29%2EstartOf%28%22year%22%29%29%2F864e5%29%2B1%3Breturn%20null%3D%3Dt%3Fe%3Athis%2Eadd%28t%2De%2C%22d%22%29%7Dfunction%20mi%28%29%7Breturn%20this%2Ehours%28%29%2512%7C%7C12%7Dfunction%20vi%28%29%7Breturn%20this%2Ehours%28%29%7C%7C24%7Dfunction%20gi%28t%2Ce%29%7BG%28t%2C0%2C0%2Cfunction%28%29%7Breturn%20this%2ElocaleData%28%29%2Emeridiem%28this%2Ehours%28%29%2Cthis%2Eminutes%28%29%2Ce%29%7D%29%7Dfunction%20yi%28t%2Ce%29%7Breturn%20e%2E%5FmeridiemParse%7Dfunction%20bi%28t%29%7Breturn%22p%22%3D%3D%3D%28t%2B%22%22%29%2EtoLowerCase%28%29%2EcharAt%280%29%7Dfunction%20wi%28t%2Ce%2Ci%29%7Breturn%20t%3E11%3Fi%3F%22pm%22%3A%22PM%22%3Ai%3F%22am%22%3A%22AM%22%7Dfunction%20%5Fi%28t%2Ce%29%7Be%5BUo%5D%3Dy%281e3%2A%28%220%2E%22%2Bt%29%29%7Dfunction%20xi%28%29%7Breturn%20this%2E%5FisUTC%3F%22UTC%22%3A%22%22%7Dfunction%20ki%28%29%7Breturn%20this%2E%5FisUTC%3F%22Coordinated%20Universal%20Time%22%3A%22%22%7Dfunction%20Oi%28t%29%7Breturn%20At%281e3%2At%29%7Dfunction%20Mi%28%29%7Breturn%20At%2Eapply%28null%2Carguments%29%2EparseZone%28%29%7Dfunction%20Di%28t%2Ce%2Ci%29%7Bvar%20o%3Dthis%2E%5Fcalendar%5Bt%5D%3Breturn%20k%28o%29%3Fo%2Ecall%28e%2Ci%29%3Ao%7Dfunction%20Si%28t%29%7Bvar%20e%3Dthis%2E%5FlongDateFormat%5Bt%5D%2Ci%3Dthis%2E%5FlongDateFormat%5Bt%2EtoUpperCase%28%29%5D%3Breturn%20e%7C%7C%21i%3Fe%3A%28this%2E%5FlongDateFormat%5Bt%5D%3Di%2Ereplace%28%2FMMMM%7CMM%7CDD%7Cdddd%2Fg%2Cfunction%28t%29%7Breturn%20t%2Eslice%281%29%7D%29%2Cthis%2E%5FlongDateFormat%5Bt%5D%29%7Dfunction%20Ci%28%29%7Breturn%20this%2E%5FinvalidDate%7Dfunction%20Ti%28t%29%7Breturn%20this%2E%5Fordinal%2Ereplace%28%22%25d%22%2Ct%29%7Dfunction%20Ei%28t%29%7Breturn%20t%7Dfunction%20Pi%28t%2Ce%2Ci%2Co%29%7Bvar%20n%3Dthis%2E%5FrelativeTime%5Bi%5D%3Breturn%20k%28n%29%3Fn%28t%2Ce%2Ci%2Co%29%3An%2Ereplace%28%2F%25d%2Fi%2Ct%29%7Dfunction%20Ii%28t%2Ce%29%7Bvar%20i%3Dthis%2E%5FrelativeTime%5Bt%3E0%3F%22future%22%3A%22past%22%5D%3Breturn%20k%28i%29%3Fi%28e%29%3Ai%2Ereplace%28%2F%25s%2Fi%2Ce%29%7Dfunction%20Ni%28t%2Ce%2Ci%2Co%29%7Bvar%20n%3DR%28%29%2Cs%3Dh%28%29%2Eset%28o%2Ce%29%3Breturn%20n%5Bi%5D%28s%2Ct%29%7Dfunction%20Ri%28t%2Ce%2Ci%29%7Bif%28%22number%22%3D%3Dtypeof%20t%26%26%28e%3Dt%2Ct%3Dvoid%200%29%2Ct%3Dt%7C%7C%22%22%2Cnull%21%3De%29return%20Ni%28t%2Ce%2Ci%2C%22month%22%29%3Bvar%20o%2Cn%3D%5B%5D%3Bfor%28o%3D0%3B12%3Eo%3Bo%2B%2B%29n%5Bo%5D%3DNi%28t%2Co%2Ci%2C%22month%22%29%3Breturn%20n%7Dfunction%20zi%28t%2Ce%2Ci%2Co%29%7B%22boolean%22%3D%3Dtypeof%20t%3F%28%22number%22%3D%3Dtypeof%20e%26%26%28i%3De%2Ce%3Dvoid%200%29%2Ce%3De%7C%7C%22%22%29%3A%28e%3Dt%2Ci%3De%2Ct%3D%211%2C%22number%22%3D%3Dtypeof%20e%26%26%28i%3De%2Ce%3Dvoid%200%29%2Ce%3De%7C%7C%22%22%29%3Bvar%20n%3DR%28%29%2Cs%3Dt%3Fn%2E%5Fweek%2Edow%3A0%3Bif%28null%21%3Di%29return%20Ni%28e%2C%28i%2Bs%29%257%2Co%2C%22day%22%29%3Bvar%20r%2Ca%3D%5B%5D%3Bfor%28r%3D0%3B7%3Er%3Br%2B%2B%29a%5Br%5D%3DNi%28e%2C%28r%2Bs%29%257%2Co%2C%22day%22%29%3Breturn%20a%7Dfunction%20Li%28t%2Ce%29%7Breturn%20Ri%28t%2Ce%2C%22months%22%29%7Dfunction%20Ai%28t%2Ce%29%7Breturn%20Ri%28t%2Ce%2C%22monthsShort%22%29%7Dfunction%20Bi%28t%2Ce%2Ci%29%7Breturn%20zi%28t%2Ce%2Ci%2C%22weekdays%22%29%7Dfunction%20Fi%28t%2Ce%2Ci%29%7Breturn%20zi%28t%2Ce%2Ci%2C%22weekdaysShort%22%29%7Dfunction%20ji%28t%2Ce%2Ci%29%7Breturn%20zi%28t%2Ce%2Ci%2C%22weekdaysMin%22%29%7Dfunction%20Hi%28%29%7Bvar%20t%3Dthis%2E%5Fdata%3Breturn%20this%2E%5Fmilliseconds%3Djn%28this%2E%5Fmilliseconds%29%2Cthis%2E%5Fdays%3Djn%28this%2E%5Fdays%29%2Cthis%2E%5Fmonths%3Djn%28this%2E%5Fmonths%29%2Ct%2Emilliseconds%3Djn%28t%2Emilliseconds%29%2Ct%2Eseconds%3Djn%28t%2Eseconds%29%2Ct%2Eminutes%3Djn%28t%2Eminutes%29%2Ct%2Ehours%3Djn%28t%2Ehours%29%2Ct%2Emonths%3Djn%28t%2Emonths%29%2Ct%2Eyears%3Djn%28t%2Eyears%29%2Cthis%7Dfunction%20Wi%28t%2Ce%2Ci%2Co%29%7Bvar%20n%3Dne%28e%2Ci%29%3Breturn%20t%2E%5Fmilliseconds%2B%3Do%2An%2E%5Fmilliseconds%2Ct%2E%5Fdays%2B%3Do%2An%2E%5Fdays%2Ct%2E%5Fmonths%2B%3Do%2An%2E%5Fmonths%2Ct%2E%5Fbubble%28%29%7Dfunction%20Yi%28t%2Ce%29%7Breturn%20Wi%28this%2Ct%2Ce%2C1%29%7Dfunction%20Gi%28t%2Ce%29%7Breturn%20Wi%28this%2Ct%2Ce%2C%2D1%29%7Dfunction%20Vi%28t%29%7Breturn%200%3Et%3FMath%2Efloor%28t%29%3AMath%2Eceil%28t%29%7Dfunction%20Ui%28%29%7Bvar%20t%2Ce%2Ci%2Co%2Cn%2Cs%3Dthis%2E%5Fmilliseconds%2Cr%3Dthis%2E%5Fdays%2Ca%3Dthis%2E%5Fmonths%2Ch%3Dthis%2E%5Fdata%3Breturn%20s%3E%3D0%26%26r%3E%3D0%26%26a%3E%3D0%7C%7C0%3E%3Ds%26%260%3E%3Dr%26%260%3E%3Da%7C%7C%28s%2B%3D864e5%2AVi%28Xi%28a%29%2Br%29%2Cr%3D0%2Ca%3D0%29%2Ch%2Emilliseconds%3Ds%251e3%2Ct%3Dg%28s%2F1e3%29%2Ch%2Eseconds%3Dt%2560%2Ce%3Dg%28t%2F60%29%2Ch%2Eminutes%3De%2560%2Ci%3Dg%28e%2F60%29%2Ch%2Ehours%3Di%2524%2Cr%2B%3Dg%28i%2F24%29%2Cn%3Dg%28qi%28r%29%29%2Ca%2B%3Dn%2Cr%2D%3DVi%28Xi%28n%29%29%2Co%3Dg%28a%2F12%29%2Ca%25%3D12%2Ch%2Edays%3Dr%2Ch%2Emonths%3Da%2Ch%2Eyears%3Do%2Cthis%7Dfunction%20qi%28t%29%7Breturn%204800%2At%2F146097%7Dfunction%20Xi%28t%29%7Breturn%20146097%2At%2F4800%7Dfunction%20Zi%28t%29%7Bvar%20e%2Ci%2Co%3Dthis%2E%5Fmilliseconds%3Bif%28t%3DA%28t%29%2C%22month%22%3D%3D%3Dt%7C%7C%22year%22%3D%3D%3Dt%29return%20e%3Dthis%2E%5Fdays%2Bo%2F864e5%2Ci%3Dthis%2E%5Fmonths%2Bqi%28e%29%2C%22month%22%3D%3D%3Dt%3Fi%3Ai%2F12%3Bswitch%28e%3Dthis%2E%5Fdays%2BMath%2Eround%28Xi%28this%2E%5Fmonths%29%29%2Ct%29%7Bcase%22week%22%3Areturn%20e%2F7%2Bo%2F6048e5%3Bcase%22day%22%3Areturn%20e%2Bo%2F864e5%3Bcase%22hour%22%3Areturn%2024%2Ae%2Bo%2F36e5%3Bcase%22minute%22%3Areturn%201440%2Ae%2Bo%2F6e4%3Bcase%22second%22%3Areturn%2086400%2Ae%2Bo%2F1e3%3Bcase%22millisecond%22%3Areturn%20Math%2Efloor%28864e5%2Ae%29%2Bo%3Bdefault%3Athrow%20new%20Error%28%22Unknown%20unit%20%22%2Bt%29%7D%7Dfunction%20Ki%28%29%7Breturn%20this%2E%5Fmilliseconds%2B864e5%2Athis%2E%5Fdays%2Bthis%2E%5Fmonths%2512%2A2592e6%2B31536e6%2Ay%28this%2E%5Fmonths%2F12%29%7Dfunction%20Ji%28t%29%7Breturn%20function%28%29%7Breturn%20this%2Eas%28t%29%7D%7Dfunction%20Qi%28t%29%7Breturn%20t%3DA%28t%29%2Cthis%5Bt%2B%22s%22%5D%28%29%7Dfunction%20%24i%28t%29%7Breturn%20function%28%29%7Breturn%20this%2E%5Fdata%5Bt%5D%7D%7Dfunction%20to%28%29%7Breturn%20g%28this%2Edays%28%29%2F7%29%7Dfunction%20eo%28t%2Ce%2Ci%2Co%2Cn%29%7Breturn%20n%2ErelativeTime%28e%7C%7C1%2C%21%21i%2Ct%2Co%29%7Dfunction%20io%28t%2Ce%2Ci%29%7Bvar%20o%3Dne%28t%29%2Eabs%28%29%2Cn%3Dis%28o%2Eas%28%22s%22%29%29%2Cs%3Dis%28o%2Eas%28%22m%22%29%29%2Cr%3Dis%28o%2Eas%28%22h%22%29%29%2Ca%3Dis%28o%2Eas%28%22d%22%29%29%2Ch%3Dis%28o%2Eas%28%22M%22%29%29%2Cd%3Dis%28o%2Eas%28%22y%22%29%29%2Cl%3Dn%3Cos%2Es%26%26%5B%22s%22%2Cn%5D%7C%7C1%3E%3Ds%26%26%5B%22m%22%5D%7C%7Cs%3Cos%2Em%26%26%5B%22mm%22%2Cs%5D%7C%7C1%3E%3Dr%26%26%5B%22h%22%5D%7C%7Cr%3Cos%2Eh%26%26%5B%22hh%22%2Cr%5D%7C%7C1%3E%3Da%26%26%5B%22d%22%5D%7C%7Ca%3Cos%2Ed%26%26%5B%22dd%22%2Ca%5D%7C%7C1%3E%3Dh%26%26%5B%22M%22%5D%7C%7Ch%3Cos%2EM%26%26%5B%22MM%22%2Ch%5D%7C%7C1%3E%3Dd%26%26%5B%22y%22%5D%7C%7C%5B%22yy%22%2Cd%5D%3Breturn%20l%5B2%5D%3De%2Cl%5B3%5D%3D%2Bt%3E0%2Cl%5B4%5D%3Di%2Ceo%2Eapply%28null%2Cl%29%7Dfunction%20oo%28t%2Ce%29%7Breturn%20void%200%3D%3D%3Dos%5Bt%5D%3F%211%3Avoid%200%3D%3D%3De%3Fos%5Bt%5D%3A%28os%5Bt%5D%3De%2C%210%29%7Dfunction%20no%28t%29%7Bvar%20e%3Dthis%2ElocaleData%28%29%2Ci%3Dio%28this%2C%21t%2Ce%29%3Breturn%20t%26%26%28i%3De%2EpastFuture%28%2Bthis%2Ci%29%29%2Ce%2Epostformat%28i%29%7Dfunction%20so%28%29%7Bvar%20t%2Ce%2Ci%2Co%3Dns%28this%2E%5Fmilliseconds%29%2F1e3%2Cn%3Dns%28this%2E%5Fdays%29%2Cs%3Dns%28this%2E%5Fmonths%29%3Bt%3Dg%28o%2F60%29%2Ce%3Dg%28t%2F60%29%2Co%25%3D60%2Ct%25%3D60%2Ci%3Dg%28s%2F12%29%2Cs%25%3D12%3Bvar%20r%3Di%2Ca%3Ds%2Ch%3Dn%2Cd%3De%2Cl%3Dt%2Cc%3Do%2Cu%3Dthis%2EasSeconds%28%29%3Breturn%20u%3F%280%3Eu%3F%22%2D%22%3A%22%22%29%2B%22P%22%2B%28r%3Fr%2B%22Y%22%3A%22%22%29%2B%28a%3Fa%2B%22M%22%3A%22%22%29%2B%28h%3Fh%2B%22D%22%3A%22%22%29%2B%28d%7C%7Cl%7C%7Cc%3F%22T%22%3A%22%22%29%2B%28d%3Fd%2B%22H%22%3A%22%22%29%2B%28l%3Fl%2B%22M%22%3A%22%22%29%2B%28c%3Fc%2B%22S%22%3A%22%22%29%3A%22P0D%22%7Dvar%20ro%2Cao%3Bao%3DArray%2Eprototype%2Esome%3FArray%2Eprototype%2Esome%3Afunction%28t%29%7Bfor%28var%20e%3DObject%28this%29%2Ci%3De%2Elength%3E%3E%3E0%2Co%3D0%3Bi%3Eo%3Bo%2B%2B%29if%28o%20in%20e%26%26t%2Ecall%28this%2Ce%5Bo%5D%2Co%2Ce%29%29return%210%3Breturn%211%7D%3Bvar%20ho%3De%2EmomentProperties%3D%5B%5D%2Clo%3D%211%2Cco%3D%7B%7D%3Be%2EsuppressDeprecationWarnings%3D%211%2Ce%2EdeprecationHandler%3Dnull%3Bvar%20uo%3Buo%3DObject%2Ekeys%3FObject%2Ekeys%3Afunction%28t%29%7Bvar%20e%2Ci%3D%5B%5D%3Bfor%28e%20in%20t%29r%28t%2Ce%29%26%26i%2Epush%28e%29%3Breturn%20i%7D%3Bvar%20po%2Cfo%2Cmo%3D%7B%7D%2Cvo%3D%7B%7D%2Cgo%3D%2F%28%5C%5B%5B%5E%5C%5B%5D%2A%5C%5D%29%7C%28%5C%5C%29%3F%28%5BHh%5Dmm%28ss%29%3F%7CMo%7CMM%3FM%3FM%3F%7CDo%7CDDDo%7CDD%3FD%3FD%3F%7Cddd%3Fd%3F%7Cdo%3F%7Cw%5Bo%7Cw%5D%3F%7CW%5Bo%7CW%5D%3F%7CQo%3F%7CYYYYYY%7CYYYYY%7CYYYY%7CYY%7Cgg%28ggg%3F%29%3F%7CGG%28GGG%3F%29%3F%7Ce%7CE%7Ca%7CA%7Chh%3F%7CHH%3F%7Ckk%3F%7Cmm%3F%7Css%3F%7CS%7B1%2C9%7D%7Cx%7CX%7Czz%3F%7CZZ%3F%7C%2E%29%2Fg%2Cyo%3D%2F%28%5C%5B%5B%5E%5C%5B%5D%2A%5C%5D%29%7C%28%5C%5C%29%3F%28LTS%7CLT%7CLL%3FL%3FL%3F%7Cl%7B1%2C4%7D%29%2Fg%2Cbo%3D%7B%7D%2Cwo%3D%7B%7D%2C%5Fo%3D%2F%5Cd%2F%2Cxo%3D%2F%5Cd%5Cd%2F%2Cko%3D%2F%5Cd%7B3%7D%2F%2COo%3D%2F%5Cd%7B4%7D%2F%2CMo%3D%2F%5B%2B%2D%5D%3F%5Cd%7B6%7D%2F%2CDo%3D%2F%5Cd%5Cd%3F%2F%2CSo%3D%2F%5Cd%5Cd%5Cd%5Cd%3F%2F%2CCo%3D%2F%5Cd%5Cd%5Cd%5Cd%5Cd%5Cd%3F%2F%2CTo%3D%2F%5Cd%7B1%2C3%7D%2F%2CEo%3D%2F%5Cd%7B1%2C4%7D%2F%2CPo%3D%2F%5B%2B%2D%5D%3F%5Cd%7B1%2C6%7D%2F%2CIo%3D%2F%5Cd%2B%2F%2CNo%3D%2F%5B%2B%2D%5D%3F%5Cd%2B%2F%2CRo%3D%2FZ%7C%5B%2B%2D%5D%5Cd%5Cd%3A%3F%5Cd%5Cd%2Fgi%2Czo%3D%2FZ%7C%5B%2B%2D%5D%5Cd%5Cd%28%3F%3A%3A%3F%5Cd%5Cd%29%3F%2Fgi%2CLo%3D%2F%5B%2B%2D%5D%3F%5Cd%2B%28%5C%2E%5Cd%7B1%2C3%7D%29%3F%2F%2CAo%3D%2F%5B0%2D9%5D%2A%5B%27a%2Dz%5Cu00A0%2D%5Cu05FF%5Cu0700%2D%5CuD7FF%5CuF900%2D%5CuFDCF%5CuFDF0%2D%5CuFFEF%5D%2B%7C%5B%5Cu0600%2D%5Cu06FF%5C%2F%5D%2B%28%5Cs%2A%3F%5B%5Cu0600%2D%5Cu06FF%5D%2B%29%7B1%2C2%7D%2Fi%2CBo%3D%7B%7D%2CFo%3D%7B%7D%2Cjo%3D0%2CHo%3D1%2CWo%3D2%2CYo%3D3%2CGo%3D4%2CVo%3D5%2CUo%3D6%2Cqo%3D7%2CXo%3D8%3Bfo%3DArray%2Eprototype%2EindexOf%3FArray%2Eprototype%2EindexOf%3Afunction%28t%29%7Bvar%20e%3Bfor%28e%3D0%3Be%3Cthis%2Elength%3B%2B%2Be%29if%28this%5Be%5D%3D%3D%3Dt%29return%20e%3Breturn%2D1%7D%2CG%28%22M%22%2C%5B%22MM%22%2C2%5D%2C%22Mo%22%2Cfunction%28%29%7Breturn%20this%2Emonth%28%29%2B1%7D%29%2CG%28%22MMM%22%2C0%2C0%2Cfunction%28t%29%7Breturn%20this%2ElocaleData%28%29%2EmonthsShort%28this%2Ct%29%7D%29%2CG%28%22MMMM%22%2C0%2C0%2Cfunction%28t%29%7Breturn%20this%2ElocaleData%28%29%2Emonths%28this%2Ct%29%7D%29%2CL%28%22month%22%2C%22M%22%29%2CZ%28%22M%22%2CDo%29%2CZ%28%22MM%22%2CDo%2Cxo%29%2CZ%28%22MMM%22%2Cfunction%28t%2Ce%29%7Breturn%20e%2EmonthsShortRegex%28t%29%7D%29%2CZ%28%22MMMM%22%2Cfunction%28t%2Ce%29%7Breturn%20e%2EmonthsRegex%28t%29%7D%29%2C%24%28%5B%22M%22%2C%22MM%22%5D%2Cfunction%28t%2Ce%29%7Be%5BHo%5D%3Dy%28t%29%2D1%7D%29%2C%24%28%5B%22MMM%22%2C%22MMMM%22%5D%2Cfunction%28t%2Ce%2Ci%2Co%29%7Bvar%20n%3Di%2E%5Flocale%2EmonthsParse%28t%2Co%2Ci%2E%5Fstrict%29%3Bnull%21%3Dn%3Fe%5BHo%5D%3Dn%3Al%28i%29%2EinvalidMonth%3Dt%7D%29%3Bvar%20Zo%3D%2FD%5BoD%5D%3F%28%5C%5B%5B%5E%5C%5B%5C%5D%5D%2A%5C%5D%7C%5Cs%2B%29%2BMMMM%3F%2F%2CKo%3D%22January%5FFebruary%5FMarch%5FApril%5FMay%5FJune%5FJuly%5FAugust%5FSeptember%5FOctober%5FNovember%5FDecember%22%2Esplit%28%22%5F%22%29%2CJo%3D%22Jan%5FFeb%5FMar%5FApr%5FMay%5FJun%5FJul%5FAug%5FSep%5FOct%5FNov%5FDec%22%2Esplit%28%22%5F%22%29%2CQo%3DAo%2C%24o%3DAo%2Ctn%3D%2F%5E%5Cs%2A%28%28%3F%3A%5B%2B%2D%5D%5Cd%7B6%7D%7C%5Cd%7B4%7D%29%2D%28%3F%3A%5Cd%5Cd%2D%5Cd%5Cd%7CW%5Cd%5Cd%2D%5Cd%7CW%5Cd%5Cd%7C%5Cd%5Cd%5Cd%7C%5Cd%5Cd%29%29%28%3F%3A%28T%7C%20%29%28%5Cd%5Cd%28%3F%3A%3A%5Cd%5Cd%28%3F%3A%3A%5Cd%5Cd%28%3F%3A%5B%2E%2C%5D%5Cd%2B%29%3F%29%3F%29%3F%29%28%5B%5C%2B%5C%2D%5D%5Cd%5Cd%28%3F%3A%3A%3F%5Cd%5Cd%29%3F%7C%5Cs%2AZ%29%3F%29%3F%2F%2Cen%3D%2F%5E%5Cs%2A%28%28%3F%3A%5B%2B%2D%5D%5Cd%7B6%7D%7C%5Cd%7B4%7D%29%28%3F%3A%5Cd%5Cd%5Cd%5Cd%7CW%5Cd%5Cd%5Cd%7CW%5Cd%5Cd%7C%5Cd%5Cd%5Cd%7C%5Cd%5Cd%29%29%28%3F%3A%28T%7C%20%29%28%5Cd%5Cd%28%3F%3A%5Cd%5Cd%28%3F%3A%5Cd%5Cd%28%3F%3A%5B%2E%2C%5D%5Cd%2B%29%3F%29%3F%29%3F%29%28%5B%5C%2B%5C%2D%5D%5Cd%5Cd%28%3F%3A%3A%3F%5Cd%5Cd%29%3F%7C%5Cs%2AZ%29%3F%29%3F%2F%2Con%3D%2FZ%7C%5B%2B%2D%5D%5Cd%5Cd%28%3F%3A%3A%3F%5Cd%5Cd%29%3F%2F%2Cnn%3D%5B%5B%22YYYYYY%2DMM%2DDD%22%2C%2F%5B%2B%2D%5D%5Cd%7B6%7D%2D%5Cd%5Cd%2D%5Cd%5Cd%2F%5D%2C%5B%22YYYY%2DMM%2DDD%22%2C%2F%5Cd%7B4%7D%2D%5Cd%5Cd%2D%5Cd%5Cd%2F%5D%2C%5B%22GGGG%2D%5BW%5DWW%2DE%22%2C%2F%5Cd%7B4%7D%2DW%5Cd%5Cd%2D%5Cd%2F%5D%2C%5B%22GGGG%2D%5BW%5DWW%22%2C%2F%5Cd%7B4%7D%2DW%5Cd%5Cd%2F%2C%211%5D%2C%5B%22YYYY%2DDDD%22%2C%2F%5Cd%7B4%7D%2D%5Cd%7B3%7D%2F%5D%2C%5B%22YYYY%2DMM%22%2C%2F%5Cd%7B4%7D%2D%5Cd%5Cd%2F%2C%211%5D%2C%5B%22YYYYYYMMDD%22%2C%2F%5B%2B%2D%5D%5Cd%7B10%7D%2F%5D%2C%5B%22YYYYMMDD%22%2C%2F%5Cd%7B8%7D%2F%5D%2C%5B%22GGGG%5BW%5DWWE%22%2C%2F%5Cd%7B4%7DW%5Cd%7B3%7D%2F%5D%2C%5B%22GGGG%5BW%5DWW%22%2C%2F%5Cd%7B4%7DW%5Cd%7B2%7D%2F%2C%211%5D%2C%5B%22YYYYDDD%22%2C%2F%5Cd%7B7%7D%2F%5D%5D%2Csn%3D%5B%5B%22HH%3Amm%3Ass%2ESSSS%22%2C%2F%5Cd%5Cd%3A%5Cd%5Cd%3A%5Cd%5Cd%5C%2E%5Cd%2B%2F%5D%2C%5B%22HH%3Amm%3Ass%2CSSSS%22%2C%2F%5Cd%5Cd%3A%5Cd%5Cd%3A%5Cd%5Cd%2C%5Cd%2B%2F%5D%2C%5B%22HH%3Amm%3Ass%22%2C%2F%5Cd%5Cd%3A%5Cd%5Cd%3A%5Cd%5Cd%2F%5D%2C%5B%22HH%3Amm%22%2C%2F%5Cd%5Cd%3A%5Cd%5Cd%2F%5D%2C%5B%22HHmmss%2ESSSS%22%2C%2F%5Cd%5Cd%5Cd%5Cd%5Cd%5Cd%5C%2E%5Cd%2B%2F%5D%2C%5B%22HHmmss%2CSSSS%22%2C%2F%5Cd%5Cd%5Cd%5Cd%5Cd%5Cd%2C%5Cd%2B%2F%5D%2C%5B%22HHmmss%22%2C%2F%5Cd%5Cd%5Cd%5Cd%5Cd%5Cd%2F%5D%2C%5B%22HHmm%22%2C%2F%5Cd%5Cd%5Cd%5Cd%2F%5D%2C%5B%22HH%22%2C%2F%5Cd%5Cd%2F%5D%5D%2Crn%3D%2F%5E%5C%2F%3FDate%5C%28%28%5C%2D%3F%5Cd%2B%29%2Fi%3Be%2EcreateFromInputFallback%3D%5F%28%22moment%20construction%20falls%20back%20to%20js%20Date%2E%20This%20is%20discouraged%20and%20will%20be%20removed%20in%20upcoming%20major%20release%2E%20Please%20refer%20to%20https%3A%2F%2Fgithub%2Ecom%2Fmoment%2Fmoment%2Fissues%2F1407%20for%20more%20info%2E%22%2Cfunction%28t%29%7Bt%2E%5Fd%3Dnew%20Date%28t%2E%5Fi%2B%28t%2E%5FuseUTC%3F%22%20UTC%22%3A%22%22%29%29%7D%29%2CG%28%22Y%22%2C0%2C0%2Cfunction%28%29%7Bvar%20t%3Dthis%2Eyear%28%29%3Breturn%209999%3E%3Dt%3F%22%22%2Bt%3A%22%2B%22%2Bt%7D%29%2CG%280%2C%5B%22YY%22%2C2%5D%2C0%2Cfunction%28%29%7Breturn%20this%2Eyear%28%29%25100%7D%29%2CG%280%2C%5B%22YYYY%22%2C4%5D%2C0%2C%22year%22%29%2CG%280%2C%5B%22YYYYY%22%2C5%5D%2C0%2C%22year%22%29%2CG%280%2C%5B%22YYYYYY%22%2C6%2C%210%5D%2C0%2C%22year%22%29%2CL%28%22year%22%2C%22y%22%29%2CZ%28%22Y%22%2CNo%29%2CZ%28%22YY%22%2CDo%2Cxo%29%2CZ%28%22YYYY%22%2CEo%2COo%29%2CZ%28%22YYYYY%22%2CPo%2CMo%29%2CZ%28%22YYYYYY%22%2CPo%2CMo%29%2C%24%28%5B%22YYYYY%22%2C%22YYYYYY%22%5D%2Cjo%29%2C%24%28%22YYYY%22%2Cfunction%28t%2Ci%29%7Bi%5Bjo%5D%3D2%3D%3D%3Dt%2Elength%3Fe%2EparseTwoDigitYear%28t%29%3Ay%28t%29%7D%29%2C%24%28%22YY%22%2Cfunction%28t%2Ci%29%7Bi%5Bjo%5D%3De%2EparseTwoDigitYear%28t%29%7D%29%2C%24%28%22Y%22%2Cfunction%28t%2Ce%29%7Be%5Bjo%5D%3DparseInt%28t%2C10%29%7D%29%2Ce%2EparseTwoDigitYear%3Dfunction%28t%29%7Breturn%20y%28t%29%2B%28y%28t%29%3E68%3F1900%3A2e3%29%7D%3Bvar%20an%3DF%28%22FullYear%22%2C%210%29%3Be%2EISO%5F8601%3Dfunction%28%29%7B%7D%3Bvar%20hn%3D%5F%28%22moment%28%29%2Emin%20is%20deprecated%2C%20use%20moment%2Emax%20instead%2E%20https%3A%2F%2Fgithub%2Ecom%2Fmoment%2Fmoment%2Fissues%2F1548%22%2Cfunction%28%29%7Bvar%20t%3DAt%2Eapply%28null%2Carguments%29%3Breturn%20this%2EisValid%28%29%26%26t%2EisValid%28%29%3Fthis%3Et%3Fthis%3At%3Au%28%29%7D%29%2Cdn%3D%5F%28%22moment%28%29%2Emax%20is%20deprecated%2C%20use%20moment%2Emin%20instead%2E%20https%3A%2F%2Fgithub%2Ecom%2Fmoment%2Fmoment%2Fissues%2F1548%22%2Cfunction%28%29%7Bvar%20t%3DAt%2Eapply%28null%2Carguments%29%3Breturn%20this%2EisValid%28%29%26%26t%2EisValid%28%29%3Ft%3Ethis%3Fthis%3At%3Au%28%29%7D%29%2Cln%3Dfunction%28%29%7Breturn%20Date%2Enow%3FDate%2Enow%28%29%3A%2Bnew%20Date%7D%3BYt%28%22Z%22%2C%22%3A%22%29%2CYt%28%22ZZ%22%2C%22%22%29%2CZ%28%22Z%22%2Czo%29%2CZ%28%22ZZ%22%2Czo%29%2C%24%28%5B%22Z%22%2C%22ZZ%22%5D%2Cfunction%28t%2Ce%2Ci%29%7Bi%2E%5FuseUTC%3D%210%2Ci%2E%5Ftzm%3DGt%28zo%2Ct%29%7D%29%3Bvar%20cn%3D%2F%28%5B%5C%2B%5C%2D%5D%7C%5Cd%5Cd%29%2Fgi%3Be%2EupdateOffset%3Dfunction%28%29%7B%7D%3Bvar%20un%3D%2F%5E%28%5C%2D%29%3F%28%3F%3A%28%5Cd%2A%29%5B%2E%20%5D%29%3F%28%5Cd%2B%29%5C%3A%28%5Cd%2B%29%28%3F%3A%5C%3A%28%5Cd%2B%29%5C%2E%3F%28%5Cd%7B3%7D%29%3F%5Cd%2A%29%3F%24%2F%2Cpn%3D%2F%5E%28%2D%29%3FP%28%3F%3A%28%2D%3F%5B0%2D9%2C%2E%5D%2A%29Y%29%3F%28%3F%3A%28%2D%3F%5B0%2D9%2C%2E%5D%2A%29M%29%3F%28%3F%3A%28%2D%3F%5B0%2D9%2C%2E%5D%2A%29W%29%3F%28%3F%3A%28%2D%3F%5B0%2D9%2C%2E%5D%2A%29D%29%3F%28%3F%3AT%28%3F%3A%28%2D%3F%5B0%2D9%2C%2E%5D%2A%29H%29%3F%28%3F%3A%28%2D%3F%5B0%2D9%2C%2E%5D%2A%29M%29%3F%28%3F%3A%28%2D%3F%5B0%2D9%2C%2E%5D%2A%29S%29%3F%29%3F%24%2F%3Bne%2Efn%3DHt%2Eprototype%3Bvar%20fn%3Dde%281%2C%22add%22%29%2Cmn%3Dde%28%2D1%2C%22subtract%22%29%3Be%2EdefaultFormat%3D%22YYYY%2DMM%2DDDTHH%3Amm%3AssZ%22%2Ce%2EdefaultFormatUtc%3D%22YYYY%2DMM%2DDDTHH%3Amm%3Ass%5BZ%5D%22%3Bvar%20vn%3D%5F%28%22moment%28%29%2Elang%28%29%20is%20deprecated%2E%20Instead%2C%20use%20moment%28%29%2ElocaleData%28%29%20to%20get%20the%20language%20configuration%2E%20Use%20moment%28%29%2Elocale%28%29%20to%20change%20languages%2E%22%2Cfunction%28t%29%7Breturn%20void%200%3D%3D%3Dt%3Fthis%2ElocaleData%28%29%3Athis%2Elocale%28t%29%7D%29%3BG%280%2C%5B%22gg%22%2C2%5D%2C0%2Cfunction%28%29%7Breturn%20this%2EweekYear%28%29%25100%7D%29%2CG%280%2C%5B%22GG%22%2C2%5D%2C0%2Cfunction%28%29%7Breturn%20this%2EisoWeekYear%28%29%25100%7D%29%2CWe%28%22gggg%22%2C%22weekYear%22%29%2CWe%28%22ggggg%22%2C%22weekYear%22%29%2CWe%28%22GGGG%22%2C%22isoWeekYear%22%29%2CWe%28%22GGGGG%22%2C%22isoWeekYear%22%29%2CL%28%22weekYear%22%2C%22gg%22%29%2CL%28%22isoWeekYear%22%2C%22GG%22%29%2CZ%28%22G%22%2CNo%29%2CZ%28%22g%22%2CNo%29%2CZ%28%22GG%22%2CDo%2Cxo%29%2CZ%28%22gg%22%2CDo%2Cxo%29%2CZ%28%22GGGG%22%2CEo%2COo%29%2CZ%28%22gggg%22%2CEo%2COo%29%2CZ%28%22GGGGG%22%2CPo%2CMo%29%2CZ%28%22ggggg%22%2CPo%2CMo%29%2Ctt%28%5B%22gggg%22%2C%22ggggg%22%2C%22GGGG%22%2C%22GGGGG%22%5D%2Cfunction%28t%2Ce%2Ci%2Co%29%7Be%5Bo%2Esubstr%280%2C2%29%5D%3Dy%28t%29%7D%29%2Ctt%28%5B%22gg%22%2C%22GG%22%5D%2Cfunction%28t%2Ci%2Co%2Cn%29%7Bi%5Bn%5D%3De%2EparseTwoDigitYear%28t%29%7D%29%2CG%28%22Q%22%2C0%2C%22Qo%22%2C%22quarter%22%29%2CL%28%22quarter%22%2C%22Q%22%29%2CZ%28%22Q%22%2C%5Fo%29%2C%24%28%22Q%22%2Cfunction%28t%2Ce%29%7Be%5BHo%5D%3D3%2A%28y%28t%29%2D1%29%7D%29%2CG%28%22w%22%2C%5B%22ww%22%2C2%5D%2C%22wo%22%2C%22week%22%29%2CG%28%22W%22%2C%5B%22WW%22%2C2%5D%2C%22Wo%22%2C%22isoWeek%22%29%2CL%28%22week%22%2C%22w%22%29%2CL%28%22isoWeek%22%2C%22W%22%29%2CZ%28%22w%22%2CDo%29%2CZ%28%22ww%22%2CDo%2Cxo%29%2CZ%28%22W%22%2CDo%29%2CZ%28%22WW%22%2CDo%2Cxo%29%2Ctt%28%5B%22w%22%2C%22ww%22%2C%22W%22%2C%22WW%22%5D%2Cfunction%28t%2Ce%2Ci%2Co%29%7Be%5Bo%2Esubstr%280%2C1%29%5D%3Dy%28t%29%7D%29%3Bvar%20gn%3D%7Bdow%3A0%2Cdoy%3A6%7D%3BG%28%22D%22%2C%5B%22DD%22%2C2%5D%2C%22Do%22%2C%22date%22%29%2CL%28%22date%22%2C%22D%22%29%2CZ%28%22D%22%2CDo%29%2CZ%28%22DD%22%2CDo%2Cxo%29%2CZ%28%22Do%22%2Cfunction%28t%2Ce%29%7Breturn%20t%3Fe%2E%5FordinalParse%3Ae%2E%5FordinalParseLenient%7D%29%2C%24%28%5B%22D%22%2C%22DD%22%5D%2CWo%29%2C%24%28%22Do%22%2Cfunction%28t%2Ce%29%7Be%5BWo%5D%3Dy%28t%2Ematch%28Do%29%5B0%5D%2C10%29%7D%29%3Bvar%20yn%3DF%28%22Date%22%2C%210%29%3BG%28%22d%22%2C0%2C%22do%22%2C%22day%22%29%2CG%28%22dd%22%2C0%2C0%2Cfunction%28t%29%7Breturn%20this%2ElocaleData%28%29%2EweekdaysMin%28this%2Ct%29%7D%29%2CG%28%22ddd%22%2C0%2C0%2Cfunction%28t%29%7Breturn%20this%2ElocaleData%28%29%2EweekdaysShort%28this%2Ct%29%7D%29%2CG%28%22dddd%22%2C0%2C0%2Cfunction%28t%29%7Breturn%20this%2ElocaleData%28%29%2Eweekdays%28this%2Ct%29%7D%29%2CG%28%22e%22%2C0%2C0%2C%22weekday%22%29%2CG%28%22E%22%2C0%2C0%2C%22isoWeekday%22%29%2CL%28%22day%22%2C%22d%22%29%2CL%28%22weekday%22%2C%22e%22%29%2CL%28%22isoWeekday%22%2C%22E%22%29%2CZ%28%22d%22%2CDo%29%2CZ%28%22e%22%2CDo%29%2CZ%28%22E%22%2CDo%29%2CZ%28%22dd%22%2Cfunction%28t%2Ce%29%7Breturn%20e%2EweekdaysMinRegex%28t%29%7D%29%2CZ%28%22ddd%22%2Cfunction%28t%2Ce%29%7Breturn%20e%2EweekdaysShortRegex%28t%29%7D%29%2CZ%28%22dddd%22%2Cfunction%28t%2Ce%29%7Breturn%20e%2EweekdaysRegex%28t%29%7D%29%2Ctt%28%5B%22dd%22%2C%22ddd%22%2C%22dddd%22%5D%2Cfunction%28t%2Ce%2Ci%2Co%29%7Bvar%20n%3Di%2E%5Flocale%2EweekdaysParse%28t%2Co%2Ci%2E%5Fstrict%29%3Bnull%21%3Dn%3Fe%2Ed%3Dn%3Al%28i%29%2EinvalidWeekday%3Dt%7D%29%2Ctt%28%5B%22d%22%2C%22e%22%2C%22E%22%5D%2Cfunction%28t%2Ce%2Ci%2Co%29%7Be%5Bo%5D%3Dy%28t%29%7D%29%3Bvar%20bn%3D%22Sunday%5FMonday%5FTuesday%5FWednesday%5FThursday%5FFriday%5FSaturday%22%2Esplit%28%22%5F%22%29%2Cwn%3D%22Sun%5FMon%5FTue%5FWed%5FThu%5FFri%5FSat%22%2Esplit%28%22%5F%22%29%2C%5Fn%3D%22Su%5FMo%5FTu%5FWe%5FTh%5FFr%5FSa%22%2Esplit%28%22%5F%22%29%2Cxn%3DAo%2Ckn%3DAo%2COn%3DAo%3BG%28%22DDD%22%2C%5B%22DDDD%22%2C3%5D%2C%22DDDo%22%2C%22dayOfYear%22%29%2CL%28%22dayOfYear%22%2C%22DDD%22%29%2CZ%28%22DDD%22%2CTo%29%2CZ%28%22DDDD%22%2Cko%29%2C%24%28%5B%22DDD%22%2C%22DDDD%22%5D%2Cfunction%28t%2Ce%2Ci%29%7Bi%2E%5FdayOfYear%3Dy%28t%29%7D%29%2CG%28%22H%22%2C%5B%22HH%22%2C2%5D%2C0%2C%22hour%22%29%2CG%28%22h%22%2C%5B%22hh%22%2C2%5D%2C0%2Cmi%29%2CG%28%22k%22%2C%5B%22kk%22%2C2%5D%2C0%2Cvi%29%2CG%28%22hmm%22%2C0%2C0%2Cfunction%28%29%7Breturn%22%22%2Bmi%2Eapply%28this%29%2BY%28this%2Eminutes%28%29%2C2%29%7D%29%2CG%28%22hmmss%22%2C0%2C0%2Cfunction%28%29%7Breturn%22%22%2Bmi%2Eapply%28this%29%2BY%28this%2Eminutes%28%29%2C2%29%2BY%28this%2Eseconds%28%29%2C2%29%7D%29%2CG%28%22Hmm%22%2C0%2C0%2Cfunction%28%29%7Breturn%22%22%2Bthis%2Ehours%28%29%2BY%28this%2Eminutes%28%29%2C2%29%7D%29%2CG%28%22Hmmss%22%2C0%2C0%2Cfunction%28%29%7Breturn%22%22%2Bthis%2Ehours%28%29%2BY%28this%2Eminutes%28%29%2C2%29%2BY%28this%2Eseconds%28%29%2C2%29%7D%29%2Cgi%28%22a%22%2C%210%29%2Cgi%28%22A%22%2C%211%29%2CL%28%22hour%22%2C%22h%22%29%2CZ%28%22a%22%2Cyi%29%2CZ%28%22A%22%2Cyi%29%2CZ%28%22H%22%2CDo%29%2CZ%28%22h%22%2CDo%29%2CZ%28%22HH%22%2CDo%2Cxo%29%2CZ%28%22hh%22%2CDo%2Cxo%29%2CZ%28%22hmm%22%2CSo%29%2CZ%28%22hmmss%22%2CCo%29%2CZ%28%22Hmm%22%2CSo%29%2CZ%28%22Hmmss%22%2CCo%29%2C%24%28%5B%22H%22%2C%22HH%22%5D%2CYo%29%2C%24%28%5B%22a%22%2C%22A%22%5D%2Cfunction%28t%2Ce%2Ci%29%7Bi%2E%5FisPm%3Di%2E%5Flocale%2EisPM%28t%29%2Ci%2E%5Fmeridiem%3Dt%7D%29%2C%24%28%5B%22h%22%2C%22hh%22%5D%2Cfunction%28t%2Ce%2Ci%29%7Be%5BYo%5D%3Dy%28t%29%2Cl%28i%29%2EbigHour%3D%210%7D%29%2C%24%28%22hmm%22%2Cfunction%28t%2Ce%2Ci%29%7Bvar%20o%3Dt%2Elength%2D2%3Be%5BYo%5D%3Dy%28t%2Esubstr%280%2Co%29%29%2Ce%5BGo%5D%3Dy%28t%2Esubstr%28o%29%29%2Cl%28i%29%2EbigHour%3D%210%7D%29%2C%24%28%22hmmss%22%2Cfunction%28t%2Ce%2Ci%29%7Bvar%20o%3Dt%2Elength%2D4%2Cn%3Dt%2Elength%2D2%3Be%5BYo%5D%3Dy%28t%2Esubstr%280%2Co%29%29%2Ce%5BGo%5D%3Dy%28t%2Esubstr%28o%2C2%29%29%2Ce%5BVo%5D%3Dy%28t%2Esubstr%28n%29%29%2Cl%28i%29%2EbigHour%3D%210%7D%29%2C%24%28%22Hmm%22%2Cfunction%28t%2Ce%2Ci%29%7Bvar%20o%3Dt%2Elength%2D2%3Be%5BYo%5D%3Dy%28t%2Esubstr%280%2Co%29%29%2Ce%5BGo%5D%3Dy%28t%2Esubstr%28o%29%29%7D%29%2C%24%28%22Hmmss%22%2Cfunction%28t%2Ce%2Ci%29%7Bvar%20o%3Dt%2Elength%2D4%2Cn%3Dt%2Elength%2D2%3Be%5BYo%5D%3Dy%28t%2Esubstr%280%2Co%29%29%2Ce%5BGo%5D%3Dy%28t%2Esubstr%28o%2C2%29%29%2Ce%5BVo%5D%3Dy%28t%2Esubstr%28n%29%29%7D%29%3Bvar%20Mn%3D%2F%5Bap%5D%5C%2E%3Fm%3F%5C%2E%3F%2Fi%2CDn%3DF%28%22Hours%22%2C%210%29%3BG%28%22m%22%2C%5B%22mm%22%2C2%5D%2C0%2C%22minute%22%29%2CL%28%22minute%22%2C%22m%22%29%2CZ%28%22m%22%2CDo%29%2CZ%28%22mm%22%2CDo%2Cxo%29%2C%24%28%5B%22m%22%2C%22mm%22%5D%2CGo%29%3Bvar%20Sn%3DF%28%22Minutes%22%2C%211%29%3BG%28%22s%22%2C%5B%22ss%22%2C2%5D%2C0%2C%22second%22%29%2CL%28%22second%22%2C%22s%22%29%2CZ%28%22s%22%2CDo%29%2CZ%28%22ss%22%2CDo%2Cxo%29%2C%24%28%5B%22s%22%2C%22ss%22%5D%2CVo%29%3Bvar%20Cn%3DF%28%22Seconds%22%2C%211%29%3BG%28%22S%22%2C0%2C0%2Cfunction%28%29%7Breturn%7E%7E%28this%2Emillisecond%28%29%2F100%29%7D%29%2CG%280%2C%5B%22SS%22%2C2%5D%2C0%2Cfunction%28%29%7Breturn%7E%7E%28this%2Emillisecond%28%29%2F10%29%7D%29%2CG%280%2C%5B%22SSS%22%2C3%5D%2C0%2C%22millisecond%22%29%2CG%280%2C%5B%22SSSS%22%2C4%5D%2C0%2Cfunction%28%29%7Breturn%2010%2Athis%2Emillisecond%28%29%7D%29%2CG%280%2C%5B%22SSSSS%22%2C5%5D%2C0%2Cfunction%28%29%7Breturn%20100%2Athis%2Emillisecond%28%29%7D%29%2CG%280%2C%5B%22SSSSSS%22%2C6%5D%2C0%2Cfunction%28%29%7Breturn%201e3%2Athis%2Emillisecond%28%29%7D%29%2CG%280%2C%5B%22SSSSSSS%22%2C7%5D%2C0%2Cfunction%28%29%7Breturn%201e4%2Athis%2Emillisecond%28%29%7D%29%2CG%280%2C%5B%22SSSSSSSS%22%2C8%5D%2C0%2Cfunction%28%29%7Breturn%201e5%2Athis%2Emillisecond%28%29%7D%29%2CG%280%2C%5B%22SSSSSSSSS%22%2C9%5D%2C0%2Cfunction%28%29%7Breturn%201e6%2Athis%2Emillisecond%28%29%7D%29%2CL%28%22millisecond%22%2C%22ms%22%29%2CZ%28%22S%22%2CTo%2C%5Fo%29%2CZ%28%22SS%22%2CTo%2Cxo%29%2CZ%28%22SSS%22%2CTo%2Cko%29%3Bvar%20Tn%3Bfor%28Tn%3D%22SSSS%22%3BTn%2Elength%3C%3D9%3BTn%2B%3D%22S%22%29Z%28Tn%2CIo%29%3Bfor%28Tn%3D%22S%22%3BTn%2Elength%3C%3D9%3BTn%2B%3D%22S%22%29%24%28Tn%2C%5Fi%29%3Bvar%20En%3DF%28%22Milliseconds%22%2C%211%29%3BG%28%22z%22%2C0%2C0%2C%22zoneAbbr%22%29%2CG%28%22zz%22%2C0%2C0%2C%22zoneName%22%29%3Bvar%20Pn%3Dm%2Eprototype%3BPn%2Eadd%3Dfn%2CPn%2Ecalendar%3Dce%2CPn%2Eclone%3Due%2CPn%2Ediff%3Dbe%2CPn%2EendOf%3DPe%2CPn%2Eformat%3Dke%2CPn%2Efrom%3DOe%2CPn%2EfromNow%3DMe%2CPn%2Eto%3DDe%2CPn%2EtoNow%3DSe%2CPn%2Eget%3DW%2CPn%2EinvalidAt%3Dje%2CPn%2EisAfter%3Dpe%2CPn%2EisBefore%3Dfe%2CPn%2EisBetween%3Dme%2CPn%2EisSame%3Dve%2CPn%2EisSameOrAfter%3Dge%2CPn%2EisSameOrBefore%3Dye%2CPn%2EisValid%3DBe%2CPn%2Elang%3Dvn%2CPn%2Elocale%3DCe%2CPn%2ElocaleData%3DTe%2CPn%2Emax%3Ddn%2CPn%2Emin%3Dhn%2CPn%2EparsingFlags%3DFe%2CPn%2Eset%3DW%2CPn%2EstartOf%3DEe%2CPn%2Esubtract%3Dmn%2CPn%2EtoArray%3Dze%2CPn%2EtoObject%3DLe%2CPn%2EtoDate%3DRe%2CPn%2EtoISOString%3Dxe%2CPn%2EtoJSON%3DAe%2CPn%2EtoString%3D%5Fe%2CPn%2Eunix%3DNe%2CPn%2EvalueOf%3DIe%2CPn%2EcreationData%3DHe%2CPn%2Eyear%3Dan%2CPn%2EisLeapYear%3Dwt%2CPn%2EweekYear%3DYe%2CPn%2EisoWeekYear%3DGe%2CPn%2Equarter%3DPn%2Equarters%3DZe%2CPn%2Emonth%3Dht%2CPn%2EdaysInMonth%3Ddt%2CPn%2Eweek%3DPn%2Eweeks%3D%24e%2CPn%2EisoWeek%3DPn%2EisoWeeks%3Dti%2CPn%2EweeksInYear%3DUe%2CPn%2EisoWeeksInYear%3DVe%2CPn%2Edate%3Dyn%2CPn%2Eday%3DPn%2Edays%3Dai%2CPn%2Eweekday%3Dhi%2CPn%2EisoWeekday%3Ddi%2CPn%2EdayOfYear%3Dfi%2CPn%2Ehour%3DPn%2Ehours%3DDn%2CPn%2Eminute%3DPn%2Eminutes%3DSn%2CPn%2Esecond%3DPn%2Eseconds%3DCn%2CPn%2Emillisecond%3DPn%2Emilliseconds%3DEn%2CPn%2EutcOffset%3Dqt%2CPn%2Eutc%3DZt%2CPn%2Elocal%3DKt%2CPn%2EparseZone%3DJt%2CPn%2EhasAlignedHourOffset%3DQt%2CPn%2EisDST%3D%24t%2CPn%2EisDSTShifted%3Dte%2CPn%2EisLocal%3Dee%2CPn%2EisUtcOffset%3Die%2CPn%2EisUtc%3Doe%2CPn%2EisUTC%3Doe%2CPn%2EzoneAbbr%3Dxi%2CPn%2EzoneName%3Dki%2CPn%2Edates%3D%5F%28%22dates%20accessor%20is%20deprecated%2E%20Use%20date%20instead%2E%22%2Cyn%29%2CPn%2Emonths%3D%5F%28%22months%20accessor%20is%20deprecated%2E%20Use%20month%20instead%22%2Cht%29%2CPn%2Eyears%3D%5F%28%22years%20accessor%20is%20deprecated%2E%20Use%20year%20instead%22%2Can%29%2CPn%2Ezone%3D%5F%28%22moment%28%29%2Ezone%20is%20deprecated%2C%20use%20moment%28%29%2EutcOffset%20instead%2E%20https%3A%2F%2Fgithub%2Ecom%2Fmoment%2Fmoment%2Fissues%2F1779%22%2CXt%29%3Bvar%20In%3DPn%2CNn%3D%7BsameDay%3A%22%5BToday%20at%5D%20LT%22%2CnextDay%3A%22%5BTomorrow%20at%5D%20LT%22%2CnextWeek%3A%22dddd%20%5Bat%5D%20LT%22%2ClastDay%3A%22%5BYesterday%20at%5D%20LT%22%2ClastWeek%3A%22%5BLast%5D%20dddd%20%5Bat%5D%20LT%22%2CsameElse%3A%22L%22%7D%2CRn%3D%7BLTS%3A%22h%3Amm%3Ass%20A%22%2CLT%3A%22h%3Amm%20A%22%2CL%3A%22MM%2FDD%2FYYYY%22%2CLL%3A%22MMMM%20D%2C%20YYYY%22%2CLLL%3A%22MMMM%20D%2C%20YYYY%20h%3Amm%20A%22%2CLLLL%3A%22dddd%2C%20MMMM%20D%2C%20YYYY%20h%3Amm%20A%22%7D%2Czn%3D%22Invalid%20date%22%2CLn%3D%22%25d%22%2CAn%3D%2F%5Cd%7B1%2C2%7D%2F%2CBn%3D%7Bfuture%3A%22in%20%25s%22%2Cpast%3A%22%25s%20ago%22%2Cs%3A%22a%20few%20seconds%22%2Cm%3A%22a%20minute%22%2Cmm%3A%22%25d%20minutes%22%2Ch%3A%22an%20hour%22%2Chh%3A%22%25d%20hours%22%2Cd%3A%22a%20day%22%2Cdd%3A%22%25d%20days%22%2CM%3A%22a%20month%22%2CMM%3A%22%25d%20months%22%2Cy%3A%22a%20year%22%2Cyy%3A%22%25d%20years%22%7D%2CFn%3DS%2Eprototype%3BFn%2E%5Fcalendar%3DNn%2CFn%2Ecalendar%3DDi%2CFn%2E%5FlongDateFormat%3DRn%2CFn%2ElongDateFormat%3DSi%2CFn%2E%5FinvalidDate%3Dzn%2CFn%2EinvalidDate%3DCi%2CFn%2E%5Fordinal%3DLn%2CFn%2Eordinal%3DTi%2CFn%2E%5FordinalParse%3DAn%2CFn%2Epreparse%3DEi%2CFn%2Epostformat%3DEi%2CFn%2E%5FrelativeTime%3DBn%2CFn%2ErelativeTime%3DPi%2CFn%2EpastFuture%3DIi%2CFn%2Eset%3DM%2CFn%2Emonths%3Dot%2CFn%2E%5Fmonths%3DKo%2CFn%2EmonthsShort%3Dnt%2CFn%2E%5FmonthsShort%3DJo%2CFn%2EmonthsParse%3Drt%2CFn%2E%5FmonthsRegex%3D%24o%2CFn%2EmonthsRegex%3Dct%2CFn%2E%5FmonthsShortRegex%3DQo%2CFn%2EmonthsShortRegex%3Dlt%2CFn%2Eweek%3DKe%2CFn%2E%5Fweek%3Dgn%2CFn%2EfirstDayOfYear%3DQe%2CFn%2EfirstDayOfWeek%3DJe%2CFn%2Eweekdays%3Dii%2CFn%2E%5Fweekdays%3Dbn%2CFn%2EweekdaysMin%3Dni%2CFn%2E%5FweekdaysMin%3D%5Fn%2CFn%2EweekdaysShort%3Doi%2CFn%2E%5FweekdaysShort%3Dwn%2CFn%2EweekdaysParse%3Dri%2CFn%2E%5FweekdaysRegex%3Dxn%2CFn%2EweekdaysRegex%3Dli%2CFn%2E%5FweekdaysShortRegex%3Dkn%2CFn%2EweekdaysShortRegex%3Dci%2CFn%2E%5FweekdaysMinRegex%3DOn%2CFn%2EweekdaysMinRegex%3Dui%2CFn%2EisPM%3Dbi%2CFn%2E%5FmeridiemParse%3DMn%2CFn%2Emeridiem%3Dwi%2CP%28%22en%22%2C%7BordinalParse%3A%2F%5Cd%7B1%2C2%7D%28th%7Cst%7Cnd%7Crd%29%2F%2Cordinal%3Afunction%28t%29%7Bvar%20e%3Dt%2510%2Ci%3D1%3D%3D%3Dy%28t%25100%2F10%29%3F%22th%22%3A1%3D%3D%3De%3F%22st%22%3A2%3D%3D%3De%3F%22nd%22%3A3%3D%3D%3De%3F%22rd%22%3A%22th%22%3Breturn%20t%2Bi%7D%7D%29%2Ce%2Elang%3D%5F%28%22moment%2Elang%20is%20deprecated%2E%20Use%20moment%2Elocale%20instead%2E%22%2CP%29%2Ce%2ElangData%3D%5F%28%22moment%2ElangData%20is%20deprecated%2E%20Use%20moment%2ElocaleData%20instead%2E%22%2CR%29%3Bvar%20jn%3DMath%2Eabs%2CHn%3DJi%28%22ms%22%29%2CWn%3DJi%28%22s%22%29%2CYn%3DJi%28%22m%22%29%2CGn%3DJi%28%22h%22%29%2CVn%3DJi%28%22d%22%29%2CUn%3DJi%28%22w%22%29%2Cqn%3DJi%28%22M%22%29%2CXn%3DJi%28%22y%22%29%2CZn%3D%24i%28%22milliseconds%22%29%2CKn%3D%24i%28%22seconds%22%29%2CJn%3D%24i%28%22minutes%22%29%2CQn%3D%24i%28%22hours%22%29%2C%24n%3D%24i%28%22days%22%29%2Cts%3D%24i%28%22months%22%29%2Ces%3D%24i%28%22years%22%29%2Cis%3DMath%2Eround%2Cos%3D%7Bs%3A45%2Cm%3A45%2Ch%3A22%2Cd%3A26%2CM%3A11%7D%2Cns%3DMath%2Eabs%2Css%3DHt%2Eprototype%3Bss%2Eabs%3DHi%2Css%2Eadd%3DYi%2Css%2Esubtract%3DGi%2Css%2Eas%3DZi%2Css%2EasMilliseconds%3DHn%2Css%2EasSeconds%3DWn%2Css%2EasMinutes%3DYn%2Css%2EasHours%3DGn%2Css%2EasDays%3DVn%2Css%2EasWeeks%3DUn%2Css%2EasMonths%3Dqn%2Css%2EasYears%3DXn%2Css%2EvalueOf%3DKi%2Css%2E%5Fbubble%3DUi%2Css%2Eget%3DQi%2Css%2Emilliseconds%3DZn%2Css%2Eseconds%3DKn%2Css%2Eminutes%3DJn%2Css%2Ehours%3DQn%2Css%2Edays%3D%24n%2Css%2Eweeks%3Dto%2Css%2Emonths%3Dts%2Css%2Eyears%3Des%2Css%2Ehumanize%3Dno%2Css%2EtoISOString%3Dso%2Css%2EtoString%3Dso%2Css%2EtoJSON%3Dso%2Css%2Elocale%3DCe%2Css%2ElocaleData%3DTe%2Css%2EtoIsoString%3D%5F%28%22toIsoString%28%29%20is%20deprecated%2E%20Please%20use%20toISOString%28%29%20instead%20%28notice%20the%20capitals%29%22%2Cso%29%2Css%2Elang%3Dvn%2CG%28%22X%22%2C0%2C0%2C%22unix%22%29%2CG%28%22x%22%2C0%2C0%2C%22valueOf%22%29%2CZ%28%22x%22%2CNo%29%2CZ%28%22X%22%2CLo%29%2C%24%28%22X%22%2Cfunction%28t%2Ce%2Ci%29%7Bi%2E%5Fd%3Dnew%20Date%281e3%2AparseFloat%28t%2C10%29%29%7D%29%2C%24%28%22x%22%2Cfunction%28t%2Ce%2Ci%29%7Bi%2E%5Fd%3Dnew%20Date%28y%28t%29%29%7D%29%2Ce%2Eversion%3D%222%2E13%2E0%22%2Ci%28At%29%2Ce%2Efn%3DIn%2Ce%2Emin%3DFt%2Ce%2Emax%3Djt%2Ce%2Enow%3Dln%2Ce%2Eutc%3Dh%2Ce%2Eunix%3DOi%2Ce%2Emonths%3DLi%2Ce%2EisDate%3Dn%2Ce%2Elocale%3DP%2Ce%2Einvalid%3Du%2Ce%2Eduration%3Dne%2Ce%2EisMoment%3Dv%2Ce%2Eweekdays%3DBi%2Ce%2EparseZone%3DMi%2Ce%2ElocaleData%3DR%2Ce%2EisDuration%3DWt%2Ce%2EmonthsShort%3DAi%2Ce%2EweekdaysMin%3Dji%2Ce%2EdefineLocale%3DI%2Ce%2EupdateLocale%3DN%2Ce%2Elocales%3Dz%2Ce%2EweekdaysShort%3DFi%2Ce%2EnormalizeUnits%3DA%2Ce%2ErelativeTimeThreshold%3Doo%2Ce%2Eprototype%3DIn%3Bvar%20rs%3De%3Breturn%20rs%7D%29%7D%29%2Ecall%28e%2Ci%284%29%28t%29%29%7D%2Cfunction%28t%2Ce%29%7Bt%2Eexports%3Dfunction%28t%29%7Breturn%20t%2EwebpackPolyfill%7C%7C%28t%2Edeprecate%3Dfunction%28%29%7B%7D%2Ct%2Epaths%3D%5B%5D%2Ct%2Echildren%3D%5B%5D%2Ct%2EwebpackPolyfill%3D1%29%2Ct%7D%7D%2Cfunction%28t%2Ce%29%7Bfunction%20i%28t%29%7Bthrow%20new%20Error%28%22Cannot%20find%20module%20%27%22%2Bt%2B%22%27%2E%22%29%7Di%2Ekeys%3Dfunction%28%29%7Breturn%5B%5D%7D%2Ci%2Eresolve%3Di%2Ct%2Eexports%3Di%2Ci%2Eid%3D5%7D%2Cfunction%28t%2Ce%29%7B%28function%28e%29%7Bfunction%20i%28t%2Ce%2Ci%29%7Bvar%20o%3De%26%26i%7C%7C0%2Cn%3D0%3Bfor%28e%3De%7C%7C%5B%5D%2Ct%2EtoLowerCase%28%29%2Ereplace%28%2F%5B0%2D9a%2Df%5D%7B2%7D%2Fg%2Cfunction%28t%29%7B16%3En%26%26%28e%5Bo%2Bn%2B%2B%5D%3Dc%5Bt%5D%29%7D%29%3B16%3En%3B%29e%5Bo%2Bn%2B%2B%5D%3D0%3Breturn%20e%7Dfunction%20o%28t%2Ce%29%7Bvar%20i%3De%7C%7C0%2Co%3Dl%3Breturn%20o%5Bt%5Bi%2B%2B%5D%5D%2Bo%5Bt%5Bi%2B%2B%5D%5D%2Bo%5Bt%5Bi%2B%2B%5D%5D%2Bo%5Bt%5Bi%2B%2B%5D%5D%2B%22%2D%22%2Bo%5Bt%5Bi%2B%2B%5D%5D%2Bo%5Bt%5Bi%2B%2B%5D%5D%2B%22%2D%22%2Bo%5Bt%5Bi%2B%2B%5D%5D%2Bo%5Bt%5Bi%2B%2B%5D%5D%2B%22%2D%22%2Bo%5Bt%5Bi%2B%2B%5D%5D%2Bo%5Bt%5Bi%2B%2B%5D%5D%2B%22%2D%22%2Bo%5Bt%5Bi%2B%2B%5D%5D%2Bo%5Bt%5Bi%2B%2B%5D%5D%2Bo%5Bt%5Bi%2B%2B%5D%5D%2Bo%5Bt%5Bi%2B%2B%5D%5D%2Bo%5Bt%5Bi%2B%2B%5D%5D%2Bo%5Bt%5Bi%2B%2B%5D%5D%7Dfunction%20n%28t%2Ce%2Ci%29%7Bvar%20n%3De%26%26i%7C%7C0%2Cs%3De%7C%7C%5B%5D%3Bt%3Dt%7C%7C%7B%7D%3Bvar%20r%3Dvoid%200%21%3D%3Dt%2Eclockseq%3Ft%2Eclockseq%3Am%2Ca%3Dvoid%200%21%3D%3Dt%2Emsecs%3Ft%2Emsecs%3A%28new%20Date%29%2EgetTime%28%29%2Ch%3Dvoid%200%21%3D%3Dt%2Ensecs%3Ft%2Ensecs%3Ag%2B1%2Cd%3Da%2Dv%2B%28h%2Dg%29%2F1e4%3Bif%280%3Ed%26%26void%200%3D%3D%3Dt%2Eclockseq%26%26%28r%3Dr%2B1%2616383%29%2C%280%3Ed%7C%7Ca%3Ev%29%26%26void%200%3D%3D%3Dt%2Ensecs%26%26%28h%3D0%29%2Ch%3E%3D1e4%29throw%20new%20Error%28%22uuid%2Ev1%28%29%3A%20Can%27t%20create%20more%20than%2010M%20uuids%2Fsec%22%29%3Bv%3Da%2Cg%3Dh%2Cm%3Dr%2Ca%2B%3D122192928e5%3Bvar%20l%3D%281e4%2A%28268435455%26a%29%2Bh%29%254294967296%3Bs%5Bn%2B%2B%5D%3Dl%3E%3E%3E24%26255%2Cs%5Bn%2B%2B%5D%3Dl%3E%3E%3E16%26255%2Cs%5Bn%2B%2B%5D%3Dl%3E%3E%3E8%26255%2Cs%5Bn%2B%2B%5D%3D255%26l%3Bvar%20c%3Da%2F4294967296%2A1e4%26268435455%3Bs%5Bn%2B%2B%5D%3Dc%3E%3E%3E8%26255%2Cs%5Bn%2B%2B%5D%3D255%26c%2Cs%5Bn%2B%2B%5D%3Dc%3E%3E%3E24%2615%7C16%2Cs%5Bn%2B%2B%5D%3Dc%3E%3E%3E16%26255%2Cs%5Bn%2B%2B%5D%3Dr%3E%3E%3E8%7C128%2Cs%5Bn%2B%2B%5D%3D255%26r%3Bfor%28var%20u%3Dt%2Enode%7C%7Cf%2Cp%3D0%3B6%3Ep%3Bp%2B%2B%29s%5Bn%2Bp%5D%3Du%5Bp%5D%3Breturn%20e%3Fe%3Ao%28s%29%7Dfunction%20s%28t%2Ce%2Ci%29%7Bvar%20n%3De%26%26i%7C%7C0%3B%22string%22%3D%3Dtypeof%20t%26%26%28e%3D%22binary%22%3D%3Dt%3Fnew%20Array%2816%29%3Anull%2Ct%3Dnull%29%2Ct%3Dt%7C%7C%7B%7D%3Bvar%20s%3Dt%2Erandom%7C%7C%28t%2Erng%7C%7Cr%29%28%29%3Bif%28s%5B6%5D%3D15%26s%5B6%5D%7C64%2Cs%5B8%5D%3D63%26s%5B8%5D%7C128%2Ce%29for%28var%20a%3D0%3B16%3Ea%3Ba%2B%2B%29e%5Bn%2Ba%5D%3Ds%5Ba%5D%3Breturn%20e%7C%7Co%28s%29%7Dvar%20r%2Ca%3D%22undefined%22%21%3Dtypeof%20window%3Fwindow%3A%22undefined%22%21%3Dtypeof%20e%3Fe%3Anull%3Bif%28a%26%26a%2Ecrypto%26%26crypto%2EgetRandomValues%29%7Bvar%20h%3Dnew%20Uint8Array%2816%29%3Br%3Dfunction%28%29%7Breturn%20crypto%2EgetRandomValues%28h%29%2Ch%7D%7Dif%28%21r%29%7Bvar%20d%3Dnew%20Array%2816%29%3Br%3Dfunction%28%29%7Bfor%28var%20t%2Ce%3D0%3B16%3Ee%3Be%2B%2B%290%3D%3D%3D%283%26e%29%26%26%28t%3D4294967296%2AMath%2Erandom%28%29%29%2Cd%5Be%5D%3Dt%3E%3E%3E%28%283%26e%29%3C%3C3%29%26255%3Breturn%20d%7D%7Dfor%28var%20l%3D%5B%5D%2Cc%3D%7B%7D%2Cu%3D0%3B256%3Eu%3Bu%2B%2B%29l%5Bu%5D%3D%28u%2B256%29%2EtoString%2816%29%2Esubstr%281%29%2Cc%5Bl%5Bu%5D%5D%3Du%3Bvar%20p%3Dr%28%29%2Cf%3D%5B1%7Cp%5B0%5D%2Cp%5B1%5D%2Cp%5B2%5D%2Cp%5B3%5D%2Cp%5B4%5D%2Cp%5B5%5D%5D%2Cm%3D16383%26%28p%5B6%5D%3C%3C8%7Cp%5B7%5D%29%2Cv%3D0%2Cg%3D0%2Cy%3Ds%3By%2Ev1%3Dn%2Cy%2Ev4%3Ds%2Cy%2Eparse%3Di%2Cy%2Eunparse%3Do%2Ct%2Eexports%3Dy%7D%29%2Ecall%28e%2Cfunction%28%29%7Breturn%20this%7D%28%29%29%7D%2Cfunction%28t%2Ce%2Ci%29%7Be%2Eutil%3Di%281%29%2Ce%2EDOMutil%3Di%288%29%2Ce%2EDataSet%3Di%289%29%2Ce%2EDataView%3Di%2811%29%2Ce%2EQueue%3Di%2810%29%2Ce%2EGraph3d%3Di%2812%29%2Ce%2Egraph3d%3D%7BCamera%3Ai%2816%29%2CFilter%3Ai%2817%29%2CPoint2d%3Ai%2815%29%2CPoint3d%3Ai%2814%29%2CSlider%3Ai%2818%29%2CStepNumber%3Ai%2819%29%7D%2Ce%2Emoment%3Di%282%29%2Ce%2EHammer%3Di%2820%29%2Ce%2Ekeycharm%3Di%2823%29%7D%2Cfunction%28t%2Ce%29%7Be%2EprepareElements%3Dfunction%28t%29%7Bfor%28var%20e%20in%20t%29t%2EhasOwnProperty%28e%29%26%26%28t%5Be%5D%2Eredundant%3Dt%5Be%5D%2Eused%2Ct%5Be%5D%2Eused%3D%5B%5D%29%7D%2Ce%2EcleanupElements%3Dfunction%28t%29%7Bfor%28var%20e%20in%20t%29if%28t%2EhasOwnProperty%28e%29%26%26t%5Be%5D%2Eredundant%29%7Bfor%28var%20i%3D0%3Bi%3Ct%5Be%5D%2Eredundant%2Elength%3Bi%2B%2B%29t%5Be%5D%2Eredundant%5Bi%5D%2EparentNode%2EremoveChild%28t%5Be%5D%2Eredundant%5Bi%5D%29%3Bt%5Be%5D%2Eredundant%3D%5B%5D%7D%7D%2Ce%2EresetElements%3Dfunction%28t%29%7Be%2EprepareElements%28t%29%2Ce%2EcleanupElements%28t%29%2Ce%2EprepareElements%28t%29%7D%2Ce%2EgetSVGElement%3Dfunction%28t%2Ce%2Ci%29%7Bvar%20o%3Breturn%20e%2EhasOwnProperty%28t%29%3Fe%5Bt%5D%2Eredundant%2Elength%3E0%3F%28o%3De%5Bt%5D%2Eredundant%5B0%5D%2Ce%5Bt%5D%2Eredundant%2Eshift%28%29%29%3A%28o%3Ddocument%2EcreateElementNS%28%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%2Ct%29%2Ci%2EappendChild%28o%29%29%3A%28o%3Ddocument%2EcreateElementNS%28%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F2000%2Fsvg%22%2Ct%29%2Ce%5Bt%5D%3D%7Bused%3A%5B%5D%2Credundant%3A%5B%5D%7D%2Ci%2EappendChild%28o%29%29%2Ce%5Bt%5D%2Eused%2Epush%28o%29%2Co%7D%2Ce%2EgetDOMElement%3Dfunction%28t%2Ce%2Ci%2Co%29%7Bvar%20n%3Breturn%20e%2EhasOwnProperty%28t%29%3Fe%5Bt%5D%2Eredundant%2Elength%3E0%3F%28n%3De%5Bt%5D%2Eredundant%5B0%5D%2Ce%5Bt%5D%2Eredundant%2Eshift%28%29%29%3A%28n%3Ddocument%2EcreateElement%28t%29%2Cvoid%200%21%3D%3Do%3Fi%2EinsertBefore%28n%2Co%29%3Ai%2EappendChild%28n%29%29%3A%28n%3Ddocument%2EcreateElement%28t%29%2Ce%5Bt%5D%3D%7Bused%3A%5B%5D%2Credundant%3A%5B%5D%7D%2Cvoid%200%21%3D%3Do%3Fi%2EinsertBefore%28n%2Co%29%3Ai%2EappendChild%28n%29%29%2Ce%5Bt%5D%2Eused%2Epush%28n%29%2Cn%7D%2Ce%2EdrawPoint%3Dfunction%28t%2Ci%2Co%2Cn%2Cs%2Cr%29%7Bvar%20a%3Bif%28%22circle%22%3D%3Do%2Estyle%3F%28a%3De%2EgetSVGElement%28%22circle%22%2Cn%2Cs%29%2Ca%2EsetAttributeNS%28null%2C%22cx%22%2Ct%29%2Ca%2EsetAttributeNS%28null%2C%22cy%22%2Ci%29%2Ca%2EsetAttributeNS%28null%2C%22r%22%2C%2E5%2Ao%2Esize%29%29%3A%28a%3De%2EgetSVGElement%28%22rect%22%2Cn%2Cs%29%2Ca%2EsetAttributeNS%28null%2C%22x%22%2Ct%2D%2E5%2Ao%2Esize%29%2Ca%2EsetAttributeNS%28null%2C%22y%22%2Ci%2D%2E5%2Ao%2Esize%29%2Ca%2EsetAttributeNS%28null%2C%22width%22%2Co%2Esize%29%2Ca%2EsetAttributeNS%28null%2C%22height%22%2Co%2Esize%29%29%2Cvoid%200%21%3D%3Do%2Estyles%26%26a%2EsetAttributeNS%28null%2C%22style%22%2Co%2Estyles%29%2Ca%2EsetAttributeNS%28null%2C%22class%22%2Co%2EclassName%2B%22%20vis%2Dpoint%22%29%2Cr%29%7Bvar%20h%3De%2EgetSVGElement%28%22text%22%2Cn%2Cs%29%3B%0Ar%2ExOffset%26%26%28t%2B%3Dr%2ExOffset%29%2Cr%2EyOffset%26%26%28i%2B%3Dr%2EyOffset%29%2Cr%2Econtent%26%26%28h%2EtextContent%3Dr%2Econtent%29%2Cr%2EclassName%26%26h%2EsetAttributeNS%28null%2C%22class%22%2Cr%2EclassName%2B%22%20vis%2Dlabel%22%29%2Ch%2EsetAttributeNS%28null%2C%22x%22%2Ct%29%2Ch%2EsetAttributeNS%28null%2C%22y%22%2Ci%29%7Dreturn%20a%7D%2Ce%2EdrawBar%3Dfunction%28t%2Ci%2Co%2Cn%2Cs%2Cr%2Ca%2Ch%29%7Bif%280%21%3Dn%29%7B0%3En%26%26%28n%2A%3D%2D1%2Ci%2D%3Dn%29%3Bvar%20d%3De%2EgetSVGElement%28%22rect%22%2Cr%2Ca%29%3Bd%2EsetAttributeNS%28null%2C%22x%22%2Ct%2D%2E5%2Ao%29%2Cd%2EsetAttributeNS%28null%2C%22y%22%2Ci%29%2Cd%2EsetAttributeNS%28null%2C%22width%22%2Co%29%2Cd%2EsetAttributeNS%28null%2C%22height%22%2Cn%29%2Cd%2EsetAttributeNS%28null%2C%22class%22%2Cs%29%2Ch%26%26d%2EsetAttributeNS%28null%2C%22style%22%2Ch%29%7D%7D%7D%2Cfunction%28t%2Ce%2Ci%29%7Bfunction%20o%28t%2Ce%29%7Bif%28t%26%26%21Array%2EisArray%28t%29%26%26%28e%3Dt%2Ct%3Dnull%29%2Cthis%2E%5Foptions%3De%7C%7C%7B%7D%2Cthis%2E%5Fdata%3D%7B%7D%2Cthis%2Elength%3D0%2Cthis%2E%5FfieldId%3Dthis%2E%5Foptions%2EfieldId%7C%7C%22id%22%2Cthis%2E%5Ftype%3D%7B%7D%2Cthis%2E%5Foptions%2Etype%29for%28var%20i%3DObject%2Ekeys%28this%2E%5Foptions%2Etype%29%2Co%3D0%2Cn%3Di%2Elength%3Bn%3Eo%3Bo%2B%2B%29%7Bvar%20s%3Di%5Bo%5D%2Cr%3Dthis%2E%5Foptions%2Etype%5Bs%5D%3B%22Date%22%3D%3Dr%7C%7C%22ISODate%22%3D%3Dr%7C%7C%22ASPDate%22%3D%3Dr%3Fthis%2E%5Ftype%5Bs%5D%3D%22Date%22%3Athis%2E%5Ftype%5Bs%5D%3Dr%7Dif%28this%2E%5Foptions%2Econvert%29throw%20new%20Error%28%27Option%20%22convert%22%20is%20deprecated%2E%20Use%20%22type%22%20instead%2E%27%29%3Bthis%2E%5Fsubscribers%3D%7B%7D%2Ct%26%26this%2Eadd%28t%29%2Cthis%2EsetOptions%28e%29%7Dvar%20n%3D%22function%22%3D%3Dtypeof%20Symbol%26%26%22symbol%22%3D%3Dtypeof%20Symbol%2Eiterator%3Ffunction%28t%29%7Breturn%20typeof%20t%7D%3Afunction%28t%29%7Breturn%20t%26%26%22function%22%3D%3Dtypeof%20Symbol%26%26t%2Econstructor%3D%3D%3DSymbol%3F%22symbol%22%3Atypeof%20t%7D%2Cs%3Di%281%29%2Cr%3Di%2810%29%3Bo%2Eprototype%2EsetOptions%3Dfunction%28t%29%7Bt%26%26void%200%21%3D%3Dt%2Equeue%26%26%28t%2Equeue%3D%3D%3D%211%3Fthis%2E%5Fqueue%26%26%28this%2E%5Fqueue%2Edestroy%28%29%2Cdelete%20this%2E%5Fqueue%29%3A%28this%2E%5Fqueue%7C%7C%28this%2E%5Fqueue%3Dr%2Eextend%28this%2C%7Breplace%3A%5B%22add%22%2C%22update%22%2C%22remove%22%5D%7D%29%29%2C%22object%22%3D%3D%3Dn%28t%2Equeue%29%26%26this%2E%5Fqueue%2EsetOptions%28t%2Equeue%29%29%29%7D%2Co%2Eprototype%2Eon%3Dfunction%28t%2Ce%29%7Bvar%20i%3Dthis%2E%5Fsubscribers%5Bt%5D%3Bi%7C%7C%28i%3D%5B%5D%2Cthis%2E%5Fsubscribers%5Bt%5D%3Di%29%2Ci%2Epush%28%7Bcallback%3Ae%7D%29%7D%2Co%2Eprototype%2Esubscribe%3Dfunction%28%29%7Bthrow%20new%20Error%28%22DataSet%2Esubscribe%20is%20deprecated%2E%20Use%20DataSet%2Eon%20instead%2E%22%29%7D%2Co%2Eprototype%2Eoff%3Dfunction%28t%2Ce%29%7Bvar%20i%3Dthis%2E%5Fsubscribers%5Bt%5D%3Bi%26%26%28this%2E%5Fsubscribers%5Bt%5D%3Di%2Efilter%28function%28t%29%7Breturn%20t%2Ecallback%21%3De%7D%29%29%7D%2Co%2Eprototype%2Eunsubscribe%3Dfunction%28%29%7Bthrow%20new%20Error%28%22DataSet%2Eunsubscribe%20is%20deprecated%2E%20Use%20DataSet%2Eoff%20instead%2E%22%29%7D%2Co%2Eprototype%2E%5Ftrigger%3Dfunction%28t%2Ce%2Ci%29%7Bif%28%22%2A%22%3D%3Dt%29throw%20new%20Error%28%22Cannot%20trigger%20event%20%2A%22%29%3Bvar%20o%3D%5B%5D%3Bt%20in%20this%2E%5Fsubscribers%26%26%28o%3Do%2Econcat%28this%2E%5Fsubscribers%5Bt%5D%29%29%2C%22%2A%22in%20this%2E%5Fsubscribers%26%26%28o%3Do%2Econcat%28this%2E%5Fsubscribers%5B%22%2A%22%5D%29%29%3Bfor%28var%20n%3D0%2Cs%3Do%2Elength%3Bs%3En%3Bn%2B%2B%29%7Bvar%20r%3Do%5Bn%5D%3Br%2Ecallback%26%26r%2Ecallback%28t%2Ce%2Ci%7C%7Cnull%29%7D%7D%2Co%2Eprototype%2Eadd%3Dfunction%28t%2Ce%29%7Bvar%20i%2Co%3D%5B%5D%2Cn%3Dthis%3Bif%28Array%2EisArray%28t%29%29for%28var%20s%3D0%2Cr%3Dt%2Elength%3Br%3Es%3Bs%2B%2B%29i%3Dn%2E%5FaddItem%28t%5Bs%5D%29%2Co%2Epush%28i%29%3Belse%7Bif%28%21%28t%20instanceof%20Object%29%29throw%20new%20Error%28%22Unknown%20dataType%22%29%3Bi%3Dn%2E%5FaddItem%28t%29%2Co%2Epush%28i%29%7Dreturn%20o%2Elength%26%26this%2E%5Ftrigger%28%22add%22%2C%7Bitems%3Ao%7D%2Ce%29%2Co%7D%2Co%2Eprototype%2Eupdate%3Dfunction%28t%2Ce%29%7Bvar%20i%3D%5B%5D%2Co%3D%5B%5D%2Cn%3D%5B%5D%2Cr%3D%5B%5D%2Ca%3Dthis%2Ch%3Da%2E%5FfieldId%2Cd%3Dfunction%28t%29%7Bvar%20e%3Dt%5Bh%5D%3Bif%28a%2E%5Fdata%5Be%5D%29%7Bvar%20d%3Ds%2Eextend%28%7B%7D%2Ca%2E%5Fdata%5Be%5D%29%3Be%3Da%2E%5FupdateItem%28t%29%2Co%2Epush%28e%29%2Cr%2Epush%28t%29%2Cn%2Epush%28d%29%7Delse%20e%3Da%2E%5FaddItem%28t%29%2Ci%2Epush%28e%29%7D%3Bif%28Array%2EisArray%28t%29%29for%28var%20l%3D0%2Cc%3Dt%2Elength%3Bc%3El%3Bl%2B%2B%29t%5Bl%5Dinstanceof%20Object%3Fd%28t%5Bl%5D%29%3Aconsole%2Ewarn%28%22Ignoring%20input%20item%2C%20which%20is%20not%20an%20object%20at%20index%20%22%2Bl%29%3Belse%7Bif%28%21%28t%20instanceof%20Object%29%29throw%20new%20Error%28%22Unknown%20dataType%22%29%3Bd%28t%29%7Dif%28i%2Elength%26%26this%2E%5Ftrigger%28%22add%22%2C%7Bitems%3Ai%7D%2Ce%29%2Co%2Elength%29%7Bvar%20u%3D%7Bitems%3Ao%2ColdData%3An%2Cdata%3Ar%7D%3Bthis%2E%5Ftrigger%28%22update%22%2Cu%2Ce%29%7Dreturn%20i%2Econcat%28o%29%7D%2Co%2Eprototype%2Eget%3Dfunction%28t%29%7Bvar%20e%2Ci%2Co%2Cn%3Dthis%2Cr%3Ds%2EgetType%28arguments%5B0%5D%29%3B%22String%22%3D%3Dr%7C%7C%22Number%22%3D%3Dr%3F%28e%3Darguments%5B0%5D%2Co%3Darguments%5B1%5D%29%3A%22Array%22%3D%3Dr%3F%28i%3Darguments%5B0%5D%2Co%3Darguments%5B1%5D%29%3Ao%3Darguments%5B0%5D%3Bvar%20a%3Bif%28o%26%26o%2EreturnType%29%7Bvar%20h%3D%5B%22Array%22%2C%22Object%22%5D%3Ba%3D%2D1%3D%3Dh%2EindexOf%28o%2EreturnType%29%3F%22Array%22%3Ao%2EreturnType%7Delse%20a%3D%22Array%22%3Bvar%20d%2Cl%2Cc%2Cu%2Cp%2Cf%3Do%26%26o%2Etype%7C%7Cthis%2E%5Foptions%2Etype%2Cm%3Do%26%26o%2Efilter%2Cv%3D%5B%5D%3Bif%28void%200%21%3De%29d%3Dn%2E%5FgetItem%28e%2Cf%29%2Cd%26%26m%26%26%21m%28d%29%26%26%28d%3Dnull%29%3Belse%20if%28void%200%21%3Di%29for%28u%3D0%2Cp%3Di%2Elength%3Bp%3Eu%3Bu%2B%2B%29d%3Dn%2E%5FgetItem%28i%5Bu%5D%2Cf%29%2Cm%26%26%21m%28d%29%7C%7Cv%2Epush%28d%29%3Belse%20for%28l%3DObject%2Ekeys%28this%2E%5Fdata%29%2Cu%3D0%2Cp%3Dl%2Elength%3Bp%3Eu%3Bu%2B%2B%29c%3Dl%5Bu%5D%2Cd%3Dn%2E%5FgetItem%28c%2Cf%29%2Cm%26%26%21m%28d%29%7C%7Cv%2Epush%28d%29%3Bif%28o%26%26o%2Eorder%26%26void%200%3D%3De%26%26this%2E%5Fsort%28v%2Co%2Eorder%29%2Co%26%26o%2Efields%29%7Bvar%20g%3Do%2Efields%3Bif%28void%200%21%3De%29d%3Dthis%2E%5FfilterFields%28d%2Cg%29%3Belse%20for%28u%3D0%2Cp%3Dv%2Elength%3Bp%3Eu%3Bu%2B%2B%29v%5Bu%5D%3Dthis%2E%5FfilterFields%28v%5Bu%5D%2Cg%29%7Dif%28%22Object%22%3D%3Da%29%7Bvar%20y%2Cb%3D%7B%7D%3Bfor%28u%3D0%2Cp%3Dv%2Elength%3Bp%3Eu%3Bu%2B%2B%29y%3Dv%5Bu%5D%2Cb%5By%2Eid%5D%3Dy%3Breturn%20b%7Dreturn%20void%200%21%3De%3Fd%3Av%7D%2Co%2Eprototype%2EgetIds%3Dfunction%28t%29%7Bvar%20e%2Ci%2Co%2Cn%2Cs%2Cr%3Dthis%2E%5Fdata%2Ca%3Dt%26%26t%2Efilter%2Ch%3Dt%26%26t%2Eorder%2Cd%3Dt%26%26t%2Etype%7C%7Cthis%2E%5Foptions%2Etype%2Cl%3DObject%2Ekeys%28r%29%2Cc%3D%5B%5D%3Bif%28a%29if%28h%29%7Bfor%28s%3D%5B%5D%2Ce%3D0%2Ci%3Dl%2Elength%3Bi%3Ee%3Be%2B%2B%29o%3Dl%5Be%5D%2Cn%3Dthis%2E%5FgetItem%28o%2Cd%29%2Ca%28n%29%26%26s%2Epush%28n%29%3Bfor%28this%2E%5Fsort%28s%2Ch%29%2Ce%3D0%2Ci%3Ds%2Elength%3Bi%3Ee%3Be%2B%2B%29c%2Epush%28s%5Be%5D%5Bthis%2E%5FfieldId%5D%29%7Delse%20for%28e%3D0%2Ci%3Dl%2Elength%3Bi%3Ee%3Be%2B%2B%29o%3Dl%5Be%5D%2Cn%3Dthis%2E%5FgetItem%28o%2Cd%29%2Ca%28n%29%26%26c%2Epush%28n%5Bthis%2E%5FfieldId%5D%29%3Belse%20if%28h%29%7Bfor%28s%3D%5B%5D%2Ce%3D0%2Ci%3Dl%2Elength%3Bi%3Ee%3Be%2B%2B%29o%3Dl%5Be%5D%2Cs%2Epush%28r%5Bo%5D%29%3Bfor%28this%2E%5Fsort%28s%2Ch%29%2Ce%3D0%2Ci%3Ds%2Elength%3Bi%3Ee%3Be%2B%2B%29c%2Epush%28s%5Be%5D%5Bthis%2E%5FfieldId%5D%29%7Delse%20for%28e%3D0%2Ci%3Dl%2Elength%3Bi%3Ee%3Be%2B%2B%29o%3Dl%5Be%5D%2Cn%3Dr%5Bo%5D%2Cc%2Epush%28n%5Bthis%2E%5FfieldId%5D%29%3Breturn%20c%7D%2Co%2Eprototype%2EgetDataSet%3Dfunction%28%29%7Breturn%20this%7D%2Co%2Eprototype%2EforEach%3Dfunction%28t%2Ce%29%7Bvar%20i%2Co%2Cn%2Cs%2Cr%3De%26%26e%2Efilter%2Ca%3De%26%26e%2Etype%7C%7Cthis%2E%5Foptions%2Etype%2Ch%3Dthis%2E%5Fdata%2Cd%3DObject%2Ekeys%28h%29%3Bif%28e%26%26e%2Eorder%29%7Bvar%20l%3Dthis%2Eget%28e%29%3Bfor%28i%3D0%2Co%3Dl%2Elength%3Bo%3Ei%3Bi%2B%2B%29n%3Dl%5Bi%5D%2Cs%3Dn%5Bthis%2E%5FfieldId%5D%2Ct%28n%2Cs%29%7Delse%20for%28i%3D0%2Co%3Dd%2Elength%3Bo%3Ei%3Bi%2B%2B%29s%3Dd%5Bi%5D%2Cn%3Dthis%2E%5FgetItem%28s%2Ca%29%2Cr%26%26%21r%28n%29%7C%7Ct%28n%2Cs%29%7D%2Co%2Eprototype%2Emap%3Dfunction%28t%2Ce%29%7Bvar%20i%2Co%2Cn%2Cs%2Cr%3De%26%26e%2Efilter%2Ca%3De%26%26e%2Etype%7C%7Cthis%2E%5Foptions%2Etype%2Ch%3D%5B%5D%2Cd%3Dthis%2E%5Fdata%2Cl%3DObject%2Ekeys%28d%29%3Bfor%28i%3D0%2Co%3Dl%2Elength%3Bo%3Ei%3Bi%2B%2B%29n%3Dl%5Bi%5D%2Cs%3Dthis%2E%5FgetItem%28n%2Ca%29%2Cr%26%26%21r%28s%29%7C%7Ch%2Epush%28t%28s%2Cn%29%29%3Breturn%20e%26%26e%2Eorder%26%26this%2E%5Fsort%28h%2Ce%2Eorder%29%2Ch%7D%2Co%2Eprototype%2E%5FfilterFields%3Dfunction%28t%2Ce%29%7Bif%28%21t%29return%20t%3Bvar%20i%2Co%2Cn%3D%7B%7D%2Cs%3DObject%2Ekeys%28t%29%2Cr%3Ds%2Elength%3Bif%28Array%2EisArray%28e%29%29for%28i%3D0%3Br%3Ei%3Bi%2B%2B%29o%3Ds%5Bi%5D%2C%2D1%21%3De%2EindexOf%28o%29%26%26%28n%5Bo%5D%3Dt%5Bo%5D%29%3Belse%20for%28i%3D0%3Br%3Ei%3Bi%2B%2B%29o%3Ds%5Bi%5D%2Ce%2EhasOwnProperty%28o%29%26%26%28n%5Be%5Bo%5D%5D%3Dt%5Bo%5D%29%3Breturn%20n%7D%2Co%2Eprototype%2E%5Fsort%3Dfunction%28t%2Ce%29%7Bif%28s%2EisString%28e%29%29%7Bvar%20i%3De%3Bt%2Esort%28function%28t%2Ce%29%7Bvar%20o%3Dt%5Bi%5D%2Cn%3De%5Bi%5D%3Breturn%20o%3En%3F1%3An%3Eo%3F%2D1%3A0%7D%29%7Delse%7Bif%28%22function%22%21%3Dtypeof%20e%29throw%20new%20TypeError%28%22Order%20must%20be%20a%20function%20or%20a%20string%22%29%3Bt%2Esort%28e%29%7D%7D%2Co%2Eprototype%2Eremove%3Dfunction%28t%2Ce%29%7Bvar%20i%2Co%2Cn%2Cs%3D%5B%5D%3Bif%28Array%2EisArray%28t%29%29for%28i%3D0%2Co%3Dt%2Elength%3Bo%3Ei%3Bi%2B%2B%29n%3Dthis%2E%5Fremove%28t%5Bi%5D%29%2Cnull%21%3Dn%26%26s%2Epush%28n%29%3Belse%20n%3Dthis%2E%5Fremove%28t%29%2Cnull%21%3Dn%26%26s%2Epush%28n%29%3Breturn%20s%2Elength%26%26this%2E%5Ftrigger%28%22remove%22%2C%7Bitems%3As%7D%2Ce%29%2Cs%7D%2Co%2Eprototype%2E%5Fremove%3Dfunction%28t%29%7Bif%28s%2EisNumber%28t%29%7C%7Cs%2EisString%28t%29%29%7Bif%28this%2E%5Fdata%5Bt%5D%29return%20delete%20this%2E%5Fdata%5Bt%5D%2Cthis%2Elength%2D%2D%2Ct%7Delse%20if%28t%20instanceof%20Object%29%7Bvar%20e%3Dt%5Bthis%2E%5FfieldId%5D%3Bif%28void%200%21%3D%3De%26%26this%2E%5Fdata%5Be%5D%29return%20delete%20this%2E%5Fdata%5Be%5D%2Cthis%2Elength%2D%2D%2Ce%7Dreturn%20null%7D%2Co%2Eprototype%2Eclear%3Dfunction%28t%29%7Bvar%20e%3DObject%2Ekeys%28this%2E%5Fdata%29%3Breturn%20this%2E%5Fdata%3D%7B%7D%2Cthis%2Elength%3D0%2Cthis%2E%5Ftrigger%28%22remove%22%2C%7Bitems%3Ae%7D%2Ct%29%2Ce%7D%2Co%2Eprototype%2Emax%3Dfunction%28t%29%7Bvar%20e%2Ci%2Co%3Dthis%2E%5Fdata%2Cn%3DObject%2Ekeys%28o%29%2Cs%3Dnull%2Cr%3Dnull%3Bfor%28e%3D0%2Ci%3Dn%2Elength%3Bi%3Ee%3Be%2B%2B%29%7Bvar%20a%3Dn%5Be%5D%2Ch%3Do%5Ba%5D%2Cd%3Dh%5Bt%5D%3Bnull%21%3Dd%26%26%28%21s%7C%7Cd%3Er%29%26%26%28s%3Dh%2Cr%3Dd%29%7Dreturn%20s%7D%2Co%2Eprototype%2Emin%3Dfunction%28t%29%7Bvar%20e%2Ci%2Co%3Dthis%2E%5Fdata%2Cn%3DObject%2Ekeys%28o%29%2Cs%3Dnull%2Cr%3Dnull%3Bfor%28e%3D0%2Ci%3Dn%2Elength%3Bi%3Ee%3Be%2B%2B%29%7Bvar%20a%3Dn%5Be%5D%2Ch%3Do%5Ba%5D%2Cd%3Dh%5Bt%5D%3Bnull%21%3Dd%26%26%28%21s%7C%7Cr%3Ed%29%26%26%28s%3Dh%2Cr%3Dd%29%7Dreturn%20s%7D%2Co%2Eprototype%2Edistinct%3Dfunction%28t%29%7Bvar%20e%2Ci%2Co%2Cn%3Dthis%2E%5Fdata%2Cr%3DObject%2Ekeys%28n%29%2Ca%3D%5B%5D%2Ch%3Dthis%2E%5Foptions%2Etype%26%26this%2E%5Foptions%2Etype%5Bt%5D%7C%7Cnull%2Cd%3D0%3Bfor%28e%3D0%2Co%3Dr%2Elength%3Bo%3Ee%3Be%2B%2B%29%7Bvar%20l%3Dr%5Be%5D%2Cc%3Dn%5Bl%5D%2Cu%3Dc%5Bt%5D%2Cp%3D%211%3Bfor%28i%3D0%3Bd%3Ei%3Bi%2B%2B%29if%28a%5Bi%5D%3D%3Du%29%7Bp%3D%210%3Bbreak%7Dp%7C%7Cvoid%200%3D%3D%3Du%7C%7C%28a%5Bd%5D%3Du%2Cd%2B%2B%29%7Dif%28h%29for%28e%3D0%2Co%3Da%2Elength%3Bo%3Ee%3Be%2B%2B%29a%5Be%5D%3Ds%2Econvert%28a%5Be%5D%2Ch%29%3Breturn%20a%7D%2Co%2Eprototype%2E%5FaddItem%3Dfunction%28t%29%7Bvar%20e%3Dt%5Bthis%2E%5FfieldId%5D%3Bif%28void%200%21%3De%29%7Bif%28this%2E%5Fdata%5Be%5D%29throw%20new%20Error%28%22Cannot%20add%20item%3A%20item%20with%20id%20%22%2Be%2B%22%20already%20exists%22%29%7Delse%20e%3Ds%2ErandomUUID%28%29%2Ct%5Bthis%2E%5FfieldId%5D%3De%3Bvar%20i%2Co%2Cn%3D%7B%7D%2Cr%3DObject%2Ekeys%28t%29%3Bfor%28i%3D0%2Co%3Dr%2Elength%3Bo%3Ei%3Bi%2B%2B%29%7Bvar%20a%3Dr%5Bi%5D%2Ch%3Dthis%2E%5Ftype%5Ba%5D%3Bn%5Ba%5D%3Ds%2Econvert%28t%5Ba%5D%2Ch%29%7Dreturn%20this%2E%5Fdata%5Be%5D%3Dn%2Cthis%2Elength%2B%2B%2Ce%7D%2Co%2Eprototype%2E%5FgetItem%3Dfunction%28t%2Ce%29%7Bvar%20i%2Co%2Cn%2Cr%2Ca%3Dthis%2E%5Fdata%5Bt%5D%3Bif%28%21a%29return%20null%3Bvar%20h%3D%7B%7D%2Cd%3DObject%2Ekeys%28a%29%3Bif%28e%29for%28n%3D0%2Cr%3Dd%2Elength%3Br%3En%3Bn%2B%2B%29i%3Dd%5Bn%5D%2Co%3Da%5Bi%5D%2Ch%5Bi%5D%3Ds%2Econvert%28o%2Ce%5Bi%5D%29%3Belse%20for%28n%3D0%2Cr%3Dd%2Elength%3Br%3En%3Bn%2B%2B%29i%3Dd%5Bn%5D%2Co%3Da%5Bi%5D%2Ch%5Bi%5D%3Do%3Breturn%20h%7D%2Co%2Eprototype%2E%5FupdateItem%3Dfunction%28t%29%7Bvar%20e%3Dt%5Bthis%2E%5FfieldId%5D%3Bif%28void%200%3D%3De%29throw%20new%20Error%28%22Cannot%20update%20item%3A%20item%20has%20no%20id%20%28item%3A%20%22%2BJSON%2Estringify%28t%29%2B%22%29%22%29%3Bvar%20i%3Dthis%2E%5Fdata%5Be%5D%3Bif%28%21i%29throw%20new%20Error%28%22Cannot%20update%20item%3A%20no%20item%20with%20id%20%22%2Be%2B%22%20found%22%29%3Bfor%28var%20o%3DObject%2Ekeys%28t%29%2Cn%3D0%2Cr%3Do%2Elength%3Br%3En%3Bn%2B%2B%29%7Bvar%20a%3Do%5Bn%5D%2Ch%3Dthis%2E%5Ftype%5Ba%5D%3Bi%5Ba%5D%3Ds%2Econvert%28t%5Ba%5D%2Ch%29%7Dreturn%20e%7D%2Ct%2Eexports%3Do%7D%2Cfunction%28t%2Ce%29%7Bfunction%20i%28t%29%7Bthis%2Edelay%3Dnull%2Cthis%2Emax%3D1%2F0%2Cthis%2E%5Fqueue%3D%5B%5D%2Cthis%2E%5Ftimeout%3Dnull%2Cthis%2E%5Fextended%3Dnull%2Cthis%2EsetOptions%28t%29%7Di%2Eprototype%2EsetOptions%3Dfunction%28t%29%7Bt%26%26%22undefined%22%21%3Dtypeof%20t%2Edelay%26%26%28this%2Edelay%3Dt%2Edelay%29%2Ct%26%26%22undefined%22%21%3Dtypeof%20t%2Emax%26%26%28this%2Emax%3Dt%2Emax%29%2Cthis%2E%5FflushIfNeeded%28%29%7D%2Ci%2Eextend%3Dfunction%28t%2Ce%29%7Bvar%20o%3Dnew%20i%28e%29%3Bif%28void%200%21%3D%3Dt%2Eflush%29throw%20new%20Error%28%22Target%20object%20already%20has%20a%20property%20flush%22%29%3Bt%2Eflush%3Dfunction%28%29%7Bo%2Eflush%28%29%7D%3Bvar%20n%3D%5B%7Bname%3A%22flush%22%2Coriginal%3Avoid%200%7D%5D%3Bif%28e%26%26e%2Ereplace%29for%28var%20s%3D0%3Bs%3Ce%2Ereplace%2Elength%3Bs%2B%2B%29%7Bvar%20r%3De%2Ereplace%5Bs%5D%3Bn%2Epush%28%7Bname%3Ar%2Coriginal%3At%5Br%5D%7D%29%2Co%2Ereplace%28t%2Cr%29%7Dreturn%20o%2E%5Fextended%3D%7Bobject%3At%2Cmethods%3An%7D%2Co%7D%2Ci%2Eprototype%2Edestroy%3Dfunction%28%29%7Bif%28this%2Eflush%28%29%2Cthis%2E%5Fextended%29%7Bfor%28var%20t%3Dthis%2E%5Fextended%2Eobject%2Ce%3Dthis%2E%5Fextended%2Emethods%2Ci%3D0%3Bi%3Ce%2Elength%3Bi%2B%2B%29%7Bvar%20o%3De%5Bi%5D%3Bo%2Eoriginal%3Ft%5Bo%2Ename%5D%3Do%2Eoriginal%3Adelete%20t%5Bo%2Ename%5D%7Dthis%2E%5Fextended%3Dnull%7D%7D%2Ci%2Eprototype%2Ereplace%3Dfunction%28t%2Ce%29%7Bvar%20i%3Dthis%2Co%3Dt%5Be%5D%3Bif%28%21o%29throw%20new%20Error%28%22Method%20%22%2Be%2B%22%20undefined%22%29%3Bt%5Be%5D%3Dfunction%28%29%7Bfor%28var%20t%3D%5B%5D%2Ce%3D0%3Be%3Carguments%2Elength%3Be%2B%2B%29t%5Be%5D%3Darguments%5Be%5D%3Bi%2Equeue%28%7Bargs%3At%2Cfn%3Ao%2Ccontext%3Athis%7D%29%7D%7D%2Ci%2Eprototype%2Equeue%3Dfunction%28t%29%7B%22function%22%3D%3Dtypeof%20t%3Fthis%2E%5Fqueue%2Epush%28%7Bfn%3At%7D%29%3Athis%2E%5Fqueue%2Epush%28t%29%2Cthis%2E%5FflushIfNeeded%28%29%7D%2Ci%2Eprototype%2E%5FflushIfNeeded%3Dfunction%28%29%7Bif%28this%2E%5Fqueue%2Elength%3Ethis%2Emax%26%26this%2Eflush%28%29%2CclearTimeout%28this%2E%5Ftimeout%29%2Cthis%2Equeue%2Elength%3E0%26%26%22number%22%3D%3Dtypeof%20this%2Edelay%29%7Bvar%20t%3Dthis%3Bthis%2E%5Ftimeout%3DsetTimeout%28function%28%29%7Bt%2Eflush%28%29%7D%2Cthis%2Edelay%29%7D%7D%2Ci%2Eprototype%2Eflush%3Dfunction%28%29%7Bfor%28%3Bthis%2E%5Fqueue%2Elength%3E0%3B%29%7Bvar%20t%3Dthis%2E%5Fqueue%2Eshift%28%29%3Bt%2Efn%2Eapply%28t%2Econtext%7C%7Ct%2Efn%2Ct%2Eargs%7C%7C%5B%5D%29%7D%7D%2Ct%2Eexports%3Di%7D%2Cfunction%28t%2Ce%2Ci%29%7Bfunction%20o%28t%2Ce%29%7Bthis%2E%5Fdata%3Dnull%2Cthis%2E%5Fids%3D%7B%7D%2Cthis%2Elength%3D0%2Cthis%2E%5Foptions%3De%7C%7C%7B%7D%2Cthis%2E%5FfieldId%3D%22id%22%2Cthis%2E%5Fsubscribers%3D%7B%7D%3Bvar%20i%3Dthis%3Bthis%2Elistener%3Dfunction%28%29%7Bi%2E%5FonEvent%2Eapply%28i%2Carguments%29%7D%2Cthis%2EsetData%28t%29%7Dvar%20n%3Di%281%29%2Cs%3Di%289%29%3Bo%2Eprototype%2EsetData%3Dfunction%28t%29%7Bvar%20e%2Ci%2Co%2Cn%3Bif%28this%2E%5Fdata%26%26%28this%2E%5Fdata%2Eoff%26%26this%2E%5Fdata%2Eoff%28%22%2A%22%2Cthis%2Elistener%29%2Ce%3DObject%2Ekeys%28this%2E%5Fids%29%2Cthis%2E%5Fids%3D%7B%7D%2Cthis%2Elength%3D0%2Cthis%2E%5Ftrigger%28%22remove%22%2C%7Bitems%3Ae%7D%29%29%2Cthis%2E%5Fdata%3Dt%2Cthis%2E%5Fdata%29%7Bfor%28this%2E%5FfieldId%3Dthis%2E%5Foptions%2EfieldId%7C%7Cthis%2E%5Fdata%26%26this%2E%5Fdata%2Eoptions%26%26this%2E%5Fdata%2Eoptions%2EfieldId%7C%7C%22id%22%2Ce%3Dthis%2E%5Fdata%2EgetIds%28%7Bfilter%3Athis%2E%5Foptions%26%26this%2E%5Foptions%2Efilter%7D%29%2Co%3D0%2Cn%3De%2Elength%3Bn%3Eo%3Bo%2B%2B%29i%3De%5Bo%5D%2Cthis%2E%5Fids%5Bi%5D%3D%210%3Bthis%2Elength%3De%2Elength%2Cthis%2E%5Ftrigger%28%22add%22%2C%7Bitems%3Ae%7D%29%2Cthis%2E%5Fdata%2Eon%26%26this%2E%5Fdata%2Eon%28%22%2A%22%2Cthis%2Elistener%29%7D%7D%2Co%2Eprototype%2Erefresh%3Dfunction%28%29%7Bvar%20t%2Ce%2Ci%2Co%3Dthis%2E%5Fdata%2EgetIds%28%7Bfilter%3Athis%2E%5Foptions%26%26this%2E%5Foptions%2Efilter%7D%29%2Cn%3DObject%2Ekeys%28this%2E%5Fids%29%2Cs%3D%7B%7D%2Cr%3D%5B%5D%2Ca%3D%5B%5D%3Bfor%28e%3D0%2Ci%3Do%2Elength%3Bi%3Ee%3Be%2B%2B%29t%3Do%5Be%5D%2Cs%5Bt%5D%3D%210%2Cthis%2E%5Fids%5Bt%5D%7C%7C%28r%2Epush%28t%29%2Cthis%2E%5Fids%5Bt%5D%3D%210%29%3Bfor%28e%3D0%2Ci%3Dn%2Elength%3Bi%3Ee%3Be%2B%2B%29t%3Dn%5Be%5D%2Cs%5Bt%5D%7C%7C%28a%2Epush%28t%29%2Cdelete%20this%2E%5Fids%5Bt%5D%29%3Bthis%2Elength%2B%3Dr%2Elength%2Da%2Elength%2Cr%2Elength%26%26this%2E%5Ftrigger%28%22add%22%2C%7Bitems%3Ar%7D%29%2Ca%2Elength%26%26this%2E%5Ftrigger%28%22remove%22%2C%7Bitems%3Aa%7D%29%7D%2Co%2Eprototype%2Eget%3Dfunction%28t%29%7Bvar%20e%2Ci%2Co%2Cs%3Dthis%2Cr%3Dn%2EgetType%28arguments%5B0%5D%29%3B%22String%22%3D%3Dr%7C%7C%22Number%22%3D%3Dr%7C%7C%22Array%22%3D%3Dr%3F%28e%3Darguments%5B0%5D%2Ci%3Darguments%5B1%5D%2Co%3Darguments%5B2%5D%29%3A%28i%3Darguments%5B0%5D%2Co%3Darguments%5B1%5D%29%3Bvar%20a%3Dn%2Eextend%28%7B%7D%2Cthis%2E%5Foptions%2Ci%29%3Bthis%2E%5Foptions%2Efilter%26%26i%26%26i%2Efilter%26%26%28a%2Efilter%3Dfunction%28t%29%7Breturn%20s%2E%5Foptions%2Efilter%28t%29%26%26i%2Efilter%28t%29%7D%29%3Bvar%20h%3D%5B%5D%3Breturn%20void%200%21%3De%26%26h%2Epush%28e%29%2Ch%2Epush%28a%29%2Ch%2Epush%28o%29%2Cthis%2E%5Fdata%26%26this%2E%5Fdata%2Eget%2Eapply%28this%2E%5Fdata%2Ch%29%7D%2Co%2Eprototype%2EgetIds%3Dfunction%28t%29%7Bvar%20e%3Bif%28this%2E%5Fdata%29%7Bvar%20i%2Co%3Dthis%2E%5Foptions%2Efilter%3Bi%3Dt%26%26t%2Efilter%3Fo%3Ffunction%28e%29%7Breturn%20o%28e%29%26%26t%2Efilter%28e%29%7D%3At%2Efilter%3Ao%2Ce%3Dthis%2E%5Fdata%2EgetIds%28%7Bfilter%3Ai%2Corder%3At%26%26t%2Eorder%7D%29%7Delse%20e%3D%5B%5D%3Breturn%20e%7D%2Co%2Eprototype%2Emap%3Dfunction%28t%2Ce%29%7Bvar%20i%3D%5B%5D%3Bif%28this%2E%5Fdata%29%7Bvar%20o%2Cn%3Dthis%2E%5Foptions%2Efilter%3Bo%3De%26%26e%2Efilter%3Fn%3Ffunction%28t%29%7Breturn%20n%28t%29%26%26e%2Efilter%28t%29%7D%3Ae%2Efilter%3An%2Ci%3Dthis%2E%5Fdata%2Emap%28t%2C%7Bfilter%3Ao%2Corder%3Ae%26%26e%2Eorder%7D%29%7Delse%20i%3D%5B%5D%3Breturn%20i%7D%2Co%2Eprototype%2EgetDataSet%3Dfunction%28%29%7Bfor%28var%20t%3Dthis%3Bt%20instanceof%20o%3B%29t%3Dt%2E%5Fdata%3Breturn%20t%7C%7Cnull%7D%2Co%2Eprototype%2E%5FonEvent%3Dfunction%28t%2Ce%2Ci%29%7Bvar%20o%2Cn%2Cs%2Cr%2Ca%3De%26%26e%2Eitems%2Ch%3Dthis%2E%5Fdata%2Cd%3D%5B%5D%2Cl%3D%5B%5D%2Cc%3D%5B%5D%2Cu%3D%5B%5D%3Bif%28a%26%26h%29%7Bswitch%28t%29%7Bcase%22add%22%3Afor%28o%3D0%2Cn%3Da%2Elength%3Bn%3Eo%3Bo%2B%2B%29s%3Da%5Bo%5D%2Cr%3Dthis%2Eget%28s%29%2Cr%26%26%28this%2E%5Fids%5Bs%5D%3D%210%2Cl%2Epush%28s%29%29%3Bbreak%3Bcase%22update%22%3Afor%28o%3D0%2Cn%3Da%2Elength%3Bn%3Eo%3Bo%2B%2B%29s%3Da%5Bo%5D%2Cr%3Dthis%2Eget%28s%29%2Cr%3Fthis%2E%5Fids%5Bs%5D%3F%28c%2Epush%28s%29%2Cd%2Epush%28e%2Edata%5Bo%5D%29%29%3A%28this%2E%5Fids%5Bs%5D%3D%210%2Cl%2Epush%28s%29%29%3Athis%2E%5Fids%5Bs%5D%26%26%28delete%20this%2E%5Fids%5Bs%5D%2Cu%2Epush%28s%29%29%3Bbreak%3Bcase%22remove%22%3Afor%28o%3D0%2Cn%3Da%2Elength%3Bn%3Eo%3Bo%2B%2B%29s%3Da%5Bo%5D%2Cthis%2E%5Fids%5Bs%5D%26%26%28delete%20this%2E%5Fids%5Bs%5D%2Cu%2Epush%28s%29%29%7Dthis%2Elength%2B%3Dl%2Elength%2Du%2Elength%2Cl%2Elength%26%26this%2E%5Ftrigger%28%22add%22%2C%7Bitems%3Al%7D%2Ci%29%2Cc%2Elength%26%26this%2E%5Ftrigger%28%22update%22%2C%7Bitems%3Ac%2Cdata%3Ad%7D%2Ci%29%2Cu%2Elength%26%26this%2E%5Ftrigger%28%22remove%22%2C%7Bitems%3Au%7D%2Ci%29%7D%7D%2Co%2Eprototype%2Eon%3Ds%2Eprototype%2Eon%2Co%2Eprototype%2Eoff%3Ds%2Eprototype%2Eoff%2Co%2Eprototype%2E%5Ftrigger%3Ds%2Eprototype%2E%5Ftrigger%2Co%2Eprototype%2Esubscribe%3Do%2Eprototype%2Eon%2Co%2Eprototype%2Eunsubscribe%3Do%2Eprototype%2Eoff%2Ct%2Eexports%3Do%7D%2Cfunction%28t%2Ce%2Ci%29%7Bfunction%20o%28t%2Ce%2Ci%29%7Bif%28%21%28this%20instanceof%20o%29%29throw%20new%20SyntaxError%28%22Constructor%20must%20be%20called%20with%20the%20new%20operator%22%29%3Bthis%2EcontainerElement%3Dt%2Cthis%2Ewidth%3D%22400px%22%2Cthis%2Eheight%3D%22400px%22%2Cthis%2Emargin%3D10%2Cthis%2EdefaultXCenter%3D%2255%25%22%2Cthis%2EdefaultYCenter%3D%2250%25%22%2Cthis%2ExLabel%3D%22x%22%2Cthis%2EyLabel%3D%22y%22%2Cthis%2EzLabel%3D%22z%22%3Bvar%20n%3Dfunction%28t%29%7Breturn%20t%7D%3Bthis%2ExValueLabel%3Dn%2Cthis%2EyValueLabel%3Dn%2Cthis%2EzValueLabel%3Dn%2Cthis%2EfilterLabel%3D%22time%22%2Cthis%2ElegendLabel%3D%22value%22%2Cthis%2Estyle%3Do%2ESTYLE%2EDOT%2Cthis%2EshowPerspective%3D%210%2Cthis%2EshowGrid%3D%210%2Cthis%2EkeepAspectRatio%3D%210%2Cthis%2EshowShadow%3D%211%2Cthis%2EshowGrayBottom%3D%211%2Cthis%2EshowTooltip%3D%211%2Cthis%2EverticalRatio%3D%2E5%2Cthis%2EanimationInterval%3D1e3%2Cthis%2EanimationPreload%3D%211%2Cthis%2Ecamera%3Dnew%20p%2Cthis%2Ecamera%2EsetArmRotation%281%2C%2E5%29%2Cthis%2Ecamera%2EsetArmLength%281%2E7%29%2Cthis%2Eeye%3Dnew%20c%280%2C0%2C%2D1%29%2Cthis%2EdataTable%3Dnull%2Cthis%2EdataPoints%3Dnull%2Cthis%2EcolX%3Dvoid%200%2Cthis%2EcolY%3Dvoid%200%2Cthis%2EcolZ%3Dvoid%200%2Cthis%2EcolValue%3Dvoid%200%2Cthis%2EcolFilter%3Dvoid%200%2Cthis%2ExMin%3D0%2Cthis%2ExStep%3Dvoid%200%2Cthis%2ExMax%3D1%2Cthis%2EyMin%3D0%2Cthis%2EyStep%3Dvoid%200%2Cthis%2EyMax%3D1%2Cthis%2EzMin%3D0%2Cthis%2EzStep%3Dvoid%200%2Cthis%2EzMax%3D1%2Cthis%2EvalueMin%3D0%2Cthis%2EvalueMax%3D1%2Cthis%2ExBarWidth%3D1%2Cthis%2EyBarWidth%3D1%2Cthis%2EaxisColor%3D%22%234D4D4D%22%2Cthis%2EgridColor%3D%22%23D3D3D3%22%2Cthis%2EdataColor%3D%7Bfill%3A%22%237DC1FF%22%2Cstroke%3A%22%233267D2%22%2CstrokeWidth%3A1%7D%2Cthis%2EdotSizeRatio%3D%2E02%2Cthis%2Ecreate%28%29%2Cthis%2EsetOptions%28i%29%2Ce%26%26this%2EsetData%28e%29%7Dfunction%20n%28t%29%7Breturn%22clientX%22in%20t%3Ft%2EclientX%3At%2EtargetTouches%5B0%5D%26%26t%2EtargetTouches%5B0%5D%2EclientX%7C%7C0%7Dfunction%20s%28t%29%7Breturn%22clientY%22in%20t%3Ft%2EclientY%3At%2EtargetTouches%5B0%5D%26%26t%2EtargetTouches%5B0%5D%2EclientY%7C%7C0%7Dvar%20r%3D%22function%22%3D%3Dtypeof%20Symbol%26%26%22symbol%22%3D%3Dtypeof%20Symbol%2Eiterator%3Ffunction%28t%29%7Breturn%20typeof%20t%7D%3Afunction%28t%29%7Breturn%20t%26%26%22function%22%3D%3Dtypeof%20Symbol%26%26t%2Econstructor%3D%3D%3DSymbol%3F%22symbol%22%3Atypeof%20t%7D%2Ca%3Di%2813%29%2Ch%3Di%289%29%2Cd%3Di%2811%29%2Cl%3Di%281%29%2Cc%3Di%2814%29%2Cu%3Di%2815%29%2Cp%3Di%2816%29%2Cf%3Di%2817%29%2Cm%3Di%2818%29%2Cv%3Di%2819%29%3Ba%28o%2Eprototype%29%2Co%2Eprototype%2E%5FsetScale%3Dfunction%28%29%7Bthis%2Escale%3Dnew%20c%281%2F%28this%2ExMax%2Dthis%2ExMin%29%2C1%2F%28this%2EyMax%2Dthis%2EyMin%29%2C1%2F%28this%2EzMax%2Dthis%2EzMin%29%29%2Cthis%2EkeepAspectRatio%26%26%28this%2Escale%2Ex%3Cthis%2Escale%2Ey%3Fthis%2Escale%2Ey%3Dthis%2Escale%2Ex%3Athis%2Escale%2Ex%3Dthis%2Escale%2Ey%29%2Cthis%2Escale%2Ez%2A%3Dthis%2EverticalRatio%2Cthis%2Escale%2Evalue%3D1%2F%28this%2EvalueMax%2Dthis%2EvalueMin%29%3Bvar%20t%3D%28this%2ExMax%2Bthis%2ExMin%29%2F2%2Athis%2Escale%2Ex%2Ce%3D%28this%2EyMax%2Bthis%2EyMin%29%2F2%2Athis%2Escale%2Ey%2Ci%3D%28this%2EzMax%2Bthis%2EzMin%29%2F2%2Athis%2Escale%2Ez%3Bthis%2Ecamera%2EsetArmLocation%28t%2Ce%2Ci%29%7D%2Co%2Eprototype%2E%5Fconvert3Dto2D%3Dfunction%28t%29%7Bvar%20e%3Dthis%2E%5FconvertPointToTranslation%28t%29%3Breturn%20this%2E%5FconvertTranslationToScreen%28e%29%7D%2Co%2Eprototype%2E%5FconvertPointToTranslation%3Dfunction%28t%29%7Bvar%20e%3Dt%2Ex%2Athis%2Escale%2Ex%2Ci%3Dt%2Ey%2Athis%2Escale%2Ey%2Co%3Dt%2Ez%2Athis%2Escale%2Ez%2Cn%3Dthis%2Ecamera%2EgetCameraLocation%28%29%2Ex%2Cs%3Dthis%2Ecamera%2EgetCameraLocation%28%29%2Ey%2Cr%3Dthis%2Ecamera%2EgetCameraLocation%28%29%2Ez%2Ca%3DMath%2Esin%28this%2Ecamera%2EgetCameraRotation%28%29%2Ex%29%2Ch%3DMath%2Ecos%28this%2Ecamera%2EgetCameraRotation%28%29%2Ex%29%2Cd%3DMath%2Esin%28this%2Ecamera%2EgetCameraRotation%28%29%2Ey%29%2Cl%3DMath%2Ecos%28this%2Ecamera%2EgetCameraRotation%28%29%2Ey%29%2Cu%3DMath%2Esin%28this%2Ecamera%2EgetCameraRotation%28%29%2Ez%29%2Cp%3DMath%2Ecos%28this%2Ecamera%2EgetCameraRotation%28%29%2Ez%29%2Cf%3Dl%2A%28u%2A%28i%2Ds%29%2Bp%2A%28e%2Dn%29%29%2Dd%2A%28o%2Dr%29%2Cm%3Da%2A%28l%2A%28o%2Dr%29%2Bd%2A%28u%2A%28i%2Ds%29%2Bp%2A%28e%2Dn%29%29%29%2Bh%2A%28p%2A%28i%2Ds%29%2Du%2A%28e%2Dn%29%29%2Cv%3Dh%2A%28l%2A%28o%2Dr%29%2Bd%2A%28u%2A%28i%2Ds%29%2Bp%2A%28e%2Dn%29%29%29%2Da%2A%28p%2A%28i%2Ds%29%2Du%2A%28e%2Dn%29%29%3Breturn%20new%20c%28f%2Cm%2Cv%29%7D%2Co%2Eprototype%2E%5FconvertTranslationToScreen%3Dfunction%28t%29%7Bvar%20e%2Ci%2Co%3Dthis%2Eeye%2Ex%2Cn%3Dthis%2Eeye%2Ey%2Cs%3Dthis%2Eeye%2Ez%2Cr%3Dt%2Ex%2Ca%3Dt%2Ey%2Ch%3Dt%2Ez%3Breturn%20this%2EshowPerspective%3F%28e%3D%28r%2Do%29%2A%28s%2Fh%29%2Ci%3D%28a%2Dn%29%2A%28s%2Fh%29%29%3A%28e%3Dr%2A%2D%28s%2Fthis%2Ecamera%2EgetArmLength%28%29%29%2Ci%3Da%2A%2D%28s%2Fthis%2Ecamera%2EgetArmLength%28%29%29%29%2Cnew%20u%28this%2Excenter%2Be%2Athis%2Eframe%2Ecanvas%2EclientWidth%2Cthis%2Eycenter%2Di%2Athis%2Eframe%2Ecanvas%2EclientWidth%29%7D%2Co%2Eprototype%2E%5FsetBackgroundColor%3Dfunction%28t%29%7Bvar%20e%3D%22white%22%2Ci%3D%22gray%22%2Co%3D1%3Bif%28%22string%22%3D%3Dtypeof%20t%29e%3Dt%2Ci%3D%22none%22%2Co%3D0%3Belse%20if%28%22object%22%3D%3D%3D%28%22undefined%22%3D%3Dtypeof%20t%3F%22undefined%22%3Ar%28t%29%29%29void%200%21%3D%3Dt%2Efill%26%26%28e%3Dt%2Efill%29%2Cvoid%200%21%3D%3Dt%2Estroke%26%26%28i%3Dt%2Estroke%29%2Cvoid%200%21%3D%3Dt%2EstrokeWidth%26%26%28o%3Dt%2EstrokeWidth%29%3Belse%20if%28void%200%21%3D%3Dt%29throw%22Unsupported%20type%20of%20backgroundColor%22%3Bthis%2Eframe%2Estyle%2EbackgroundColor%3De%2Cthis%2Eframe%2Estyle%2EborderColor%3Di%2Cthis%2Eframe%2Estyle%2EborderWidth%3Do%2B%22px%22%2Cthis%2Eframe%2Estyle%2EborderStyle%3D%22solid%22%7D%2Co%2ESTYLE%3D%7BBAR%3A0%2CBARCOLOR%3A1%2CBARSIZE%3A2%2CDOT%3A3%2CDOTLINE%3A4%2CDOTCOLOR%3A5%2CDOTSIZE%3A6%2CGRID%3A7%2CLINE%3A8%2CSURFACE%3A9%7D%2Co%2Eprototype%2E%5FgetStyleNumber%3Dfunction%28t%29%7Bswitch%28t%29%7Bcase%22dot%22%3Areturn%20o%2ESTYLE%2EDOT%3Bcase%22dot%2Dline%22%3Areturn%20o%2ESTYLE%2EDOTLINE%3Bcase%22dot%2Dcolor%22%3Areturn%20o%2ESTYLE%2EDOTCOLOR%3Bcase%22dot%2Dsize%22%3Areturn%20o%2ESTYLE%2EDOTSIZE%3Bcase%22line%22%3Areturn%20o%2ESTYLE%2ELINE%3Bcase%22grid%22%3Areturn%20o%2ESTYLE%2EGRID%3Bcase%22surface%22%3Areturn%20o%2ESTYLE%2ESURFACE%3Bcase%22bar%22%3Areturn%20o%2ESTYLE%2EBAR%3Bcase%22bar%2Dcolor%22%3Areturn%20o%2ESTYLE%2EBARCOLOR%3Bcase%22bar%2Dsize%22%3Areturn%20o%2ESTYLE%2EBARSIZE%7Dreturn%2D1%7D%2Co%2Eprototype%2E%5FdetermineColumnIndexes%3Dfunction%28t%2Ce%29%7Bif%28this%2Estyle%3D%3D%3Do%2ESTYLE%2EDOT%7C%7Cthis%2Estyle%3D%3D%3Do%2ESTYLE%2EDOTLINE%7C%7Cthis%2Estyle%3D%3D%3Do%2ESTYLE%2ELINE%7C%7Cthis%2Estyle%3D%3D%3Do%2ESTYLE%2EGRID%7C%7Cthis%2Estyle%3D%3D%3Do%2ESTYLE%2ESURFACE%7C%7Cthis%2Estyle%3D%3D%3Do%2ESTYLE%2EBAR%29this%2EcolX%3D0%2Cthis%2EcolY%3D1%2Cthis%2EcolZ%3D2%2Cthis%2EcolValue%3Dvoid%200%2Ct%2EgetNumberOfColumns%28%29%3E3%26%26%28this%2EcolFilter%3D3%29%3Belse%7Bif%28this%2Estyle%21%3D%3Do%2ESTYLE%2EDOTCOLOR%26%26this%2Estyle%21%3D%3Do%2ESTYLE%2EDOTSIZE%26%26this%2Estyle%21%3D%3Do%2ESTYLE%2EBARCOLOR%26%26this%2Estyle%21%3D%3Do%2ESTYLE%2EBARSIZE%29throw%27Unknown%20style%20%22%27%2Bthis%2Estyle%2B%27%22%27%3Bthis%2EcolX%3D0%2Cthis%2EcolY%3D1%2Cthis%2EcolZ%3D2%2Cthis%2EcolValue%3D3%2Ct%2EgetNumberOfColumns%28%29%3E4%26%26%28this%2EcolFilter%3D4%29%7D%7D%2Co%2Eprototype%2EgetNumberOfRows%3Dfunction%28t%29%7Breturn%20t%2Elength%7D%2Co%2Eprototype%2EgetNumberOfColumns%3Dfunction%28t%29%7Bvar%20e%3D0%3Bfor%28var%20i%20in%20t%5B0%5D%29t%5B0%5D%2EhasOwnProperty%28i%29%26%26e%2B%2B%3Breturn%20e%7D%2Co%2Eprototype%2EgetDistinctValues%3Dfunction%28t%2Ce%29%7Bfor%28var%20i%3D%5B%5D%2Co%3D0%3Bo%3Ct%2Elength%3Bo%2B%2B%29%2D1%3D%3Di%2EindexOf%28t%5Bo%5D%5Be%5D%29%26%26i%2Epush%28t%5Bo%5D%5Be%5D%29%3Breturn%20i%7D%2Co%2Eprototype%2EgetColumnRange%3Dfunction%28t%2Ce%29%7Bfor%28var%20i%3D%7Bmin%3At%5B0%5D%5Be%5D%2Cmax%3At%5B0%5D%5Be%5D%7D%2Co%3D0%3Bo%3Ct%2Elength%3Bo%2B%2B%29i%2Emin%3Et%5Bo%5D%5Be%5D%26%26%28i%2Emin%3Dt%5Bo%5D%5Be%5D%29%2Ci%2Emax%3Ct%5Bo%5D%5Be%5D%26%26%28i%2Emax%3Dt%5Bo%5D%5Be%5D%29%3Breturn%20i%7D%2Co%2Eprototype%2E%5FdataInitialize%3Dfunction%28t%2Ce%29%7Bvar%20i%3Dthis%3Bif%28this%2EdataSet%26%26this%2EdataSet%2Eoff%28%22%2A%22%2Cthis%2E%5FonChange%29%2Cvoid%200%21%3D%3Dt%29%7BArray%2EisArray%28t%29%26%26%28t%3Dnew%20h%28t%29%29%3Bvar%20n%3Bif%28%21%28t%20instanceof%20h%7C%7Ct%20instanceof%20d%29%29throw%20new%20Error%28%22Array%2C%20DataSet%2C%20or%20DataView%20expected%22%29%3Bif%28n%3Dt%2Eget%28%29%2C0%21%3Dn%2Elength%29%7Bthis%2EdataSet%3Dt%2Cthis%2EdataTable%3Dn%2Cthis%2E%5FonChange%3Dfunction%28%29%7Bi%2EsetData%28i%2EdataSet%29%7D%2Cthis%2EdataSet%2Eon%28%22%2A%22%2Cthis%2E%5FonChange%29%2Cthis%2EcolX%3D%22x%22%2Cthis%2EcolY%3D%22y%22%2Cthis%2EcolZ%3D%22z%22%2Cthis%2EcolValue%3D%22style%22%2Cthis%2EcolFilter%3D%22filter%22%2Cn%5B0%5D%2EhasOwnProperty%28%22filter%22%29%26%26void%200%3D%3D%3Dthis%2EdataFilter%26%26%28this%2EdataFilter%3Dnew%20f%28t%2Cthis%2EcolFilter%2Cthis%29%2Cthis%2EdataFilter%2EsetOnLoadCallback%28function%28%29%7Bi%2Eredraw%28%29%7D%29%29%3Bvar%20s%3Dthis%2Estyle%3D%3Do%2ESTYLE%2EBAR%7C%7Cthis%2Estyle%3D%3Do%2ESTYLE%2EBARCOLOR%7C%7Cthis%2Estyle%3D%3Do%2ESTYLE%2EBARSIZE%3Bif%28s%29%7Bif%28void%200%21%3D%3Dthis%2EdefaultXBarWidth%29this%2ExBarWidth%3Dthis%2EdefaultXBarWidth%3Belse%7Bvar%20r%3Dthis%2EgetDistinctValues%28n%2Cthis%2EcolX%29%3Bthis%2ExBarWidth%3Dr%5B1%5D%2Dr%5B0%5D%7C%7C1%7Dif%28void%200%21%3D%3Dthis%2EdefaultYBarWidth%29this%2EyBarWidth%3Dthis%2EdefaultYBarWidth%3Belse%7Bvar%20a%3Dthis%2EgetDistinctValues%28n%2Cthis%2EcolY%29%3Bthis%2EyBarWidth%3Da%5B1%5D%2Da%5B0%5D%7C%7C1%7D%7Dvar%20l%3Dthis%2EgetColumnRange%28n%2Cthis%2EcolX%29%3Bs%26%26%28l%2Emin%2D%3Dthis%2ExBarWidth%2F2%2Cl%2Emax%2B%3Dthis%2ExBarWidth%2F2%29%2Cthis%2ExMin%3Dvoid%200%21%3D%3Dthis%2EdefaultXMin%3Fthis%2EdefaultXMin%3Al%2Emin%2Cthis%2ExMax%3Dvoid%200%21%3D%3Dthis%2EdefaultXMax%3Fthis%2EdefaultXMax%3Al%2Emax%2Cthis%2ExMax%3C%3Dthis%2ExMin%26%26%28this%2ExMax%3Dthis%2ExMin%2B1%29%2Cthis%2ExStep%3Dvoid%200%21%3D%3Dthis%2EdefaultXStep%3Fthis%2EdefaultXStep%3A%28this%2ExMax%2Dthis%2ExMin%29%2F5%3Bvar%20c%3Dthis%2EgetColumnRange%28n%2Cthis%2EcolY%29%3Bs%26%26%28c%2Emin%2D%3Dthis%2EyBarWidth%2F2%2Cc%2Emax%2B%3Dthis%2EyBarWidth%2F2%29%2Cthis%2EyMin%3Dvoid%200%21%3D%3Dthis%2EdefaultYMin%3Fthis%2EdefaultYMin%3Ac%2Emin%2Cthis%2EyMax%3Dvoid%200%21%3D%3Dthis%2EdefaultYMax%3Fthis%2EdefaultYMax%3Ac%2Emax%2Cthis%2EyMax%3C%3Dthis%2EyMin%26%26%28this%2EyMax%3Dthis%2EyMin%2B1%29%2Cthis%2EyStep%3Dvoid%200%21%3D%3Dthis%2EdefaultYStep%3Fthis%2EdefaultYStep%3A%28this%2EyMax%2Dthis%2EyMin%29%2F5%3Bvar%20u%3Dthis%2EgetColumnRange%28n%2Cthis%2EcolZ%29%3Bif%28this%2EzMin%3Dvoid%200%21%3D%3Dthis%2EdefaultZMin%3Fthis%2EdefaultZMin%3Au%2Emin%2Cthis%2EzMax%3Dvoid%200%21%3D%3Dthis%2EdefaultZMax%3Fthis%2EdefaultZMax%3Au%2Emax%2Cthis%2EzMax%3C%3Dthis%2EzMin%26%26%28this%2EzMax%3Dthis%2EzMin%2B1%29%2Cthis%2EzStep%3Dvoid%200%21%3D%3Dthis%2EdefaultZStep%3Fthis%2EdefaultZStep%3A%28this%2EzMax%2Dthis%2EzMin%29%2F5%2Cvoid%200%21%3D%3Dthis%2EcolValue%29%7Bvar%20p%3Dthis%2EgetColumnRange%28n%2Cthis%2EcolValue%29%3Bthis%2EvalueMin%3Dvoid%200%21%3D%3Dthis%2EdefaultValueMin%3Fthis%2EdefaultValueMin%3Ap%2Emin%2Cthis%2EvalueMax%3Dvoid%200%21%3D%3Dthis%2EdefaultValueMax%3Fthis%2EdefaultValueMax%3Ap%2Emax%2Cthis%2EvalueMax%3C%3Dthis%2EvalueMin%26%26%28this%2EvalueMax%3Dthis%2EvalueMin%2B1%29%7Dthis%2E%5FsetScale%28%29%7D%7D%7D%2Co%2Eprototype%2E%5FgetDataPoints%3Dfunction%28t%29%7Bvar%20e%2Ci%2Cn%2Cs%2Cr%2Ca%2Ch%3D%5B%5D%3Bif%28this%2Estyle%3D%3D%3Do%2ESTYLE%2EGRID%7C%7Cthis%2Estyle%3D%3D%3Do%2ESTYLE%2ESURFACE%29%7Bvar%20d%3D%5B%5D%2Cl%3D%5B%5D%3Bfor%28n%3D0%3Bn%3Cthis%2EgetNumberOfRows%28t%29%3Bn%2B%2B%29e%3Dt%5Bn%5D%5Bthis%2EcolX%5D%7C%7C0%2Ci%3Dt%5Bn%5D%5Bthis%2EcolY%5D%7C%7C0%2C%2D1%3D%3D%3Dd%2EindexOf%28e%29%26%26d%2Epush%28e%29%2C%2D1%3D%3D%3Dl%2EindexOf%28i%29%26%26l%2Epush%28i%29%3Bvar%20u%3Dfunction%28t%2Ce%29%7Breturn%20t%2De%7D%3Bd%2Esort%28u%29%2Cl%2Esort%28u%29%3Bvar%20p%3D%5B%5D%3Bfor%28n%3D0%3Bn%3Ct%2Elength%3Bn%2B%2B%29%7Be%3Dt%5Bn%5D%5Bthis%2EcolX%5D%7C%7C0%2Ci%3Dt%5Bn%5D%5Bthis%2EcolY%5D%7C%7C0%2Cs%3Dt%5Bn%5D%5Bthis%2EcolZ%5D%7C%7C0%3Bvar%20f%3Dd%2EindexOf%28e%29%2Cm%3Dl%2EindexOf%28i%29%3Bvoid%200%3D%3D%3Dp%5Bf%5D%26%26%28p%5Bf%5D%3D%5B%5D%29%3Bvar%20v%3Dnew%20c%3Bv%2Ex%3De%2Cv%2Ey%3Di%2Cv%2Ez%3Ds%2Cr%3D%7B%7D%2Cr%2Epoint%3Dv%2Cr%2Etrans%3Dvoid%200%2Cr%2Escreen%3Dvoid%200%2Cr%2Ebottom%3Dnew%20c%28e%2Ci%2Cthis%2EzMin%29%2Cp%5Bf%5D%5Bm%5D%3Dr%2Ch%2Epush%28r%29%7Dfor%28e%3D0%3Be%3Cp%2Elength%3Be%2B%2B%29for%28i%3D0%3Bi%3Cp%5Be%5D%2Elength%3Bi%2B%2B%29p%5Be%5D%5Bi%5D%26%26%28p%5Be%5D%5Bi%5D%2EpointRight%3De%3Cp%2Elength%2D1%3Fp%5Be%2B1%5D%5Bi%5D%3Avoid%200%2Cp%5Be%5D%5Bi%5D%2EpointTop%3Di%3Cp%5Be%5D%2Elength%2D1%3Fp%5Be%5D%5Bi%2B1%5D%3Avoid%200%2Cp%5Be%5D%5Bi%5D%2EpointCross%3De%3Cp%2Elength%2D1%26%26i%3Cp%5Be%5D%2Elength%2D1%3Fp%5Be%2B1%5D%5Bi%2B1%5D%3Avoid%200%29%7Delse%20for%28n%3D0%3Bn%3Ct%2Elength%3Bn%2B%2B%29a%3Dnew%20c%2Ca%2Ex%3Dt%5Bn%5D%5Bthis%2EcolX%5D%7C%7C0%2Ca%2Ey%3Dt%5Bn%5D%5Bthis%2EcolY%5D%7C%7C0%2Ca%2Ez%3Dt%5Bn%5D%5Bthis%2EcolZ%5D%7C%7C0%2Cvoid%200%21%3D%3Dthis%2EcolValue%26%26%28a%2Evalue%3Dt%5Bn%5D%5Bthis%2EcolValue%5D%7C%7C0%29%2Cr%3D%7B%7D%2Cr%2Epoint%3Da%2Cr%2Ebottom%3Dnew%20c%28a%2Ex%2Ca%2Ey%2Cthis%2EzMin%29%2Cr%2Etrans%3Dvoid%200%2Cr%2Escreen%3Dvoid%200%2Ch%2Epush%28r%29%3Breturn%20h%7D%2Co%2Eprototype%2Ecreate%3Dfunction%28%29%7Bfor%28%3Bthis%2EcontainerElement%2EhasChildNodes%28%29%3B%29this%2EcontainerElement%2EremoveChild%28this%2EcontainerElement%2EfirstChild%29%3Bthis%2Eframe%3Ddocument%2EcreateElement%28%22div%22%29%2Cthis%2Eframe%2Estyle%2Eposition%3D%22relative%22%2Cthis%2Eframe%2Estyle%2Eoverflow%3D%22hidden%22%2Cthis%2Eframe%2Ecanvas%3Ddocument%2EcreateElement%28%22canvas%22%29%2Cthis%2Eframe%2Ecanvas%2Estyle%2Eposition%3D%22relative%22%2Cthis%2Eframe%2EappendChild%28this%2Eframe%2Ecanvas%29%3Bvar%20t%3Ddocument%2EcreateElement%28%22DIV%22%29%3Bt%2Estyle%2Ecolor%3D%22red%22%2Ct%2Estyle%2EfontWeight%3D%22bold%22%2Ct%2Estyle%2Epadding%3D%2210px%22%2Ct%2EinnerHTML%3D%22Error%3A%20your%20browser%20does%20not%20support%20HTML%20canvas%22%2Cthis%2Eframe%2Ecanvas%2EappendChild%28t%29%2Cthis%2Eframe%2Efilter%3Ddocument%2EcreateElement%28%22div%22%29%2Cthis%2Eframe%2Efilter%2Estyle%2Eposition%3D%22absolute%22%2Cthis%2Eframe%2Efilter%2Estyle%2Ebottom%3D%220px%22%2Cthis%2Eframe%2Efilter%2Estyle%2Eleft%3D%220px%22%2Cthis%2Eframe%2Efilter%2Estyle%2Ewidth%3D%22100%25%22%2Cthis%2Eframe%2EappendChild%28this%2Eframe%2Efilter%29%3Bvar%20e%3Dthis%2Ci%3Dfunction%28t%29%7Be%2E%5FonMouseDown%28t%29%7D%2Co%3Dfunction%28t%29%7Be%2E%5FonTouchStart%28t%29%7D%2Cn%3Dfunction%28t%29%7Be%2E%5FonWheel%28t%29%7D%2Cs%3Dfunction%28t%29%7Be%2E%5FonTooltip%28t%29%7D%3Bl%2EaddEventListener%28this%2Eframe%2Ecanvas%2C%22keydown%22%2Conkeydown%29%2Cl%2EaddEventListener%28this%2Eframe%2Ecanvas%2C%22mousedown%22%2Ci%29%2Cl%2EaddEventListener%28this%2Eframe%2Ecanvas%2C%22touchstart%22%2Co%29%2Cl%2EaddEventListener%28this%2Eframe%2Ecanvas%2C%22mousewheel%22%2Cn%29%2Cl%2EaddEventListener%28this%2Eframe%2Ecanvas%2C%22mousemove%22%2Cs%29%2Cthis%2EcontainerElement%2EappendChild%28this%2Eframe%29%7D%2Co%2Eprototype%2EsetSize%3Dfunction%28t%2Ce%29%7Bthis%2Eframe%2Estyle%2Ewidth%3Dt%2Cthis%2Eframe%2Estyle%2Eheight%3De%2Cthis%2E%5FresizeCanvas%28%29%7D%2Co%2Eprototype%2E%5FresizeCanvas%3Dfunction%28%29%7Bthis%2Eframe%2Ecanvas%2Estyle%2Ewidth%3D%22100%25%22%2Cthis%2Eframe%2Ecanvas%2Estyle%2Eheight%3D%22100%25%22%2Cthis%2Eframe%2Ecanvas%2Ewidth%3Dthis%2Eframe%2Ecanvas%2EclientWidth%2Cthis%2Eframe%2Ecanvas%2Eheight%3Dthis%2Eframe%2Ecanvas%2EclientHeight%2Cthis%2Eframe%2Efilter%2Estyle%2Ewidth%3Dthis%2Eframe%2Ecanvas%2EclientWidth%2D20%2B%22px%22%7D%2Co%2Eprototype%2EanimationStart%3Dfunction%28%29%7Bif%28%21this%2Eframe%2Efilter%7C%7C%21this%2Eframe%2Efilter%2Eslider%29throw%22No%20animation%20available%22%3Bthis%2Eframe%2Efilter%2Eslider%2Eplay%28%29%7D%2Co%2Eprototype%2EanimationStop%3Dfunction%28%29%7Bthis%2Eframe%2Efilter%26%26this%2Eframe%2Efilter%2Eslider%26%26this%2Eframe%2Efilter%2Eslider%2Estop%28%29%7D%2Co%2Eprototype%2E%5FresizeCenter%3Dfunction%28%29%7B%22%25%22%3D%3D%3Dthis%2EdefaultXCenter%2EcharAt%28this%2EdefaultXCenter%2Elength%2D1%29%3Fthis%2Excenter%3DparseFloat%28this%2EdefaultXCenter%29%2F100%2Athis%2Eframe%2Ecanvas%2EclientWidth%3Athis%2Excenter%3DparseFloat%28this%2EdefaultXCenter%29%2C%22%25%22%3D%3D%3Dthis%2EdefaultYCenter%2EcharAt%28this%2EdefaultYCenter%2Elength%2D1%29%3Fthis%2Eycenter%3DparseFloat%28this%2EdefaultYCenter%29%2F100%2A%28this%2Eframe%2Ecanvas%2EclientHeight%2Dthis%2Eframe%2Efilter%2EclientHeight%29%3Athis%2Eycenter%3DparseFloat%28this%2EdefaultYCenter%29%7D%2Co%2Eprototype%2EsetCameraPosition%3Dfunction%28t%29%7Bvoid%200%21%3D%3Dt%26%26%28void%200%21%3D%3Dt%2Ehorizontal%26%26void%200%21%3D%3Dt%2Evertical%26%26this%2Ecamera%2EsetArmRotation%28t%2Ehorizontal%2Ct%2Evertical%29%2Cvoid%200%21%3D%3Dt%2Edistance%26%26this%2Ecamera%2EsetArmLength%28t%2Edistance%29%2Cthis%2Eredraw%28%29%29%7D%2Co%2Eprototype%2EgetCameraPosition%3Dfunction%28%29%7Bvar%20t%3Dthis%2Ecamera%2EgetArmRotation%28%29%3Breturn%20t%2Edistance%3Dthis%2Ecamera%2EgetArmLength%28%29%2Ct%7D%2Co%2Eprototype%2E%5FreadData%3Dfunction%28t%29%7Bthis%2E%5FdataInitialize%28t%2Cthis%2Estyle%29%2Cthis%2EdataFilter%3Fthis%2EdataPoints%3Dthis%2EdataFilter%2E%5FgetDataPoints%28%29%3Athis%2EdataPoints%3Dthis%2E%5FgetDataPoints%28this%2EdataTable%29%2Cthis%2E%5FredrawFilter%28%29%7D%2Co%2Eprototype%2EsetData%3Dfunction%28t%29%7Bthis%2E%5FreadData%28t%29%2Cthis%2Eredraw%28%29%2Cthis%2EanimationAutoStart%26%26this%2EdataFilter%26%26this%2EanimationStart%28%29%7D%2Co%2Eprototype%2EsetOptions%3Dfunction%28t%29%7Bvar%20e%3Dvoid%200%3Bif%28this%2EanimationStop%28%29%2Cvoid%200%21%3D%3Dt%29%7Bif%28void%200%21%3D%3Dt%2Ewidth%26%26%28this%2Ewidth%3Dt%2Ewidth%29%2Cvoid%200%21%3D%3Dt%2Eheight%26%26%28this%2Eheight%3Dt%2Eheight%29%2Cvoid%200%21%3D%3Dt%2ExCenter%26%26%28this%2EdefaultXCenter%3Dt%2ExCenter%29%2Cvoid%200%21%3D%3Dt%2EyCenter%26%26%28this%2EdefaultYCenter%3Dt%2EyCenter%29%2Cvoid%200%21%3D%3Dt%2EfilterLabel%26%26%28this%2EfilterLabel%3Dt%2EfilterLabel%29%2Cvoid%200%21%3D%3Dt%2ElegendLabel%26%26%28this%2ElegendLabel%3Dt%2ElegendLabel%29%2Cvoid%200%21%3D%3Dt%2ExLabel%26%26%28this%2ExLabel%3Dt%2ExLabel%29%2Cvoid%200%21%3D%3Dt%2EyLabel%26%26%28this%2EyLabel%3Dt%2EyLabel%29%2Cvoid%200%21%3D%3Dt%2EzLabel%26%26%28this%2EzLabel%3Dt%2EzLabel%29%2Cvoid%200%21%3D%3Dt%2ExValueLabel%26%26%28this%2ExValueLabel%3Dt%2ExValueLabel%29%2Cvoid%200%21%3D%3Dt%2EyValueLabel%26%26%28this%2EyValueLabel%3Dt%2EyValueLabel%29%2Cvoid%200%21%3D%3Dt%2EzValueLabel%26%26%28this%2EzValueLabel%3Dt%2EzValueLabel%29%2Cvoid%200%21%3D%3Dt%2EdotSizeRatio%26%26%28this%2EdotSizeRatio%3Dt%2EdotSizeRatio%29%2Cvoid%200%21%3D%3Dt%2Estyle%29%7Bvar%20i%3Dthis%2E%5FgetStyleNumber%28t%2Estyle%29%3B%2D1%21%3D%3Di%26%26%28this%2Estyle%3Di%29%7Dvoid%200%21%3D%3Dt%2EshowGrid%26%26%28this%2EshowGrid%3Dt%2EshowGrid%29%2Cvoid%200%21%3D%3Dt%2EshowPerspective%26%26%28this%2EshowPerspective%3Dt%2EshowPerspective%29%2Cvoid%200%21%3D%3Dt%2EshowShadow%26%26%28this%2EshowShadow%3Dt%2EshowShadow%29%2Cvoid%200%21%3D%3Dt%2Etooltip%26%26%28this%2EshowTooltip%3Dt%2Etooltip%29%2Cvoid%200%21%3D%3Dt%2EshowAnimationControls%26%26%28this%2EshowAnimationControls%3Dt%2EshowAnimationControls%29%2Cvoid%200%21%3D%3Dt%2EkeepAspectRatio%26%26%28this%2EkeepAspectRatio%3Dt%2EkeepAspectRatio%29%2Cvoid%200%21%3D%3Dt%2EverticalRatio%26%26%28this%2EverticalRatio%3Dt%2EverticalRatio%29%2Cvoid%200%21%3D%3Dt%2EanimationInterval%26%26%28this%2EanimationInterval%3Dt%2EanimationInterval%29%2Cvoid%200%21%3D%3Dt%2EanimationPreload%26%26%28this%2EanimationPreload%3Dt%2EanimationPreload%29%2Cvoid%200%21%3D%3Dt%2EanimationAutoStart%26%26%28this%2EanimationAutoStart%3Dt%2EanimationAutoStart%29%2Cvoid%200%21%3D%3Dt%2ExBarWidth%26%26%28this%2EdefaultXBarWidth%3Dt%2ExBarWidth%29%2Cvoid%200%21%3D%3Dt%2EyBarWidth%26%26%28this%2EdefaultYBarWidth%3Dt%2EyBarWidth%29%2Cvoid%200%21%3D%3Dt%2ExMin%26%26%28this%2EdefaultXMin%3Dt%2ExMin%29%2Cvoid%200%21%3D%3Dt%2ExStep%26%26%28this%2EdefaultXStep%3Dt%2ExStep%29%2Cvoid%200%21%3D%3Dt%2ExMax%26%26%28this%2EdefaultXMax%3Dt%2ExMax%29%2Cvoid%200%21%3D%3Dt%2EyMin%26%26%28this%2EdefaultYMin%3Dt%2EyMin%29%2Cvoid%200%21%3D%3Dt%2EyStep%26%26%28this%2EdefaultYStep%3Dt%2EyStep%29%2Cvoid%200%21%3D%3Dt%2EyMax%26%26%28this%2EdefaultYMax%3Dt%2EyMax%29%2Cvoid%200%21%3D%3Dt%2EzMin%26%26%28this%2EdefaultZMin%3Dt%2EzMin%29%2Cvoid%200%21%3D%3Dt%2EzStep%26%26%28this%2EdefaultZStep%3Dt%2EzStep%29%2Cvoid%200%21%3D%3Dt%2EzMax%26%26%28this%2EdefaultZMax%3Dt%2EzMax%29%2Cvoid%200%21%3D%3Dt%2EvalueMin%26%26%28this%2EdefaultValueMin%3Dt%2EvalueMin%29%2Cvoid%200%21%3D%3Dt%2EvalueMax%26%26%28this%2EdefaultValueMax%3Dt%2EvalueMax%29%2Cvoid%200%21%3D%3Dt%2EbackgroundColor%26%26this%2E%5FsetBackgroundColor%28t%2EbackgroundColor%29%2Cvoid%200%21%3D%3Dt%2EcameraPosition%26%26%28e%3Dt%2EcameraPosition%29%2Cvoid%200%21%3D%3De%26%26%28this%2Ecamera%2EsetArmRotation%28e%2Ehorizontal%2Ce%2Evertical%29%2Cthis%2Ecamera%2EsetArmLength%28e%2Edistance%29%29%2Cvoid%200%21%3D%3Dt%2EaxisColor%26%26%28this%2EaxisColor%3Dt%2EaxisColor%29%2Cvoid%200%21%3D%3Dt%2EgridColor%26%26%28this%2EgridColor%3Dt%2EgridColor%29%2Ct%2EdataColor%26%26%28%22string%22%3D%3Dtypeof%20t%2EdataColor%3F%28this%2EdataColor%2Efill%3Dt%2EdataColor%2Cthis%2EdataColor%2Estroke%3Dt%2EdataColor%29%3A%28t%2EdataColor%2Efill%26%26%28this%2EdataColor%2Efill%3Dt%2EdataColor%2Efill%29%2Ct%2EdataColor%2Estroke%26%26%28this%2EdataColor%2Estroke%3Dt%2EdataColor%2Estroke%29%2Cvoid%200%21%3D%3Dt%2EdataColor%2EstrokeWidth%26%26%28this%2EdataColor%2EstrokeWidth%3Dt%2EdataColor%2EstrokeWidth%29%29%29%7Dthis%2EsetSize%28this%2Ewidth%2Cthis%2Eheight%29%2Cthis%2EdataTable%26%26this%2EsetData%28this%2EdataTable%29%2Cthis%2EanimationAutoStart%26%26this%2EdataFilter%26%26this%2EanimationStart%28%29%7D%2Co%2Eprototype%2Eredraw%3Dfunction%28%29%7Bif%28void%200%3D%3D%3Dthis%2EdataPoints%29throw%22Error%3A%20graph%20data%20not%20initialized%22%3Bthis%2E%5FresizeCanvas%28%29%2Cthis%2E%5FresizeCenter%28%29%2Cthis%2E%5FredrawSlider%28%29%2Cthis%2E%5FredrawClear%28%29%2Cthis%2E%5FredrawAxis%28%29%2Cthis%2Estyle%3D%3D%3Do%2ESTYLE%2EGRID%7C%7Cthis%2Estyle%3D%3D%3Do%2ESTYLE%2ESURFACE%3Fthis%2E%5FredrawDataGrid%28%29%3Athis%2Estyle%3D%3D%3Do%2ESTYLE%2ELINE%3Fthis%2E%5FredrawDataLine%28%29%3Athis%2Estyle%3D%3D%3Do%2ESTYLE%2EBAR%7C%7Cthis%2Estyle%3D%3D%3Do%2ESTYLE%2EBARCOLOR%7C%7Cthis%2Estyle%3D%3D%3Do%2ESTYLE%2EBARSIZE%3Fthis%2E%5FredrawDataBar%28%29%3Athis%2E%5FredrawDataDot%28%29%2Cthis%2E%5FredrawInfo%28%29%2Cthis%2E%5FredrawLegend%28%29%7D%2Co%2Eprototype%2E%5FredrawClear%3Dfunction%28%29%7Bvar%20t%3Dthis%2Eframe%2Ecanvas%2Ce%3Dt%2EgetContext%28%222d%22%29%3Be%2EclearRect%280%2C0%2Ct%2Ewidth%2Ct%2Eheight%29%7D%2Co%2Eprototype%2E%5FredrawLegend%3Dfunction%28%29%7Bvar%20t%3Bif%28this%2Estyle%3D%3D%3Do%2ESTYLE%2EDOTCOLOR%7C%7Cthis%2Estyle%3D%3D%3Do%2ESTYLE%2EDOTSIZE%29%7Bvar%20e%2Ci%2Cn%3Dthis%2Eframe%2EclientWidth%2Athis%2EdotSizeRatio%3Bthis%2Estyle%3D%3D%3Do%2ESTYLE%2EDOTSIZE%3F%28e%3Dn%2F2%2Ci%3Dn%2F2%2B2%2An%29%3A%28e%3D20%2Ci%3D20%29%3Bvar%20s%3DMath%2Emax%28%2E25%2Athis%2Eframe%2EclientHeight%2C100%29%2Cr%3Dthis%2Emargin%2Ca%3Dthis%2Eframe%2EclientWidth%2Dthis%2Emargin%2Ch%3Da%2Di%2Cd%3Dr%2Bs%7Dvar%20l%3Dthis%2Eframe%2Ecanvas%2Cc%3Dl%2EgetContext%28%222d%22%29%3Bif%28c%2ElineWidth%3D1%2Cc%2Efont%3D%2214px%20arial%22%2Cthis%2Estyle%3D%3D%3Do%2ESTYLE%2EDOTCOLOR%29%7Bvar%20u%3D0%2Cp%3Ds%3Bfor%28t%3Du%3Bp%3Et%3Bt%2B%2B%29%7Bvar%20f%3D%28t%2Du%29%2F%28p%2Du%29%2Cm%3D240%2Af%2Cg%3Dthis%2E%5Fhsv2rgb%28m%2C1%2C1%29%3Bc%2EstrokeStyle%3Dg%2Cc%2EbeginPath%28%29%2Cc%2EmoveTo%28h%2Cr%2Bt%29%2Cc%2ElineTo%28a%2Cr%2Bt%29%2Cc%2Estroke%28%29%7Dc%2EstrokeStyle%3Dthis%2EaxisColor%2Cc%2EstrokeRect%28h%2Cr%2Ci%2Cs%29%7Dif%28this%2Estyle%3D%3D%3Do%2ESTYLE%2EDOTSIZE%26%26%28c%2EstrokeStyle%3Dthis%2EaxisColor%2Cc%2EfillStyle%3Dthis%2EdataColor%2Efill%2Cc%2EbeginPath%28%29%2Cc%2EmoveTo%28h%2Cr%29%2Cc%2ElineTo%28a%2Cr%29%2Cc%2ElineTo%28a%2Di%2Be%2Cd%29%2Cc%2ElineTo%28h%2Cd%29%2Cc%2EclosePath%28%29%2Cc%2Efill%28%29%2Cc%2Estroke%28%29%29%2Cthis%2Estyle%3D%3D%3Do%2ESTYLE%2EDOTCOLOR%7C%7Cthis%2Estyle%3D%3D%3Do%2ESTYLE%2EDOTSIZE%29%7Bvar%20y%3D5%2Cb%3Dnew%20v%28this%2EvalueMin%2Cthis%2EvalueMax%2C%28this%2EvalueMax%2Dthis%2EvalueMin%29%2F5%2C%210%29%3Bfor%28b%2Estart%28%29%2Cb%2EgetCurrent%28%29%3Cthis%2EvalueMin%26%26b%2Enext%28%29%3B%21b%2Eend%28%29%3B%29t%3Dd%2D%28b%2EgetCurrent%28%29%2Dthis%2EvalueMin%29%2F%28this%2EvalueMax%2Dthis%2EvalueMin%29%2As%2Cc%2EbeginPath%28%29%2Cc%2EmoveTo%28h%2Dy%2Ct%29%2Cc%2ElineTo%28h%2Ct%29%2Cc%2Estroke%28%29%2Cc%2EtextAlign%3D%22right%22%2Cc%2EtextBaseline%3D%22middle%22%2Cc%2EfillStyle%3Dthis%2EaxisColor%2Cc%2EfillText%28b%2EgetCurrent%28%29%2Ch%2D2%2Ay%2Ct%29%2Cb%2Enext%28%29%3Bc%2EtextAlign%3D%22right%22%2Cc%2EtextBaseline%3D%22top%22%3Bvar%20w%3Dthis%2ElegendLabel%3Bc%2EfillText%28w%2Ca%2Cd%2Bthis%2Emargin%29%7D%7D%2Co%2Eprototype%2E%5FredrawFilter%3Dfunction%28%29%7Bif%28this%2Eframe%2Efilter%2EinnerHTML%3D%22%22%2Cthis%2EdataFilter%29%7Bvar%20t%3D%7Bvisible%3Athis%2EshowAnimationControls%7D%2Ce%3Dnew%20m%28this%2Eframe%2Efilter%2Ct%29%3Bthis%2Eframe%2Efilter%2Eslider%3De%2Cthis%2Eframe%2Efilter%2Estyle%2Epadding%3D%2210px%22%2Ce%2EsetValues%28this%2EdataFilter%2Evalues%29%2Ce%2EsetPlayInterval%28this%2EanimationInterval%29%3Bvar%20i%3Dthis%2Co%3Dfunction%28%29%7Bvar%20t%3De%2EgetIndex%28%29%3Bi%2EdataFilter%2EselectValue%28t%29%2Ci%2EdataPoints%3Di%2EdataFilter%2E%5FgetDataPoints%28%29%2Ci%2Eredraw%28%29%7D%3Be%2EsetOnChangeCallback%28o%29%7Delse%20this%2Eframe%2Efilter%2Eslider%3Dvoid%200%7D%2Co%2Eprototype%2E%5FredrawSlider%3Dfunction%28%29%7Bvoid%200%21%3D%3Dthis%2Eframe%2Efilter%2Eslider%26%26this%2Eframe%2Efilter%2Eslider%2Eredraw%28%29%7D%2Co%2Eprototype%2E%5FredrawInfo%3Dfunction%28%29%7Bif%28this%2EdataFilter%29%7Bvar%20t%3Dthis%2Eframe%2Ecanvas%2Ce%3Dt%2EgetContext%28%222d%22%29%3Be%2Efont%3D%2214px%20arial%22%2Ce%2ElineStyle%3D%22gray%22%2Ce%2EfillStyle%3D%22gray%22%2Ce%2EtextAlign%3D%22left%22%2Ce%2EtextBaseline%3D%22top%22%3Bvar%20i%3Dthis%2Emargin%2Co%3Dthis%2Emargin%3Be%2EfillText%28this%2EdataFilter%2EgetLabel%28%29%2B%22%3A%20%22%2Bthis%2EdataFilter%2EgetSelectedValue%28%29%2Ci%2Co%29%7D%7D%2Co%2Eprototype%2E%5FredrawAxis%3Dfunction%28%29%7Bvar%20t%2Ce%2Ci%2Co%2Cn%2Cs%2Cr%2Ca%2Ch%2Cd%2Cl%2Cu%2Cp%2Cf%3Dthis%2Eframe%2Ecanvas%2Cm%3Df%2EgetContext%28%222d%22%29%3Bm%2Efont%3D24%2Fthis%2Ecamera%2EgetArmLength%28%29%2B%22px%20arial%22%3Bvar%20g%3D%2E025%2Fthis%2Escale%2Ex%2Cy%3D%2E025%2Fthis%2Escale%2Ey%2Cb%3D5%2Fthis%2Ecamera%2EgetArmLength%28%29%2Cw%3Dthis%2Ecamera%2EgetArmRotation%28%29%2Ehorizontal%3Bfor%28m%2ElineWidth%3D1%2Co%3Dvoid%200%3D%3D%3Dthis%2EdefaultXStep%2Ci%3Dnew%20v%28this%2ExMin%2Cthis%2ExMax%2Cthis%2ExStep%2Co%29%2Ci%2Estart%28%29%2Ci%2EgetCurrent%28%29%3Cthis%2ExMin%26%26i%2Enext%28%29%3B%21i%2Eend%28%29%3B%29%7Bvar%20%5F%3Di%2EgetCurrent%28%29%3Bthis%2EshowGrid%3F%28t%3Dthis%2E%5Fconvert3Dto2D%28new%20c%28%5F%2Cthis%2EyMin%2Cthis%2EzMin%29%29%2Ce%3Dthis%2E%5Fconvert3Dto2D%28new%20c%28%5F%2Cthis%2EyMax%2Cthis%2EzMin%29%29%2Cm%2EstrokeStyle%3Dthis%2EgridColor%2Cm%2EbeginPath%28%29%2Cm%2EmoveTo%28t%2Ex%2Ct%2Ey%29%2Cm%2ElineTo%28e%2Ex%2Ce%2Ey%29%2Cm%2Estroke%28%29%29%3A%28t%3Dthis%2E%5Fconvert3Dto2D%28new%20c%28%5F%2Cthis%2EyMin%2Cthis%2EzMin%29%29%2Ce%3Dthis%2E%5Fconvert3Dto2D%28new%20c%28%5F%2Cthis%2EyMin%2Bg%2Cthis%2EzMin%29%29%2Cm%2EstrokeStyle%3Dthis%2EaxisColor%2Cm%2EbeginPath%28%29%2Cm%2EmoveTo%28t%2Ex%2Ct%2Ey%29%2Cm%2ElineTo%28e%2Ex%2Ce%2Ey%29%2Cm%2Estroke%28%29%2Ct%3Dthis%2E%5Fconvert3Dto2D%28new%20c%28%5F%2Cthis%2EyMax%2Cthis%2EzMin%29%29%2Ce%3Dthis%2E%5Fconvert3Dto2D%28new%20c%28%5F%2Cthis%2EyMax%2Dg%2Cthis%2EzMin%29%29%2Cm%2EstrokeStyle%3Dthis%2EaxisColor%2Cm%2EbeginPath%28%29%2Cm%2EmoveTo%28t%2Ex%2Ct%2Ey%29%2Cm%2ElineTo%28e%2Ex%2Ce%2Ey%29%2Cm%2Estroke%28%29%29%2Cr%3DMath%2Ecos%28w%29%3E0%3Fthis%2EyMin%3Athis%2EyMax%2Cn%3Dthis%2E%5Fconvert3Dto2D%28new%20c%28%5F%2Cr%2Cthis%2EzMin%29%29%2CMath%2Ecos%282%2Aw%29%3E0%3F%28m%2EtextAlign%3D%22center%22%2Cm%2EtextBaseline%3D%22top%22%2Cn%2Ey%2B%3Db%29%3AMath%2Esin%282%2Aw%29%3C0%3F%28m%2EtextAlign%3D%22right%22%2Cm%2EtextBaseline%3D%22middle%22%29%3A%28m%2EtextAlign%3D%22left%22%2Cm%2EtextBaseline%3D%22middle%22%29%2Cm%2EfillStyle%3Dthis%2EaxisColor%2Cm%2EfillText%28%22%20%20%22%2Bthis%2ExValueLabel%28i%2EgetCurrent%28%29%29%2B%22%20%20%22%2Cn%2Ex%2Cn%2Ey%29%2Ci%2Enext%28%29%7Dfor%28m%2ElineWidth%3D1%2Co%3Dvoid%200%3D%3D%3Dthis%2EdefaultYStep%2Ci%3Dnew%20v%28this%2EyMin%2Cthis%2EyMax%2Cthis%2EyStep%2Co%29%2Ci%2Estart%28%29%2Ci%2EgetCurrent%28%29%3Cthis%2EyMin%26%26i%2Enext%28%29%3B%21i%2Eend%28%29%3B%29this%2EshowGrid%3F%28t%3Dthis%2E%5Fconvert3Dto2D%28new%20c%28this%2ExMin%2Ci%2EgetCurrent%28%29%2Cthis%2EzMin%29%29%2Ce%3Dthis%2E%5Fconvert3Dto2D%28new%20c%28this%2ExMax%2Ci%2EgetCurrent%28%29%2Cthis%2EzMin%29%29%2Cm%2EstrokeStyle%3Dthis%2EgridColor%2Cm%2EbeginPath%28%29%2Cm%2EmoveTo%28t%2Ex%2Ct%2Ey%29%2Cm%2ElineTo%28e%2Ex%2Ce%2Ey%29%2Cm%2Estroke%28%29%29%3A%28t%3Dthis%2E%5Fconvert3Dto2D%28new%20c%28this%2ExMin%2Ci%2EgetCurrent%28%29%2Cthis%2EzMin%29%29%2Ce%3Dthis%2E%5Fconvert3Dto2D%28new%20c%28this%2ExMin%2By%2Ci%2EgetCurrent%28%29%2Cthis%2EzMin%29%29%2C%0Am%2EstrokeStyle%3Dthis%2EaxisColor%2Cm%2EbeginPath%28%29%2Cm%2EmoveTo%28t%2Ex%2Ct%2Ey%29%2Cm%2ElineTo%28e%2Ex%2Ce%2Ey%29%2Cm%2Estroke%28%29%2Ct%3Dthis%2E%5Fconvert3Dto2D%28new%20c%28this%2ExMax%2Ci%2EgetCurrent%28%29%2Cthis%2EzMin%29%29%2Ce%3Dthis%2E%5Fconvert3Dto2D%28new%20c%28this%2ExMax%2Dy%2Ci%2EgetCurrent%28%29%2Cthis%2EzMin%29%29%2Cm%2EstrokeStyle%3Dthis%2EaxisColor%2Cm%2EbeginPath%28%29%2Cm%2EmoveTo%28t%2Ex%2Ct%2Ey%29%2Cm%2ElineTo%28e%2Ex%2Ce%2Ey%29%2Cm%2Estroke%28%29%29%2Cs%3DMath%2Esin%28w%29%3E0%3Fthis%2ExMin%3Athis%2ExMax%2Cn%3Dthis%2E%5Fconvert3Dto2D%28new%20c%28s%2Ci%2EgetCurrent%28%29%2Cthis%2EzMin%29%29%2CMath%2Ecos%282%2Aw%29%3C0%3F%28m%2EtextAlign%3D%22center%22%2Cm%2EtextBaseline%3D%22top%22%2Cn%2Ey%2B%3Db%29%3AMath%2Esin%282%2Aw%29%3E0%3F%28m%2EtextAlign%3D%22right%22%2Cm%2EtextBaseline%3D%22middle%22%29%3A%28m%2EtextAlign%3D%22left%22%2Cm%2EtextBaseline%3D%22middle%22%29%2Cm%2EfillStyle%3Dthis%2EaxisColor%2Cm%2EfillText%28%22%20%20%22%2Bthis%2EyValueLabel%28i%2EgetCurrent%28%29%29%2B%22%20%20%22%2Cn%2Ex%2Cn%2Ey%29%2Ci%2Enext%28%29%3Bfor%28m%2ElineWidth%3D1%2Co%3Dvoid%200%3D%3D%3Dthis%2EdefaultZStep%2Ci%3Dnew%20v%28this%2EzMin%2Cthis%2EzMax%2Cthis%2EzStep%2Co%29%2Ci%2Estart%28%29%2Ci%2EgetCurrent%28%29%3Cthis%2EzMin%26%26i%2Enext%28%29%2Cs%3DMath%2Ecos%28w%29%3E0%3Fthis%2ExMin%3Athis%2ExMax%2Cr%3DMath%2Esin%28w%29%3C0%3Fthis%2EyMin%3Athis%2EyMax%3B%21i%2Eend%28%29%3B%29t%3Dthis%2E%5Fconvert3Dto2D%28new%20c%28s%2Cr%2Ci%2EgetCurrent%28%29%29%29%2Cm%2EstrokeStyle%3Dthis%2EaxisColor%2Cm%2EbeginPath%28%29%2Cm%2EmoveTo%28t%2Ex%2Ct%2Ey%29%2Cm%2ElineTo%28t%2Ex%2Db%2Ct%2Ey%29%2Cm%2Estroke%28%29%2Cm%2EtextAlign%3D%22right%22%2Cm%2EtextBaseline%3D%22middle%22%2Cm%2EfillStyle%3Dthis%2EaxisColor%2Cm%2EfillText%28this%2EzValueLabel%28i%2EgetCurrent%28%29%29%2B%22%20%22%2Ct%2Ex%2D5%2Ct%2Ey%29%2Ci%2Enext%28%29%3Bm%2ElineWidth%3D1%2Ct%3Dthis%2E%5Fconvert3Dto2D%28new%20c%28s%2Cr%2Cthis%2EzMin%29%29%2Ce%3Dthis%2E%5Fconvert3Dto2D%28new%20c%28s%2Cr%2Cthis%2EzMax%29%29%2Cm%2EstrokeStyle%3Dthis%2EaxisColor%2Cm%2EbeginPath%28%29%2Cm%2EmoveTo%28t%2Ex%2Ct%2Ey%29%2Cm%2ElineTo%28e%2Ex%2Ce%2Ey%29%2Cm%2Estroke%28%29%2Cm%2ElineWidth%3D1%2Cu%3Dthis%2E%5Fconvert3Dto2D%28new%20c%28this%2ExMin%2Cthis%2EyMin%2Cthis%2EzMin%29%29%2Cp%3Dthis%2E%5Fconvert3Dto2D%28new%20c%28this%2ExMax%2Cthis%2EyMin%2Cthis%2EzMin%29%29%2Cm%2EstrokeStyle%3Dthis%2EaxisColor%2Cm%2EbeginPath%28%29%2Cm%2EmoveTo%28u%2Ex%2Cu%2Ey%29%2Cm%2ElineTo%28p%2Ex%2Cp%2Ey%29%2Cm%2Estroke%28%29%2Cu%3Dthis%2E%5Fconvert3Dto2D%28new%20c%28this%2ExMin%2Cthis%2EyMax%2Cthis%2EzMin%29%29%2Cp%3Dthis%2E%5Fconvert3Dto2D%28new%20c%28this%2ExMax%2Cthis%2EyMax%2Cthis%2EzMin%29%29%2Cm%2EstrokeStyle%3Dthis%2EaxisColor%2Cm%2EbeginPath%28%29%2Cm%2EmoveTo%28u%2Ex%2Cu%2Ey%29%2Cm%2ElineTo%28p%2Ex%2Cp%2Ey%29%2Cm%2Estroke%28%29%2Cm%2ElineWidth%3D1%2Ct%3Dthis%2E%5Fconvert3Dto2D%28new%20c%28this%2ExMin%2Cthis%2EyMin%2Cthis%2EzMin%29%29%2Ce%3Dthis%2E%5Fconvert3Dto2D%28new%20c%28this%2ExMin%2Cthis%2EyMax%2Cthis%2EzMin%29%29%2Cm%2EstrokeStyle%3Dthis%2EaxisColor%2Cm%2EbeginPath%28%29%2Cm%2EmoveTo%28t%2Ex%2Ct%2Ey%29%2Cm%2ElineTo%28e%2Ex%2Ce%2Ey%29%2Cm%2Estroke%28%29%2Ct%3Dthis%2E%5Fconvert3Dto2D%28new%20c%28this%2ExMax%2Cthis%2EyMin%2Cthis%2EzMin%29%29%2Ce%3Dthis%2E%5Fconvert3Dto2D%28new%20c%28this%2ExMax%2Cthis%2EyMax%2Cthis%2EzMin%29%29%2Cm%2EstrokeStyle%3Dthis%2EaxisColor%2Cm%2EbeginPath%28%29%2Cm%2EmoveTo%28t%2Ex%2Ct%2Ey%29%2Cm%2ElineTo%28e%2Ex%2Ce%2Ey%29%2Cm%2Estroke%28%29%3Bvar%20x%3Dthis%2ExLabel%3Bx%2Elength%3E0%26%26%28l%3D%2E1%2Fthis%2Escale%2Ey%2Cs%3D%28this%2ExMin%2Bthis%2ExMax%29%2F2%2Cr%3DMath%2Ecos%28w%29%3E0%3Fthis%2EyMin%2Dl%3Athis%2EyMax%2Bl%2Cn%3Dthis%2E%5Fconvert3Dto2D%28new%20c%28s%2Cr%2Cthis%2EzMin%29%29%2CMath%2Ecos%282%2Aw%29%3E0%3F%28m%2EtextAlign%3D%22center%22%2Cm%2EtextBaseline%3D%22top%22%29%3AMath%2Esin%282%2Aw%29%3C0%3F%28m%2EtextAlign%3D%22right%22%2Cm%2EtextBaseline%3D%22middle%22%29%3A%28m%2EtextAlign%3D%22left%22%2Cm%2EtextBaseline%3D%22middle%22%29%2Cm%2EfillStyle%3Dthis%2EaxisColor%2Cm%2EfillText%28x%2Cn%2Ex%2Cn%2Ey%29%29%3Bvar%20k%3Dthis%2EyLabel%3Bk%2Elength%3E0%26%26%28d%3D%2E1%2Fthis%2Escale%2Ex%2Cs%3DMath%2Esin%28w%29%3E0%3Fthis%2ExMin%2Dd%3Athis%2ExMax%2Bd%2Cr%3D%28this%2EyMin%2Bthis%2EyMax%29%2F2%2Cn%3Dthis%2E%5Fconvert3Dto2D%28new%20c%28s%2Cr%2Cthis%2EzMin%29%29%2CMath%2Ecos%282%2Aw%29%3C0%3F%28m%2EtextAlign%3D%22center%22%2Cm%2EtextBaseline%3D%22top%22%29%3AMath%2Esin%282%2Aw%29%3E0%3F%28m%2EtextAlign%3D%22right%22%2Cm%2EtextBaseline%3D%22middle%22%29%3A%28m%2EtextAlign%3D%22left%22%2Cm%2EtextBaseline%3D%22middle%22%29%2Cm%2EfillStyle%3Dthis%2EaxisColor%2Cm%2EfillText%28k%2Cn%2Ex%2Cn%2Ey%29%29%3Bvar%20O%3Dthis%2EzLabel%3BO%2Elength%3E0%26%26%28h%3D30%2Cs%3DMath%2Ecos%28w%29%3E0%3Fthis%2ExMin%3Athis%2ExMax%2Cr%3DMath%2Esin%28w%29%3C0%3Fthis%2EyMin%3Athis%2EyMax%2Ca%3D%28this%2EzMin%2Bthis%2EzMax%29%2F2%2Cn%3Dthis%2E%5Fconvert3Dto2D%28new%20c%28s%2Cr%2Ca%29%29%2Cm%2EtextAlign%3D%22right%22%2Cm%2EtextBaseline%3D%22middle%22%2Cm%2EfillStyle%3Dthis%2EaxisColor%2Cm%2EfillText%28O%2Cn%2Ex%2Dh%2Cn%2Ey%29%29%7D%2Co%2Eprototype%2E%5Fhsv2rgb%3Dfunction%28t%2Ce%2Ci%29%7Bvar%20o%2Cn%2Cs%2Cr%2Ca%2Ch%3Bswitch%28r%3Di%2Ae%2Ca%3DMath%2Efloor%28t%2F60%29%2Ch%3Dr%2A%281%2DMath%2Eabs%28t%2F60%252%2D1%29%29%2Ca%29%7Bcase%200%3Ao%3Dr%2Cn%3Dh%2Cs%3D0%3Bbreak%3Bcase%201%3Ao%3Dh%2Cn%3Dr%2Cs%3D0%3Bbreak%3Bcase%202%3Ao%3D0%2Cn%3Dr%2Cs%3Dh%3Bbreak%3Bcase%203%3Ao%3D0%2Cn%3Dh%2Cs%3Dr%3Bbreak%3Bcase%204%3Ao%3Dh%2Cn%3D0%2Cs%3Dr%3Bbreak%3Bcase%205%3Ao%3Dr%2Cn%3D0%2Cs%3Dh%3Bbreak%3Bdefault%3Ao%3D0%2Cn%3D0%2Cs%3D0%7Dreturn%22RGB%28%22%2BparseInt%28255%2Ao%29%2B%22%2C%22%2BparseInt%28255%2An%29%2B%22%2C%22%2BparseInt%28255%2As%29%2B%22%29%22%7D%2Co%2Eprototype%2E%5FredrawDataGrid%3Dfunction%28%29%7Bvar%20t%2Ce%2Ci%2Cn%2Cs%2Cr%2Ca%2Ch%2Cd%2Cl%2Cu%2Cp%2Cf%3Dthis%2Eframe%2Ecanvas%2Cm%3Df%2EgetContext%28%222d%22%29%3Bif%28m%2ElineJoin%3D%22round%22%2Cm%2ElineCap%3D%22round%22%2C%21%28void%200%3D%3D%3Dthis%2EdataPoints%7C%7Cthis%2EdataPoints%2Elength%3C%3D0%29%29%7Bfor%28s%3D0%3Bs%3Cthis%2EdataPoints%2Elength%3Bs%2B%2B%29%7Bvar%20v%3Dthis%2E%5FconvertPointToTranslation%28this%2EdataPoints%5Bs%5D%2Epoint%29%2Cg%3Dthis%2E%5FconvertTranslationToScreen%28v%29%3Bthis%2EdataPoints%5Bs%5D%2Etrans%3Dv%2Cthis%2EdataPoints%5Bs%5D%2Escreen%3Dg%3Bvar%20y%3Dthis%2E%5FconvertPointToTranslation%28this%2EdataPoints%5Bs%5D%2Ebottom%29%3Bthis%2EdataPoints%5Bs%5D%2Edist%3Dthis%2EshowPerspective%3Fy%2Elength%28%29%3A%2Dy%2Ez%7Dvar%20b%3Dfunction%28t%2Ce%29%7Breturn%20e%2Edist%2Dt%2Edist%7D%3Bif%28this%2EdataPoints%2Esort%28b%29%2Cthis%2Estyle%3D%3D%3Do%2ESTYLE%2ESURFACE%29%7Bfor%28s%3D0%3Bs%3Cthis%2EdataPoints%2Elength%3Bs%2B%2B%29if%28t%3Dthis%2EdataPoints%5Bs%5D%2Ce%3Dthis%2EdataPoints%5Bs%5D%2EpointRight%2Ci%3Dthis%2EdataPoints%5Bs%5D%2EpointTop%2Cn%3Dthis%2EdataPoints%5Bs%5D%2EpointCross%2Cvoid%200%21%3D%3Dt%26%26void%200%21%3D%3De%26%26void%200%21%3D%3Di%26%26void%200%21%3D%3Dn%29%7Bif%28this%2EshowGrayBottom%7C%7Cthis%2EshowShadow%29%7Bvar%20w%3Dc%2Esubtract%28n%2Etrans%2Ct%2Etrans%29%2C%5F%3Dc%2Esubtract%28i%2Etrans%2Ce%2Etrans%29%2Cx%3Dc%2EcrossProduct%28w%2C%5F%29%2Ck%3Dx%2Elength%28%29%3Br%3Dx%2Ez%3E0%7Delse%20r%3D%210%3Br%3F%28p%3D%28t%2Epoint%2Ez%2Be%2Epoint%2Ez%2Bi%2Epoint%2Ez%2Bn%2Epoint%2Ez%29%2F4%2Cd%3D240%2A%281%2D%28p%2Dthis%2EzMin%29%2Athis%2Escale%2Ez%2Fthis%2EverticalRatio%29%2Cl%3D1%2Cthis%2EshowShadow%3F%28u%3DMath%2Emin%281%2Bx%2Ex%2Fk%2F2%2C1%29%2Ca%3Dthis%2E%5Fhsv2rgb%28d%2Cl%2Cu%29%2Ch%3Da%29%3A%28u%3D1%2Ca%3Dthis%2E%5Fhsv2rgb%28d%2Cl%2Cu%29%2Ch%3Dthis%2EaxisColor%29%29%3A%28a%3D%22gray%22%2Ch%3Dthis%2EaxisColor%29%2Cm%2ElineWidth%3Dthis%2E%5FgetStrokeWidth%28t%29%2Cm%2EfillStyle%3Da%2Cm%2EstrokeStyle%3Dh%2Cm%2EbeginPath%28%29%2Cm%2EmoveTo%28t%2Escreen%2Ex%2Ct%2Escreen%2Ey%29%2Cm%2ElineTo%28e%2Escreen%2Ex%2Ce%2Escreen%2Ey%29%2Cm%2ElineTo%28n%2Escreen%2Ex%2Cn%2Escreen%2Ey%29%2Cm%2ElineTo%28i%2Escreen%2Ex%2Ci%2Escreen%2Ey%29%2Cm%2EclosePath%28%29%2Cm%2Efill%28%29%2Cm%2Estroke%28%29%7D%7Delse%20for%28s%3D0%3Bs%3Cthis%2EdataPoints%2Elength%3Bs%2B%2B%29t%3Dthis%2EdataPoints%5Bs%5D%2Ce%3Dthis%2EdataPoints%5Bs%5D%2EpointRight%2Ci%3Dthis%2EdataPoints%5Bs%5D%2EpointTop%2Cvoid%200%21%3D%3Dt%26%26void%200%21%3D%3De%26%26%28p%3D%28t%2Epoint%2Ez%2Be%2Epoint%2Ez%29%2F2%2Cd%3D240%2A%281%2D%28p%2Dthis%2EzMin%29%2Athis%2Escale%2Ez%2Fthis%2EverticalRatio%29%2Cm%2ElineWidth%3D2%2Athis%2E%5FgetStrokeWidth%28t%29%2Cm%2EstrokeStyle%3Dthis%2E%5Fhsv2rgb%28d%2C1%2C1%29%2Cm%2EbeginPath%28%29%2Cm%2EmoveTo%28t%2Escreen%2Ex%2Ct%2Escreen%2Ey%29%2Cm%2ElineTo%28e%2Escreen%2Ex%2Ce%2Escreen%2Ey%29%2Cm%2Estroke%28%29%29%2Cvoid%200%21%3D%3Dt%26%26void%200%21%3D%3Di%26%26%28p%3D%28t%2Epoint%2Ez%2Bi%2Epoint%2Ez%29%2F2%2Cd%3D240%2A%281%2D%28p%2Dthis%2EzMin%29%2Athis%2Escale%2Ez%2Fthis%2EverticalRatio%29%2Cm%2ElineWidth%3D2%2Athis%2E%5FgetStrokeWidth%28t%29%2Cm%2EstrokeStyle%3Dthis%2E%5Fhsv2rgb%28d%2C1%2C1%29%2Cm%2EbeginPath%28%29%2Cm%2EmoveTo%28t%2Escreen%2Ex%2Ct%2Escreen%2Ey%29%2Cm%2ElineTo%28i%2Escreen%2Ex%2Ci%2Escreen%2Ey%29%2Cm%2Estroke%28%29%29%7D%7D%2Co%2Eprototype%2E%5FgetStrokeWidth%3Dfunction%28t%29%7Breturn%20void%200%21%3D%3Dt%3Fthis%2EshowPerspective%3F1%2F%2Dt%2Etrans%2Ez%2Athis%2EdataColor%2EstrokeWidth%3A%2D%28this%2Eeye%2Ez%2Fthis%2Ecamera%2EgetArmLength%28%29%29%2Athis%2EdataColor%2EstrokeWidth%3Athis%2EdataColor%2EstrokeWidth%7D%2Co%2Eprototype%2E%5FredrawDataDot%3Dfunction%28%29%7Bvar%20t%2Ce%3Dthis%2Eframe%2Ecanvas%2Ci%3De%2EgetContext%28%222d%22%29%3Bif%28%21%28void%200%3D%3D%3Dthis%2EdataPoints%7C%7Cthis%2EdataPoints%2Elength%3C%3D0%29%29%7Bfor%28t%3D0%3Bt%3Cthis%2EdataPoints%2Elength%3Bt%2B%2B%29%7Bvar%20n%3Dthis%2E%5FconvertPointToTranslation%28this%2EdataPoints%5Bt%5D%2Epoint%29%2Cs%3Dthis%2E%5FconvertTranslationToScreen%28n%29%3Bthis%2EdataPoints%5Bt%5D%2Etrans%3Dn%2Cthis%2EdataPoints%5Bt%5D%2Escreen%3Ds%3Bvar%20r%3Dthis%2E%5FconvertPointToTranslation%28this%2EdataPoints%5Bt%5D%2Ebottom%29%3Bthis%2EdataPoints%5Bt%5D%2Edist%3Dthis%2EshowPerspective%3Fr%2Elength%28%29%3A%2Dr%2Ez%7Dvar%20a%3Dfunction%28t%2Ce%29%7Breturn%20e%2Edist%2Dt%2Edist%7D%3Bthis%2EdataPoints%2Esort%28a%29%3Bvar%20h%3Dthis%2Eframe%2EclientWidth%2Athis%2EdotSizeRatio%3Bfor%28t%3D0%3Bt%3Cthis%2EdataPoints%2Elength%3Bt%2B%2B%29%7Bvar%20d%3Dthis%2EdataPoints%5Bt%5D%3Bif%28this%2Estyle%3D%3D%3Do%2ESTYLE%2EDOTLINE%29%7Bvar%20l%3Dthis%2E%5Fconvert3Dto2D%28d%2Ebottom%29%3Bi%2ElineWidth%3D1%2Ci%2EstrokeStyle%3Dthis%2EgridColor%2Ci%2EbeginPath%28%29%2Ci%2EmoveTo%28l%2Ex%2Cl%2Ey%29%2Ci%2ElineTo%28d%2Escreen%2Ex%2Cd%2Escreen%2Ey%29%2Ci%2Estroke%28%29%7Dvar%20c%3Bc%3Dthis%2Estyle%3D%3D%3Do%2ESTYLE%2EDOTSIZE%3Fh%2F2%2B2%2Ah%2A%28d%2Epoint%2Evalue%2Dthis%2EvalueMin%29%2F%28this%2EvalueMax%2Dthis%2EvalueMin%29%3Ah%3Bvar%20u%3Bu%3Dthis%2EshowPerspective%3Fc%2F%2Dd%2Etrans%2Ez%3Ac%2A%2D%28this%2Eeye%2Ez%2Fthis%2Ecamera%2EgetArmLength%28%29%29%2C0%3Eu%26%26%28u%3D0%29%3Bvar%20p%2Cf%2Cm%3Bthis%2Estyle%3D%3D%3Do%2ESTYLE%2EDOTCOLOR%3F%28p%3D240%2A%281%2D%28d%2Epoint%2Evalue%2Dthis%2EvalueMin%29%2Athis%2Escale%2Evalue%29%2Cf%3Dthis%2E%5Fhsv2rgb%28p%2C1%2C1%29%2Cm%3Dthis%2E%5Fhsv2rgb%28p%2C1%2C%2E8%29%29%3Athis%2Estyle%3D%3D%3Do%2ESTYLE%2EDOTSIZE%3F%28f%3Dthis%2EdataColor%2Efill%2Cm%3Dthis%2EdataColor%2Estroke%29%3A%28p%3D240%2A%281%2D%28d%2Epoint%2Ez%2Dthis%2EzMin%29%2Athis%2Escale%2Ez%2Fthis%2EverticalRatio%29%2Cf%3Dthis%2E%5Fhsv2rgb%28p%2C1%2C1%29%2Cm%3Dthis%2E%5Fhsv2rgb%28p%2C1%2C%2E8%29%29%2Ci%2ElineWidth%3Dthis%2E%5FgetStrokeWidth%28d%29%2Ci%2EstrokeStyle%3Dm%2Ci%2EfillStyle%3Df%2Ci%2EbeginPath%28%29%2Ci%2Earc%28d%2Escreen%2Ex%2Cd%2Escreen%2Ey%2Cu%2C0%2C2%2AMath%2EPI%2C%210%29%2Ci%2Efill%28%29%2Ci%2Estroke%28%29%7D%7D%7D%2Co%2Eprototype%2E%5FredrawDataBar%3Dfunction%28%29%7Bvar%20t%2Ce%2Ci%2Cn%2Cs%3Dthis%2Eframe%2Ecanvas%2Cr%3Ds%2EgetContext%28%222d%22%29%3Bif%28%21%28void%200%3D%3D%3Dthis%2EdataPoints%7C%7Cthis%2EdataPoints%2Elength%3C%3D0%29%29%7Bfor%28t%3D0%3Bt%3Cthis%2EdataPoints%2Elength%3Bt%2B%2B%29%7Bvar%20a%3Dthis%2E%5FconvertPointToTranslation%28this%2EdataPoints%5Bt%5D%2Epoint%29%2Ch%3Dthis%2E%5FconvertTranslationToScreen%28a%29%3Bthis%2EdataPoints%5Bt%5D%2Etrans%3Da%2Cthis%2EdataPoints%5Bt%5D%2Escreen%3Dh%3Bvar%20d%3Dthis%2E%5FconvertPointToTranslation%28this%2EdataPoints%5Bt%5D%2Ebottom%29%3Bthis%2EdataPoints%5Bt%5D%2Edist%3Dthis%2EshowPerspective%3Fd%2Elength%28%29%3A%2Dd%2Ez%7Dvar%20l%3Dfunction%28t%2Ce%29%7Breturn%20e%2Edist%2Dt%2Edist%7D%3Bthis%2EdataPoints%2Esort%28l%29%2Cr%2ElineJoin%3D%22round%22%2Cr%2ElineCap%3D%22round%22%3Bvar%20u%3Dthis%2ExBarWidth%2F2%2Cp%3Dthis%2EyBarWidth%2F2%3Bfor%28t%3D0%3Bt%3Cthis%2EdataPoints%2Elength%3Bt%2B%2B%29%7Bvar%20f%2Cm%2Cv%2Cg%3Dthis%2EdataPoints%5Bt%5D%3Bthis%2Estyle%3D%3D%3Do%2ESTYLE%2EBARCOLOR%3F%28f%3D240%2A%281%2D%28g%2Epoint%2Evalue%2Dthis%2EvalueMin%29%2Athis%2Escale%2Evalue%29%2Cm%3Dthis%2E%5Fhsv2rgb%28f%2C1%2C1%29%2Cv%3Dthis%2E%5Fhsv2rgb%28f%2C1%2C%2E8%29%29%3Athis%2Estyle%3D%3D%3Do%2ESTYLE%2EBARSIZE%3F%28m%3Dthis%2EdataColor%2Efill%2Cv%3Dthis%2EdataColor%2Estroke%29%3A%28f%3D240%2A%281%2D%28g%2Epoint%2Ez%2Dthis%2EzMin%29%2Athis%2Escale%2Ez%2Fthis%2EverticalRatio%29%2Cm%3Dthis%2E%5Fhsv2rgb%28f%2C1%2C1%29%2Cv%3Dthis%2E%5Fhsv2rgb%28f%2C1%2C%2E8%29%29%2Cthis%2Estyle%3D%3D%3Do%2ESTYLE%2EBARSIZE%26%26%28u%3Dthis%2ExBarWidth%2F2%2A%28%28g%2Epoint%2Evalue%2Dthis%2EvalueMin%29%2F%28this%2EvalueMax%2Dthis%2EvalueMin%29%2A%2E8%2B%2E2%29%2Cp%3Dthis%2EyBarWidth%2F2%2A%28%28g%2Epoint%2Evalue%2Dthis%2EvalueMin%29%2F%28this%2EvalueMax%2Dthis%2EvalueMin%29%2A%2E8%2B%2E2%29%29%3Bvar%20y%3Dthis%2Cb%3Dg%2Epoint%2Cw%3D%5B%7Bpoint%3Anew%20c%28b%2Ex%2Du%2Cb%2Ey%2Dp%2Cb%2Ez%29%7D%2C%7Bpoint%3Anew%20c%28b%2Ex%2Bu%2Cb%2Ey%2Dp%2Cb%2Ez%29%7D%2C%7Bpoint%3Anew%20c%28b%2Ex%2Bu%2Cb%2Ey%2Bp%2Cb%2Ez%29%7D%2C%7Bpoint%3Anew%20c%28b%2Ex%2Du%2Cb%2Ey%2Bp%2Cb%2Ez%29%7D%5D%2C%5F%3D%5B%7Bpoint%3Anew%20c%28b%2Ex%2Du%2Cb%2Ey%2Dp%2Cthis%2EzMin%29%7D%2C%7Bpoint%3Anew%20c%28b%2Ex%2Bu%2Cb%2Ey%2Dp%2Cthis%2EzMin%29%7D%2C%7Bpoint%3Anew%20c%28b%2Ex%2Bu%2Cb%2Ey%2Bp%2Cthis%2EzMin%29%7D%2C%7Bpoint%3Anew%20c%28b%2Ex%2Du%2Cb%2Ey%2Bp%2Cthis%2EzMin%29%7D%5D%3Bw%2EforEach%28function%28t%29%7Bt%2Escreen%3Dy%2E%5Fconvert3Dto2D%28t%2Epoint%29%7D%29%2C%5F%2EforEach%28function%28t%29%7Bt%2Escreen%3Dy%2E%5Fconvert3Dto2D%28t%2Epoint%29%7D%29%3Bvar%20x%3D%5B%7Bcorners%3Aw%2Ccenter%3Ac%2Eavg%28%5F%5B0%5D%2Epoint%2C%5F%5B2%5D%2Epoint%29%7D%2C%7Bcorners%3A%5Bw%5B0%5D%2Cw%5B1%5D%2C%5F%5B1%5D%2C%5F%5B0%5D%5D%2Ccenter%3Ac%2Eavg%28%5F%5B1%5D%2Epoint%2C%5F%5B0%5D%2Epoint%29%7D%2C%7Bcorners%3A%5Bw%5B1%5D%2Cw%5B2%5D%2C%5F%5B2%5D%2C%5F%5B1%5D%5D%2Ccenter%3Ac%2Eavg%28%5F%5B2%5D%2Epoint%2C%5F%5B1%5D%2Epoint%29%7D%2C%7Bcorners%3A%5Bw%5B2%5D%2Cw%5B3%5D%2C%5F%5B3%5D%2C%5F%5B2%5D%5D%2Ccenter%3Ac%2Eavg%28%5F%5B3%5D%2Epoint%2C%5F%5B2%5D%2Epoint%29%7D%2C%7Bcorners%3A%5Bw%5B3%5D%2Cw%5B0%5D%2C%5F%5B0%5D%2C%5F%5B3%5D%5D%2Ccenter%3Ac%2Eavg%28%5F%5B0%5D%2Epoint%2C%5F%5B3%5D%2Epoint%29%7D%5D%3Bfor%28g%2Esurfaces%3Dx%2Ce%3D0%3Be%3Cx%2Elength%3Be%2B%2B%29%7Bi%3Dx%5Be%5D%3Bvar%20k%3Dthis%2E%5FconvertPointToTranslation%28i%2Ecenter%29%3Bi%2Edist%3Dthis%2EshowPerspective%3Fk%2Elength%28%29%3A%2Dk%2Ez%7Dfor%28x%2Esort%28function%28t%2Ce%29%7Bvar%20i%3De%2Edist%2Dt%2Edist%3Breturn%20i%3Fi%3At%2Ecorners%3D%3D%3Dw%3F1%3Ae%2Ecorners%3D%3D%3Dw%3F%2D1%3A0%7D%29%2Cr%2ElineWidth%3Dthis%2E%5FgetStrokeWidth%28g%29%2Cr%2EstrokeStyle%3Dv%2Cr%2EfillStyle%3Dm%2Ce%3D2%3Be%3Cx%2Elength%3Be%2B%2B%29i%3Dx%5Be%5D%2Cn%3Di%2Ecorners%2Cr%2EbeginPath%28%29%2Cr%2EmoveTo%28n%5B3%5D%2Escreen%2Ex%2Cn%5B3%5D%2Escreen%2Ey%29%2Cr%2ElineTo%28n%5B0%5D%2Escreen%2Ex%2Cn%5B0%5D%2Escreen%2Ey%29%2Cr%2ElineTo%28n%5B1%5D%2Escreen%2Ex%2Cn%5B1%5D%2Escreen%2Ey%29%2Cr%2ElineTo%28n%5B2%5D%2Escreen%2Ex%2Cn%5B2%5D%2Escreen%2Ey%29%2Cr%2ElineTo%28n%5B3%5D%2Escreen%2Ex%2Cn%5B3%5D%2Escreen%2Ey%29%2Cr%2Efill%28%29%2Cr%2Estroke%28%29%7D%7D%7D%2Co%2Eprototype%2E%5FredrawDataLine%3Dfunction%28%29%7Bvar%20t%2Ce%2Ci%3Dthis%2Eframe%2Ecanvas%2Co%3Di%2EgetContext%28%222d%22%29%3Bif%28%21%28void%200%3D%3D%3Dthis%2EdataPoints%7C%7Cthis%2EdataPoints%2Elength%3C%3D0%29%29%7Bfor%28e%3D0%3Be%3Cthis%2EdataPoints%2Elength%3Be%2B%2B%29%7Bvar%20n%3Dthis%2E%5FconvertPointToTranslation%28this%2EdataPoints%5Be%5D%2Epoint%29%2Cs%3Dthis%2E%5FconvertTranslationToScreen%28n%29%3Bthis%2EdataPoints%5Be%5D%2Etrans%3Dn%2Cthis%2EdataPoints%5Be%5D%2Escreen%3Ds%7Dif%28this%2EdataPoints%2Elength%3E0%29%7Bfor%28t%3Dthis%2EdataPoints%5B0%5D%2Co%2ElineWidth%3Dthis%2E%5FgetStrokeWidth%28t%29%2Co%2ElineJoin%3D%22round%22%2Co%2ElineCap%3D%22round%22%2Co%2EstrokeStyle%3Dthis%2EdataColor%2Estroke%2Co%2EbeginPath%28%29%2Co%2EmoveTo%28t%2Escreen%2Ex%2Ct%2Escreen%2Ey%29%2Ce%3D1%3Be%3Cthis%2EdataPoints%2Elength%3Be%2B%2B%29t%3Dthis%2EdataPoints%5Be%5D%2Co%2ElineTo%28t%2Escreen%2Ex%2Ct%2Escreen%2Ey%29%3Bo%2Estroke%28%29%7D%7D%7D%2Co%2Eprototype%2E%5FonMouseDown%3Dfunction%28t%29%7Bif%28t%3Dt%7C%7Cwindow%2Eevent%2Cthis%2EleftButtonDown%26%26this%2E%5FonMouseUp%28t%29%2Cthis%2EleftButtonDown%3Dt%2Ewhich%3F1%3D%3D%3Dt%2Ewhich%3A1%3D%3D%3Dt%2Ebutton%2Cthis%2EleftButtonDown%7C%7Cthis%2EtouchDown%29%7Bthis%2EstartMouseX%3Dn%28t%29%2Cthis%2EstartMouseY%3Ds%28t%29%2Cthis%2EstartStart%3Dnew%20Date%28this%2Estart%29%2Cthis%2EstartEnd%3Dnew%20Date%28this%2Eend%29%2Cthis%2EstartArmRotation%3Dthis%2Ecamera%2EgetArmRotation%28%29%2Cthis%2Eframe%2Estyle%2Ecursor%3D%22move%22%3Bvar%20e%3Dthis%3Bthis%2Eonmousemove%3Dfunction%28t%29%7Be%2E%5FonMouseMove%28t%29%7D%2Cthis%2Eonmouseup%3Dfunction%28t%29%7Be%2E%5FonMouseUp%28t%29%7D%2Cl%2EaddEventListener%28document%2C%22mousemove%22%2Ce%2Eonmousemove%29%2Cl%2EaddEventListener%28document%2C%22mouseup%22%2Ce%2Eonmouseup%29%2Cl%2EpreventDefault%28t%29%7D%7D%2Co%2Eprototype%2E%5FonMouseMove%3Dfunction%28t%29%7Bt%3Dt%7C%7Cwindow%2Eevent%3Bvar%20e%3DparseFloat%28n%28t%29%29%2Dthis%2EstartMouseX%2Ci%3DparseFloat%28s%28t%29%29%2Dthis%2EstartMouseY%2Co%3Dthis%2EstartArmRotation%2Ehorizontal%2Be%2F200%2Cr%3Dthis%2EstartArmRotation%2Evertical%2Bi%2F200%2Ca%3D4%2Ch%3DMath%2Esin%28a%2F360%2A2%2AMath%2EPI%29%3BMath%2Eabs%28Math%2Esin%28o%29%29%3Ch%26%26%28o%3DMath%2Eround%28o%2FMath%2EPI%29%2AMath%2EPI%2D%2E001%29%2CMath%2Eabs%28Math%2Ecos%28o%29%29%3Ch%26%26%28o%3D%28Math%2Eround%28o%2FMath%2EPI%2D%2E5%29%2B%2E5%29%2AMath%2EPI%2D%2E001%29%2CMath%2Eabs%28Math%2Esin%28r%29%29%3Ch%26%26%28r%3DMath%2Eround%28r%2FMath%2EPI%29%2AMath%2EPI%29%2CMath%2Eabs%28Math%2Ecos%28r%29%29%3Ch%26%26%28r%3D%28Math%2Eround%28r%2FMath%2EPI%2D%2E5%29%2B%2E5%29%2AMath%2EPI%29%2Cthis%2Ecamera%2EsetArmRotation%28o%2Cr%29%2Cthis%2Eredraw%28%29%3Bvar%20d%3Dthis%2EgetCameraPosition%28%29%3Bthis%2Eemit%28%22cameraPositionChange%22%2Cd%29%2Cl%2EpreventDefault%28t%29%7D%2Co%2Eprototype%2E%5FonMouseUp%3Dfunction%28t%29%7Bthis%2Eframe%2Estyle%2Ecursor%3D%22auto%22%2Cthis%2EleftButtonDown%3D%211%2Cl%2EremoveEventListener%28document%2C%22mousemove%22%2Cthis%2Eonmousemove%29%2Cl%2EremoveEventListener%28document%2C%22mouseup%22%2Cthis%2Eonmouseup%29%2Cl%2EpreventDefault%28t%29%7D%2Co%2Eprototype%2E%5FonTooltip%3Dfunction%28t%29%7Bvar%20e%3D300%2Ci%3Dthis%2Eframe%2EgetBoundingClientRect%28%29%2Co%3Dn%28t%29%2Di%2Eleft%2Cr%3Ds%28t%29%2Di%2Etop%3Bif%28this%2EshowTooltip%29%7Bif%28this%2EtooltipTimeout%26%26clearTimeout%28this%2EtooltipTimeout%29%2Cthis%2EleftButtonDown%29return%20void%20this%2E%5FhideTooltip%28%29%3Bif%28this%2Etooltip%26%26this%2Etooltip%2EdataPoint%29%7Bvar%20a%3Dthis%2E%5FdataPointFromXY%28o%2Cr%29%3Ba%21%3D%3Dthis%2Etooltip%2EdataPoint%26%26%28a%3Fthis%2E%5FshowTooltip%28a%29%3Athis%2E%5FhideTooltip%28%29%29%7Delse%7Bvar%20h%3Dthis%3Bthis%2EtooltipTimeout%3DsetTimeout%28function%28%29%7Bh%2EtooltipTimeout%3Dnull%3Bvar%20t%3Dh%2E%5FdataPointFromXY%28o%2Cr%29%3Bt%26%26h%2E%5FshowTooltip%28t%29%7D%2Ce%29%7D%7D%7D%2Co%2Eprototype%2E%5FonTouchStart%3Dfunction%28t%29%7Bthis%2EtouchDown%3D%210%3Bvar%20e%3Dthis%3Bthis%2Eontouchmove%3Dfunction%28t%29%7Be%2E%5FonTouchMove%28t%29%7D%2Cthis%2Eontouchend%3Dfunction%28t%29%7Be%2E%5FonTouchEnd%28t%29%7D%2Cl%2EaddEventListener%28document%2C%22touchmove%22%2Ce%2Eontouchmove%29%2Cl%2EaddEventListener%28document%2C%22touchend%22%2Ce%2Eontouchend%29%2Cthis%2E%5FonMouseDown%28t%29%7D%2Co%2Eprototype%2E%5FonTouchMove%3Dfunction%28t%29%7Bthis%2E%5FonMouseMove%28t%29%7D%2Co%2Eprototype%2E%5FonTouchEnd%3Dfunction%28t%29%7Bthis%2EtouchDown%3D%211%2Cl%2EremoveEventListener%28document%2C%22touchmove%22%2Cthis%2Eontouchmove%29%2Cl%2EremoveEventListener%28document%2C%22touchend%22%2Cthis%2Eontouchend%29%2Cthis%2E%5FonMouseUp%28t%29%7D%2Co%2Eprototype%2E%5FonWheel%3Dfunction%28t%29%7Bt%7C%7C%28t%3Dwindow%2Eevent%29%3Bvar%20e%3D0%3Bif%28t%2EwheelDelta%3Fe%3Dt%2EwheelDelta%2F120%3At%2Edetail%26%26%28e%3D%2Dt%2Edetail%2F3%29%2Ce%29%7Bvar%20i%3Dthis%2Ecamera%2EgetArmLength%28%29%2Co%3Di%2A%281%2De%2F10%29%3Bthis%2Ecamera%2EsetArmLength%28o%29%2Cthis%2Eredraw%28%29%2Cthis%2E%5FhideTooltip%28%29%7Dvar%20n%3Dthis%2EgetCameraPosition%28%29%3Bthis%2Eemit%28%22cameraPositionChange%22%2Cn%29%2Cl%2EpreventDefault%28t%29%7D%2Co%2Eprototype%2E%5FinsideTriangle%3Dfunction%28t%2Ce%29%7Bfunction%20i%28t%29%7Breturn%20t%3E0%3F1%3A0%3Et%3F%2D1%3A0%7Dvar%20o%3De%5B0%5D%2Cn%3De%5B1%5D%2Cs%3De%5B2%5D%2Cr%3Di%28%28n%2Ex%2Do%2Ex%29%2A%28t%2Ey%2Do%2Ey%29%2D%28n%2Ey%2Do%2Ey%29%2A%28t%2Ex%2Do%2Ex%29%29%2Ca%3Di%28%28s%2Ex%2Dn%2Ex%29%2A%28t%2Ey%2Dn%2Ey%29%2D%28s%2Ey%2Dn%2Ey%29%2A%28t%2Ex%2Dn%2Ex%29%29%2Ch%3Di%28%28o%2Ex%2Ds%2Ex%29%2A%28t%2Ey%2Ds%2Ey%29%2D%28o%2Ey%2Ds%2Ey%29%2A%28t%2Ex%2Ds%2Ex%29%29%3Breturn%21%280%21%3Dr%26%260%21%3Da%26%26r%21%3Da%7C%7C0%21%3Da%26%260%21%3Dh%26%26a%21%3Dh%7C%7C0%21%3Dr%26%260%21%3Dh%26%26r%21%3Dh%29%7D%2Co%2Eprototype%2E%5FdataPointFromXY%3Dfunction%28t%2Ce%29%7Bvar%20i%2Cn%3D100%2Cs%3Dnull%2Cr%3Dnull%2Ca%3Dnull%2Ch%3Dnew%20u%28t%2Ce%29%3Bif%28this%2Estyle%3D%3D%3Do%2ESTYLE%2EBAR%7C%7Cthis%2Estyle%3D%3D%3Do%2ESTYLE%2EBARCOLOR%7C%7Cthis%2Estyle%3D%3D%3Do%2ESTYLE%2EBARSIZE%29for%28i%3Dthis%2EdataPoints%2Elength%2D1%3Bi%3E%3D0%3Bi%2D%2D%29%7Bs%3Dthis%2EdataPoints%5Bi%5D%3Bvar%20d%3Ds%2Esurfaces%3Bif%28d%29for%28var%20l%3Dd%2Elength%2D1%3Bl%3E%3D0%3Bl%2D%2D%29%7Bvar%20c%3Dd%5Bl%5D%2Cp%3Dc%2Ecorners%2Cf%3D%5Bp%5B0%5D%2Escreen%2Cp%5B1%5D%2Escreen%2Cp%5B2%5D%2Escreen%5D%2Cm%3D%5Bp%5B2%5D%2Escreen%2Cp%5B3%5D%2Escreen%2Cp%5B0%5D%2Escreen%5D%3Bif%28this%2E%5FinsideTriangle%28h%2Cf%29%7C%7Cthis%2E%5FinsideTriangle%28h%2Cm%29%29return%20s%7D%7Delse%20for%28i%3D0%3Bi%3Cthis%2EdataPoints%2Elength%3Bi%2B%2B%29%7Bs%3Dthis%2EdataPoints%5Bi%5D%3Bvar%20v%3Ds%2Escreen%3Bif%28v%29%7Bvar%20g%3DMath%2Eabs%28t%2Dv%2Ex%29%2Cy%3DMath%2Eabs%28e%2Dv%2Ey%29%2Cb%3DMath%2Esqrt%28g%2Ag%2By%2Ay%29%3B%28null%3D%3D%3Da%7C%7Ca%3Eb%29%26%26n%3Eb%26%26%28a%3Db%2Cr%3Ds%29%7D%7Dreturn%20r%7D%2Co%2Eprototype%2E%5FshowTooltip%3Dfunction%28t%29%7Bvar%20e%2Ci%2Co%3Bthis%2Etooltip%3F%28e%3Dthis%2Etooltip%2Edom%2Econtent%2Ci%3Dthis%2Etooltip%2Edom%2Eline%2Co%3Dthis%2Etooltip%2Edom%2Edot%29%3A%28e%3Ddocument%2EcreateElement%28%22div%22%29%2Ce%2Estyle%2Eposition%3D%22absolute%22%2Ce%2Estyle%2Epadding%3D%2210px%22%2Ce%2Estyle%2Eborder%3D%221px%20solid%20%234d4d4d%22%2Ce%2Estyle%2Ecolor%3D%22%231a1a1a%22%2Ce%2Estyle%2Ebackground%3D%22rgba%28255%2C255%2C255%2C0%2E7%29%22%2Ce%2Estyle%2EborderRadius%3D%222px%22%2Ce%2Estyle%2EboxShadow%3D%225px%205px%2010px%20rgba%28128%2C128%2C128%2C0%2E5%29%22%2Ci%3Ddocument%2EcreateElement%28%22div%22%29%2Ci%2Estyle%2Eposition%3D%22absolute%22%2Ci%2Estyle%2Eheight%3D%2240px%22%2Ci%2Estyle%2Ewidth%3D%220%22%2Ci%2Estyle%2EborderLeft%3D%221px%20solid%20%234d4d4d%22%2Co%3Ddocument%2EcreateElement%28%22div%22%29%2Co%2Estyle%2Eposition%3D%22absolute%22%2Co%2Estyle%2Eheight%3D%220%22%2Co%2Estyle%2Ewidth%3D%220%22%2Co%2Estyle%2Eborder%3D%225px%20solid%20%234d4d4d%22%2Co%2Estyle%2EborderRadius%3D%225px%22%2Cthis%2Etooltip%3D%7BdataPoint%3Anull%2Cdom%3A%7Bcontent%3Ae%2Cline%3Ai%2Cdot%3Ao%7D%7D%29%2Cthis%2E%5FhideTooltip%28%29%2Cthis%2Etooltip%2EdataPoint%3Dt%2C%22function%22%3D%3Dtypeof%20this%2EshowTooltip%3Fe%2EinnerHTML%3Dthis%2EshowTooltip%28t%2Epoint%29%3Ae%2EinnerHTML%3D%22%3Ctable%3E%3Ctr%3E%3Ctd%3E%22%2Bthis%2ExLabel%2B%22%3A%3C%2Ftd%3E%3Ctd%3E%22%2Bt%2Epoint%2Ex%2B%22%3C%2Ftd%3E%3C%2Ftr%3E%3Ctr%3E%3Ctd%3E%22%2Bthis%2EyLabel%2B%22%3A%3C%2Ftd%3E%3Ctd%3E%22%2Bt%2Epoint%2Ey%2B%22%3C%2Ftd%3E%3C%2Ftr%3E%3Ctr%3E%3Ctd%3E%22%2Bthis%2EzLabel%2B%22%3A%3C%2Ftd%3E%3Ctd%3E%22%2Bt%2Epoint%2Ez%2B%22%3C%2Ftd%3E%3C%2Ftr%3E%3C%2Ftable%3E%22%2Ce%2Estyle%2Eleft%3D%220%22%2Ce%2Estyle%2Etop%3D%220%22%2Cthis%2Eframe%2EappendChild%28e%29%2Cthis%2Eframe%2EappendChild%28i%29%2Cthis%2Eframe%2EappendChild%28o%29%3Bvar%20n%3De%2EoffsetWidth%2Cs%3De%2EoffsetHeight%2Cr%3Di%2EoffsetHeight%2Ca%3Do%2EoffsetWidth%2Ch%3Do%2EoffsetHeight%2Cd%3Dt%2Escreen%2Ex%2Dn%2F2%3Bd%3DMath%2Emin%28Math%2Emax%28d%2C10%29%2Cthis%2Eframe%2EclientWidth%2D10%2Dn%29%2Ci%2Estyle%2Eleft%3Dt%2Escreen%2Ex%2B%22px%22%2Ci%2Estyle%2Etop%3Dt%2Escreen%2Ey%2Dr%2B%22px%22%2Ce%2Estyle%2Eleft%3Dd%2B%22px%22%2Ce%2Estyle%2Etop%3Dt%2Escreen%2Ey%2Dr%2Ds%2B%22px%22%2Co%2Estyle%2Eleft%3Dt%2Escreen%2Ex%2Da%2F2%2B%22px%22%2Co%2Estyle%2Etop%3Dt%2Escreen%2Ey%2Dh%2F2%2B%22px%22%7D%2Co%2Eprototype%2E%5FhideTooltip%3Dfunction%28%29%7Bif%28this%2Etooltip%29%7Bthis%2Etooltip%2EdataPoint%3Dnull%3Bfor%28var%20t%20in%20this%2Etooltip%2Edom%29if%28this%2Etooltip%2Edom%2EhasOwnProperty%28t%29%29%7Bvar%20e%3Dthis%2Etooltip%2Edom%5Bt%5D%3Be%26%26e%2EparentNode%26%26e%2EparentNode%2EremoveChild%28e%29%7D%7D%7D%2Ct%2Eexports%3Do%7D%2Cfunction%28t%2Ce%29%7Bfunction%20i%28t%29%7Breturn%20t%3Fo%28t%29%3Avoid%200%7Dfunction%20o%28t%29%7Bfor%28var%20e%20in%20i%2Eprototype%29t%5Be%5D%3Di%2Eprototype%5Be%5D%3Breturn%20t%7Dt%2Eexports%3Di%2Ci%2Eprototype%2Eon%3Di%2Eprototype%2EaddEventListener%3Dfunction%28t%2Ce%29%7Breturn%20this%2E%5Fcallbacks%3Dthis%2E%5Fcallbacks%7C%7C%7B%7D%2C%28this%2E%5Fcallbacks%5Bt%5D%3Dthis%2E%5Fcallbacks%5Bt%5D%7C%7C%5B%5D%29%2Epush%28e%29%2Cthis%7D%2Ci%2Eprototype%2Eonce%3Dfunction%28t%2Ce%29%7Bfunction%20i%28%29%7Bo%2Eoff%28t%2Ci%29%2Ce%2Eapply%28this%2Carguments%29%7Dvar%20o%3Dthis%3Breturn%20this%2E%5Fcallbacks%3Dthis%2E%5Fcallbacks%7C%7C%7B%7D%2Ci%2Efn%3De%2Cthis%2Eon%28t%2Ci%29%2Cthis%7D%2Ci%2Eprototype%2Eoff%3Di%2Eprototype%2EremoveListener%3Di%2Eprototype%2EremoveAllListeners%3Di%2Eprototype%2EremoveEventListener%3Dfunction%28t%2Ce%29%7Bif%28this%2E%5Fcallbacks%3Dthis%2E%5Fcallbacks%7C%7C%7B%7D%2C0%3D%3Darguments%2Elength%29return%20this%2E%5Fcallbacks%3D%7B%7D%2Cthis%3Bvar%20i%3Dthis%2E%5Fcallbacks%5Bt%5D%3Bif%28%21i%29return%20this%3Bif%281%3D%3Darguments%2Elength%29return%20delete%20this%2E%5Fcallbacks%5Bt%5D%2Cthis%3Bfor%28var%20o%2Cn%3D0%3Bn%3Ci%2Elength%3Bn%2B%2B%29if%28o%3Di%5Bn%5D%2Co%3D%3D%3De%7C%7Co%2Efn%3D%3D%3De%29%7Bi%2Esplice%28n%2C1%29%3Bbreak%7Dreturn%20this%7D%2Ci%2Eprototype%2Eemit%3Dfunction%28t%29%7Bthis%2E%5Fcallbacks%3Dthis%2E%5Fcallbacks%7C%7C%7B%7D%3Bvar%20e%3D%5B%5D%2Eslice%2Ecall%28arguments%2C1%29%2Ci%3Dthis%2E%5Fcallbacks%5Bt%5D%3Bif%28i%29%7Bi%3Di%2Eslice%280%29%3Bfor%28var%20o%3D0%2Cn%3Di%2Elength%3Bn%3Eo%3B%2B%2Bo%29i%5Bo%5D%2Eapply%28this%2Ce%29%7Dreturn%20this%7D%2Ci%2Eprototype%2Elisteners%3Dfunction%28t%29%7Breturn%20this%2E%5Fcallbacks%3Dthis%2E%5Fcallbacks%7C%7C%7B%7D%2Cthis%2E%5Fcallbacks%5Bt%5D%7C%7C%5B%5D%7D%2Ci%2Eprototype%2EhasListeners%3Dfunction%28t%29%7Breturn%21%21this%2Elisteners%28t%29%2Elength%7D%7D%2Cfunction%28t%2Ce%29%7Bfunction%20i%28t%2Ce%2Ci%29%7Bthis%2Ex%3Dvoid%200%21%3D%3Dt%3Ft%3A0%2Cthis%2Ey%3Dvoid%200%21%3D%3De%3Fe%3A0%2Cthis%2Ez%3Dvoid%200%21%3D%3Di%3Fi%3A0%7Di%2Esubtract%3Dfunction%28t%2Ce%29%7Bvar%20o%3Dnew%20i%3Breturn%20o%2Ex%3Dt%2Ex%2De%2Ex%2Co%2Ey%3Dt%2Ey%2De%2Ey%2Co%2Ez%3Dt%2Ez%2De%2Ez%2Co%7D%2Ci%2Eadd%3Dfunction%28t%2Ce%29%7Bvar%20o%3Dnew%20i%3Breturn%20o%2Ex%3Dt%2Ex%2Be%2Ex%2Co%2Ey%3Dt%2Ey%2Be%2Ey%2Co%2Ez%3Dt%2Ez%2Be%2Ez%2Co%7D%2Ci%2Eavg%3Dfunction%28t%2Ce%29%7Breturn%20new%20i%28%28t%2Ex%2Be%2Ex%29%2F2%2C%28t%2Ey%2Be%2Ey%29%2F2%2C%28t%2Ez%2Be%2Ez%29%2F2%29%7D%2Ci%2EcrossProduct%3Dfunction%28t%2Ce%29%7Bvar%20o%3Dnew%20i%3Breturn%20o%2Ex%3Dt%2Ey%2Ae%2Ez%2Dt%2Ez%2Ae%2Ey%2Co%2Ey%3Dt%2Ez%2Ae%2Ex%2Dt%2Ex%2Ae%2Ez%2Co%2Ez%3Dt%2Ex%2Ae%2Ey%2Dt%2Ey%2Ae%2Ex%2Co%7D%2Ci%2Eprototype%2Elength%3Dfunction%28%29%7Breturn%20Math%2Esqrt%28this%2Ex%2Athis%2Ex%2Bthis%2Ey%2Athis%2Ey%2Bthis%2Ez%2Athis%2Ez%29%7D%2Ct%2Eexports%3Di%7D%2Cfunction%28t%2Ce%29%7Bfunction%20i%28t%2Ce%29%7Bthis%2Ex%3Dvoid%200%21%3D%3Dt%3Ft%3A0%2Cthis%2Ey%3Dvoid%200%21%3D%3De%3Fe%3A0%7Dt%2Eexports%3Di%7D%2Cfunction%28t%2Ce%2Ci%29%7Bfunction%20o%28%29%7Bthis%2EarmLocation%3Dnew%20n%2Cthis%2EarmRotation%3D%7B%7D%2Cthis%2EarmRotation%2Ehorizontal%3D0%2Cthis%2EarmRotation%2Evertical%3D0%2Cthis%2EarmLength%3D1%2E7%2Cthis%2EcameraLocation%3Dnew%20n%2Cthis%2EcameraRotation%3Dnew%20n%28%2E5%2AMath%2EPI%2C0%2C0%29%2Cthis%2EcalculateCameraOrientation%28%29%7Dvar%20n%3Di%2814%29%3Bo%2Eprototype%2EsetArmLocation%3Dfunction%28t%2Ce%2Ci%29%7Bthis%2EarmLocation%2Ex%3Dt%2Cthis%2EarmLocation%2Ey%3De%2Cthis%2EarmLocation%2Ez%3Di%2Cthis%2EcalculateCameraOrientation%28%29%7D%2Co%2Eprototype%2EsetArmRotation%3Dfunction%28t%2Ce%29%7Bvoid%200%21%3D%3Dt%26%26%28this%2EarmRotation%2Ehorizontal%3Dt%29%2Cvoid%200%21%3D%3De%26%26%28this%2EarmRotation%2Evertical%3De%2Cthis%2EarmRotation%2Evertical%3C0%26%26%28this%2EarmRotation%2Evertical%3D0%29%2Cthis%2EarmRotation%2Evertical%3E%2E5%2AMath%2EPI%26%26%28this%2EarmRotation%2Evertical%3D%2E5%2AMath%2EPI%29%29%2Cvoid%200%3D%3D%3Dt%26%26void%200%3D%3D%3De%7C%7Cthis%2EcalculateCameraOrientation%28%29%7D%2Co%2Eprototype%2EgetArmRotation%3Dfunction%28%29%7Bvar%20t%3D%7B%7D%3Breturn%20t%2Ehorizontal%3Dthis%2EarmRotation%2Ehorizontal%2Ct%2Evertical%3Dthis%2EarmRotation%2Evertical%2Ct%7D%2Co%2Eprototype%2EsetArmLength%3Dfunction%28t%29%7Bvoid%200%21%3D%3Dt%26%26%28this%2EarmLength%3Dt%2Cthis%2EarmLength%3C%2E71%26%26%28this%2EarmLength%3D%2E71%29%2Cthis%2EarmLength%3E5%26%26%28this%2EarmLength%3D5%29%2Cthis%2EcalculateCameraOrientation%28%29%29%7D%2Co%2Eprototype%2EgetArmLength%3Dfunction%28%29%7Breturn%20this%2EarmLength%7D%2Co%2Eprototype%2EgetCameraLocation%3Dfunction%28%29%7Breturn%20this%2EcameraLocation%7D%2Co%2Eprototype%2EgetCameraRotation%3Dfunction%28%29%7Breturn%20this%2EcameraRotation%7D%2Co%2Eprototype%2EcalculateCameraOrientation%3Dfunction%28%29%7Bthis%2EcameraLocation%2Ex%3Dthis%2EarmLocation%2Ex%2Dthis%2EarmLength%2AMath%2Esin%28this%2EarmRotation%2Ehorizontal%29%2AMath%2Ecos%28this%2EarmRotation%2Evertical%29%2Cthis%2EcameraLocation%2Ey%3Dthis%2EarmLocation%2Ey%2Dthis%2EarmLength%2AMath%2Ecos%28this%2EarmRotation%2Ehorizontal%29%2AMath%2Ecos%28this%2EarmRotation%2Evertical%29%2Cthis%2EcameraLocation%2Ez%3Dthis%2EarmLocation%2Ez%2Bthis%2EarmLength%2AMath%2Esin%28this%2EarmRotation%2Evertical%29%2Cthis%2EcameraRotation%2Ex%3DMath%2EPI%2F2%2Dthis%2EarmRotation%2Evertical%2Cthis%2EcameraRotation%2Ey%3D0%2Cthis%2EcameraRotation%2Ez%3D%2Dthis%2EarmRotation%2Ehorizontal%7D%2Ct%2Eexports%3Do%7D%2Cfunction%28t%2Ce%2Ci%29%7Bfunction%20o%28t%2Ce%2Ci%29%7Bthis%2Edata%3Dt%2Cthis%2Ecolumn%3De%2Cthis%2Egraph%3Di%2Cthis%2Eindex%3Dvoid%200%2Cthis%2Evalue%3Dvoid%200%2Cthis%2Evalues%3Di%2EgetDistinctValues%28t%2Eget%28%29%2Cthis%2Ecolumn%29%2Cthis%2Evalues%2Esort%28function%28t%2Ce%29%7Breturn%20t%3Ee%3F1%3Ae%3Et%3F%2D1%3A0%7D%29%2Cthis%2Evalues%2Elength%3E0%26%26this%2EselectValue%280%29%2Cthis%2EdataPoints%3D%5B%5D%2Cthis%2Eloaded%3D%211%2Cthis%2EonLoadCallback%3Dvoid%200%2Ci%2EanimationPreload%3F%28this%2Eloaded%3D%211%2Cthis%2EloadInBackground%28%29%29%3Athis%2Eloaded%3D%210%7Dvar%20n%3Di%2811%29%3Bo%2Eprototype%2EisLoaded%3Dfunction%28%29%7Breturn%20this%2Eloaded%7D%2Co%2Eprototype%2EgetLoadedProgress%3Dfunction%28%29%7Bfor%28var%20t%3Dthis%2Evalues%2Elength%2Ce%3D0%3Bthis%2EdataPoints%5Be%5D%3B%29e%2B%2B%3Breturn%20Math%2Eround%28e%2Ft%2A100%29%7D%2Co%2Eprototype%2EgetLabel%3Dfunction%28%29%7Breturn%20this%2Egraph%2EfilterLabel%7D%2Co%2Eprototype%2EgetColumn%3Dfunction%28%29%7Breturn%20this%2Ecolumn%7D%2Co%2Eprototype%2EgetSelectedValue%3Dfunction%28%29%7Breturn%20void%200%21%3D%3Dthis%2Eindex%3Fthis%2Evalues%5Bthis%2Eindex%5D%3Avoid%200%7D%2Co%2Eprototype%2EgetValues%3Dfunction%28%29%7Breturn%20this%2Evalues%7D%2Co%2Eprototype%2EgetValue%3Dfunction%28t%29%7Bif%28t%3E%3Dthis%2Evalues%2Elength%29throw%22Error%3A%20index%20out%20of%20range%22%3Breturn%20this%2Evalues%5Bt%5D%7D%2Co%2Eprototype%2E%5FgetDataPoints%3Dfunction%28t%29%7Bif%28void%200%3D%3D%3Dt%26%26%28t%3Dthis%2Eindex%29%2Cvoid%200%3D%3D%3Dt%29return%5B%5D%3Bvar%20e%3Bif%28this%2EdataPoints%5Bt%5D%29e%3Dthis%2EdataPoints%5Bt%5D%3Belse%7Bvar%20i%3D%7B%7D%3Bi%2Ecolumn%3Dthis%2Ecolumn%2Ci%2Evalue%3Dthis%2Evalues%5Bt%5D%3Bvar%20o%3Dnew%20n%28this%2Edata%2C%7Bfilter%3Afunction%28t%29%7Breturn%20t%5Bi%2Ecolumn%5D%3D%3Di%2Evalue%7D%7D%29%2Eget%28%29%3Be%3Dthis%2Egraph%2E%5FgetDataPoints%28o%29%2Cthis%2EdataPoints%5Bt%5D%3De%7Dreturn%20e%7D%2Co%2Eprototype%2EsetOnLoadCallback%3Dfunction%28t%29%7Bthis%2EonLoadCallback%3Dt%7D%2Co%2Eprototype%2EselectValue%3Dfunction%28t%29%7Bif%28t%3E%3Dthis%2Evalues%2Elength%29throw%22Error%3A%20index%20out%20of%20range%22%3Bthis%2Eindex%3Dt%2Cthis%2Evalue%3Dthis%2Evalues%5Bt%5D%7D%2Co%2Eprototype%2EloadInBackground%3Dfunction%28t%29%7Bvoid%200%3D%3D%3Dt%26%26%28t%3D0%29%3Bvar%20e%3Dthis%2Egraph%2Eframe%3Bif%28t%3Cthis%2Evalues%2Elength%29%7Bthis%2E%5FgetDataPoints%28t%29%3Bvoid%200%3D%3D%3De%2Eprogress%26%26%28e%2Eprogress%3Ddocument%2EcreateElement%28%22DIV%22%29%2Ce%2Eprogress%2Estyle%2Eposition%3D%22absolute%22%2Ce%2Eprogress%2Estyle%2Ecolor%3D%22gray%22%2Ce%2EappendChild%28e%2Eprogress%29%29%3Bvar%20i%3Dthis%2EgetLoadedProgress%28%29%3Be%2Eprogress%2EinnerHTML%3D%22Loading%20animation%2E%2E%2E%20%22%2Bi%2B%22%25%22%2Ce%2Eprogress%2Estyle%2Ebottom%3D%2260px%22%2Ce%2Eprogress%2Estyle%2Eleft%3D%2210px%22%3Bvar%20o%3Dthis%3BsetTimeout%28function%28%29%7Bo%2EloadInBackground%28t%2B1%29%7D%2C10%29%2Cthis%2Eloaded%3D%211%7Delse%20this%2Eloaded%3D%210%2Cvoid%200%21%3D%3De%2Eprogress%26%26%28e%2EremoveChild%28e%2Eprogress%29%2Ce%2Eprogress%3Dvoid%200%29%2Cthis%2EonLoadCallback%26%26this%2EonLoadCallback%28%29%7D%2Ct%2Eexports%3Do%7D%2Cfunction%28t%2Ce%2Ci%29%7Bfunction%20o%28t%2Ce%29%7Bif%28void%200%3D%3D%3Dt%29throw%22Error%3A%20No%20container%20element%20defined%22%3Bif%28this%2Econtainer%3Dt%2Cthis%2Evisible%3De%26%26void%200%21%3De%2Evisible%3Fe%2Evisible%3A%210%2Cthis%2Evisible%29%7Bthis%2Eframe%3Ddocument%2EcreateElement%28%22DIV%22%29%2Cthis%2Eframe%2Estyle%2Ewidth%3D%22100%25%22%2Cthis%2Eframe%2Estyle%2Eposition%3D%22relative%22%2Cthis%2Econtainer%2EappendChild%28this%2Eframe%29%2Cthis%2Eframe%2Eprev%3Ddocument%2EcreateElement%28%22INPUT%22%29%2Cthis%2Eframe%2Eprev%2Etype%3D%22BUTTON%22%2Cthis%2Eframe%2Eprev%2Evalue%3D%22Prev%22%2Cthis%2Eframe%2EappendChild%28this%2Eframe%2Eprev%29%2Cthis%2Eframe%2Eplay%3Ddocument%2EcreateElement%28%22INPUT%22%29%2Cthis%2Eframe%2Eplay%2Etype%3D%22BUTTON%22%2Cthis%2Eframe%2Eplay%2Evalue%3D%22Play%22%2Cthis%2Eframe%2EappendChild%28this%2Eframe%2Eplay%29%2Cthis%2Eframe%2Enext%3Ddocument%2EcreateElement%28%22INPUT%22%29%2Cthis%2Eframe%2Enext%2Etype%3D%22BUTTON%22%2Cthis%2Eframe%2Enext%2Evalue%3D%22Next%22%2Cthis%2Eframe%2EappendChild%28this%2Eframe%2Enext%29%2Cthis%2Eframe%2Ebar%3Ddocument%2EcreateElement%28%22INPUT%22%29%2Cthis%2Eframe%2Ebar%2Etype%3D%22BUTTON%22%2Cthis%2Eframe%2Ebar%2Estyle%2Eposition%3D%22absolute%22%2Cthis%2Eframe%2Ebar%2Estyle%2Eborder%3D%221px%20solid%20red%22%2Cthis%2Eframe%2Ebar%2Estyle%2Ewidth%3D%22100px%22%2Cthis%2Eframe%2Ebar%2Estyle%2Eheight%3D%226px%22%2Cthis%2Eframe%2Ebar%2Estyle%2EborderRadius%3D%222px%22%2Cthis%2Eframe%2Ebar%2Estyle%2EMozBorderRadius%3D%222px%22%2Cthis%2Eframe%2Ebar%2Estyle%2Eborder%3D%221px%20solid%20%237F7F7F%22%2Cthis%2Eframe%2Ebar%2Estyle%2EbackgroundColor%3D%22%23E5E5E5%22%2Cthis%2Eframe%2EappendChild%28this%2Eframe%2Ebar%29%2Cthis%2Eframe%2Eslide%3Ddocument%2EcreateElement%28%22INPUT%22%29%2Cthis%2Eframe%2Eslide%2Etype%3D%22BUTTON%22%2Cthis%2Eframe%2Eslide%2Estyle%2Emargin%3D%220px%22%2Cthis%2Eframe%2Eslide%2Evalue%3D%22%20%22%2Cthis%2Eframe%2Eslide%2Estyle%2Eposition%3D%22relative%22%2Cthis%2Eframe%2Eslide%2Estyle%2Eleft%3D%22%2D100px%22%2Cthis%2Eframe%2EappendChild%28this%2Eframe%2Eslide%29%3Bvar%20i%3Dthis%3Bthis%2Eframe%2Eslide%2Eonmousedown%3Dfunction%28t%29%7Bi%2E%5FonMouseDown%28t%29%7D%2Cthis%2Eframe%2Eprev%2Eonclick%3Dfunction%28t%29%7Bi%2Eprev%28t%29%7D%2Cthis%2Eframe%2Eplay%2Eonclick%3Dfunction%28t%29%7Bi%2EtogglePlay%28t%29%7D%2Cthis%2Eframe%2Enext%2Eonclick%3Dfunction%28t%29%7Bi%2Enext%28t%29%7D%7Dthis%2EonChangeCallback%3Dvoid%200%2Cthis%2Evalues%3D%5B%5D%2Cthis%2Eindex%3Dvoid%200%2Cthis%2EplayTimeout%3Dvoid%200%2Cthis%2EplayInterval%3D1e3%2Cthis%2EplayLoop%3D%210%7Dvar%20n%3Di%281%29%3Bo%2Eprototype%2Eprev%3Dfunction%28%29%7Bvar%20t%3Dthis%2EgetIndex%28%29%3Bt%3E0%26%26%28t%2D%2D%2Cthis%2EsetIndex%28t%29%29%7D%2Co%2Eprototype%2Enext%3Dfunction%28%29%7Bvar%20t%3Dthis%2EgetIndex%28%29%3Bt%3Cthis%2Evalues%2Elength%2D1%26%26%28t%2B%2B%2Cthis%2EsetIndex%28t%29%29%7D%2Co%2Eprototype%2EplayNext%3Dfunction%28%29%7Bvar%20t%3Dnew%20Date%2Ce%3Dthis%2EgetIndex%28%29%3Be%3Cthis%2Evalues%2Elength%2D1%3F%28e%2B%2B%2Cthis%2EsetIndex%28e%29%29%3Athis%2EplayLoop%26%26%28e%3D0%2Cthis%2EsetIndex%28e%29%29%3Bvar%20i%3Dnew%20Date%2Co%3Di%2Dt%2Cn%3DMath%2Emax%28this%2EplayInterval%2Do%2C0%29%2Cs%3Dthis%3Bthis%2EplayTimeout%3DsetTimeout%28function%28%29%7Bs%2EplayNext%28%29%7D%2Cn%29%7D%2Co%2Eprototype%2EtogglePlay%3Dfunction%28%29%7Bvoid%200%3D%3D%3Dthis%2EplayTimeout%3Fthis%2Eplay%28%29%3Athis%2Estop%28%29%7D%2Co%2Eprototype%2Eplay%3Dfunction%28%29%7Bthis%2EplayTimeout%7C%7C%28this%2EplayNext%28%29%2Cthis%2Eframe%26%26%28this%2Eframe%2Eplay%2Evalue%3D%22Stop%22%29%29%7D%2Co%2Eprototype%2Estop%3Dfunction%28%29%7BclearInterval%28this%2EplayTimeout%29%2Cthis%2EplayTimeout%3Dvoid%200%2Cthis%2Eframe%26%26%28this%2Eframe%2Eplay%2Evalue%3D%22Play%22%29%7D%2Co%2Eprototype%2EsetOnChangeCallback%3Dfunction%28t%29%7Bthis%2EonChangeCallback%3Dt%7D%2Co%2Eprototype%2EsetPlayInterval%3Dfunction%28t%29%7Bthis%2EplayInterval%3Dt%7D%2Co%2Eprototype%2EgetPlayInterval%3Dfunction%28t%29%7Breturn%20this%2EplayInterval%7D%2Co%2Eprototype%2EsetPlayLoop%3Dfunction%28t%29%7Bthis%2EplayLoop%3Dt%7D%2Co%2Eprototype%2EonChange%3Dfunction%28%29%7Bvoid%200%21%3D%3Dthis%2EonChangeCallback%26%26this%2EonChangeCallback%28%29%7D%2Co%2Eprototype%2Eredraw%3Dfunction%28%29%7Bif%28this%2Eframe%29%7Bthis%2Eframe%2Ebar%2Estyle%2Etop%3Dthis%2Eframe%2EclientHeight%2F2%2Dthis%2Eframe%2Ebar%2EoffsetHeight%2F2%2B%22px%22%2Cthis%2Eframe%2Ebar%2Estyle%2Ewidth%3Dthis%2Eframe%2EclientWidth%2Dthis%2Eframe%2Eprev%2EclientWidth%2Dthis%2Eframe%2Eplay%2EclientWidth%2Dthis%2Eframe%2Enext%2EclientWidth%2D30%2B%22px%22%3Bvar%20t%3Dthis%2EindexToLeft%28this%2Eindex%29%3Bthis%2Eframe%2Eslide%2Estyle%2Eleft%3Dt%2B%22px%22%7D%7D%2Co%2Eprototype%2EsetValues%3Dfunction%28t%29%7Bthis%2Evalues%3Dt%2Cthis%2Evalues%2Elength%3E0%3Fthis%2EsetIndex%280%29%3Athis%2Eindex%3Dvoid%200%7D%2Co%2Eprototype%2EsetIndex%3Dfunction%28t%29%7Bif%28%21%28t%3Cthis%2Evalues%2Elength%29%29throw%22Error%3A%20index%20out%20of%20range%22%3Bthis%2Eindex%3Dt%2Cthis%2Eredraw%28%29%2Cthis%2EonChange%28%29%7D%2Co%2Eprototype%2EgetIndex%3Dfunction%28%29%7Breturn%20this%2Eindex%7D%2Co%2Eprototype%2Eget%3Dfunction%28%29%7Breturn%20this%2Evalues%5Bthis%2Eindex%5D%7D%2Co%2Eprototype%2E%5FonMouseDown%3Dfunction%28t%29%7Bvar%20e%3Dt%2Ewhich%3F1%3D%3D%3Dt%2Ewhich%3A1%3D%3D%3Dt%2Ebutton%3Bif%28e%29%7Bthis%2EstartClientX%3Dt%2EclientX%2Cthis%2EstartSlideX%3DparseFloat%28this%2Eframe%2Eslide%2Estyle%2Eleft%29%2Cthis%2Eframe%2Estyle%2Ecursor%3D%22move%22%3Bvar%20i%3Dthis%3Bthis%2Eonmousemove%3Dfunction%28t%29%7Bi%2E%5FonMouseMove%28t%29%7D%2Cthis%2Eonmouseup%3Dfunction%28t%29%7Bi%2E%5FonMouseUp%28t%29%7D%2Cn%2EaddEventListener%28document%2C%22mousemove%22%2Cthis%2Eonmousemove%29%2Cn%2EaddEventListener%28document%2C%22mouseup%22%2Cthis%2Eonmouseup%29%2Cn%2EpreventDefault%28t%29%7D%7D%2Co%2Eprototype%2EleftToIndex%3Dfunction%28t%29%7Bvar%20e%3DparseFloat%28this%2Eframe%2Ebar%2Estyle%2Ewidth%29%2Dthis%2Eframe%2Eslide%2EclientWidth%2D10%2Ci%3Dt%2D3%2Co%3DMath%2Eround%28i%2Fe%2A%28this%2Evalues%2Elength%2D1%29%29%3Breturn%200%3Eo%26%26%28o%3D0%29%2Co%3Ethis%2Evalues%2Elength%2D1%26%26%28o%3Dthis%2Evalues%2Elength%2D1%29%2Co%7D%2Co%2Eprototype%2EindexToLeft%3Dfunction%28t%29%7Bvar%20e%3DparseFloat%28this%2Eframe%2Ebar%2Estyle%2Ewidth%29%2Dthis%2Eframe%2Eslide%2EclientWidth%2D10%2Ci%3Dt%2F%28this%2Evalues%2Elength%2D1%29%2Ae%2Co%3Di%2B3%3Breturn%20o%7D%2Co%2Eprototype%2E%5FonMouseMove%3Dfunction%28t%29%7Bvar%20e%3Dt%2EclientX%2Dthis%2EstartClientX%2Ci%3Dthis%2EstartSlideX%2Be%2Co%3Dthis%2EleftToIndex%28i%29%3Bthis%2EsetIndex%28o%29%2Cn%2EpreventDefault%28%29%7D%2Co%2Eprototype%2E%5FonMouseUp%3Dfunction%28t%29%7Bthis%2Eframe%2Estyle%2Ecursor%3D%22auto%22%2Cn%2EremoveEventListener%28document%2C%22mousemove%22%2Cthis%2Eonmousemove%29%2Cn%2EremoveEventListener%28document%2C%22mouseup%22%2Cthis%2Eonmouseup%29%2Cn%2EpreventDefault%28%29%7D%2Ct%2Eexports%3Do%7D%2Cfunction%28t%2Ce%29%7Bfunction%20i%28t%2Ce%2Ci%2Co%29%7Bthis%2E%5Fstart%3D0%2Cthis%2E%5Fend%3D0%2Cthis%2E%5Fstep%3D1%2Cthis%2EprettyStep%3D%210%2Cthis%2Eprecision%3D5%2Cthis%2E%5Fcurrent%3D0%2Cthis%2EsetRange%28t%2Ce%2Ci%2Co%29%7Di%2Eprototype%2EsetRange%3Dfunction%28t%2Ce%2Ci%2Co%29%7Bthis%2E%5Fstart%3Dt%3Ft%3A0%2Cthis%2E%5Fend%3De%3Fe%3A0%2Cthis%2EsetStep%28i%2Co%29%7D%2Ci%2Eprototype%2EsetStep%3Dfunction%28t%2Ce%29%7Bvoid%200%3D%3D%3Dt%7C%7C0%3E%3Dt%7C%7C%28void%200%21%3D%3De%26%26%28this%2EprettyStep%3De%29%2Cthis%2EprettyStep%3D%3D%3D%210%3Fthis%2E%5Fstep%3Di%2EcalculatePrettyStep%28t%29%3Athis%2E%5Fstep%3Dt%29%7D%2Ci%2EcalculatePrettyStep%3Dfunction%28t%29%7Bvar%20e%3Dfunction%28t%29%7Breturn%20Math%2Elog%28t%29%2FMath%2ELN10%7D%2Ci%3DMath%2Epow%2810%2CMath%2Eround%28e%28t%29%29%29%2Co%3D2%2AMath%2Epow%2810%2CMath%2Eround%28e%28t%2F2%29%29%29%2Cn%3D5%2AMath%2Epow%2810%2CMath%2Eround%28e%28t%2F5%29%29%29%2Cs%3Di%3Breturn%20Math%2Eabs%28o%2Dt%29%3C%3DMath%2Eabs%28s%2Dt%29%26%26%28s%3Do%29%2CMath%2Eabs%28n%2Dt%29%3C%3DMath%2Eabs%28s%2Dt%29%26%26%28s%3Dn%29%2C0%3E%3Ds%26%26%28s%3D1%29%2Cs%7D%2Ci%2Eprototype%2EgetCurrent%3Dfunction%28%29%7Breturn%20parseFloat%28this%2E%5Fcurrent%2EtoPrecision%28this%2Eprecision%29%29%7D%2Ci%2Eprototype%2EgetStep%3Dfunction%28%29%7Breturn%20this%2E%5Fstep%7D%2Ci%2Eprototype%2Estart%3Dfunction%28%29%7Bthis%2E%5Fcurrent%3Dthis%2E%5Fstart%2Dthis%2E%5Fstart%25this%2E%5Fstep%7D%2Ci%2Eprototype%2Enext%3Dfunction%28%29%7Bthis%2E%5Fcurrent%2B%3Dthis%2E%5Fstep%7D%2Ci%2Eprototype%2Eend%3Dfunction%28%29%7Breturn%20this%2E%5Fcurrent%3Ethis%2E%5Fend%7D%2Ct%2Eexports%3Di%7D%2Cfunction%28t%2Ce%2Ci%29%7Bif%28%22undefined%22%21%3Dtypeof%20window%29%7Bvar%20o%3Di%2821%29%2Cn%3Dwindow%2EHammer%7C%7Ci%2822%29%3Bt%2Eexports%3Do%28n%2C%7BpreventDefault%3A%22mouse%22%7D%29%7Delse%20t%2Eexports%3Dfunction%28%29%7Bthrow%20Error%28%22hammer%2Ejs%20is%20only%20available%20in%20a%20browser%2C%20not%20in%20node%2Ejs%2E%22%29%7D%7D%2Cfunction%28t%2Ce%2Ci%29%7Bvar%20o%2Cn%2Cs%3B%21function%28i%29%7Bn%3D%5B%5D%2Co%3Di%2Cs%3D%22function%22%3D%3Dtypeof%20o%3Fo%2Eapply%28e%2Cn%29%3Ao%2C%21%28void%200%21%3D%3Ds%26%26%28t%2Eexports%3Ds%29%29%7D%28function%28%29%7Bvar%20t%3Dnull%3Breturn%20function%20e%28i%2Co%29%7Bfunction%20n%28t%29%7Breturn%20t%2Ematch%28%2F%5B%5E%20%5D%2B%2Fg%29%7Dfunction%20s%28e%29%7Bif%28%22hammer%2Einput%22%21%3D%3De%2Etype%29%7Bif%28e%2EsrcEvent%2E%5Fhandled%7C%7C%28e%2EsrcEvent%2E%5Fhandled%3D%7B%7D%29%2Ce%2EsrcEvent%2E%5Fhandled%5Be%2Etype%5D%29return%3Be%2EsrcEvent%2E%5Fhandled%5Be%2Etype%5D%3D%210%7Dvar%20i%3D%211%3Be%2EstopPropagation%3Dfunction%28%29%7Bi%3D%210%7D%3Bvar%20o%3De%2EsrcEvent%2EstopPropagation%2Ebind%28e%2EsrcEvent%29%3B%22function%22%3D%3Dtypeof%20o%26%26%28e%2EsrcEvent%2EstopPropagation%3Dfunction%28%29%7Bo%28%29%2Ce%2EstopPropagation%28%29%7D%29%2Ce%2EfirstTarget%3Dt%3Bfor%28var%20n%3Dt%3Bn%26%26%21i%3B%29%7Bvar%20s%3Dn%2Ehammer%3Bif%28s%29for%28var%20r%2Ca%3D0%3Ba%3Cs%2Elength%3Ba%2B%2B%29if%28r%3Ds%5Ba%5D%2E%5Fhandlers%5Be%2Etype%5D%29for%28var%20h%3D0%3Bh%3Cr%2Elength%26%26%21i%3Bh%2B%2B%29r%5Bh%5D%28e%29%3Bn%3Dn%2EparentNode%7D%7Dvar%20r%3Do%7C%7C%7BpreventDefault%3A%211%7D%3Bif%28i%2EManager%29%7Bvar%20a%3Di%2Ch%3Dfunction%28t%2Ci%29%7Bvar%20o%3DObject%2Ecreate%28r%29%3Breturn%20i%26%26a%2Eassign%28o%2Ci%29%2Ce%28new%20a%28t%2Co%29%2Co%29%7D%3Breturn%20a%2Eassign%28h%2Ca%29%2Ch%2EManager%3Dfunction%28t%2Ci%29%7Bvar%20o%3DObject%2Ecreate%28r%29%3Breturn%20i%26%26a%2Eassign%28o%2Ci%29%2Ce%28new%20a%2EManager%28t%2Co%29%2Co%29%7D%2Ch%7Dvar%20d%3DObject%2Ecreate%28i%29%2Cl%3Di%2Eelement%3Breturn%20l%2Ehammer%7C%7C%28l%2Ehammer%3D%5B%5D%29%2Cl%2Ehammer%2Epush%28d%29%2Ci%2Eon%28%22hammer%2Einput%22%2Cfunction%28e%29%7Br%2EpreventDefault%21%3D%3D%210%26%26r%2EpreventDefault%21%3D%3De%2EpointerType%7C%7Ce%2EpreventDefault%28%29%2Ce%2EisFirst%26%26%28t%3De%2Etarget%29%7D%29%2Cd%2E%5Fhandlers%3D%7B%7D%2Cd%2Eon%3Dfunction%28t%2Ce%29%7Breturn%20n%28t%29%2EforEach%28function%28t%29%7Bvar%20o%3Dd%2E%5Fhandlers%5Bt%5D%3Bo%7C%7C%28d%2E%5Fhandlers%5Bt%5D%3Do%3D%5B%5D%2Ci%2Eon%28t%2Cs%29%29%2Co%2Epush%28e%29%7D%29%2Cd%7D%2Cd%2Eoff%3Dfunction%28t%2Ce%29%7Breturn%20n%28t%29%2EforEach%28function%28t%29%7Bvar%20o%3Dd%2E%5Fhandlers%5Bt%5D%3Bo%26%26%28o%3De%3Fo%2Efilter%28function%28t%29%7Breturn%20t%21%3D%3De%7D%29%3A%5B%5D%2Co%2Elength%3E0%3Fd%2E%5Fhandlers%5Bt%5D%3Do%3A%28i%2Eoff%28t%2Cs%29%2Cdelete%20d%2E%5Fhandlers%5Bt%5D%29%29%7D%29%2Cd%7D%2Cd%2Eemit%3Dfunction%28e%2Co%29%7Bt%3Do%2Etarget%2Ci%2Eemit%28e%2Co%29%7D%2Cd%2Edestroy%3Dfunction%28%29%7Bvar%20t%3Di%2Eelement%2Ehammer%2Ce%3Dt%2EindexOf%28d%29%3B%2D1%21%3D%3De%26%26t%2Esplice%28e%2C1%29%2Ct%2Elength%7C%7Cdelete%20i%2Eelement%2Ehammer%2Cd%2E%5Fhandlers%3D%7B%7D%2Ci%2Edestroy%28%29%7D%2Cd%7D%7D%29%7D%2Cfunction%28t%2Ce%2Ci%29%7Bvar%20o%3B%21function%28n%2Cs%2Cr%2Ca%29%7Bfunction%20h%28t%2Ce%2Ci%29%7Breturn%20setTimeout%28p%28t%2Ci%29%2Ce%29%7Dfunction%20d%28t%2Ce%2Ci%29%7Breturn%20Array%2EisArray%28t%29%3F%28l%28t%2Ci%5Be%5D%2Ci%29%2C%210%29%3A%211%7Dfunction%20l%28t%2Ce%2Ci%29%7Bvar%20o%3Bif%28t%29if%28t%2EforEach%29t%2EforEach%28e%2Ci%29%3Belse%20if%28t%2Elength%21%3D%3Da%29for%28o%3D0%3Bo%3Ct%2Elength%3B%29e%2Ecall%28i%2Ct%5Bo%5D%2Co%2Ct%29%2Co%2B%2B%3Belse%20for%28o%20in%20t%29t%2EhasOwnProperty%28o%29%26%26e%2Ecall%28i%2Ct%5Bo%5D%2Co%2Ct%29%7Dfunction%20c%28t%2Ce%2Ci%29%7Bvar%20o%3D%22DEPRECATED%20METHOD%3A%20%22%2Be%2B%22%5Cn%22%2Bi%2B%22%20AT%20%5Cn%22%3Breturn%20function%28%29%7Bvar%20e%3Dnew%20Error%28%22get%2Dstack%2Dtrace%22%29%2Ci%3De%26%26e%2Estack%3Fe%2Estack%2Ereplace%28%2F%5E%5B%5E%5C%28%5D%2B%3F%5B%5Cn%24%5D%2Fgm%2C%22%22%29%2Ereplace%28%2F%5E%5Cs%2Bat%5Cs%2B%2Fgm%2C%22%22%29%2Ereplace%28%2F%5EObject%2E%3Canonymous%3E%5Cs%2A%5C%28%2Fgm%2C%22%7Banonymous%7D%28%29%40%22%29%3A%22Unknown%20Stack%20Trace%22%2Cs%3Dn%2Econsole%26%26%28n%2Econsole%2Ewarn%7C%7Cn%2Econsole%2Elog%29%3Breturn%20s%26%26s%2Ecall%28n%2Econsole%2Co%2Ci%29%2Ct%2Eapply%28this%2Carguments%29%7D%7Dfunction%20u%28t%2Ce%2Ci%29%7Bvar%20o%2Cn%3De%2Eprototype%3Bo%3Dt%2Eprototype%3DObject%2Ecreate%28n%29%2Co%2Econstructor%3Dt%2Co%2E%5Fsuper%3Dn%2Ci%26%26ct%28o%2Ci%29%7Dfunction%20p%28t%2Ce%29%7Breturn%20function%28%29%7Breturn%20t%2Eapply%28e%2Carguments%29%7D%7Dfunction%20f%28t%2Ce%29%7Breturn%20typeof%20t%3D%3Dft%3Ft%2Eapply%28e%3Fe%5B0%5D%7C%7Ca%3Aa%2Ce%29%3At%7Dfunction%20m%28t%2Ce%29%7Breturn%20t%3D%3D%3Da%3Fe%3At%7Dfunction%20v%28t%2Ce%2Ci%29%7Bl%28w%28e%29%2Cfunction%28e%29%7Bt%2EaddEventListener%28e%2Ci%2C%211%29%7D%29%7Dfunction%20g%28t%2Ce%2Ci%29%7Bl%28w%28e%29%2Cfunction%28e%29%7Bt%2EremoveEventListener%28e%2Ci%2C%211%29%7D%29%7Dfunction%20y%28t%2Ce%29%7Bfor%28%3Bt%3B%29%7Bif%28t%3D%3De%29return%210%3Bt%3Dt%2EparentNode%7Dreturn%211%7Dfunction%20b%28t%2Ce%29%7Breturn%20t%2EindexOf%28e%29%3E%2D1%7Dfunction%20w%28t%29%7Breturn%20t%2Etrim%28%29%2Esplit%28%2F%5Cs%2B%2Fg%29%7Dfunction%20%5F%28t%2Ce%2Ci%29%7Bif%28t%2EindexOf%26%26%21i%29return%20t%2EindexOf%28e%29%3Bfor%28var%20o%3D0%3Bo%3Ct%2Elength%3B%29%7Bif%28i%26%26t%5Bo%5D%5Bi%5D%3D%3De%7C%7C%21i%26%26t%5Bo%5D%3D%3D%3De%29return%20o%3Bo%2B%2B%7Dreturn%2D1%7Dfunction%20x%28t%29%7Breturn%20Array%2Eprototype%2Eslice%2Ecall%28t%2C0%29%7Dfunction%20k%28t%2Ce%2Ci%29%7Bfor%28var%20o%3D%5B%5D%2Cn%3D%5B%5D%2Cs%3D0%3Bs%3Ct%2Elength%3B%29%7Bvar%20r%3De%3Ft%5Bs%5D%5Be%5D%3At%5Bs%5D%3B%5F%28n%2Cr%29%3C0%26%26o%2Epush%28t%5Bs%5D%29%2Cn%5Bs%5D%3Dr%2Cs%2B%2B%7Dreturn%20i%26%26%28o%3De%3Fo%2Esort%28function%28t%2Ci%29%7Breturn%20t%5Be%5D%3Ei%5Be%5D%7D%29%3Ao%2Esort%28%29%29%2Co%7Dfunction%20O%28t%2Ce%29%7Bfor%28var%20i%2Co%2Cn%3De%5B0%5D%2EtoUpperCase%28%29%2Be%2Eslice%281%29%2Cs%3D0%3Bs%3Cut%2Elength%3B%29%7Bif%28i%3Dut%5Bs%5D%2Co%3Di%3Fi%2Bn%3Ae%2Co%20in%20t%29return%20o%3Bs%2B%2B%7Dreturn%20a%7Dfunction%20M%28%29%7Breturn%20wt%2B%2B%7Dfunction%20D%28t%29%7Bvar%20e%3Dt%2EownerDocument%7C%7Ct%3Breturn%20e%2EdefaultView%7C%7Ce%2EparentWindow%7C%7Cn%7Dfunction%20S%28t%2Ce%29%7Bvar%20i%3Dthis%3Bthis%2Emanager%3Dt%2Cthis%2Ecallback%3De%2Cthis%2Eelement%3Dt%2Eelement%2Cthis%2Etarget%3Dt%2Eoptions%2EinputTarget%2Cthis%2EdomHandler%3Dfunction%28e%29%7Bf%28t%2Eoptions%2Eenable%2C%5Bt%5D%29%26%26i%2Ehandler%28e%29%7D%2Cthis%2Einit%28%29%7Dfunction%20C%28t%29%7Bvar%20e%2Ci%3Dt%2Eoptions%2EinputClass%3Breturn%20new%28e%3Di%3Fi%3Akt%3FW%3AOt%3FV%3Axt%3Fq%3AH%29%28t%2CT%29%7Dfunction%20T%28t%2Ce%2Ci%29%7Bvar%20o%3Di%2Epointers%2Elength%2Cn%3Di%2EchangedPointers%2Elength%2Cs%3De%26Et%26%26o%2Dn%3D%3D%3D0%2Cr%3De%26%28It%7CNt%29%26%26o%2Dn%3D%3D%3D0%3B%0Ai%2EisFirst%3D%21%21s%2Ci%2EisFinal%3D%21%21r%2Cs%26%26%28t%2Esession%3D%7B%7D%29%2Ci%2EeventType%3De%2CE%28t%2Ci%29%2Ct%2Eemit%28%22hammer%2Einput%22%2Ci%29%2Ct%2Erecognize%28i%29%2Ct%2Esession%2EprevInput%3Di%7Dfunction%20E%28t%2Ce%29%7Bvar%20i%3Dt%2Esession%2Co%3De%2Epointers%2Cn%3Do%2Elength%3Bi%2EfirstInput%7C%7C%28i%2EfirstInput%3DN%28e%29%29%2Cn%3E1%26%26%21i%2EfirstMultiple%3Fi%2EfirstMultiple%3DN%28e%29%3A1%3D%3D%3Dn%26%26%28i%2EfirstMultiple%3D%211%29%3Bvar%20s%3Di%2EfirstInput%2Cr%3Di%2EfirstMultiple%2Ca%3Dr%3Fr%2Ecenter%3As%2Ecenter%2Ch%3De%2Ecenter%3DR%28o%29%3Be%2EtimeStamp%3Dgt%28%29%2Ce%2EdeltaTime%3De%2EtimeStamp%2Ds%2EtimeStamp%2Ce%2Eangle%3DB%28a%2Ch%29%2Ce%2Edistance%3DA%28a%2Ch%29%2CP%28i%2Ce%29%2Ce%2EoffsetDirection%3DL%28e%2EdeltaX%2Ce%2EdeltaY%29%3Bvar%20d%3Dz%28e%2EdeltaTime%2Ce%2EdeltaX%2Ce%2EdeltaY%29%3Be%2EoverallVelocityX%3Dd%2Ex%2Ce%2EoverallVelocityY%3Dd%2Ey%2Ce%2EoverallVelocity%3Dvt%28d%2Ex%29%3Evt%28d%2Ey%29%3Fd%2Ex%3Ad%2Ey%2Ce%2Escale%3Dr%3Fj%28r%2Epointers%2Co%29%3A1%2Ce%2Erotation%3Dr%3FF%28r%2Epointers%2Co%29%3A0%2Ce%2EmaxPointers%3Di%2EprevInput%3Fe%2Epointers%2Elength%3Ei%2EprevInput%2EmaxPointers%3Fe%2Epointers%2Elength%3Ai%2EprevInput%2EmaxPointers%3Ae%2Epointers%2Elength%2CI%28i%2Ce%29%3Bvar%20l%3Dt%2Eelement%3By%28e%2EsrcEvent%2Etarget%2Cl%29%26%26%28l%3De%2EsrcEvent%2Etarget%29%2Ce%2Etarget%3Dl%7Dfunction%20P%28t%2Ce%29%7Bvar%20i%3De%2Ecenter%2Co%3Dt%2EoffsetDelta%7C%7C%7B%7D%2Cn%3Dt%2EprevDelta%7C%7C%7B%7D%2Cs%3Dt%2EprevInput%7C%7C%7B%7D%3Be%2EeventType%21%3D%3DEt%26%26s%2EeventType%21%3D%3DIt%7C%7C%28n%3Dt%2EprevDelta%3D%7Bx%3As%2EdeltaX%7C%7C0%2Cy%3As%2EdeltaY%7C%7C0%7D%2Co%3Dt%2EoffsetDelta%3D%7Bx%3Ai%2Ex%2Cy%3Ai%2Ey%7D%29%2Ce%2EdeltaX%3Dn%2Ex%2B%28i%2Ex%2Do%2Ex%29%2Ce%2EdeltaY%3Dn%2Ey%2B%28i%2Ey%2Do%2Ey%29%7Dfunction%20I%28t%2Ce%29%7Bvar%20i%2Co%2Cn%2Cs%2Cr%3Dt%2ElastInterval%7C%7Ce%2Ch%3De%2EtimeStamp%2Dr%2EtimeStamp%3Bif%28e%2EeventType%21%3DNt%26%26%28h%3ETt%7C%7Cr%2Evelocity%3D%3D%3Da%29%29%7Bvar%20d%3De%2EdeltaX%2Dr%2EdeltaX%2Cl%3De%2EdeltaY%2Dr%2EdeltaY%2Cc%3Dz%28h%2Cd%2Cl%29%3Bo%3Dc%2Ex%2Cn%3Dc%2Ey%2Ci%3Dvt%28c%2Ex%29%3Evt%28c%2Ey%29%3Fc%2Ex%3Ac%2Ey%2Cs%3DL%28d%2Cl%29%2Ct%2ElastInterval%3De%7Delse%20i%3Dr%2Evelocity%2Co%3Dr%2EvelocityX%2Cn%3Dr%2EvelocityY%2Cs%3Dr%2Edirection%3Be%2Evelocity%3Di%2Ce%2EvelocityX%3Do%2Ce%2EvelocityY%3Dn%2Ce%2Edirection%3Ds%7Dfunction%20N%28t%29%7Bfor%28var%20e%3D%5B%5D%2Ci%3D0%3Bi%3Ct%2Epointers%2Elength%3B%29e%5Bi%5D%3D%7BclientX%3Amt%28t%2Epointers%5Bi%5D%2EclientX%29%2CclientY%3Amt%28t%2Epointers%5Bi%5D%2EclientY%29%7D%2Ci%2B%2B%3Breturn%7BtimeStamp%3Agt%28%29%2Cpointers%3Ae%2Ccenter%3AR%28e%29%2CdeltaX%3At%2EdeltaX%2CdeltaY%3At%2EdeltaY%7D%7Dfunction%20R%28t%29%7Bvar%20e%3Dt%2Elength%3Bif%281%3D%3D%3De%29return%7Bx%3Amt%28t%5B0%5D%2EclientX%29%2Cy%3Amt%28t%5B0%5D%2EclientY%29%7D%3Bfor%28var%20i%3D0%2Co%3D0%2Cn%3D0%3Be%3En%3B%29i%2B%3Dt%5Bn%5D%2EclientX%2Co%2B%3Dt%5Bn%5D%2EclientY%2Cn%2B%2B%3Breturn%7Bx%3Amt%28i%2Fe%29%2Cy%3Amt%28o%2Fe%29%7D%7Dfunction%20z%28t%2Ce%2Ci%29%7Breturn%7Bx%3Ae%2Ft%7C%7C0%2Cy%3Ai%2Ft%7C%7C0%7D%7Dfunction%20L%28t%2Ce%29%7Breturn%20t%3D%3D%3De%3FRt%3Avt%28t%29%3E%3Dvt%28e%29%3F0%3Et%3Fzt%3ALt%3A0%3Ee%3FAt%3ABt%7Dfunction%20A%28t%2Ce%2Ci%29%7Bi%7C%7C%28i%3DWt%29%3Bvar%20o%3De%5Bi%5B0%5D%5D%2Dt%5Bi%5B0%5D%5D%2Cn%3De%5Bi%5B1%5D%5D%2Dt%5Bi%5B1%5D%5D%3Breturn%20Math%2Esqrt%28o%2Ao%2Bn%2An%29%7Dfunction%20B%28t%2Ce%2Ci%29%7Bi%7C%7C%28i%3DWt%29%3Bvar%20o%3De%5Bi%5B0%5D%5D%2Dt%5Bi%5B0%5D%5D%2Cn%3De%5Bi%5B1%5D%5D%2Dt%5Bi%5B1%5D%5D%3Breturn%20180%2AMath%2Eatan2%28n%2Co%29%2FMath%2EPI%7Dfunction%20F%28t%2Ce%29%7Breturn%20B%28e%5B1%5D%2Ce%5B0%5D%2CYt%29%2BB%28t%5B1%5D%2Ct%5B0%5D%2CYt%29%7Dfunction%20j%28t%2Ce%29%7Breturn%20A%28e%5B0%5D%2Ce%5B1%5D%2CYt%29%2FA%28t%5B0%5D%2Ct%5B1%5D%2CYt%29%7Dfunction%20H%28%29%7Bthis%2EevEl%3DVt%2Cthis%2EevWin%3DUt%2Cthis%2Eallow%3D%210%2Cthis%2Epressed%3D%211%2CS%2Eapply%28this%2Carguments%29%7Dfunction%20W%28%29%7Bthis%2EevEl%3DZt%2Cthis%2EevWin%3DKt%2CS%2Eapply%28this%2Carguments%29%2Cthis%2Estore%3Dthis%2Emanager%2Esession%2EpointerEvents%3D%5B%5D%7Dfunction%20Y%28%29%7Bthis%2EevTarget%3DQt%2Cthis%2EevWin%3D%24t%2Cthis%2Estarted%3D%211%2CS%2Eapply%28this%2Carguments%29%7Dfunction%20G%28t%2Ce%29%7Bvar%20i%3Dx%28t%2Etouches%29%2Co%3Dx%28t%2EchangedTouches%29%3Breturn%20e%26%28It%7CNt%29%26%26%28i%3Dk%28i%2Econcat%28o%29%2C%22identifier%22%2C%210%29%29%2C%5Bi%2Co%5D%7Dfunction%20V%28%29%7Bthis%2EevTarget%3Dee%2Cthis%2EtargetIds%3D%7B%7D%2CS%2Eapply%28this%2Carguments%29%7Dfunction%20U%28t%2Ce%29%7Bvar%20i%3Dx%28t%2Etouches%29%2Co%3Dthis%2EtargetIds%3Bif%28e%26%28Et%7CPt%29%26%261%3D%3D%3Di%2Elength%29return%20o%5Bi%5B0%5D%2Eidentifier%5D%3D%210%2C%5Bi%2Ci%5D%3Bvar%20n%2Cs%2Cr%3Dx%28t%2EchangedTouches%29%2Ca%3D%5B%5D%2Ch%3Dthis%2Etarget%3Bif%28s%3Di%2Efilter%28function%28t%29%7Breturn%20y%28t%2Etarget%2Ch%29%7D%29%2Ce%3D%3D%3DEt%29for%28n%3D0%3Bn%3Cs%2Elength%3B%29o%5Bs%5Bn%5D%2Eidentifier%5D%3D%210%2Cn%2B%2B%3Bfor%28n%3D0%3Bn%3Cr%2Elength%3B%29o%5Br%5Bn%5D%2Eidentifier%5D%26%26a%2Epush%28r%5Bn%5D%29%2Ce%26%28It%7CNt%29%26%26delete%20o%5Br%5Bn%5D%2Eidentifier%5D%2Cn%2B%2B%3Breturn%20a%2Elength%3F%5Bk%28s%2Econcat%28a%29%2C%22identifier%22%2C%210%29%2Ca%5D%3Avoid%200%7Dfunction%20q%28%29%7BS%2Eapply%28this%2Carguments%29%3Bvar%20t%3Dp%28this%2Ehandler%2Cthis%29%3Bthis%2Etouch%3Dnew%20V%28this%2Emanager%2Ct%29%2Cthis%2Emouse%3Dnew%20H%28this%2Emanager%2Ct%29%7Dfunction%20X%28t%2Ce%29%7Bthis%2Emanager%3Dt%2Cthis%2Eset%28e%29%7Dfunction%20Z%28t%29%7Bif%28b%28t%2Cae%29%29return%20ae%3Bvar%20e%3Db%28t%2Che%29%2Ci%3Db%28t%2Cde%29%3Breturn%20e%26%26i%3Fae%3Ae%7C%7Ci%3Fe%3Fhe%3Ade%3Ab%28t%2Cre%29%3Fre%3Ase%7Dfunction%20K%28t%29%7Bthis%2Eoptions%3Dct%28%7B%7D%2Cthis%2Edefaults%2Ct%7C%7C%7B%7D%29%2Cthis%2Eid%3DM%28%29%2Cthis%2Emanager%3Dnull%2Cthis%2Eoptions%2Eenable%3Dm%28this%2Eoptions%2Eenable%2C%210%29%2Cthis%2Estate%3Dle%2Cthis%2Esimultaneous%3D%7B%7D%2Cthis%2ErequireFail%3D%5B%5D%7Dfunction%20J%28t%29%7Breturn%20t%26me%3F%22cancel%22%3At%26pe%3F%22end%22%3At%26ue%3F%22move%22%3At%26ce%3F%22start%22%3A%22%22%7Dfunction%20Q%28t%29%7Breturn%20t%3D%3DBt%3F%22down%22%3At%3D%3DAt%3F%22up%22%3At%3D%3Dzt%3F%22left%22%3At%3D%3DLt%3F%22right%22%3A%22%22%7Dfunction%20%24%28t%2Ce%29%7Bvar%20i%3De%2Emanager%3Breturn%20i%3Fi%2Eget%28t%29%3At%7Dfunction%20tt%28%29%7BK%2Eapply%28this%2Carguments%29%7Dfunction%20et%28%29%7Btt%2Eapply%28this%2Carguments%29%2Cthis%2EpX%3Dnull%2Cthis%2EpY%3Dnull%7Dfunction%20it%28%29%7Btt%2Eapply%28this%2Carguments%29%7Dfunction%20ot%28%29%7BK%2Eapply%28this%2Carguments%29%2Cthis%2E%5Ftimer%3Dnull%2Cthis%2E%5Finput%3Dnull%7Dfunction%20nt%28%29%7Btt%2Eapply%28this%2Carguments%29%7Dfunction%20st%28%29%7Btt%2Eapply%28this%2Carguments%29%7Dfunction%20rt%28%29%7BK%2Eapply%28this%2Carguments%29%2Cthis%2EpTime%3D%211%2Cthis%2EpCenter%3D%211%2Cthis%2E%5Ftimer%3Dnull%2Cthis%2E%5Finput%3Dnull%2Cthis%2Ecount%3D0%7Dfunction%20at%28t%2Ce%29%7Breturn%20e%3De%7C%7C%7B%7D%2Ce%2Erecognizers%3Dm%28e%2Erecognizers%2Cat%2Edefaults%2Epreset%29%2Cnew%20ht%28t%2Ce%29%7Dfunction%20ht%28t%2Ce%29%7Bthis%2Eoptions%3Dct%28%7B%7D%2Cat%2Edefaults%2Ce%7C%7C%7B%7D%29%2Cthis%2Eoptions%2EinputTarget%3Dthis%2Eoptions%2EinputTarget%7C%7Ct%2Cthis%2Ehandlers%3D%7B%7D%2Cthis%2Esession%3D%7B%7D%2Cthis%2Erecognizers%3D%5B%5D%2Cthis%2Eelement%3Dt%2Cthis%2Einput%3DC%28this%29%2Cthis%2EtouchAction%3Dnew%20X%28this%2Cthis%2Eoptions%2EtouchAction%29%2Cdt%28this%2C%210%29%2Cl%28this%2Eoptions%2Erecognizers%2Cfunction%28t%29%7Bvar%20e%3Dthis%2Eadd%28new%20t%5B0%5D%28t%5B1%5D%29%29%3Bt%5B2%5D%26%26e%2ErecognizeWith%28t%5B2%5D%29%2Ct%5B3%5D%26%26e%2ErequireFailure%28t%5B3%5D%29%7D%2Cthis%29%7Dfunction%20dt%28t%2Ce%29%7Bvar%20i%3Dt%2Eelement%3Bi%2Estyle%26%26l%28t%2Eoptions%2EcssProps%2Cfunction%28t%2Co%29%7Bi%2Estyle%5BO%28i%2Estyle%2Co%29%5D%3De%3Ft%3A%22%22%7D%29%7Dfunction%20lt%28t%2Ce%29%7Bvar%20i%3Ds%2EcreateEvent%28%22Event%22%29%3Bi%2EinitEvent%28t%2C%210%2C%210%29%2Ci%2Egesture%3De%2Ce%2Etarget%2EdispatchEvent%28i%29%7Dvar%20ct%2Cut%3D%5B%22%22%2C%22webkit%22%2C%22Moz%22%2C%22MS%22%2C%22ms%22%2C%22o%22%5D%2Cpt%3Ds%2EcreateElement%28%22div%22%29%2Cft%3D%22function%22%2Cmt%3DMath%2Eround%2Cvt%3DMath%2Eabs%2Cgt%3DDate%2Enow%3Bct%3D%22function%22%21%3Dtypeof%20Object%2Eassign%3Ffunction%28t%29%7Bif%28t%3D%3D%3Da%7C%7Cnull%3D%3D%3Dt%29throw%20new%20TypeError%28%22Cannot%20convert%20undefined%20or%20null%20to%20object%22%29%3Bfor%28var%20e%3DObject%28t%29%2Ci%3D1%3Bi%3Carguments%2Elength%3Bi%2B%2B%29%7Bvar%20o%3Darguments%5Bi%5D%3Bif%28o%21%3D%3Da%26%26null%21%3D%3Do%29for%28var%20n%20in%20o%29o%2EhasOwnProperty%28n%29%26%26%28e%5Bn%5D%3Do%5Bn%5D%29%7Dreturn%20e%7D%3AObject%2Eassign%3Bvar%20yt%3Dc%28function%28t%2Ce%2Ci%29%7Bfor%28var%20o%3DObject%2Ekeys%28e%29%2Cn%3D0%3Bn%3Co%2Elength%3B%29%28%21i%7C%7Ci%26%26t%5Bo%5Bn%5D%5D%3D%3D%3Da%29%26%26%28t%5Bo%5Bn%5D%5D%3De%5Bo%5Bn%5D%5D%29%2Cn%2B%2B%3Breturn%20t%7D%2C%22extend%22%2C%22Use%20%60assign%60%2E%22%29%2Cbt%3Dc%28function%28t%2Ce%29%7Breturn%20yt%28t%2Ce%2C%210%29%7D%2C%22merge%22%2C%22Use%20%60assign%60%2E%22%29%2Cwt%3D1%2C%5Ft%3D%2Fmobile%7Ctablet%7Cip%28ad%7Chone%7Cod%29%7Candroid%2Fi%2Cxt%3D%22ontouchstart%22in%20n%2Ckt%3DO%28n%2C%22PointerEvent%22%29%21%3D%3Da%2COt%3Dxt%26%26%5Ft%2Etest%28navigator%2EuserAgent%29%2CMt%3D%22touch%22%2CDt%3D%22pen%22%2CSt%3D%22mouse%22%2CCt%3D%22kinect%22%2CTt%3D25%2CEt%3D1%2CPt%3D2%2CIt%3D4%2CNt%3D8%2CRt%3D1%2Czt%3D2%2CLt%3D4%2CAt%3D8%2CBt%3D16%2CFt%3Dzt%7CLt%2Cjt%3DAt%7CBt%2CHt%3DFt%7Cjt%2CWt%3D%5B%22x%22%2C%22y%22%5D%2CYt%3D%5B%22clientX%22%2C%22clientY%22%5D%3BS%2Eprototype%3D%7Bhandler%3Afunction%28%29%7B%7D%2Cinit%3Afunction%28%29%7Bthis%2EevEl%26%26v%28this%2Eelement%2Cthis%2EevEl%2Cthis%2EdomHandler%29%2Cthis%2EevTarget%26%26v%28this%2Etarget%2Cthis%2EevTarget%2Cthis%2EdomHandler%29%2Cthis%2EevWin%26%26v%28D%28this%2Eelement%29%2Cthis%2EevWin%2Cthis%2EdomHandler%29%7D%2Cdestroy%3Afunction%28%29%7Bthis%2EevEl%26%26g%28this%2Eelement%2Cthis%2EevEl%2Cthis%2EdomHandler%29%2Cthis%2EevTarget%26%26g%28this%2Etarget%2Cthis%2EevTarget%2Cthis%2EdomHandler%29%2Cthis%2EevWin%26%26g%28D%28this%2Eelement%29%2Cthis%2EevWin%2Cthis%2EdomHandler%29%7D%7D%3Bvar%20Gt%3D%7Bmousedown%3AEt%2Cmousemove%3APt%2Cmouseup%3AIt%7D%2CVt%3D%22mousedown%22%2CUt%3D%22mousemove%20mouseup%22%3Bu%28H%2CS%2C%7Bhandler%3Afunction%28t%29%7Bvar%20e%3DGt%5Bt%2Etype%5D%3Be%26Et%26%260%3D%3D%3Dt%2Ebutton%26%26%28this%2Epressed%3D%210%29%2Ce%26Pt%26%261%21%3D%3Dt%2Ewhich%26%26%28e%3DIt%29%2Cthis%2Epressed%26%26this%2Eallow%26%26%28e%26It%26%26%28this%2Epressed%3D%211%29%2Cthis%2Ecallback%28this%2Emanager%2Ce%2C%7Bpointers%3A%5Bt%5D%2CchangedPointers%3A%5Bt%5D%2CpointerType%3ASt%2CsrcEvent%3At%7D%29%29%7D%7D%29%3Bvar%20qt%3D%7Bpointerdown%3AEt%2Cpointermove%3APt%2Cpointerup%3AIt%2Cpointercancel%3ANt%2Cpointerout%3ANt%7D%2CXt%3D%7B2%3AMt%2C3%3ADt%2C4%3ASt%2C5%3ACt%7D%2CZt%3D%22pointerdown%22%2CKt%3D%22pointermove%20pointerup%20pointercancel%22%3Bn%2EMSPointerEvent%26%26%21n%2EPointerEvent%26%26%28Zt%3D%22MSPointerDown%22%2CKt%3D%22MSPointerMove%20MSPointerUp%20MSPointerCancel%22%29%2Cu%28W%2CS%2C%7Bhandler%3Afunction%28t%29%7Bvar%20e%3Dthis%2Estore%2Ci%3D%211%2Co%3Dt%2Etype%2EtoLowerCase%28%29%2Ereplace%28%22ms%22%2C%22%22%29%2Cn%3Dqt%5Bo%5D%2Cs%3DXt%5Bt%2EpointerType%5D%7C%7Ct%2EpointerType%2Cr%3Ds%3D%3DMt%2Ca%3D%5F%28e%2Ct%2EpointerId%2C%22pointerId%22%29%3Bn%26Et%26%26%280%3D%3D%3Dt%2Ebutton%7C%7Cr%29%3F0%3Ea%26%26%28e%2Epush%28t%29%2Ca%3De%2Elength%2D1%29%3An%26%28It%7CNt%29%26%26%28i%3D%210%29%2C0%3Ea%7C%7C%28e%5Ba%5D%3Dt%2Cthis%2Ecallback%28this%2Emanager%2Cn%2C%7Bpointers%3Ae%2CchangedPointers%3A%5Bt%5D%2CpointerType%3As%2CsrcEvent%3At%7D%29%2Ci%26%26e%2Esplice%28a%2C1%29%29%7D%7D%29%3Bvar%20Jt%3D%7Btouchstart%3AEt%2Ctouchmove%3APt%2Ctouchend%3AIt%2Ctouchcancel%3ANt%7D%2CQt%3D%22touchstart%22%2C%24t%3D%22touchstart%20touchmove%20touchend%20touchcancel%22%3Bu%28Y%2CS%2C%7Bhandler%3Afunction%28t%29%7Bvar%20e%3DJt%5Bt%2Etype%5D%3Bif%28e%3D%3D%3DEt%26%26%28this%2Estarted%3D%210%29%2Cthis%2Estarted%29%7Bvar%20i%3DG%2Ecall%28this%2Ct%2Ce%29%3Be%26%28It%7CNt%29%26%26i%5B0%5D%2Elength%2Di%5B1%5D%2Elength%3D%3D%3D0%26%26%28this%2Estarted%3D%211%29%2Cthis%2Ecallback%28this%2Emanager%2Ce%2C%7Bpointers%3Ai%5B0%5D%2CchangedPointers%3Ai%5B1%5D%2CpointerType%3AMt%2CsrcEvent%3At%7D%29%7D%7D%7D%29%3Bvar%20te%3D%7Btouchstart%3AEt%2Ctouchmove%3APt%2Ctouchend%3AIt%2Ctouchcancel%3ANt%7D%2Cee%3D%22touchstart%20touchmove%20touchend%20touchcancel%22%3Bu%28V%2CS%2C%7Bhandler%3Afunction%28t%29%7Bvar%20e%3Dte%5Bt%2Etype%5D%2Ci%3DU%2Ecall%28this%2Ct%2Ce%29%3Bi%26%26this%2Ecallback%28this%2Emanager%2Ce%2C%7Bpointers%3Ai%5B0%5D%2CchangedPointers%3Ai%5B1%5D%2CpointerType%3AMt%2CsrcEvent%3At%7D%29%7D%7D%29%2Cu%28q%2CS%2C%7Bhandler%3Afunction%28t%2Ce%2Ci%29%7Bvar%20o%3Di%2EpointerType%3D%3DMt%2Cn%3Di%2EpointerType%3D%3DSt%3Bif%28o%29this%2Emouse%2Eallow%3D%211%3Belse%20if%28n%26%26%21this%2Emouse%2Eallow%29return%3Be%26%28It%7CNt%29%26%26%28this%2Emouse%2Eallow%3D%210%29%2Cthis%2Ecallback%28t%2Ce%2Ci%29%7D%2Cdestroy%3Afunction%28%29%7Bthis%2Etouch%2Edestroy%28%29%2Cthis%2Emouse%2Edestroy%28%29%7D%7D%29%3Bvar%20ie%3DO%28pt%2Estyle%2C%22touchAction%22%29%2Coe%3Die%21%3D%3Da%2Cne%3D%22compute%22%2Cse%3D%22auto%22%2Cre%3D%22manipulation%22%2Cae%3D%22none%22%2Che%3D%22pan%2Dx%22%2Cde%3D%22pan%2Dy%22%3BX%2Eprototype%3D%7Bset%3Afunction%28t%29%7Bt%3D%3Dne%26%26%28t%3Dthis%2Ecompute%28%29%29%2Coe%26%26this%2Emanager%2Eelement%2Estyle%26%26%28this%2Emanager%2Eelement%2Estyle%5Bie%5D%3Dt%29%2Cthis%2Eactions%3Dt%2EtoLowerCase%28%29%2Etrim%28%29%7D%2Cupdate%3Afunction%28%29%7Bthis%2Eset%28this%2Emanager%2Eoptions%2EtouchAction%29%7D%2Ccompute%3Afunction%28%29%7Bvar%20t%3D%5B%5D%3Breturn%20l%28this%2Emanager%2Erecognizers%2Cfunction%28e%29%7Bf%28e%2Eoptions%2Eenable%2C%5Be%5D%29%26%26%28t%3Dt%2Econcat%28e%2EgetTouchAction%28%29%29%29%7D%29%2CZ%28t%2Ejoin%28%22%20%22%29%29%7D%2CpreventDefaults%3Afunction%28t%29%7Bif%28%21oe%29%7Bvar%20e%3Dt%2EsrcEvent%2Ci%3Dt%2EoffsetDirection%3Bif%28this%2Emanager%2Esession%2Eprevented%29return%20void%20e%2EpreventDefault%28%29%3Bvar%20o%3Dthis%2Eactions%2Cn%3Db%28o%2Cae%29%2Cs%3Db%28o%2Cde%29%2Cr%3Db%28o%2Che%29%3Bif%28n%29%7Bvar%20a%3D1%3D%3D%3Dt%2Epointers%2Elength%2Ch%3Dt%2Edistance%3C2%2Cd%3Dt%2EdeltaTime%3C250%3Bif%28a%26%26h%26%26d%29return%7Dif%28%21r%7C%7C%21s%29return%20n%7C%7Cs%26%26i%26Ft%7C%7Cr%26%26i%26jt%3Fthis%2EpreventSrc%28e%29%3Avoid%200%7D%7D%2CpreventSrc%3Afunction%28t%29%7Bthis%2Emanager%2Esession%2Eprevented%3D%210%2Ct%2EpreventDefault%28%29%7D%7D%3Bvar%20le%3D1%2Cce%3D2%2Cue%3D4%2Cpe%3D8%2Cfe%3Dpe%2Cme%3D16%2Cve%3D32%3BK%2Eprototype%3D%7Bdefaults%3A%7B%7D%2Cset%3Afunction%28t%29%7Breturn%20ct%28this%2Eoptions%2Ct%29%2Cthis%2Emanager%26%26this%2Emanager%2EtouchAction%2Eupdate%28%29%2Cthis%7D%2CrecognizeWith%3Afunction%28t%29%7Bif%28d%28t%2C%22recognizeWith%22%2Cthis%29%29return%20this%3Bvar%20e%3Dthis%2Esimultaneous%3Breturn%20t%3D%24%28t%2Cthis%29%2Ce%5Bt%2Eid%5D%7C%7C%28e%5Bt%2Eid%5D%3Dt%2Ct%2ErecognizeWith%28this%29%29%2Cthis%7D%2CdropRecognizeWith%3Afunction%28t%29%7Breturn%20d%28t%2C%22dropRecognizeWith%22%2Cthis%29%3Fthis%3A%28t%3D%24%28t%2Cthis%29%2Cdelete%20this%2Esimultaneous%5Bt%2Eid%5D%2Cthis%29%7D%2CrequireFailure%3Afunction%28t%29%7Bif%28d%28t%2C%22requireFailure%22%2Cthis%29%29return%20this%3Bvar%20e%3Dthis%2ErequireFail%3Breturn%20t%3D%24%28t%2Cthis%29%2C%2D1%3D%3D%3D%5F%28e%2Ct%29%26%26%28e%2Epush%28t%29%2Ct%2ErequireFailure%28this%29%29%2Cthis%7D%2CdropRequireFailure%3Afunction%28t%29%7Bif%28d%28t%2C%22dropRequireFailure%22%2Cthis%29%29return%20this%3Bt%3D%24%28t%2Cthis%29%3Bvar%20e%3D%5F%28this%2ErequireFail%2Ct%29%3Breturn%20e%3E%2D1%26%26this%2ErequireFail%2Esplice%28e%2C1%29%2Cthis%7D%2ChasRequireFailures%3Afunction%28%29%7Breturn%20this%2ErequireFail%2Elength%3E0%7D%2CcanRecognizeWith%3Afunction%28t%29%7Breturn%21%21this%2Esimultaneous%5Bt%2Eid%5D%7D%2Cemit%3Afunction%28t%29%7Bfunction%20e%28e%29%7Bi%2Emanager%2Eemit%28e%2Ct%29%7Dvar%20i%3Dthis%2Co%3Dthis%2Estate%3Bpe%3Eo%26%26e%28i%2Eoptions%2Eevent%2BJ%28o%29%29%2Ce%28i%2Eoptions%2Eevent%29%2Ct%2EadditionalEvent%26%26e%28t%2EadditionalEvent%29%2Co%3E%3Dpe%26%26e%28i%2Eoptions%2Eevent%2BJ%28o%29%29%7D%2CtryEmit%3Afunction%28t%29%7Breturn%20this%2EcanEmit%28%29%3Fthis%2Eemit%28t%29%3Avoid%28this%2Estate%3Dve%29%7D%2CcanEmit%3Afunction%28%29%7Bfor%28var%20t%3D0%3Bt%3Cthis%2ErequireFail%2Elength%3B%29%7Bif%28%21%28this%2ErequireFail%5Bt%5D%2Estate%26%28ve%7Cle%29%29%29return%211%3Bt%2B%2B%7Dreturn%210%7D%2Crecognize%3Afunction%28t%29%7Bvar%20e%3Dct%28%7B%7D%2Ct%29%3Breturn%20f%28this%2Eoptions%2Eenable%2C%5Bthis%2Ce%5D%29%3F%28this%2Estate%26%28fe%7Cme%7Cve%29%26%26%28this%2Estate%3Dle%29%2Cthis%2Estate%3Dthis%2Eprocess%28e%29%2Cvoid%28this%2Estate%26%28ce%7Cue%7Cpe%7Cme%29%26%26this%2EtryEmit%28e%29%29%29%3A%28this%2Ereset%28%29%2Cvoid%28this%2Estate%3Dve%29%29%7D%2Cprocess%3Afunction%28t%29%7B%7D%2CgetTouchAction%3Afunction%28%29%7B%7D%2Creset%3Afunction%28%29%7B%7D%7D%2Cu%28tt%2CK%2C%7Bdefaults%3A%7Bpointers%3A1%7D%2CattrTest%3Afunction%28t%29%7Bvar%20e%3Dthis%2Eoptions%2Epointers%3Breturn%200%3D%3D%3De%7C%7Ct%2Epointers%2Elength%3D%3D%3De%7D%2Cprocess%3Afunction%28t%29%7Bvar%20e%3Dthis%2Estate%2Ci%3Dt%2EeventType%2Co%3De%26%28ce%7Cue%29%2Cn%3Dthis%2EattrTest%28t%29%3Breturn%20o%26%26%28i%26Nt%7C%7C%21n%29%3Fe%7Cme%3Ao%7C%7Cn%3Fi%26It%3Fe%7Cpe%3Ae%26ce%3Fe%7Cue%3Ace%3Ave%7D%7D%29%2Cu%28et%2Ctt%2C%7Bdefaults%3A%7Bevent%3A%22pan%22%2Cthreshold%3A10%2Cpointers%3A1%2Cdirection%3AHt%7D%2CgetTouchAction%3Afunction%28%29%7Bvar%20t%3Dthis%2Eoptions%2Edirection%2Ce%3D%5B%5D%3Breturn%20t%26Ft%26%26e%2Epush%28de%29%2Ct%26jt%26%26e%2Epush%28he%29%2Ce%7D%2CdirectionTest%3Afunction%28t%29%7Bvar%20e%3Dthis%2Eoptions%2Ci%3D%210%2Co%3Dt%2Edistance%2Cn%3Dt%2Edirection%2Cs%3Dt%2EdeltaX%2Cr%3Dt%2EdeltaY%3Breturn%20n%26e%2Edirection%7C%7C%28e%2Edirection%26Ft%3F%28n%3D0%3D%3D%3Ds%3FRt%3A0%3Es%3Fzt%3ALt%2Ci%3Ds%21%3Dthis%2EpX%2Co%3DMath%2Eabs%28t%2EdeltaX%29%29%3A%28n%3D0%3D%3D%3Dr%3FRt%3A0%3Er%3FAt%3ABt%2Ci%3Dr%21%3Dthis%2EpY%2Co%3DMath%2Eabs%28t%2EdeltaY%29%29%29%2Ct%2Edirection%3Dn%2Ci%26%26o%3Ee%2Ethreshold%26%26n%26e%2Edirection%7D%2CattrTest%3Afunction%28t%29%7Breturn%20tt%2Eprototype%2EattrTest%2Ecall%28this%2Ct%29%26%26%28this%2Estate%26ce%7C%7C%21%28this%2Estate%26ce%29%26%26this%2EdirectionTest%28t%29%29%7D%2Cemit%3Afunction%28t%29%7Bthis%2EpX%3Dt%2EdeltaX%2Cthis%2EpY%3Dt%2EdeltaY%3Bvar%20e%3DQ%28t%2Edirection%29%3Be%26%26%28t%2EadditionalEvent%3Dthis%2Eoptions%2Eevent%2Be%29%2Cthis%2E%5Fsuper%2Eemit%2Ecall%28this%2Ct%29%7D%7D%29%2Cu%28it%2Ctt%2C%7Bdefaults%3A%7Bevent%3A%22pinch%22%2Cthreshold%3A0%2Cpointers%3A2%7D%2CgetTouchAction%3Afunction%28%29%7Breturn%5Bae%5D%7D%2CattrTest%3Afunction%28t%29%7Breturn%20this%2E%5Fsuper%2EattrTest%2Ecall%28this%2Ct%29%26%26%28Math%2Eabs%28t%2Escale%2D1%29%3Ethis%2Eoptions%2Ethreshold%7C%7Cthis%2Estate%26ce%29%7D%2Cemit%3Afunction%28t%29%7Bif%281%21%3D%3Dt%2Escale%29%7Bvar%20e%3Dt%2Escale%3C1%3F%22in%22%3A%22out%22%3Bt%2EadditionalEvent%3Dthis%2Eoptions%2Eevent%2Be%7Dthis%2E%5Fsuper%2Eemit%2Ecall%28this%2Ct%29%7D%7D%29%2Cu%28ot%2CK%2C%7Bdefaults%3A%7Bevent%3A%22press%22%2Cpointers%3A1%2Ctime%3A251%2Cthreshold%3A9%7D%2CgetTouchAction%3Afunction%28%29%7Breturn%5Bse%5D%7D%2Cprocess%3Afunction%28t%29%7Bvar%20e%3Dthis%2Eoptions%2Ci%3Dt%2Epointers%2Elength%3D%3D%3De%2Epointers%2Co%3Dt%2Edistance%3Ce%2Ethreshold%2Cn%3Dt%2EdeltaTime%3Ee%2Etime%3Bif%28this%2E%5Finput%3Dt%2C%21o%7C%7C%21i%7C%7Ct%2EeventType%26%28It%7CNt%29%26%26%21n%29this%2Ereset%28%29%3Belse%20if%28t%2EeventType%26Et%29this%2Ereset%28%29%2Cthis%2E%5Ftimer%3Dh%28function%28%29%7Bthis%2Estate%3Dfe%2Cthis%2EtryEmit%28%29%7D%2Ce%2Etime%2Cthis%29%3Belse%20if%28t%2EeventType%26It%29return%20fe%3Breturn%20ve%7D%2Creset%3Afunction%28%29%7BclearTimeout%28this%2E%5Ftimer%29%7D%2Cemit%3Afunction%28t%29%7Bthis%2Estate%3D%3D%3Dfe%26%26%28t%26%26t%2EeventType%26It%3Fthis%2Emanager%2Eemit%28this%2Eoptions%2Eevent%2B%22up%22%2Ct%29%3A%28this%2E%5Finput%2EtimeStamp%3Dgt%28%29%2Cthis%2Emanager%2Eemit%28this%2Eoptions%2Eevent%2Cthis%2E%5Finput%29%29%29%7D%7D%29%2Cu%28nt%2Ctt%2C%7Bdefaults%3A%7Bevent%3A%22rotate%22%2Cthreshold%3A0%2Cpointers%3A2%7D%2CgetTouchAction%3Afunction%28%29%7Breturn%5Bae%5D%7D%2CattrTest%3Afunction%28t%29%7Breturn%20this%2E%5Fsuper%2EattrTest%2Ecall%28this%2Ct%29%26%26%28Math%2Eabs%28t%2Erotation%29%3Ethis%2Eoptions%2Ethreshold%7C%7Cthis%2Estate%26ce%29%7D%7D%29%2Cu%28st%2Ctt%2C%7Bdefaults%3A%7Bevent%3A%22swipe%22%2Cthreshold%3A10%2Cvelocity%3A%2E3%2Cdirection%3AFt%7Cjt%2Cpointers%3A1%7D%2CgetTouchAction%3Afunction%28%29%7Breturn%20et%2Eprototype%2EgetTouchAction%2Ecall%28this%29%7D%2CattrTest%3Afunction%28t%29%7Bvar%20e%2Ci%3Dthis%2Eoptions%2Edirection%3Breturn%20i%26%28Ft%7Cjt%29%3Fe%3Dt%2EoverallVelocity%3Ai%26Ft%3Fe%3Dt%2EoverallVelocityX%3Ai%26jt%26%26%28e%3Dt%2EoverallVelocityY%29%2Cthis%2E%5Fsuper%2EattrTest%2Ecall%28this%2Ct%29%26%26i%26t%2EoffsetDirection%26%26t%2Edistance%3Ethis%2Eoptions%2Ethreshold%26%26t%2EmaxPointers%3D%3Dthis%2Eoptions%2Epointers%26%26vt%28e%29%3Ethis%2Eoptions%2Evelocity%26%26t%2EeventType%26It%7D%2Cemit%3Afunction%28t%29%7Bvar%20e%3DQ%28t%2EoffsetDirection%29%3Be%26%26this%2Emanager%2Eemit%28this%2Eoptions%2Eevent%2Be%2Ct%29%2Cthis%2Emanager%2Eemit%28this%2Eoptions%2Eevent%2Ct%29%7D%7D%29%2Cu%28rt%2CK%2C%7Bdefaults%3A%7Bevent%3A%22tap%22%2Cpointers%3A1%2Ctaps%3A1%2Cinterval%3A300%2Ctime%3A250%2Cthreshold%3A9%2CposThreshold%3A10%7D%2CgetTouchAction%3Afunction%28%29%7Breturn%5Bre%5D%7D%2Cprocess%3Afunction%28t%29%7Bvar%20e%3Dthis%2Eoptions%2Ci%3Dt%2Epointers%2Elength%3D%3D%3De%2Epointers%2Co%3Dt%2Edistance%3Ce%2Ethreshold%2Cn%3Dt%2EdeltaTime%3Ce%2Etime%3Bif%28this%2Ereset%28%29%2Ct%2EeventType%26Et%26%260%3D%3D%3Dthis%2Ecount%29return%20this%2EfailTimeout%28%29%3Bif%28o%26%26n%26%26i%29%7Bif%28t%2EeventType%21%3DIt%29return%20this%2EfailTimeout%28%29%3Bvar%20s%3Dthis%2EpTime%3Ft%2EtimeStamp%2Dthis%2EpTime%3Ce%2Einterval%3A%210%2Cr%3D%21this%2EpCenter%7C%7CA%28this%2EpCenter%2Ct%2Ecenter%29%3Ce%2EposThreshold%3Bthis%2EpTime%3Dt%2EtimeStamp%2Cthis%2EpCenter%3Dt%2Ecenter%2Cr%26%26s%3Fthis%2Ecount%2B%3D1%3Athis%2Ecount%3D1%2Cthis%2E%5Finput%3Dt%3Bvar%20a%3Dthis%2Ecount%25e%2Etaps%3Bif%280%3D%3D%3Da%29return%20this%2EhasRequireFailures%28%29%3F%28this%2E%5Ftimer%3Dh%28function%28%29%7Bthis%2Estate%3Dfe%2Cthis%2EtryEmit%28%29%7D%2Ce%2Einterval%2Cthis%29%2Cce%29%3Afe%7Dreturn%20ve%7D%2CfailTimeout%3Afunction%28%29%7Breturn%20this%2E%5Ftimer%3Dh%28function%28%29%7Bthis%2Estate%3Dve%7D%2Cthis%2Eoptions%2Einterval%2Cthis%29%2Cve%7D%2Creset%3Afunction%28%29%7BclearTimeout%28this%2E%5Ftimer%29%7D%2Cemit%3Afunction%28%29%7Bthis%2Estate%3D%3Dfe%26%26%28this%2E%5Finput%2EtapCount%3Dthis%2Ecount%2Cthis%2Emanager%2Eemit%28this%2Eoptions%2Eevent%2Cthis%2E%5Finput%29%29%7D%7D%29%2Cat%2EVERSION%3D%222%2E0%2E6%22%2Cat%2Edefaults%3D%7BdomEvents%3A%211%2CtouchAction%3Ane%2Cenable%3A%210%2CinputTarget%3Anull%2CinputClass%3Anull%2Cpreset%3A%5B%5Bnt%2C%7Benable%3A%211%7D%5D%2C%5Bit%2C%7Benable%3A%211%7D%2C%5B%22rotate%22%5D%5D%2C%5Bst%2C%7Bdirection%3AFt%7D%5D%2C%5Bet%2C%7Bdirection%3AFt%7D%2C%5B%22swipe%22%5D%5D%2C%5Brt%5D%2C%5Brt%2C%7Bevent%3A%22doubletap%22%2Ctaps%3A2%7D%2C%5B%22tap%22%5D%5D%2C%5Bot%5D%5D%2CcssProps%3A%7BuserSelect%3A%22none%22%2CtouchSelect%3A%22none%22%2CtouchCallout%3A%22none%22%2CcontentZooming%3A%22none%22%2CuserDrag%3A%22none%22%2CtapHighlightColor%3A%22rgba%280%2C0%2C0%2C0%29%22%7D%7D%3Bvar%20ge%3D1%2Cye%3D2%3Bht%2Eprototype%3D%7Bset%3Afunction%28t%29%7Breturn%20ct%28this%2Eoptions%2Ct%29%2Ct%2EtouchAction%26%26this%2EtouchAction%2Eupdate%28%29%2Ct%2EinputTarget%26%26%28this%2Einput%2Edestroy%28%29%2Cthis%2Einput%2Etarget%3Dt%2EinputTarget%2Cthis%2Einput%2Einit%28%29%29%2Cthis%7D%2Cstop%3Afunction%28t%29%7Bthis%2Esession%2Estopped%3Dt%3Fye%3Age%7D%2Crecognize%3Afunction%28t%29%7Bvar%20e%3Dthis%2Esession%3Bif%28%21e%2Estopped%29%7Bthis%2EtouchAction%2EpreventDefaults%28t%29%3Bvar%20i%2Co%3Dthis%2Erecognizers%2Cn%3De%2EcurRecognizer%3B%28%21n%7C%7Cn%26%26n%2Estate%26fe%29%26%26%28n%3De%2EcurRecognizer%3Dnull%29%3Bfor%28var%20s%3D0%3Bs%3Co%2Elength%3B%29i%3Do%5Bs%5D%2Ce%2Estopped%3D%3D%3Dye%7C%7Cn%26%26i%21%3Dn%26%26%21i%2EcanRecognizeWith%28n%29%3Fi%2Ereset%28%29%3Ai%2Erecognize%28t%29%2C%21n%26%26i%2Estate%26%28ce%7Cue%7Cpe%29%26%26%28n%3De%2EcurRecognizer%3Di%29%2Cs%2B%2B%7D%7D%2Cget%3Afunction%28t%29%7Bif%28t%20instanceof%20K%29return%20t%3Bfor%28var%20e%3Dthis%2Erecognizers%2Ci%3D0%3Bi%3Ce%2Elength%3Bi%2B%2B%29if%28e%5Bi%5D%2Eoptions%2Eevent%3D%3Dt%29return%20e%5Bi%5D%3Breturn%20null%7D%2Cadd%3Afunction%28t%29%7Bif%28d%28t%2C%22add%22%2Cthis%29%29return%20this%3Bvar%20e%3Dthis%2Eget%28t%2Eoptions%2Eevent%29%3Breturn%20e%26%26this%2Eremove%28e%29%2Cthis%2Erecognizers%2Epush%28t%29%2Ct%2Emanager%3Dthis%2Cthis%2EtouchAction%2Eupdate%28%29%2Ct%7D%2Cremove%3Afunction%28t%29%7Bif%28d%28t%2C%22remove%22%2Cthis%29%29return%20this%3Bif%28t%3Dthis%2Eget%28t%29%29%7Bvar%20e%3Dthis%2Erecognizers%2Ci%3D%5F%28e%2Ct%29%3B%2D1%21%3D%3Di%26%26%28e%2Esplice%28i%2C1%29%2Cthis%2EtouchAction%2Eupdate%28%29%29%7Dreturn%20this%7D%2Con%3Afunction%28t%2Ce%29%7Bvar%20i%3Dthis%2Ehandlers%3Breturn%20l%28w%28t%29%2Cfunction%28t%29%7Bi%5Bt%5D%3Di%5Bt%5D%7C%7C%5B%5D%2Ci%5Bt%5D%2Epush%28e%29%7D%29%2Cthis%7D%2Coff%3Afunction%28t%2Ce%29%7Bvar%20i%3Dthis%2Ehandlers%3Breturn%20l%28w%28t%29%2Cfunction%28t%29%7Be%3Fi%5Bt%5D%26%26i%5Bt%5D%2Esplice%28%5F%28i%5Bt%5D%2Ce%29%2C1%29%3Adelete%20i%5Bt%5D%7D%29%2Cthis%7D%2Cemit%3Afunction%28t%2Ce%29%7Bthis%2Eoptions%2EdomEvents%26%26lt%28t%2Ce%29%3Bvar%20i%3Dthis%2Ehandlers%5Bt%5D%26%26this%2Ehandlers%5Bt%5D%2Eslice%28%29%3Bif%28i%26%26i%2Elength%29%7Be%2Etype%3Dt%2Ce%2EpreventDefault%3Dfunction%28%29%7Be%2EsrcEvent%2EpreventDefault%28%29%7D%3Bfor%28var%20o%3D0%3Bo%3Ci%2Elength%3B%29i%5Bo%5D%28e%29%2Co%2B%2B%7D%7D%2Cdestroy%3Afunction%28%29%7Bthis%2Eelement%26%26dt%28this%2C%211%29%2Cthis%2Ehandlers%3D%7B%7D%2Cthis%2Esession%3D%7B%7D%2Cthis%2Einput%2Edestroy%28%29%2Cthis%2Eelement%3Dnull%7D%7D%2Cct%28at%2C%7BINPUT%5FSTART%3AEt%2CINPUT%5FMOVE%3APt%2CINPUT%5FEND%3AIt%2CINPUT%5FCANCEL%3ANt%2CSTATE%5FPOSSIBLE%3Ale%2CSTATE%5FBEGAN%3Ace%2CSTATE%5FCHANGED%3Aue%2CSTATE%5FENDED%3Ape%2CSTATE%5FRECOGNIZED%3Afe%2CSTATE%5FCANCELLED%3Ame%2CSTATE%5FFAILED%3Ave%2CDIRECTION%5FNONE%3ARt%2CDIRECTION%5FLEFT%3Azt%2CDIRECTION%5FRIGHT%3ALt%2CDIRECTION%5FUP%3AAt%2CDIRECTION%5FDOWN%3ABt%2CDIRECTION%5FHORIZONTAL%3AFt%2CDIRECTION%5FVERTICAL%3Ajt%2CDIRECTION%5FALL%3AHt%2CManager%3Aht%2CInput%3AS%2CTouchAction%3AX%2CTouchInput%3AV%2CMouseInput%3AH%2CPointerEventInput%3AW%2CTouchMouseInput%3Aq%2CSingleTouchInput%3AY%2CRecognizer%3AK%2CAttrRecognizer%3Att%2CTap%3Art%2CPan%3Aet%2CSwipe%3Ast%2CPinch%3Ait%2CRotate%3Ant%2CPress%3Aot%2Con%3Av%2Coff%3Ag%2Ceach%3Al%2Cmerge%3Abt%2Cextend%3Ayt%2Cassign%3Act%2Cinherit%3Au%2CbindFn%3Ap%2Cprefixed%3AO%7D%29%3Bvar%20be%3D%22undefined%22%21%3Dtypeof%20n%3Fn%3A%22undefined%22%21%3Dtypeof%20self%3Fself%3A%7B%7D%3Bbe%2EHammer%3Dat%2Co%3Dfunction%28%29%7Breturn%20at%7D%2Ecall%28e%2Ci%2Ce%2Ct%29%2C%21%28o%21%3D%3Da%26%26%28t%2Eexports%3Do%29%29%7D%28window%2Cdocument%2C%22Hammer%22%29%7D%2Cfunction%28t%2Ce%2Ci%29%7Bvar%20o%2Cn%2Cs%3B%21function%28i%2Cr%29%7Bn%3D%5B%5D%2Co%3Dr%2Cs%3D%22function%22%3D%3Dtypeof%20o%3Fo%2Eapply%28e%2Cn%29%3Ao%2C%21%28void%200%21%3D%3Ds%26%26%28t%2Eexports%3Ds%29%29%7D%28this%2Cfunction%28%29%7Bfunction%20t%28t%29%7Bvar%20e%2Ci%3Dt%26%26t%2EpreventDefault%7C%7C%211%2Co%3Dt%26%26t%2Econtainer%7C%7Cwindow%2Cn%3D%7B%7D%2Cs%3D%7Bkeydown%3A%7B%7D%2Ckeyup%3A%7B%7D%7D%2Cr%3D%7B%7D%3Bfor%28e%3D97%3B122%3E%3De%3Be%2B%2B%29r%5BString%2EfromCharCode%28e%29%5D%3D%7Bcode%3A65%2B%28e%2D97%29%2Cshift%3A%211%7D%3Bfor%28e%3D65%3B90%3E%3De%3Be%2B%2B%29r%5BString%2EfromCharCode%28e%29%5D%3D%7Bcode%3Ae%2Cshift%3A%210%7D%3Bfor%28e%3D0%3B9%3E%3De%3Be%2B%2B%29r%5B%22%22%2Be%5D%3D%7Bcode%3A48%2Be%2Cshift%3A%211%7D%3Bfor%28e%3D1%3B12%3E%3De%3Be%2B%2B%29r%5B%22F%22%2Be%5D%3D%7Bcode%3A111%2Be%2Cshift%3A%211%7D%3Bfor%28e%3D0%3B9%3E%3De%3Be%2B%2B%29r%5B%22num%22%2Be%5D%3D%7Bcode%3A96%2Be%2Cshift%3A%211%7D%3Br%5B%22num%2A%22%5D%3D%7Bcode%3A106%2Cshift%3A%211%7D%2Cr%5B%22num%2B%22%5D%3D%7Bcode%3A107%2Cshift%3A%211%7D%2Cr%5B%22num%2D%22%5D%3D%7Bcode%3A109%2Cshift%3A%211%7D%2Cr%5B%22num%2F%22%5D%3D%7Bcode%3A111%2Cshift%3A%211%7D%2Cr%5B%22num%2E%22%5D%3D%7Bcode%3A110%2Cshift%3A%211%7D%2Cr%2Eleft%3D%7Bcode%3A37%2Cshift%3A%211%7D%2Cr%2Eup%3D%7Bcode%3A38%2Cshift%3A%211%7D%2Cr%2Eright%3D%7Bcode%3A39%2Cshift%3A%211%7D%2Cr%2Edown%3D%7Bcode%3A40%2Cshift%3A%211%7D%2Cr%2Espace%3D%7Bcode%3A32%2Cshift%3A%211%7D%2Cr%2Eenter%3D%7Bcode%3A13%2Cshift%3A%211%7D%2Cr%2Eshift%3D%7Bcode%3A16%2Cshift%3Avoid%200%7D%2Cr%2Eesc%3D%7Bcode%3A27%2Cshift%3A%211%7D%2Cr%2Ebackspace%3D%7Bcode%3A8%2Cshift%3A%211%7D%2Cr%2Etab%3D%7Bcode%3A9%2Cshift%3A%211%7D%2Cr%2Ectrl%3D%7Bcode%3A17%2Cshift%3A%211%7D%2Cr%2Ealt%3D%7Bcode%3A18%2Cshift%3A%211%7D%2Cr%5B%22delete%22%5D%3D%7Bcode%3A46%2Cshift%3A%211%7D%2Cr%2Epageup%3D%7Bcode%3A33%2Cshift%3A%211%7D%2Cr%2Epagedown%3D%7Bcode%3A34%2Cshift%3A%211%7D%2Cr%5B%22%3D%22%5D%3D%7Bcode%3A187%2Cshift%3A%211%7D%2Cr%5B%22%2D%22%5D%3D%7Bcode%3A189%2Cshift%3A%211%7D%2Cr%5B%22%5D%22%5D%3D%7Bcode%3A221%2Cshift%3A%211%7D%2Cr%5B%22%5B%22%5D%3D%7Bcode%3A219%2Cshift%3A%211%7D%3Bvar%20a%3Dfunction%28t%29%7Bd%28t%2C%22keydown%22%29%7D%2Ch%3Dfunction%28t%29%7Bd%28t%2C%22keyup%22%29%7D%2Cd%3Dfunction%28t%2Ce%29%7Bif%28void%200%21%3D%3Ds%5Be%5D%5Bt%2EkeyCode%5D%29%7Bfor%28var%20o%3Ds%5Be%5D%5Bt%2EkeyCode%5D%2Cn%3D0%3Bn%3Co%2Elength%3Bn%2B%2B%29void%200%3D%3D%3Do%5Bn%5D%2Eshift%3Fo%5Bn%5D%2Efn%28t%29%3A1%3D%3Do%5Bn%5D%2Eshift%26%261%3D%3Dt%2EshiftKey%3Fo%5Bn%5D%2Efn%28t%29%3A0%3D%3Do%5Bn%5D%2Eshift%26%260%3D%3Dt%2EshiftKey%26%26o%5Bn%5D%2Efn%28t%29%3B1%3D%3Di%26%26t%2EpreventDefault%28%29%7D%7D%3Breturn%20n%2Ebind%3Dfunction%28t%2Ce%2Ci%29%7Bif%28void%200%3D%3D%3Di%26%26%28i%3D%22keydown%22%29%2Cvoid%200%3D%3D%3Dr%5Bt%5D%29throw%20new%20Error%28%22unsupported%20key%3A%20%22%2Bt%29%3Bvoid%200%3D%3D%3Ds%5Bi%5D%5Br%5Bt%5D%2Ecode%5D%26%26%28s%5Bi%5D%5Br%5Bt%5D%2Ecode%5D%3D%5B%5D%29%2Cs%5Bi%5D%5Br%5Bt%5D%2Ecode%5D%2Epush%28%7Bfn%3Ae%2Cshift%3Ar%5Bt%5D%2Eshift%7D%29%7D%2Cn%2EbindAll%3Dfunction%28t%2Ce%29%7Bvoid%200%3D%3D%3De%26%26%28e%3D%22keydown%22%29%3Bfor%28var%20i%20in%20r%29r%2EhasOwnProperty%28i%29%26%26n%2Ebind%28i%2Ct%2Ce%29%7D%2Cn%2EgetKey%3Dfunction%28t%29%7Bfor%28var%20e%20in%20r%29if%28r%2EhasOwnProperty%28e%29%29%7Bif%281%3D%3Dt%2EshiftKey%26%261%3D%3Dr%5Be%5D%2Eshift%26%26t%2EkeyCode%3D%3Dr%5Be%5D%2Ecode%29return%20e%3Bif%280%3D%3Dt%2EshiftKey%26%260%3D%3Dr%5Be%5D%2Eshift%26%26t%2EkeyCode%3D%3Dr%5Be%5D%2Ecode%29return%20e%3Bif%28t%2EkeyCode%3D%3Dr%5Be%5D%2Ecode%26%26%22shift%22%3D%3De%29return%20e%7Dreturn%22unknown%20key%2C%20currently%20not%20supported%22%7D%2Cn%2Eunbind%3Dfunction%28t%2Ce%2Ci%29%7Bif%28void%200%3D%3D%3Di%26%26%28i%3D%22keydown%22%29%2Cvoid%200%3D%3D%3Dr%5Bt%5D%29throw%20new%20Error%28%22unsupported%20key%3A%20%22%2Bt%29%3Bif%28void%200%21%3D%3De%29%7Bvar%20o%3D%5B%5D%2Cn%3Ds%5Bi%5D%5Br%5Bt%5D%2Ecode%5D%3Bif%28void%200%21%3D%3Dn%29for%28var%20a%3D0%3Ba%3Cn%2Elength%3Ba%2B%2B%29n%5Ba%5D%2Efn%3D%3De%26%26n%5Ba%5D%2Eshift%3D%3Dr%5Bt%5D%2Eshift%7C%7Co%2Epush%28s%5Bi%5D%5Br%5Bt%5D%2Ecode%5D%5Ba%5D%29%3Bs%5Bi%5D%5Br%5Bt%5D%2Ecode%5D%3Do%7Delse%20s%5Bi%5D%5Br%5Bt%5D%2Ecode%5D%3D%5B%5D%7D%2Cn%2Ereset%3Dfunction%28%29%7Bs%3D%7Bkeydown%3A%7B%7D%2Ckeyup%3A%7B%7D%7D%7D%2Cn%2Edestroy%3Dfunction%28%29%7Bs%3D%7Bkeydown%3A%7B%7D%2Ckeyup%3A%7B%7D%7D%2Co%2EremoveEventListener%28%22keydown%22%2Ca%2C%210%29%2Co%2EremoveEventListener%28%22keyup%22%2Ch%2C%210%29%7D%2Co%2EaddEventListener%28%22keydown%22%2Ca%2C%210%29%2Co%2EaddEventListener%28%22keyup%22%2Ch%2C%210%29%2Cn%7Dreturn%20t%7D%29%7D%2Cfunction%28t%2Ce%2Ci%29%7Be%2Eutil%3Di%281%29%2Ce%2EDOMutil%3Di%288%29%2Ce%2EDataSet%3Di%289%29%2Ce%2EDataView%3Di%2811%29%2Ce%2EQueue%3Di%2810%29%2Ce%2ETimeline%3Di%2825%29%2Ce%2EGraph2d%3Di%2850%29%2Ce%2Etimeline%3D%7BCore%3Ai%2833%29%2CDateUtil%3Ai%2832%29%2CRange%3Ai%2830%29%2Cstack%3Ai%2837%29%2CTimeStep%3Ai%2835%29%2Ccomponents%3A%7Bitems%3A%7BItem%3Ai%2839%29%2CBackgroundItem%3Ai%2843%29%2CBoxItem%3Ai%2841%29%2CPointItem%3Ai%2842%29%2CRangeItem%3Ai%2838%29%7D%2CBackgroundGroup%3Ai%2840%29%2CComponent%3Ai%2831%29%2CCurrentTime%3Ai%2848%29%2CCustomTime%3Ai%2846%29%2CDataAxis%3Ai%2852%29%2CDataScale%3Ai%2853%29%2CGraphGroup%3Ai%2854%29%2CGroup%3Ai%2836%29%2CItemSet%3Ai%2834%29%2CLegend%3Ai%2858%29%2CLineGraph%3Ai%2851%29%2CTimeAxis%3Ai%2844%29%7D%7D%2Ce%2Emoment%3Di%282%29%2Ce%2EHammer%3Di%2820%29%2Ce%2Ekeycharm%3Di%2823%29%7D%2Cfunction%28t%2Ce%2Ci%29%7Bfunction%20o%28t%29%7Breturn%20t%26%26t%2E%5F%5FesModule%3Ft%3A%7B%22default%22%3At%7D%7Dfunction%20n%28t%2Ce%2Ci%2Co%29%7Bif%28%21%28this%20instanceof%20n%29%29throw%20new%20SyntaxError%28%22Constructor%20must%20be%20called%20with%20the%20new%20operator%22%29%3Bif%28%21%28Array%2EisArray%28i%29%7C%7Ci%20instanceof%20c%7C%7Ci%20instanceof%20u%29%26%26i%20instanceof%20Object%29%7Bvar%20s%3Do%3Bo%3Di%2Ci%3Ds%7Dvar%20r%3Dthis%3Bthis%2EdefaultOptions%3D%7Bstart%3Anull%2Cend%3Anull%2CautoResize%3A%210%2CthrottleRedraw%3A0%2Corientation%3A%7Baxis%3A%22bottom%22%2Citem%3A%22bottom%22%7D%2Crtl%3A%211%2Cmoment%3Ad%2Cwidth%3Anull%2Cheight%3Anull%2CmaxHeight%3Anull%2CminHeight%3Anull%7D%2Cthis%2Eoptions%3Dl%2EdeepExtend%28%7B%7D%2Cthis%2EdefaultOptions%29%2Cthis%2E%5Fcreate%28t%29%2Cthis%2Ecomponents%3D%5B%5D%2Cthis%2Ebody%3D%7Bdom%3Athis%2Edom%2CdomProps%3Athis%2Eprops%2Cemitter%3A%7Bon%3Athis%2Eon%2Ebind%28this%29%2Coff%3Athis%2Eoff%2Ebind%28this%29%2Cemit%3Athis%2Eemit%2Ebind%28this%29%7D%2ChiddenDates%3A%5B%5D%2Cutil%3A%7BgetScale%3Afunction%28%29%7Breturn%20r%2EtimeAxis%2Estep%2Escale%7D%2CgetStep%3Afunction%28%29%7Breturn%20r%2EtimeAxis%2Estep%2Estep%7D%2CtoScreen%3Ar%2E%5FtoScreen%2Ebind%28r%29%2CtoGlobalScreen%3Ar%2E%5FtoGlobalScreen%2Ebind%28r%29%2CtoTime%3Ar%2E%5FtoTime%2Ebind%28r%29%2CtoGlobalTime%3Ar%2E%5FtoGlobalTime%2Ebind%28r%29%7D%7D%2Cthis%2Erange%3Dnew%20p%28this%2Ebody%29%2Cthis%2Ecomponents%2Epush%28this%2Erange%29%2Cthis%2Ebody%2Erange%3Dthis%2Erange%2Cthis%2EtimeAxis%3Dnew%20m%28this%2Ebody%29%2Cthis%2EtimeAxis2%3Dnull%2Cthis%2Ecomponents%2Epush%28this%2EtimeAxis%29%2Cthis%2EcurrentTime%3Dnew%20v%28this%2Ebody%29%2Cthis%2Ecomponents%2Epush%28this%2EcurrentTime%29%2Cthis%2EitemSet%3Dnew%20y%28this%2Ebody%2Cthis%2Eoptions%29%2Cthis%2Ecomponents%2Epush%28this%2EitemSet%29%2Cthis%2EitemsData%3Dnull%2Cthis%2EgroupsData%3Dnull%2Cthis%2Eon%28%22tap%22%2Cfunction%28t%29%7Br%2Eemit%28%22click%22%2Cr%2EgetEventProperties%28t%29%29%7D%29%2Cthis%2Eon%28%22doubletap%22%2Cfunction%28t%29%7Br%2Eemit%28%22doubleClick%22%2Cr%2EgetEventProperties%28t%29%29%7D%29%2Cthis%2Edom%2Eroot%2Eoncontextmenu%3Dfunction%28t%29%7Br%2Eemit%28%22contextmenu%22%2Cr%2EgetEventProperties%28t%29%29%7D%2Cthis%2EfitDone%3D%211%2Cthis%2Eon%28%22changed%22%2Cfunction%28%29%7Bif%28null%21%3Dthis%2EitemsData%26%26%21r%2EfitDone%29if%28r%2EfitDone%3D%210%2Cvoid%200%21%3Dr%2Eoptions%2Estart%7C%7Cvoid%200%21%3Dr%2Eoptions%2Eend%29%7Bif%28void%200%3D%3Dr%2Eoptions%2Estart%7C%7Cvoid%200%3D%3Dr%2Eoptions%2Eend%29var%20t%3Dr%2EgetItemRange%28%29%3Bvar%20e%3Dvoid%200%21%3Dr%2Eoptions%2Estart%3Fr%2Eoptions%2Estart%3At%2Emin%2Ci%3Dvoid%200%21%3Dr%2Eoptions%2Eend%3Fr%2Eoptions%2Eend%3At%2Emax%3Br%2EsetWindow%28e%2Ci%2C%7Banimation%3A%211%7D%29%7Delse%20r%2Efit%28%7Banimation%3A%211%7D%29%7D%29%2Co%26%26this%2EsetOptions%28o%29%2Ci%26%26this%2EsetGroups%28i%29%2Ce%26%26this%2EsetItems%28e%29%2Cthis%2E%5Fredraw%28%29%7Dvar%20s%3Di%2826%29%2Cr%3Do%28s%29%2Ca%3Di%2829%29%2Ch%3Do%28a%29%2Cd%3D%28i%2813%29%2Ci%2820%29%2Ci%282%29%29%2Cl%3Di%281%29%2Cc%3Di%289%29%2Cu%3Di%2811%29%2Cp%3Di%2830%29%2Cf%3Di%2833%29%2Cm%3Di%2844%29%2Cv%3Di%2848%29%2Cg%3Di%2846%29%2Cy%3Di%2834%29%2Cb%3Di%2829%29%2EprintStyle%2Cw%3Di%2849%29%2EallOptions%2C%5F%3Di%2849%29%2EconfigureOptions%3Bn%2Eprototype%3Dnew%20f%2Cn%2Eprototype%2E%5FcreateConfigurator%3Dfunction%28%29%7Breturn%20new%20r%5B%22default%22%5D%28this%2Cthis%2Edom%2Econtainer%2C%5F%29%7D%2Cn%2Eprototype%2Eredraw%3Dfunction%28%29%7Bthis%2EitemSet%26%26this%2EitemSet%2EmarkDirty%28%7BrefreshItems%3A%210%7D%29%2Cthis%2E%5Fredraw%28%29%7D%2Cn%2Eprototype%2EsetOptions%3Dfunction%28t%29%7Bvar%20e%3Dh%5B%22default%22%5D%2Evalidate%28t%2Cw%29%3Bif%28e%3D%3D%3D%210%26%26console%2Elog%28%22%25cErrors%20have%20been%20found%20in%20the%20supplied%20options%20object%2E%22%2Cb%29%2Cf%2Eprototype%2EsetOptions%2Ecall%28this%2Ct%29%2C%22type%22in%20t%26%26t%2Etype%21%3D%3Dthis%2Eoptions%2Etype%29%7Bthis%2Eoptions%2Etype%3Dt%2Etype%3Bvar%20i%3Dthis%2EitemsData%3Bif%28i%29%7Bvar%20o%3Dthis%2EgetSelection%28%29%3Bthis%2EsetItems%28null%29%2Cthis%2EsetItems%28i%29%2Cthis%2EsetSelection%28o%29%7D%7D%7D%2Cn%2Eprototype%2EsetItems%3Dfunction%28t%29%7Bvar%20e%3Be%3Dt%3Ft%20instanceof%20c%7C%7Ct%20instanceof%20u%3Ft%3Anew%20c%28t%2C%7Btype%3A%7Bstart%3A%22Date%22%2Cend%3A%22Date%22%7D%7D%29%3Anull%2Cthis%2EitemsData%3De%2Cthis%2EitemSet%26%26this%2EitemSet%2EsetItems%28e%29%7D%2Cn%2Eprototype%2EsetGroups%3Dfunction%28t%29%7Bvar%20e%3Be%3Dt%3Ft%20instanceof%20c%7C%7Ct%20instanceof%20u%3Ft%3Anew%20c%28t%29%3Anull%2Cthis%2EgroupsData%3De%2Cthis%2EitemSet%2EsetGroups%28e%29%7D%2Cn%2Eprototype%2EsetData%3Dfunction%28t%29%7Bt%26%26t%2Egroups%26%26this%2EsetGroups%28t%2Egroups%29%2Ct%26%26t%2Eitems%26%26this%2EsetItems%28t%2Eitems%29%7D%2Cn%2Eprototype%2EsetSelection%3Dfunction%28t%2Ce%29%7Bthis%2EitemSet%26%26this%2EitemSet%2EsetSelection%28t%29%2Ce%26%26e%2Efocus%26%26this%2Efocus%28t%2Ce%29%7D%2Cn%2Eprototype%2EgetSelection%3Dfunction%28%29%7Breturn%20this%2EitemSet%26%26this%2EitemSet%2EgetSelection%28%29%7C%7C%5B%5D%7D%2Cn%2Eprototype%2Efocus%3Dfunction%28t%2Ce%29%7Bif%28this%2EitemsData%26%26void%200%21%3Dt%29%7Bvar%20i%3DArray%2EisArray%28t%29%3Ft%3A%5Bt%5D%2Co%3Dthis%2EitemsData%2EgetDataSet%28%29%2Eget%28i%2C%7Btype%3A%7Bstart%3A%22Date%22%2Cend%3A%22Date%22%7D%7D%29%2Cn%3Dnull%2Cs%3Dnull%3Bif%28o%2EforEach%28function%28t%29%7Bvar%20e%3Dt%2Estart%2EvalueOf%28%29%2Ci%3D%22end%22in%20t%3Ft%2Eend%2EvalueOf%28%29%3At%2Estart%2EvalueOf%28%29%3B%28null%3D%3D%3Dn%7C%7Cn%3Ee%29%26%26%28n%3De%29%2C%28null%3D%3D%3Ds%7C%7Ci%3Es%29%26%26%28s%3Di%29%7D%29%2Cnull%21%3D%3Dn%26%26null%21%3D%3Ds%29%7Bvar%20r%3D%28n%2Bs%29%2F2%2Ca%3DMath%2Emax%28this%2Erange%2Eend%2Dthis%2Erange%2Estart%2C1%2E1%2A%28s%2Dn%29%29%2Ch%3De%26%26void%200%21%3D%3De%2Eanimation%3Fe%2Eanimation%3A%210%3Bthis%2Erange%2EsetRange%28r%2Da%2F2%2Cr%2Ba%2F2%2Ch%29%7D%7D%7D%2Cn%2Eprototype%2Efit%3Dfunction%28t%29%7Bvar%20e%2Ci%3Dt%26%26void%200%21%3D%3Dt%2Eanimation%3Ft%2Eanimation%3A%210%2Co%3Dthis%2EitemsData%26%26this%2EitemsData%2EgetDataSet%28%29%3B1%3D%3D%3Do%2Elength%26%26void%200%3D%3D%3Do%2Eget%28%29%5B0%5D%2Eend%3F%28e%3Dthis%2EgetDataRange%28%29%2Cthis%2EmoveTo%28e%2Emin%2EvalueOf%28%29%2C%7Banimation%3Ai%7D%29%29%3A%28e%3Dthis%2EgetItemRange%28%29%2Cthis%2Erange%2EsetRange%28e%2Emin%2Ce%2Emax%2Ci%29%29%7D%2Cn%2Eprototype%2EgetItemRange%3Dfunction%28%29%7Bvar%20t%3Dthis%2Ce%3Dthis%2EgetDataRange%28%29%2Ci%3Dnull%21%3D%3De%2Emin%3Fe%2Emin%2EvalueOf%28%29%3Anull%2Co%3Dnull%21%3D%3De%2Emax%3Fe%2Emax%2EvalueOf%28%29%3Anull%2Cn%3Dnull%2Cs%3Dnull%3Bif%28null%21%3Di%26%26null%21%3Do%29%7Bvar%20r%2Ca%2Ch%2Cd%2Cc%3B%21function%28%29%7Bvar%20e%3Dfunction%28t%29%7Breturn%20l%2Econvert%28t%2Edata%2Estart%2C%22Date%22%29%2EvalueOf%28%29%7D%2Cu%3Dfunction%28t%29%7Bvar%20e%3Dvoid%200%21%3Dt%2Edata%2Eend%3Ft%2Edata%2Eend%3At%2Edata%2Estart%3Breturn%20l%2Econvert%28e%2C%22Date%22%29%2EvalueOf%28%29%7D%3Br%3Do%2Di%2C0%3E%3Dr%26%26%28r%3D10%29%2Ca%3Dr%2Ft%2Eprops%2Ecenter%2Ewidth%2Cl%2EforEach%28t%2EitemSet%2Eitems%2Cfunction%28t%29%7Bt%2Eshow%28%29%2Ct%2ErepositionX%28%29%3Bvar%20r%3De%28t%29%2Ch%3Du%28t%29%3Bif%28this%2Eoptions%2Ertl%29var%20d%3Dr%2D%28t%2EgetWidthRight%28%29%2B10%29%2Aa%2Cl%3Dh%2B%28t%2EgetWidthLeft%28%29%2B10%29%2Aa%3Belse%20var%20d%3Dr%2D%28t%2EgetWidthLeft%28%29%2B10%29%2Aa%2Cl%3Dh%2B%28t%2EgetWidthRight%28%29%2B10%29%2Aa%3Bi%3Ed%26%26%28i%3Dd%2Cn%3Dt%29%2Cl%3Eo%26%26%28o%3Dl%2Cs%3Dt%29%7D%2Ebind%28t%29%29%2Cn%26%26s%26%26%28h%3Dn%2EgetWidthLeft%28%29%2B10%2Cd%3Ds%2EgetWidthRight%28%29%2B10%2Cc%3Dt%2Eprops%2Ecenter%2Ewidth%2Dh%2Dd%2Cc%3E0%26%26%28t%2Eoptions%2Ertl%3F%28i%3De%28n%29%2Dd%2Ar%2Fc%2Co%3Du%28s%29%2Bh%2Ar%2Fc%29%3A%28i%3De%28n%29%2Dh%2Ar%2Fc%2Co%3Du%28s%29%2Bd%2Ar%2Fc%29%29%29%7D%28%29%7Dreturn%7Bmin%3Anull%21%3Di%3Fnew%20Date%28i%29%3Anull%2Cmax%3Anull%21%3Do%3Fnew%20Date%28o%29%3Anull%7D%7D%2Cn%2Eprototype%2EgetDataRange%3Dfunction%28%29%7Bvar%20t%3Dnull%2Ce%3Dnull%2Ci%3Dthis%2EitemsData%26%26this%2EitemsData%2EgetDataSet%28%29%3Breturn%20i%26%26i%2EforEach%28function%28i%29%7Bvar%20o%3Dl%2Econvert%28i%2Estart%2C%22Date%22%29%2EvalueOf%28%29%2Cn%3Dl%2Econvert%28void%200%21%3Di%2Eend%3Fi%2Eend%3Ai%2Estart%2C%22Date%22%29%2EvalueOf%28%29%3B%28null%3D%3D%3Dt%7C%7Ct%3Eo%29%26%26%28t%3Do%29%2C%28null%3D%3D%3De%7C%7Cn%3Ee%29%26%26%28e%3Dn%29%7D%29%2C%7Bmin%3Anull%21%3Dt%3Fnew%20Date%28t%29%3Anull%2Cmax%3Anull%21%3De%3Fnew%20Date%28e%29%3Anull%7D%7D%2Cn%2Eprototype%2EgetEventProperties%3Dfunction%28t%29%7Bvar%20e%3Dt%2Ecenter%3Ft%2Ecenter%2Ex%3At%2EclientX%2Ci%3Dt%2Ecenter%3Ft%2Ecenter%2Ey%3At%2EclientY%3Bif%28this%2Eoptions%2Ertl%29var%20o%3Dl%2EgetAbsoluteRight%28this%2Edom%2EcenterContainer%29%2De%3Belse%20var%20o%3De%2Dl%2EgetAbsoluteLeft%28this%2Edom%2EcenterContainer%29%3Bvar%20n%3Di%2Dl%2EgetAbsoluteTop%28this%2Edom%2EcenterContainer%29%2Cs%3Dthis%2EitemSet%2EitemFromTarget%28t%29%2Cr%3Dthis%2EitemSet%2EgroupFromTarget%28t%29%2Ca%3Dg%2EcustomTimeFromTarget%28t%29%2Ch%3Dthis%2EitemSet%2Eoptions%2Esnap%7C%7Cnull%2Cd%3Dthis%2Ebody%2Eutil%2EgetScale%28%29%2Cc%3Dthis%2Ebody%2Eutil%2EgetStep%28%29%2Cu%3Dthis%2E%5FtoTime%28o%29%2Cp%3Dh%3Fh%28u%2Cd%2Cc%29%3Au%2Cf%3Dl%2EgetTarget%28t%29%2Cm%3Dnull%3Breturn%20null%21%3Ds%3Fm%3D%22item%22%3Anull%21%3Da%3Fm%3D%22custom%2Dtime%22%3Al%2EhasParent%28f%2Cthis%2EtimeAxis%2Edom%2Eforeground%29%3Fm%3D%22axis%22%3Athis%2EtimeAxis2%26%26l%2EhasParent%28f%2Cthis%2EtimeAxis2%2Edom%2Eforeground%29%3Fm%3D%22axis%22%3Al%2EhasParent%28f%2Cthis%2EitemSet%2Edom%2ElabelSet%29%3Fm%3D%22group%2Dlabel%22%3Al%2EhasParent%28f%2Cthis%2EcurrentTime%2Ebar%29%3Fm%3D%22current%2Dtime%22%3Al%2EhasParent%28f%2Cthis%2Edom%2Ecenter%29%26%26%28m%3D%22background%22%29%2C%7Bevent%3At%2Citem%3As%3Fs%2Eid%3Anull%2Cgroup%3Ar%3Fr%2EgroupId%3Anull%2Cwhat%3Am%2CpageX%3At%2EsrcEvent%3Ft%2EsrcEvent%2EpageX%3At%2EpageX%2CpageY%3At%2EsrcEvent%3Ft%2EsrcEvent%2EpageY%3At%2EpageY%2Cx%3Ao%2Cy%3An%2Ctime%3Au%2CsnappedTime%3Ap%7D%7D%2Ct%2Eexports%3Dn%7D%2Cfunction%28t%2Ce%2Ci%29%7Bfunction%20o%28t%29%7Breturn%20t%26%26t%2E%5F%5FesModule%3Ft%3A%7B%22default%22%3At%7D%7Dfunction%20n%28t%2Ce%29%7Bif%28%21%28t%20instanceof%20e%29%29throw%20new%20TypeError%28%22Cannot%20call%20a%20class%20as%20a%20function%22%29%7DObject%2EdefineProperty%28e%2C%22%5F%5FesModule%22%2C%7Bvalue%3A%210%7D%29%3Bvar%20s%3D%22function%22%3D%3Dtypeof%20Symbol%26%26%22symbol%22%3D%3Dtypeof%20Symbol%2Eiterator%3Ffunction%28t%29%7Breturn%20typeof%20t%7D%3Afunction%28t%29%7Breturn%20t%26%26%22function%22%3D%3Dtypeof%20Symbol%26%26t%2Econstructor%3D%3D%3DSymbol%3F%22symbol%22%3Atypeof%20t%7D%2Cr%3Dfunction%28%29%7Bfunction%20t%28t%2Ce%29%7Bfor%28var%20i%3D0%3Bi%3Ce%2Elength%3Bi%2B%2B%29%7Bvar%20o%3De%5Bi%5D%3Bo%2Eenumerable%3Do%2Eenumerable%7C%7C%211%2Co%2Econfigurable%3D%210%2C%22value%22in%20o%26%26%28o%2Ewritable%3D%210%29%2CObject%2EdefineProperty%28t%2Co%2Ekey%2Co%29%7D%7Dreturn%20function%28e%2Ci%2Co%29%7Breturn%20i%26%26t%28e%2Eprototype%2Ci%29%2Co%26%26t%28e%2Co%29%2Ce%7D%7D%28%29%2Ca%3Di%2827%29%2Ch%3Do%28a%29%2Cd%3Di%281%29%2Cl%3Dfunction%28%29%7Bfunction%20t%28e%2Ci%2Co%29%7Bvar%20s%3Darguments%2Elength%3C%3D3%7C%7Cvoid%200%3D%3D%3Darguments%5B3%5D%3F1%3Aarguments%5B3%5D%3Bn%28this%2Ct%29%2Cthis%2Eparent%3De%2Cthis%2EchangedOptions%3D%5B%5D%2Cthis%2Econtainer%3Di%2Cthis%2EallowCreation%3D%211%2Cthis%2Eoptions%3D%7B%7D%2Cthis%2Einitialized%3D%211%2Cthis%2EpopupCounter%3D0%2Cthis%2EdefaultOptions%3D%7Benabled%3A%211%2Cfilter%3A%210%2Ccontainer%3Avoid%200%2CshowButton%3A%210%7D%2Cd%2Eextend%28this%2Eoptions%2Cthis%2EdefaultOptions%29%2Cthis%2EconfigureOptions%3Do%2Cthis%2EmoduleOptions%3D%7B%7D%2Cthis%2EdomElements%3D%5B%5D%2Cthis%2EpopupDiv%3D%7B%7D%2Cthis%2EpopupLimit%3D5%2Cthis%2EpopupHistory%3D%7B%7D%2Cthis%2EcolorPicker%3Dnew%20h%5B%22default%22%5D%28s%29%2Cthis%2Ewrapper%3Dvoid%200%7Dreturn%20r%28t%2C%5B%7Bkey%3A%22setOptions%22%2Cvalue%3Afunction%28t%29%7Bif%28void%200%21%3D%3Dt%29%7Bthis%2EpopupHistory%3D%7B%7D%2Cthis%2E%5FremovePopup%28%29%3Bvar%20e%3D%210%3B%22string%22%3D%3Dtypeof%20t%3Fthis%2Eoptions%2Efilter%3Dt%3At%20instanceof%20Array%3Fthis%2Eoptions%2Efilter%3Dt%2Ejoin%28%29%3A%22object%22%3D%3D%3D%28%22undefined%22%3D%3Dtypeof%20t%3F%22undefined%22%3As%28t%29%29%3F%28void%200%21%3D%3Dt%2Econtainer%26%26%28this%2Eoptions%2Econtainer%3Dt%2Econtainer%29%2Cvoid%200%21%3D%3Dt%2Efilter%26%26%28this%2Eoptions%2Efilter%3Dt%2Efilter%29%2Cvoid%200%21%3D%3Dt%2EshowButton%26%26%28this%2Eoptions%2EshowButton%3Dt%2EshowButton%29%2Cvoid%200%21%3D%3Dt%2Eenabled%26%26%28e%3Dt%2Eenabled%29%29%3A%22boolean%22%3D%3Dtypeof%20t%3F%28this%2Eoptions%2Efilter%3D%210%2Ce%3Dt%29%3A%22function%22%3D%3Dtypeof%20t%26%26%28this%2Eoptions%2Efilter%3Dt%2Ce%3D%210%29%2Cthis%2Eoptions%2Efilter%3D%3D%3D%211%26%26%28e%3D%211%29%2Cthis%2Eoptions%2Eenabled%3De%7Dthis%2E%5Fclean%28%29%7D%7D%2C%7Bkey%3A%22setModuleOptions%22%2Cvalue%3Afunction%28t%29%7Bthis%2EmoduleOptions%3Dt%2Cthis%2Eoptions%2Eenabled%3D%3D%3D%210%26%26%28this%2E%5Fclean%28%29%2Cvoid%200%21%3D%3Dthis%2Eoptions%2Econtainer%26%26%28this%2Econtainer%3Dthis%2Eoptions%2Econtainer%29%2Cthis%2E%5Fcreate%28%29%29%7D%7D%2C%7Bkey%3A%22%5Fcreate%22%2Cvalue%3Afunction%28%29%7Bvar%20t%3Dthis%3Bthis%2E%5Fclean%28%29%2Cthis%2EchangedOptions%3D%5B%5D%3Bvar%20e%3Dthis%2Eoptions%2Efilter%2Ci%3D0%2Co%3D%211%3Bfor%28var%20n%20in%20this%2EconfigureOptions%29this%2EconfigureOptions%2EhasOwnProperty%28n%29%26%26%28this%2EallowCreation%3D%211%2Co%3D%211%2C%22function%22%3D%3Dtypeof%20e%3F%28o%3De%28n%2C%5B%5D%29%2Co%3Do%7C%7Cthis%2E%5FhandleObject%28this%2EconfigureOptions%5Bn%5D%2C%5Bn%5D%2C%210%29%29%3Ae%21%3D%3D%210%26%26%2D1%3D%3D%3De%2EindexOf%28n%29%7C%7C%28o%3D%210%29%2Co%21%3D%3D%211%26%26%28this%2EallowCreation%3D%210%2Ci%3E0%26%26this%2E%5FmakeItem%28%5B%5D%29%2Cthis%2E%5FmakeHeader%28n%29%2Cthis%2E%5FhandleObject%28this%2EconfigureOptions%5Bn%5D%2C%5Bn%5D%29%29%2Ci%2B%2B%29%3Bthis%2Eoptions%2EshowButton%3D%3D%3D%210%26%26%21function%28%29%7Bvar%20e%3Ddocument%2EcreateElement%28%22div%22%29%3Be%2EclassName%3D%22vis%2Dconfiguration%20vis%2Dconfig%2Dbutton%22%2Ce%2EinnerHTML%3D%22generate%20options%22%2Ce%2Eonclick%3Dfunction%28%29%7Bt%2E%5FprintOptions%28%29%7D%2Ce%2Eonmouseover%3Dfunction%28%29%7Be%2EclassName%3D%22vis%2Dconfiguration%20vis%2Dconfig%2Dbutton%20hover%22%7D%2Ce%2Eonmouseout%3Dfunction%28%29%7Be%2EclassName%3D%22vis%2Dconfiguration%20vis%2Dconfig%2Dbutton%22%7D%2Ct%2EoptionsContainer%3Ddocument%2EcreateElement%28%22div%22%29%2Ct%2EoptionsContainer%2EclassName%3D%22vis%2Dconfiguration%20vis%2Dconfig%2Doption%2Dcontainer%22%2Ct%2EdomElements%2Epush%28t%2EoptionsContainer%29%2Ct%2EdomElements%2Epush%28e%29%7D%28%29%2Cthis%2E%5Fpush%28%29%7D%7D%2C%7Bkey%3A%22%5Fpush%22%2Cvalue%3Afunction%28%29%7Bthis%2Ewrapper%3Ddocument%2EcreateElement%28%22div%22%29%2Cthis%2Ewrapper%2EclassName%3D%22vis%2Dconfiguration%2Dwrapper%22%2Cthis%2Econtainer%2EappendChild%28this%2Ewrapper%29%3Bfor%28var%20t%3D0%3Bt%3Cthis%2EdomElements%2Elength%3Bt%2B%2B%29this%2Ewrapper%2EappendChild%28this%2EdomElements%5Bt%5D%29%3Bthis%2E%5FshowPopupIfNeeded%28%29%7D%7D%2C%7Bkey%3A%22%5Fclean%22%2Cvalue%3Afunction%28%29%7Bfor%28var%20t%3D0%3Bt%3Cthis%2EdomElements%2Elength%3Bt%2B%2B%29this%2Ewrapper%2EremoveChild%28this%2EdomElements%5Bt%5D%29%3Bvoid%200%21%3D%3Dthis%2Ewrapper%26%26%28this%2Econtainer%2EremoveChild%28this%2Ewrapper%29%2Cthis%2Ewrapper%3Dvoid%200%29%2Cthis%2EdomElements%3D%5B%5D%2Cthis%2E%5FremovePopup%28%29%7D%7D%2C%7Bkey%3A%22%5FgetValue%22%2Cvalue%3Afunction%28t%29%7Bfor%28var%20e%3Dthis%2EmoduleOptions%2Ci%3D0%3Bi%3Ct%2Elength%3Bi%2B%2B%29%7Bif%28void%200%3D%3D%3De%5Bt%5Bi%5D%5D%29%7Be%3Dvoid%200%3Bbreak%7De%3De%5Bt%5Bi%5D%5D%7Dreturn%20e%7D%7D%2C%7Bkey%3A%22%5FmakeItem%22%2Cvalue%3Afunction%28t%29%7Bvar%20e%3Darguments%2Ci%3Dthis%3Bif%28this%2EallowCreation%3D%3D%3D%210%29%7Bvar%20o%2Cn%2Cr%2Ca%3Dfunction%28%29%7Bvar%20s%3Ddocument%2EcreateElement%28%22div%22%29%3Bfor%28s%2EclassName%3D%22vis%2Dconfiguration%20vis%2Dconfig%2Ditem%20vis%2Dconfig%2Ds%22%2Bt%2Elength%2Co%3De%2Elength%2Cn%3DArray%28o%3E1%3Fo%2D1%3A0%29%2Cr%3D1%3Bo%3Er%3Br%2B%2B%29n%5Br%2D1%5D%3De%5Br%5D%3Breturn%20n%2EforEach%28function%28t%29%7Bs%2EappendChild%28t%29%7D%29%2Ci%2EdomElements%2Epush%28s%29%2C%7Bv%3Ai%2EdomElements%2Elength%7D%7D%28%29%3Bif%28%22object%22%3D%3D%3D%28%22undefined%22%3D%3Dtypeof%20a%3F%22undefined%22%3As%28a%29%29%29return%20a%2Ev%7Dreturn%200%7D%7D%2C%7Bkey%3A%22%5FmakeHeader%22%2Cvalue%3Afunction%28t%29%7Bvar%20e%3Ddocument%2EcreateElement%28%22div%22%29%3Be%2EclassName%3D%22vis%2Dconfiguration%20vis%2Dconfig%2Dheader%22%2Ce%2EinnerHTML%3Dt%2Cthis%2E%5FmakeItem%28%5B%5D%2Ce%29%7D%7D%2C%7Bkey%3A%22%5FmakeLabel%22%2Cvalue%3Afunction%28t%2Ce%29%7Bvar%20i%3Darguments%2Elength%3C%3D2%7C%7Cvoid%200%3D%3D%3Darguments%5B2%5D%3F%211%3Aarguments%5B2%5D%2Co%3Ddocument%2EcreateElement%28%22div%22%29%3Breturn%20o%2EclassName%3D%22vis%2Dconfiguration%20vis%2Dconfig%2Dlabel%20vis%2Dconfig%2Ds%22%2Be%2Elength%2Ci%3D%3D%3D%210%3Fo%2EinnerHTML%3D%22%3Ci%3E%3Cb%3E%22%2Bt%2B%22%3A%3C%2Fb%3E%3C%2Fi%3E%22%3Ao%2EinnerHTML%3Dt%2B%22%3A%22%2Co%7D%7D%2C%7Bkey%3A%22%5FmakeDropdown%22%2Cvalue%3Afunction%28t%2Ce%2Ci%29%7Bvar%20o%3Ddocument%2EcreateElement%28%22select%22%29%3Bo%2EclassName%3D%22vis%2Dconfiguration%20vis%2Dconfig%2Dselect%22%3Bvar%20n%3D0%3Bvoid%200%21%3D%3De%26%26%2D1%21%3D%3Dt%2EindexOf%28e%29%26%26%28n%3Dt%2EindexOf%28e%29%29%3Bfor%28var%20s%3D0%3Bs%3Ct%2Elength%3Bs%2B%2B%29%7Bvar%20r%3Ddocument%2EcreateElement%28%22option%22%29%3Br%2Evalue%3Dt%5Bs%5D%2Cs%3D%3D%3Dn%26%26%28r%2Eselected%3D%22selected%22%29%2Cr%2EinnerHTML%3Dt%5Bs%5D%2Co%2EappendChild%28r%29%7Dvar%20a%3Dthis%3Bo%2Eonchange%3Dfunction%28%29%7Ba%2E%5Fupdate%28this%2Evalue%2Ci%29%7D%3Bvar%20h%3Dthis%2E%5FmakeLabel%28i%5Bi%2Elength%2D1%5D%2Ci%29%3Bthis%2E%5FmakeItem%28i%2Ch%2Co%29%7D%7D%2C%7Bkey%3A%22%5FmakeRange%22%2Cvalue%3Afunction%28t%2Ce%2Ci%29%7B%0Avar%20o%3Dt%5B0%5D%2Cn%3Dt%5B1%5D%2Cs%3Dt%5B2%5D%2Cr%3Dt%5B3%5D%2Ca%3Ddocument%2EcreateElement%28%22input%22%29%3Ba%2EclassName%3D%22vis%2Dconfiguration%20vis%2Dconfig%2Drange%22%3Btry%7Ba%2Etype%3D%22range%22%2Ca%2Emin%3Dn%2Ca%2Emax%3Ds%7Dcatch%28h%29%7B%7Da%2Estep%3Dr%3Bvar%20d%3D%22%22%2Cl%3D0%3Bif%28void%200%21%3D%3De%29%7Bvar%20c%3D1%2E2%3B0%3Ee%26%26n%3Ee%2Ac%3F%28a%2Emin%3DMath%2Eceil%28e%2Ac%29%2Cl%3Da%2Emin%2Cd%3D%22range%20increased%22%29%3An%3Ee%2Fc%26%26%28a%2Emin%3DMath%2Eceil%28e%2Fc%29%2Cl%3Da%2Emin%2Cd%3D%22range%20increased%22%29%2Ce%2Ac%3Es%26%261%21%3D%3Ds%26%26%28a%2Emax%3DMath%2Eceil%28e%2Ac%29%2Cl%3Da%2Emax%2Cd%3D%22range%20increased%22%29%2Ca%2Evalue%3De%7Delse%20a%2Evalue%3Do%3Bvar%20u%3Ddocument%2EcreateElement%28%22input%22%29%3Bu%2EclassName%3D%22vis%2Dconfiguration%20vis%2Dconfig%2Drangeinput%22%2Cu%2Evalue%3Da%2Evalue%3Bvar%20p%3Dthis%3Ba%2Eonchange%3Dfunction%28%29%7Bu%2Evalue%3Dthis%2Evalue%2Cp%2E%5Fupdate%28Number%28this%2Evalue%29%2Ci%29%7D%2Ca%2Eoninput%3Dfunction%28%29%7Bu%2Evalue%3Dthis%2Evalue%7D%3Bvar%20f%3Dthis%2E%5FmakeLabel%28i%5Bi%2Elength%2D1%5D%2Ci%29%2Cm%3Dthis%2E%5FmakeItem%28i%2Cf%2Ca%2Cu%29%3B%22%22%21%3D%3Dd%26%26this%2EpopupHistory%5Bm%5D%21%3D%3Dl%26%26%28this%2EpopupHistory%5Bm%5D%3Dl%2Cthis%2E%5FsetupPopup%28d%2Cm%29%29%7D%7D%2C%7Bkey%3A%22%5FsetupPopup%22%2Cvalue%3Afunction%28t%2Ce%29%7Bvar%20i%3Dthis%3Bif%28this%2Einitialized%3D%3D%3D%210%26%26this%2EallowCreation%3D%3D%3D%210%26%26this%2EpopupCounter%3Cthis%2EpopupLimit%29%7Bvar%20o%3Ddocument%2EcreateElement%28%22div%22%29%3Bo%2Eid%3D%22vis%2Dconfiguration%2Dpopup%22%2Co%2EclassName%3D%22vis%2Dconfiguration%2Dpopup%22%2Co%2EinnerHTML%3Dt%2Co%2Eonclick%3Dfunction%28%29%7Bi%2E%5FremovePopup%28%29%7D%2Cthis%2EpopupCounter%2B%3D1%2Cthis%2EpopupDiv%3D%7Bhtml%3Ao%2Cindex%3Ae%7D%7D%7D%7D%2C%7Bkey%3A%22%5FremovePopup%22%2Cvalue%3Afunction%28%29%7Bvoid%200%21%3D%3Dthis%2EpopupDiv%2Ehtml%26%26%28this%2EpopupDiv%2Ehtml%2EparentNode%2EremoveChild%28this%2EpopupDiv%2Ehtml%29%2CclearTimeout%28this%2EpopupDiv%2EhideTimeout%29%2CclearTimeout%28this%2EpopupDiv%2EdeleteTimeout%29%2Cthis%2EpopupDiv%3D%7B%7D%29%7D%7D%2C%7Bkey%3A%22%5FshowPopupIfNeeded%22%2Cvalue%3Afunction%28%29%7Bvar%20t%3Dthis%3Bif%28void%200%21%3D%3Dthis%2EpopupDiv%2Ehtml%29%7Bvar%20e%3Dthis%2EdomElements%5Bthis%2EpopupDiv%2Eindex%5D%2Ci%3De%2EgetBoundingClientRect%28%29%3Bthis%2EpopupDiv%2Ehtml%2Estyle%2Eleft%3Di%2Eleft%2B%22px%22%2Cthis%2EpopupDiv%2Ehtml%2Estyle%2Etop%3Di%2Etop%2D30%2B%22px%22%2Cdocument%2Ebody%2EappendChild%28this%2EpopupDiv%2Ehtml%29%2Cthis%2EpopupDiv%2EhideTimeout%3DsetTimeout%28function%28%29%7Bt%2EpopupDiv%2Ehtml%2Estyle%2Eopacity%3D0%7D%2C1500%29%2Cthis%2EpopupDiv%2EdeleteTimeout%3DsetTimeout%28function%28%29%7Bt%2E%5FremovePopup%28%29%7D%2C1800%29%7D%7D%7D%2C%7Bkey%3A%22%5FmakeCheckbox%22%2Cvalue%3Afunction%28t%2Ce%2Ci%29%7Bvar%20o%3Ddocument%2EcreateElement%28%22input%22%29%3Bo%2Etype%3D%22checkbox%22%2Co%2EclassName%3D%22vis%2Dconfiguration%20vis%2Dconfig%2Dcheckbox%22%2Co%2Echecked%3Dt%2Cvoid%200%21%3D%3De%26%26%28o%2Echecked%3De%2Ce%21%3D%3Dt%26%26%28%22object%22%3D%3D%3D%28%22undefined%22%3D%3Dtypeof%20t%3F%22undefined%22%3As%28t%29%29%3Fe%21%3D%3Dt%2Eenabled%26%26this%2EchangedOptions%2Epush%28%7Bpath%3Ai%2Cvalue%3Ae%7D%29%3Athis%2EchangedOptions%2Epush%28%7Bpath%3Ai%2Cvalue%3Ae%7D%29%29%29%3Bvar%20n%3Dthis%3Bo%2Eonchange%3Dfunction%28%29%7Bn%2E%5Fupdate%28this%2Echecked%2Ci%29%7D%3Bvar%20r%3Dthis%2E%5FmakeLabel%28i%5Bi%2Elength%2D1%5D%2Ci%29%3Bthis%2E%5FmakeItem%28i%2Cr%2Co%29%7D%7D%2C%7Bkey%3A%22%5FmakeTextInput%22%2Cvalue%3Afunction%28t%2Ce%2Ci%29%7Bvar%20o%3Ddocument%2EcreateElement%28%22input%22%29%3Bo%2Etype%3D%22text%22%2Co%2EclassName%3D%22vis%2Dconfiguration%20vis%2Dconfig%2Dtext%22%2Co%2Evalue%3De%2Ce%21%3D%3Dt%26%26this%2EchangedOptions%2Epush%28%7Bpath%3Ai%2Cvalue%3Ae%7D%29%3Bvar%20n%3Dthis%3Bo%2Eonchange%3Dfunction%28%29%7Bn%2E%5Fupdate%28this%2Evalue%2Ci%29%7D%3Bvar%20s%3Dthis%2E%5FmakeLabel%28i%5Bi%2Elength%2D1%5D%2Ci%29%3Bthis%2E%5FmakeItem%28i%2Cs%2Co%29%7D%7D%2C%7Bkey%3A%22%5FmakeColorField%22%2Cvalue%3Afunction%28t%2Ce%2Ci%29%7Bvar%20o%3Dthis%2Cn%3Dt%5B1%5D%2Cs%3Ddocument%2EcreateElement%28%22div%22%29%3Be%3Dvoid%200%3D%3D%3De%3Fn%3Ae%2C%22none%22%21%3D%3De%3F%28s%2EclassName%3D%22vis%2Dconfiguration%20vis%2Dconfig%2DcolorBlock%22%2Cs%2Estyle%2EbackgroundColor%3De%29%3As%2EclassName%3D%22vis%2Dconfiguration%20vis%2Dconfig%2DcolorBlock%20none%22%2Ce%3Dvoid%200%3D%3D%3De%3Fn%3Ae%2Cs%2Eonclick%3Dfunction%28%29%7Bo%2E%5FshowColorPicker%28e%2Cs%2Ci%29%7D%3Bvar%20r%3Dthis%2E%5FmakeLabel%28i%5Bi%2Elength%2D1%5D%2Ci%29%3Bthis%2E%5FmakeItem%28i%2Cr%2Cs%29%7D%7D%2C%7Bkey%3A%22%5FshowColorPicker%22%2Cvalue%3Afunction%28t%2Ce%2Ci%29%7Bvar%20o%3Dthis%3Be%2Eonclick%3Dfunction%28%29%7B%7D%2Cthis%2EcolorPicker%2EinsertTo%28e%29%2Cthis%2EcolorPicker%2Eshow%28%29%2Cthis%2EcolorPicker%2EsetColor%28t%29%2Cthis%2EcolorPicker%2EsetUpdateCallback%28function%28t%29%7Bvar%20n%3D%22rgba%28%22%2Bt%2Er%2B%22%2C%22%2Bt%2Eg%2B%22%2C%22%2Bt%2Eb%2B%22%2C%22%2Bt%2Ea%2B%22%29%22%3Be%2Estyle%2EbackgroundColor%3Dn%2Co%2E%5Fupdate%28n%2Ci%29%7D%29%2Cthis%2EcolorPicker%2EsetCloseCallback%28function%28%29%7Be%2Eonclick%3Dfunction%28%29%7Bo%2E%5FshowColorPicker%28t%2Ce%2Ci%29%7D%7D%29%7D%7D%2C%7Bkey%3A%22%5FhandleObject%22%2Cvalue%3Afunction%28t%29%7Bvar%20e%3Darguments%2Elength%3C%3D1%7C%7Cvoid%200%3D%3D%3Darguments%5B1%5D%3F%5B%5D%3Aarguments%5B1%5D%2Ci%3Darguments%2Elength%3C%3D2%7C%7Cvoid%200%3D%3D%3Darguments%5B2%5D%3F%211%3Aarguments%5B2%5D%2Co%3D%211%2Cn%3Dthis%2Eoptions%2Efilter%2Cs%3D%211%3Bfor%28var%20r%20in%20t%29if%28t%2EhasOwnProperty%28r%29%29%7Bo%3D%210%3Bvar%20a%3Dt%5Br%5D%2Ch%3Dd%2EcopyAndExtendArray%28e%2Cr%29%3Bif%28%22function%22%3D%3Dtypeof%20n%26%26%28o%3Dn%28r%2Ce%29%2Co%3D%3D%3D%211%26%26%21%28a%20instanceof%20Array%29%26%26%22string%22%21%3Dtypeof%20a%26%26%22boolean%22%21%3Dtypeof%20a%26%26a%20instanceof%20Object%26%26%28this%2EallowCreation%3D%211%2Co%3Dthis%2E%5FhandleObject%28a%2Ch%2C%210%29%2Cthis%2EallowCreation%3Di%3D%3D%3D%211%29%29%2Co%21%3D%3D%211%29%7Bs%3D%210%3Bvar%20l%3Dthis%2E%5FgetValue%28h%29%3Bif%28a%20instanceof%20Array%29this%2E%5FhandleArray%28a%2Cl%2Ch%29%3Belse%20if%28%22string%22%3D%3Dtypeof%20a%29this%2E%5FmakeTextInput%28a%2Cl%2Ch%29%3Belse%20if%28%22boolean%22%3D%3Dtypeof%20a%29this%2E%5FmakeCheckbox%28a%2Cl%2Ch%29%3Belse%20if%28a%20instanceof%20Object%29%7Bvar%20c%3D%210%3Bif%28%2D1%21%3D%3De%2EindexOf%28%22physics%22%29%26%26this%2EmoduleOptions%2Ephysics%2Esolver%21%3D%3Dr%26%26%28c%3D%211%29%2Cc%3D%3D%3D%210%29if%28void%200%21%3D%3Da%2Eenabled%29%7Bvar%20u%3Dd%2EcopyAndExtendArray%28h%2C%22enabled%22%29%2Cp%3Dthis%2E%5FgetValue%28u%29%3Bif%28p%3D%3D%3D%210%29%7Bvar%20f%3Dthis%2E%5FmakeLabel%28r%2Ch%2C%210%29%3Bthis%2E%5FmakeItem%28h%2Cf%29%2Cs%3Dthis%2E%5FhandleObject%28a%2Ch%29%7C%7Cs%7Delse%20this%2E%5FmakeCheckbox%28a%2Cp%2Ch%29%7Delse%7Bvar%20m%3Dthis%2E%5FmakeLabel%28r%2Ch%2C%210%29%3Bthis%2E%5FmakeItem%28h%2Cm%29%2Cs%3Dthis%2E%5FhandleObject%28a%2Ch%29%7C%7Cs%7D%7Delse%20console%2Eerror%28%22dont%20know%20how%20to%20handle%22%2Ca%2Cr%2Ch%29%7D%7Dreturn%20s%7D%7D%2C%7Bkey%3A%22%5FhandleArray%22%2Cvalue%3Afunction%28t%2Ce%2Ci%29%7B%22string%22%3D%3Dtypeof%20t%5B0%5D%26%26%22color%22%3D%3D%3Dt%5B0%5D%3F%28this%2E%5FmakeColorField%28t%2Ce%2Ci%29%2Ct%5B1%5D%21%3D%3De%26%26this%2EchangedOptions%2Epush%28%7Bpath%3Ai%2Cvalue%3Ae%7D%29%29%3A%22string%22%3D%3Dtypeof%20t%5B0%5D%3F%28this%2E%5FmakeDropdown%28t%2Ce%2Ci%29%2Ct%5B0%5D%21%3D%3De%26%26this%2EchangedOptions%2Epush%28%7Bpath%3Ai%2Cvalue%3Ae%7D%29%29%3A%22number%22%3D%3Dtypeof%20t%5B0%5D%26%26%28this%2E%5FmakeRange%28t%2Ce%2Ci%29%2Ct%5B0%5D%21%3D%3De%26%26this%2EchangedOptions%2Epush%28%7Bpath%3Ai%2Cvalue%3ANumber%28e%29%7D%29%29%7D%7D%2C%7Bkey%3A%22%5Fupdate%22%2Cvalue%3Afunction%28t%2Ce%29%7Bvar%20i%3Dthis%2E%5FconstructOptions%28t%2Ce%29%3Bthis%2Eparent%2Ebody%26%26this%2Eparent%2Ebody%2Eemitter%26%26this%2Eparent%2Ebody%2Eemitter%2Eemit%26%26this%2Eparent%2Ebody%2Eemitter%2Eemit%28%22configChange%22%2Ci%29%2Cthis%2Einitialized%3D%210%2Cthis%2Eparent%2EsetOptions%28i%29%7D%7D%2C%7Bkey%3A%22%5FconstructOptions%22%2Cvalue%3Afunction%28t%2Ce%29%7Bvar%20i%3Darguments%2Elength%3C%3D2%7C%7Cvoid%200%3D%3D%3Darguments%5B2%5D%3F%7B%7D%3Aarguments%5B2%5D%2Co%3Di%3Bt%3D%22true%22%3D%3D%3Dt%3F%210%3At%2Ct%3D%22false%22%3D%3D%3Dt%3F%211%3At%3Bfor%28var%20n%3D0%3Bn%3Ce%2Elength%3Bn%2B%2B%29%22global%22%21%3D%3De%5Bn%5D%26%26%28void%200%3D%3D%3Do%5Be%5Bn%5D%5D%26%26%28o%5Be%5Bn%5D%5D%3D%7B%7D%29%2Cn%21%3D%3De%2Elength%2D1%3Fo%3Do%5Be%5Bn%5D%5D%3Ao%5Be%5Bn%5D%5D%3Dt%29%3Breturn%20i%7D%7D%2C%7Bkey%3A%22%5FprintOptions%22%2Cvalue%3Afunction%28%29%7Bvar%20t%3Dthis%2EgetOptions%28%29%3Bthis%2EoptionsContainer%2EinnerHTML%3D%22%3Cpre%3Evar%20options%20%3D%20%22%2BJSON%2Estringify%28t%2Cnull%2C2%29%2B%22%3C%2Fpre%3E%22%7D%7D%2C%7Bkey%3A%22getOptions%22%2Cvalue%3Afunction%28%29%7Bfor%28var%20t%3D%7B%7D%2Ce%3D0%3Be%3Cthis%2EchangedOptions%2Elength%3Be%2B%2B%29this%2E%5FconstructOptions%28this%2EchangedOptions%5Be%5D%2Evalue%2Cthis%2EchangedOptions%5Be%5D%2Epath%2Ct%29%3Breturn%20t%7D%7D%5D%29%2Ct%7D%28%29%3Be%5B%22default%22%5D%3Dl%7D%2Cfunction%28t%2Ce%2Ci%29%7Bfunction%20o%28t%2Ce%29%7Bif%28%21%28t%20instanceof%20e%29%29throw%20new%20TypeError%28%22Cannot%20call%20a%20class%20as%20a%20function%22%29%7DObject%2EdefineProperty%28e%2C%22%5F%5FesModule%22%2C%7Bvalue%3A%210%7D%29%3Bvar%20n%3Dfunction%28%29%7Bfunction%20t%28t%2Ce%29%7Bfor%28var%20i%3D0%3Bi%3Ce%2Elength%3Bi%2B%2B%29%7Bvar%20o%3De%5Bi%5D%3Bo%2Eenumerable%3Do%2Eenumerable%7C%7C%211%2Co%2Econfigurable%3D%210%2C%22value%22in%20o%26%26%28o%2Ewritable%3D%210%29%2CObject%2EdefineProperty%28t%2Co%2Ekey%2Co%29%7D%7Dreturn%20function%28e%2Ci%2Co%29%7Breturn%20i%26%26t%28e%2Eprototype%2Ci%29%2Co%26%26t%28e%2Co%29%2Ce%7D%7D%28%29%2Cs%3Di%2820%29%2Cr%3Di%2828%29%2Ca%3Di%281%29%2Ch%3Dfunction%28%29%7Bfunction%20t%28%29%7Bvar%20e%3Darguments%2Elength%3C%3D0%7C%7Cvoid%200%3D%3D%3Darguments%5B0%5D%3F1%3Aarguments%5B0%5D%3Bo%28this%2Ct%29%2Cthis%2EpixelRatio%3De%2Cthis%2Egenerated%3D%211%2Cthis%2EcenterCoordinates%3D%7Bx%3A144%2E5%2Cy%3A144%2E5%7D%2Cthis%2Er%3D289%2A%2E49%2Cthis%2Ecolor%3D%7Br%3A255%2Cg%3A255%2Cb%3A255%2Ca%3A1%7D%2Cthis%2EhueCircle%3Dvoid%200%2Cthis%2EinitialColor%3D%7Br%3A255%2Cg%3A255%2Cb%3A255%2Ca%3A1%7D%2Cthis%2EpreviousColor%3Dvoid%200%2Cthis%2Eapplied%3D%211%2Cthis%2EupdateCallback%3Dfunction%28%29%7B%7D%2Cthis%2EcloseCallback%3Dfunction%28%29%7B%7D%2Cthis%2E%5Fcreate%28%29%7Dreturn%20n%28t%2C%5B%7Bkey%3A%22insertTo%22%2Cvalue%3Afunction%28t%29%7Bvoid%200%21%3D%3Dthis%2Ehammer%26%26%28this%2Ehammer%2Edestroy%28%29%2Cthis%2Ehammer%3Dvoid%200%29%2Cthis%2Econtainer%3Dt%2Cthis%2Econtainer%2EappendChild%28this%2Eframe%29%2Cthis%2E%5FbindHammer%28%29%2Cthis%2E%5FsetSize%28%29%7D%7D%2C%7Bkey%3A%22setUpdateCallback%22%2Cvalue%3Afunction%28t%29%7Bif%28%22function%22%21%3Dtypeof%20t%29throw%20new%20Error%28%22Function%20attempted%20to%20set%20as%20colorPicker%20update%20callback%20is%20not%20a%20function%2E%22%29%3Bthis%2EupdateCallback%3Dt%7D%7D%2C%7Bkey%3A%22setCloseCallback%22%2Cvalue%3Afunction%28t%29%7Bif%28%22function%22%21%3Dtypeof%20t%29throw%20new%20Error%28%22Function%20attempted%20to%20set%20as%20colorPicker%20closing%20callback%20is%20not%20a%20function%2E%22%29%3Bthis%2EcloseCallback%3Dt%7D%7D%2C%7Bkey%3A%22%5FisColorString%22%2Cvalue%3Afunction%28t%29%7Bvar%20e%3D%7Bblack%3A%22%23000000%22%2Cnavy%3A%22%23000080%22%2Cdarkblue%3A%22%2300008B%22%2Cmediumblue%3A%22%230000CD%22%2Cblue%3A%22%230000FF%22%2Cdarkgreen%3A%22%23006400%22%2Cgreen%3A%22%23008000%22%2Cteal%3A%22%23008080%22%2Cdarkcyan%3A%22%23008B8B%22%2Cdeepskyblue%3A%22%2300BFFF%22%2Cdarkturquoise%3A%22%2300CED1%22%2Cmediumspringgreen%3A%22%2300FA9A%22%2Clime%3A%22%2300FF00%22%2Cspringgreen%3A%22%2300FF7F%22%2Caqua%3A%22%2300FFFF%22%2Ccyan%3A%22%2300FFFF%22%2Cmidnightblue%3A%22%23191970%22%2Cdodgerblue%3A%22%231E90FF%22%2Clightseagreen%3A%22%2320B2AA%22%2Cforestgreen%3A%22%23228B22%22%2Cseagreen%3A%22%232E8B57%22%2Cdarkslategray%3A%22%232F4F4F%22%2Climegreen%3A%22%2332CD32%22%2Cmediumseagreen%3A%22%233CB371%22%2Cturquoise%3A%22%2340E0D0%22%2Croyalblue%3A%22%234169E1%22%2Csteelblue%3A%22%234682B4%22%2Cdarkslateblue%3A%22%23483D8B%22%2Cmediumturquoise%3A%22%2348D1CC%22%2Cindigo%3A%22%234B0082%22%2Cdarkolivegreen%3A%22%23556B2F%22%2Ccadetblue%3A%22%235F9EA0%22%2Ccornflowerblue%3A%22%236495ED%22%2Cmediumaquamarine%3A%22%2366CDAA%22%2Cdimgray%3A%22%23696969%22%2Cslateblue%3A%22%236A5ACD%22%2Colivedrab%3A%22%236B8E23%22%2Cslategray%3A%22%23708090%22%2Clightslategray%3A%22%23778899%22%2Cmediumslateblue%3A%22%237B68EE%22%2Clawngreen%3A%22%237CFC00%22%2Cchartreuse%3A%22%237FFF00%22%2Caquamarine%3A%22%237FFFD4%22%2Cmaroon%3A%22%23800000%22%2Cpurple%3A%22%23800080%22%2Colive%3A%22%23808000%22%2Cgray%3A%22%23808080%22%2Cskyblue%3A%22%2387CEEB%22%2Clightskyblue%3A%22%2387CEFA%22%2Cblueviolet%3A%22%238A2BE2%22%2Cdarkred%3A%22%238B0000%22%2Cdarkmagenta%3A%22%238B008B%22%2Csaddlebrown%3A%22%238B4513%22%2Cdarkseagreen%3A%22%238FBC8F%22%2Clightgreen%3A%22%2390EE90%22%2Cmediumpurple%3A%22%239370D8%22%2Cdarkviolet%3A%22%239400D3%22%2Cpalegreen%3A%22%2398FB98%22%2Cdarkorchid%3A%22%239932CC%22%2Cyellowgreen%3A%22%239ACD32%22%2Csienna%3A%22%23A0522D%22%2Cbrown%3A%22%23A52A2A%22%2Cdarkgray%3A%22%23A9A9A9%22%2Clightblue%3A%22%23ADD8E6%22%2Cgreenyellow%3A%22%23ADFF2F%22%2Cpaleturquoise%3A%22%23AFEEEE%22%2Clightsteelblue%3A%22%23B0C4DE%22%2Cpowderblue%3A%22%23B0E0E6%22%2Cfirebrick%3A%22%23B22222%22%2Cdarkgoldenrod%3A%22%23B8860B%22%2Cmediumorchid%3A%22%23BA55D3%22%2Crosybrown%3A%22%23BC8F8F%22%2Cdarkkhaki%3A%22%23BDB76B%22%2Csilver%3A%22%23C0C0C0%22%2Cmediumvioletred%3A%22%23C71585%22%2Cindianred%3A%22%23CD5C5C%22%2Cperu%3A%22%23CD853F%22%2Cchocolate%3A%22%23D2691E%22%2Ctan%3A%22%23D2B48C%22%2Clightgrey%3A%22%23D3D3D3%22%2Cpalevioletred%3A%22%23D87093%22%2Cthistle%3A%22%23D8BFD8%22%2Corchid%3A%22%23DA70D6%22%2Cgoldenrod%3A%22%23DAA520%22%2Ccrimson%3A%22%23DC143C%22%2Cgainsboro%3A%22%23DCDCDC%22%2Cplum%3A%22%23DDA0DD%22%2Cburlywood%3A%22%23DEB887%22%2Clightcyan%3A%22%23E0FFFF%22%2Clavender%3A%22%23E6E6FA%22%2Cdarksalmon%3A%22%23E9967A%22%2Cviolet%3A%22%23EE82EE%22%2Cpalegoldenrod%3A%22%23EEE8AA%22%2Clightcoral%3A%22%23F08080%22%2Ckhaki%3A%22%23F0E68C%22%2Caliceblue%3A%22%23F0F8FF%22%2Choneydew%3A%22%23F0FFF0%22%2Cazure%3A%22%23F0FFFF%22%2Csandybrown%3A%22%23F4A460%22%2Cwheat%3A%22%23F5DEB3%22%2Cbeige%3A%22%23F5F5DC%22%2Cwhitesmoke%3A%22%23F5F5F5%22%2Cmintcream%3A%22%23F5FFFA%22%2Cghostwhite%3A%22%23F8F8FF%22%2Csalmon%3A%22%23FA8072%22%2Cantiquewhite%3A%22%23FAEBD7%22%2Clinen%3A%22%23FAF0E6%22%2Clightgoldenrodyellow%3A%22%23FAFAD2%22%2Coldlace%3A%22%23FDF5E6%22%2Cred%3A%22%23FF0000%22%2Cfuchsia%3A%22%23FF00FF%22%2Cmagenta%3A%22%23FF00FF%22%2Cdeeppink%3A%22%23FF1493%22%2Corangered%3A%22%23FF4500%22%2Ctomato%3A%22%23FF6347%22%2Chotpink%3A%22%23FF69B4%22%2Ccoral%3A%22%23FF7F50%22%2Cdarkorange%3A%22%23FF8C00%22%2Clightsalmon%3A%22%23FFA07A%22%2Corange%3A%22%23FFA500%22%2Clightpink%3A%22%23FFB6C1%22%2Cpink%3A%22%23FFC0CB%22%2Cgold%3A%22%23FFD700%22%2Cpeachpuff%3A%22%23FFDAB9%22%2Cnavajowhite%3A%22%23FFDEAD%22%2Cmoccasin%3A%22%23FFE4B5%22%2Cbisque%3A%22%23FFE4C4%22%2Cmistyrose%3A%22%23FFE4E1%22%2Cblanchedalmond%3A%22%23FFEBCD%22%2Cpapayawhip%3A%22%23FFEFD5%22%2Clavenderblush%3A%22%23FFF0F5%22%2Cseashell%3A%22%23FFF5EE%22%2Ccornsilk%3A%22%23FFF8DC%22%2Clemonchiffon%3A%22%23FFFACD%22%2Cfloralwhite%3A%22%23FFFAF0%22%2Csnow%3A%22%23FFFAFA%22%2Cyellow%3A%22%23FFFF00%22%2Clightyellow%3A%22%23FFFFE0%22%2Civory%3A%22%23FFFFF0%22%2Cwhite%3A%22%23FFFFFF%22%7D%3Breturn%22string%22%3D%3Dtypeof%20t%3Fe%5Bt%5D%3Avoid%200%7D%7D%2C%7Bkey%3A%22setColor%22%2Cvalue%3Afunction%28t%29%7Bvar%20e%3Darguments%2Elength%3C%3D1%7C%7Cvoid%200%3D%3D%3Darguments%5B1%5D%3F%210%3Aarguments%5B1%5D%3Bif%28%22none%22%21%3D%3Dt%29%7Bvar%20i%3Dvoid%200%2Co%3Dthis%2E%5FisColorString%28t%29%3Bif%28void%200%21%3D%3Do%26%26%28t%3Do%29%2Ca%2EisString%28t%29%3D%3D%3D%210%29%7Bif%28a%2EisValidRGB%28t%29%3D%3D%3D%210%29%7Bvar%20n%3Dt%2Esubstr%284%29%2Esubstr%280%2Ct%2Elength%2D5%29%2Esplit%28%22%2C%22%29%3Bi%3D%7Br%3An%5B0%5D%2Cg%3An%5B1%5D%2Cb%3An%5B2%5D%2Ca%3A1%7D%7Delse%20if%28a%2EisValidRGBA%28t%29%3D%3D%3D%210%29%7Bvar%20s%3Dt%2Esubstr%285%29%2Esubstr%280%2Ct%2Elength%2D6%29%2Esplit%28%22%2C%22%29%3Bi%3D%7Br%3As%5B0%5D%2Cg%3As%5B1%5D%2Cb%3As%5B2%5D%2Ca%3As%5B3%5D%7D%7Delse%20if%28a%2EisValidHex%28t%29%3D%3D%3D%210%29%7Bvar%20r%3Da%2EhexToRGB%28t%29%3Bi%3D%7Br%3Ar%2Er%2Cg%3Ar%2Eg%2Cb%3Ar%2Eb%2Ca%3A1%7D%7D%7Delse%20if%28t%20instanceof%20Object%26%26void%200%21%3D%3Dt%2Er%26%26void%200%21%3D%3Dt%2Eg%26%26void%200%21%3D%3Dt%2Eb%29%7Bvar%20h%3Dvoid%200%21%3D%3Dt%2Ea%3Ft%2Ea%3A%221%2E0%22%3Bi%3D%7Br%3At%2Er%2Cg%3At%2Eg%2Cb%3At%2Eb%2Ca%3Ah%7D%7Dif%28void%200%3D%3D%3Di%29throw%20new%20Error%28%22Unknown%20color%20passed%20to%20the%20colorPicker%2E%20Supported%20are%20strings%3A%20rgb%2C%20hex%2C%20rgba%2E%20Object%3A%20rgb%20%28%7Br%3Ar%2Cg%3Ag%2Cb%3Ab%2C%5Ba%3Aa%5D%7D%29%2E%20Supplied%3A%20%22%2BJSON%2Estringify%28t%29%29%3Bthis%2E%5FsetColor%28i%2Ce%29%7D%7D%7D%2C%7Bkey%3A%22show%22%2Cvalue%3Afunction%28%29%7Bvoid%200%21%3D%3Dthis%2EcloseCallback%26%26%28this%2EcloseCallback%28%29%2Cthis%2EcloseCallback%3Dvoid%200%29%2Cthis%2Eapplied%3D%211%2Cthis%2Eframe%2Estyle%2Edisplay%3D%22block%22%2Cthis%2E%5FgenerateHueCircle%28%29%7D%7D%2C%7Bkey%3A%22%5Fhide%22%2Cvalue%3Afunction%28%29%7Bvar%20t%3Dthis%2Ce%3Darguments%2Elength%3C%3D0%7C%7Cvoid%200%3D%3D%3Darguments%5B0%5D%3F%210%3Aarguments%5B0%5D%3Be%3D%3D%3D%210%26%26%28this%2EpreviousColor%3Da%2Eextend%28%7B%7D%2Cthis%2Ecolor%29%29%2Cthis%2Eapplied%3D%3D%3D%210%26%26this%2EupdateCallback%28this%2EinitialColor%29%2Cthis%2Eframe%2Estyle%2Edisplay%3D%22none%22%2CsetTimeout%28function%28%29%7Bvoid%200%21%3D%3Dt%2EcloseCallback%26%26%28t%2EcloseCallback%28%29%2Ct%2EcloseCallback%3Dvoid%200%29%7D%2C0%29%7D%7D%2C%7Bkey%3A%22%5Fsave%22%2Cvalue%3Afunction%28%29%7Bthis%2EupdateCallback%28this%2Ecolor%29%2Cthis%2Eapplied%3D%211%2Cthis%2E%5Fhide%28%29%7D%7D%2C%7Bkey%3A%22%5Fapply%22%2Cvalue%3Afunction%28%29%7Bthis%2Eapplied%3D%210%2Cthis%2EupdateCallback%28this%2Ecolor%29%2Cthis%2E%5FupdatePicker%28this%2Ecolor%29%7D%7D%2C%7Bkey%3A%22%5FloadLast%22%2Cvalue%3Afunction%28%29%7Bvoid%200%21%3D%3Dthis%2EpreviousColor%3Fthis%2EsetColor%28this%2EpreviousColor%2C%211%29%3Aalert%28%22There%20is%20no%20last%20color%20to%20load%2E%2E%2E%22%29%7D%7D%2C%7Bkey%3A%22%5FsetColor%22%2Cvalue%3Afunction%28t%29%7Bvar%20e%3Darguments%2Elength%3C%3D1%7C%7Cvoid%200%3D%3D%3Darguments%5B1%5D%3F%210%3Aarguments%5B1%5D%3Be%3D%3D%3D%210%26%26%28this%2EinitialColor%3Da%2Eextend%28%7B%7D%2Ct%29%29%2Cthis%2Ecolor%3Dt%3Bvar%20i%3Da%2ERGBToHSV%28t%2Er%2Ct%2Eg%2Ct%2Eb%29%2Co%3D2%2AMath%2EPI%2Cn%3Dthis%2Er%2Ai%2Es%2Cs%3Dthis%2EcenterCoordinates%2Ex%2Bn%2AMath%2Esin%28o%2Ai%2Eh%29%2Cr%3Dthis%2EcenterCoordinates%2Ey%2Bn%2AMath%2Ecos%28o%2Ai%2Eh%29%3Bthis%2EcolorPickerSelector%2Estyle%2Eleft%3Ds%2D%2E5%2Athis%2EcolorPickerSelector%2EclientWidth%2B%22px%22%2Cthis%2EcolorPickerSelector%2Estyle%2Etop%3Dr%2D%2E5%2Athis%2EcolorPickerSelector%2EclientHeight%2B%22px%22%2Cthis%2E%5FupdatePicker%28t%29%7D%7D%2C%7Bkey%3A%22%5FsetOpacity%22%2Cvalue%3Afunction%28t%29%7Bthis%2Ecolor%2Ea%3Dt%2F100%2Cthis%2E%5FupdatePicker%28this%2Ecolor%29%7D%7D%2C%7Bkey%3A%22%5FsetBrightness%22%2Cvalue%3Afunction%28t%29%7Bvar%20e%3Da%2ERGBToHSV%28this%2Ecolor%2Er%2Cthis%2Ecolor%2Eg%2Cthis%2Ecolor%2Eb%29%3Be%2Ev%3Dt%2F100%3Bvar%20i%3Da%2EHSVToRGB%28e%2Eh%2Ce%2Es%2Ce%2Ev%29%3Bi%2Ea%3Dthis%2Ecolor%2Ea%2Cthis%2Ecolor%3Di%2Cthis%2E%5FupdatePicker%28%29%7D%7D%2C%7Bkey%3A%22%5FupdatePicker%22%2Cvalue%3Afunction%28%29%7Bvar%20t%3Darguments%2Elength%3C%3D0%7C%7Cvoid%200%3D%3D%3Darguments%5B0%5D%3Fthis%2Ecolor%3Aarguments%5B0%5D%2Ce%3Da%2ERGBToHSV%28t%2Er%2Ct%2Eg%2Ct%2Eb%29%2Ci%3Dthis%2EcolorPickerCanvas%2EgetContext%28%222d%22%29%3Bvoid%200%3D%3D%3Dthis%2EpixelRation%26%26%28this%2EpixelRatio%3D%28window%2EdevicePixelRatio%7C%7C1%29%2F%28i%2EwebkitBackingStorePixelRatio%7C%7Ci%2EmozBackingStorePixelRatio%7C%7Ci%2EmsBackingStorePixelRatio%7C%7Ci%2EoBackingStorePixelRatio%7C%7Ci%2EbackingStorePixelRatio%7C%7C1%29%29%2Ci%2EsetTransform%28this%2EpixelRatio%2C0%2C0%2Cthis%2EpixelRatio%2C0%2C0%29%3Bvar%20o%3Dthis%2EcolorPickerCanvas%2EclientWidth%2Cn%3Dthis%2EcolorPickerCanvas%2EclientHeight%3Bi%2EclearRect%280%2C0%2Co%2Cn%29%2Ci%2EputImageData%28this%2EhueCircle%2C0%2C0%29%2Ci%2EfillStyle%3D%22rgba%280%2C0%2C0%2C%22%2B%281%2De%2Ev%29%2B%22%29%22%2Ci%2Ecircle%28this%2EcenterCoordinates%2Ex%2Cthis%2EcenterCoordinates%2Ey%2Cthis%2Er%29%2Ci%2Efill%28%29%2Cthis%2EbrightnessRange%2Evalue%3D100%2Ae%2Ev%2Cthis%2EopacityRange%2Evalue%3D100%2At%2Ea%2Cthis%2EinitialColorDiv%2Estyle%2EbackgroundColor%3D%22rgba%28%22%2Bthis%2EinitialColor%2Er%2B%22%2C%22%2Bthis%2EinitialColor%2Eg%2B%22%2C%22%2Bthis%2EinitialColor%2Eb%2B%22%2C%22%2Bthis%2EinitialColor%2Ea%2B%22%29%22%2Cthis%2EnewColorDiv%2Estyle%2EbackgroundColor%3D%22rgba%28%22%2Bthis%2Ecolor%2Er%2B%22%2C%22%2Bthis%2Ecolor%2Eg%2B%22%2C%22%2Bthis%2Ecolor%2Eb%2B%22%2C%22%2Bthis%2Ecolor%2Ea%2B%22%29%22%7D%7D%2C%7Bkey%3A%22%5FsetSize%22%2Cvalue%3Afunction%28%29%7Bthis%2EcolorPickerCanvas%2Estyle%2Ewidth%3D%22100%25%22%2Cthis%2EcolorPickerCanvas%2Estyle%2Eheight%3D%22100%25%22%2Cthis%2EcolorPickerCanvas%2Ewidth%3D289%2Athis%2EpixelRatio%2Cthis%2EcolorPickerCanvas%2Eheight%3D289%2Athis%2EpixelRatio%7D%7D%2C%7Bkey%3A%22%5Fcreate%22%2Cvalue%3Afunction%28%29%7Bif%28this%2Eframe%3Ddocument%2EcreateElement%28%22div%22%29%2Cthis%2Eframe%2EclassName%3D%22vis%2Dcolor%2Dpicker%22%2Cthis%2EcolorPickerDiv%3Ddocument%2EcreateElement%28%22div%22%29%2Cthis%2EcolorPickerSelector%3Ddocument%2EcreateElement%28%22div%22%29%2Cthis%2EcolorPickerSelector%2EclassName%3D%22vis%2Dselector%22%2Cthis%2EcolorPickerDiv%2EappendChild%28this%2EcolorPickerSelector%29%2Cthis%2EcolorPickerCanvas%3Ddocument%2EcreateElement%28%22canvas%22%29%2Cthis%2EcolorPickerDiv%2EappendChild%28this%2EcolorPickerCanvas%29%2Cthis%2EcolorPickerCanvas%2EgetContext%29%7Bvar%20t%3Dthis%2EcolorPickerCanvas%2EgetContext%28%222d%22%29%3Bthis%2EpixelRatio%3D%28window%2EdevicePixelRatio%7C%7C1%29%2F%28t%2EwebkitBackingStorePixelRatio%7C%7Ct%2EmozBackingStorePixelRatio%7C%7Ct%2EmsBackingStorePixelRatio%7C%7Ct%2EoBackingStorePixelRatio%7C%7Ct%2EbackingStorePixelRatio%7C%7C1%29%2Cthis%2EcolorPickerCanvas%2EgetContext%28%222d%22%29%2EsetTransform%28this%2EpixelRatio%2C0%2C0%2Cthis%2EpixelRatio%2C0%2C0%29%7Delse%7Bvar%20e%3Ddocument%2EcreateElement%28%22DIV%22%29%3Be%2Estyle%2Ecolor%3D%22red%22%2Ce%2Estyle%2EfontWeight%3D%22bold%22%2Ce%2Estyle%2Epadding%3D%2210px%22%2Ce%2EinnerHTML%3D%22Error%3A%20your%20browser%20does%20not%20support%20HTML%20canvas%22%2Cthis%2EcolorPickerCanvas%2EappendChild%28e%29%7Dthis%2EcolorPickerDiv%2EclassName%3D%22vis%2Dcolor%22%2Cthis%2EopacityDiv%3Ddocument%2EcreateElement%28%22div%22%29%2Cthis%2EopacityDiv%2EclassName%3D%22vis%2Dopacity%22%2Cthis%2EbrightnessDiv%3Ddocument%2EcreateElement%28%22div%22%29%2Cthis%2EbrightnessDiv%2EclassName%3D%22vis%2Dbrightness%22%2Cthis%2EarrowDiv%3Ddocument%2EcreateElement%28%22div%22%29%2Cthis%2EarrowDiv%2EclassName%3D%22vis%2Darrow%22%2Cthis%2EopacityRange%3Ddocument%2EcreateElement%28%22input%22%29%3Btry%7Bthis%2EopacityRange%2Etype%3D%22range%22%2Cthis%2EopacityRange%2Emin%3D%220%22%2Cthis%2EopacityRange%2Emax%3D%22100%22%7Dcatch%28i%29%7B%7Dthis%2EopacityRange%2Evalue%3D%22100%22%2Cthis%2EopacityRange%2EclassName%3D%22vis%2Drange%22%2Cthis%2EbrightnessRange%3Ddocument%2EcreateElement%28%22input%22%29%3Btry%7Bthis%2EbrightnessRange%2Etype%3D%22range%22%2Cthis%2EbrightnessRange%2Emin%3D%220%22%2Cthis%2EbrightnessRange%2Emax%3D%22100%22%7Dcatch%28i%29%7B%7Dthis%2EbrightnessRange%2Evalue%3D%22100%22%2Cthis%2EbrightnessRange%2EclassName%3D%22vis%2Drange%22%2Cthis%2EopacityDiv%2EappendChild%28this%2EopacityRange%29%2Cthis%2EbrightnessDiv%2EappendChild%28this%2EbrightnessRange%29%3Bvar%20o%3Dthis%3Bthis%2EopacityRange%2Eonchange%3Dfunction%28%29%7Bo%2E%5FsetOpacity%28this%2Evalue%29%7D%2Cthis%2EopacityRange%2Eoninput%3Dfunction%28%29%7Bo%2E%5FsetOpacity%28this%2Evalue%29%7D%2Cthis%2EbrightnessRange%2Eonchange%3Dfunction%28%29%7Bo%2E%5FsetBrightness%28this%2Evalue%29%7D%2Cthis%2EbrightnessRange%2Eoninput%3Dfunction%28%29%7Bo%2E%5FsetBrightness%28this%2Evalue%29%7D%2Cthis%2EbrightnessLabel%3Ddocument%2EcreateElement%28%22div%22%29%2Cthis%2EbrightnessLabel%2EclassName%3D%22vis%2Dlabel%20vis%2Dbrightness%22%2Cthis%2EbrightnessLabel%2EinnerHTML%3D%22brightness%3A%22%2Cthis%2EopacityLabel%3Ddocument%2EcreateElement%28%22div%22%29%2Cthis%2EopacityLabel%2EclassName%3D%22vis%2Dlabel%20vis%2Dopacity%22%2Cthis%2EopacityLabel%2EinnerHTML%3D%22opacity%3A%22%2Cthis%2EnewColorDiv%3Ddocument%2EcreateElement%28%22div%22%29%2Cthis%2EnewColorDiv%2EclassName%3D%22vis%2Dnew%2Dcolor%22%2Cthis%2EnewColorDiv%2EinnerHTML%3D%22new%22%2Cthis%2EinitialColorDiv%3Ddocument%2EcreateElement%28%22div%22%29%2Cthis%2EinitialColorDiv%2EclassName%3D%22vis%2Dinitial%2Dcolor%22%2Cthis%2EinitialColorDiv%2EinnerHTML%3D%22initial%22%2Cthis%2EcancelButton%3Ddocument%2EcreateElement%28%22div%22%29%2Cthis%2EcancelButton%2EclassName%3D%22vis%2Dbutton%20vis%2Dcancel%22%2Cthis%2EcancelButton%2EinnerHTML%3D%22cancel%22%2Cthis%2EcancelButton%2Eonclick%3Dthis%2E%5Fhide%2Ebind%28this%2C%211%29%2Cthis%2EapplyButton%3Ddocument%2EcreateElement%28%22div%22%29%2Cthis%2EapplyButton%2EclassName%3D%22vis%2Dbutton%20vis%2Dapply%22%2Cthis%2EapplyButton%2EinnerHTML%3D%22apply%22%2Cthis%2EapplyButton%2Eonclick%3Dthis%2E%5Fapply%2Ebind%28this%29%2Cthis%2EsaveButton%3Ddocument%2EcreateElement%28%22div%22%29%2Cthis%2EsaveButton%2EclassName%3D%22vis%2Dbutton%20vis%2Dsave%22%2Cthis%2EsaveButton%2EinnerHTML%3D%22save%22%2Cthis%2EsaveButton%2Eonclick%3Dthis%2E%5Fsave%2Ebind%28this%29%2Cthis%2EloadButton%3Ddocument%2EcreateElement%28%22div%22%29%2Cthis%2EloadButton%2EclassName%3D%22vis%2Dbutton%20vis%2Dload%22%2Cthis%2EloadButton%2EinnerHTML%3D%22load%20last%22%2Cthis%2EloadButton%2Eonclick%3Dthis%2E%5FloadLast%2Ebind%28this%29%2Cthis%2Eframe%2EappendChild%28this%2EcolorPickerDiv%29%2Cthis%2Eframe%2EappendChild%28this%2EarrowDiv%29%2Cthis%2Eframe%2EappendChild%28this%2EbrightnessLabel%29%2Cthis%2Eframe%2EappendChild%28this%2EbrightnessDiv%29%2Cthis%2Eframe%2EappendChild%28this%2EopacityLabel%29%2Cthis%2Eframe%2EappendChild%28this%2EopacityDiv%29%2Cthis%2Eframe%2EappendChild%28this%2EnewColorDiv%29%2Cthis%2Eframe%2EappendChild%28this%2EinitialColorDiv%29%2Cthis%2Eframe%2EappendChild%28this%2EcancelButton%29%2Cthis%2Eframe%2EappendChild%28this%2EapplyButton%29%2Cthis%2Eframe%2EappendChild%28this%2EsaveButton%29%2Cthis%2Eframe%2EappendChild%28this%2EloadButton%29%7D%7D%2C%7Bkey%3A%22%5FbindHammer%22%2Cvalue%3Afunction%28%29%7Bvar%20t%3Dthis%3Bthis%2Edrag%3D%7B%7D%2Cthis%2Epinch%3D%7B%7D%2Cthis%2Ehammer%3Dnew%20s%28this%2EcolorPickerCanvas%29%2Cthis%2Ehammer%2Eget%28%22pinch%22%29%2Eset%28%7Benable%3A%210%7D%29%2Cr%2EonTouch%28this%2Ehammer%2Cfunction%28e%29%7Bt%2E%5FmoveSelector%28e%29%7D%29%2Cthis%2Ehammer%2Eon%28%22tap%22%2Cfunction%28e%29%7Bt%2E%5FmoveSelector%28e%29%7D%29%2Cthis%2Ehammer%2Eon%28%22panstart%22%2Cfunction%28e%29%7Bt%2E%5FmoveSelector%28e%29%7D%29%2Cthis%2Ehammer%2Eon%28%22panmove%22%2Cfunction%28e%29%7Bt%2E%5FmoveSelector%28e%29%7D%29%2Cthis%2Ehammer%2Eon%28%22panend%22%2Cfunction%28e%29%7Bt%2E%5FmoveSelector%28e%29%7D%29%7D%7D%2C%7Bkey%3A%22%5FgenerateHueCircle%22%2Cvalue%3Afunction%28%29%7Bif%28this%2Egenerated%3D%3D%3D%211%29%7Bvar%20t%3Dthis%2EcolorPickerCanvas%2EgetContext%28%222d%22%29%3Bvoid%200%3D%3D%3Dthis%2EpixelRation%26%26%28this%2EpixelRatio%3D%28window%2EdevicePixelRatio%7C%7C1%29%2F%28t%2EwebkitBackingStorePixelRatio%7C%7Ct%2EmozBackingStorePixelRatio%7C%7Ct%2EmsBackingStorePixelRatio%7C%7Ct%2EoBackingStorePixelRatio%7C%7Ct%2EbackingStorePixelRatio%7C%7C1%29%29%2Ct%2EsetTransform%28this%2EpixelRatio%2C0%2C0%2Cthis%2EpixelRatio%2C0%2C0%29%3Bvar%20e%3Dthis%2EcolorPickerCanvas%2EclientWidth%2Ci%3Dthis%2EcolorPickerCanvas%2EclientHeight%3Bt%2EclearRect%280%2C0%2Ce%2Ci%29%3Bvar%20o%3Dvoid%200%2Cn%3Dvoid%200%2Cs%3Dvoid%200%2Cr%3Dvoid%200%3Bthis%2EcenterCoordinates%3D%7Bx%3A%2E5%2Ae%2Cy%3A%2E5%2Ai%7D%2Cthis%2Er%3D%2E49%2Ae%3Bvar%20h%3D2%2AMath%2EPI%2F360%2Cd%3D1%2F360%2Cl%3D1%2Fthis%2Er%2Cc%3Dvoid%200%3Bfor%28s%3D0%3B360%3Es%3Bs%2B%2B%29for%28r%3D0%3Br%3Cthis%2Er%3Br%2B%2B%29o%3Dthis%2EcenterCoordinates%2Ex%2Br%2AMath%2Esin%28h%2As%29%2Cn%3Dthis%2EcenterCoordinates%2Ey%2Br%2AMath%2Ecos%28h%2As%29%2Cc%3Da%2EHSVToRGB%28s%2Ad%2Cr%2Al%2C1%29%2Ct%2EfillStyle%3D%22rgb%28%22%2Bc%2Er%2B%22%2C%22%2Bc%2Eg%2B%22%2C%22%2Bc%2Eb%2B%22%29%22%2Ct%2EfillRect%28o%2D%2E5%2Cn%2D%2E5%2C2%2C2%29%3Bt%2EstrokeStyle%3D%22rgba%280%2C0%2C0%2C1%29%22%2Ct%2Ecircle%28this%2EcenterCoordinates%2Ex%2Cthis%2EcenterCoordinates%2Ey%2Cthis%2Er%29%2Ct%2Estroke%28%29%2Cthis%2EhueCircle%3Dt%2EgetImageData%280%2C0%2Ce%2Ci%29%7Dthis%2Egenerated%3D%210%7D%7D%2C%7Bkey%3A%22%5FmoveSelector%22%2Cvalue%3Afunction%28t%29%7Bvar%20e%3Dthis%2EcolorPickerDiv%2EgetBoundingClientRect%28%29%2Ci%3Dt%2Ecenter%2Ex%2De%2Eleft%2Co%3Dt%2Ecenter%2Ey%2De%2Etop%2Cn%3D%2E5%2Athis%2EcolorPickerDiv%2EclientHeight%2Cs%3D%2E5%2Athis%2EcolorPickerDiv%2EclientWidth%2Cr%3Di%2Ds%2Ch%3Do%2Dn%2Cd%3DMath%2Eatan2%28r%2Ch%29%2Cl%3D%2E98%2AMath%2Emin%28Math%2Esqrt%28r%2Ar%2Bh%2Ah%29%2Cs%29%2Cc%3DMath%2Ecos%28d%29%2Al%2Bn%2Cu%3DMath%2Esin%28d%29%2Al%2Bs%3Bthis%2EcolorPickerSelector%2Estyle%2Etop%3Dc%2D%2E5%2Athis%2EcolorPickerSelector%2EclientHeight%2B%22px%22%2Cthis%2EcolorPickerSelector%2Estyle%2Eleft%3Du%2D%2E5%2Athis%2EcolorPickerSelector%2EclientWidth%2B%22px%22%3Bvar%20p%3Dd%2F%282%2AMath%2EPI%29%3Bp%3D0%3Ep%3Fp%2B1%3Ap%3Bvar%20f%3Dl%2Fthis%2Er%2Cm%3Da%2ERGBToHSV%28this%2Ecolor%2Er%2Cthis%2Ecolor%2Eg%2Cthis%2Ecolor%2Eb%29%3Bm%2Eh%3Dp%2Cm%2Es%3Df%3Bvar%20v%3Da%2EHSVToRGB%28m%2Eh%2Cm%2Es%2Cm%2Ev%29%3Bv%2Ea%3Dthis%2Ecolor%2Ea%2Cthis%2Ecolor%3Dv%2Cthis%2EinitialColorDiv%2Estyle%2EbackgroundColor%3D%22rgba%28%22%2Bthis%2EinitialColor%2Er%2B%22%2C%22%2Bthis%2EinitialColor%2Eg%2B%22%2C%22%2Bthis%2EinitialColor%2Eb%2B%22%2C%22%2Bthis%2EinitialColor%2Ea%2B%22%29%22%2Cthis%2EnewColorDiv%2Estyle%2EbackgroundColor%3D%22rgba%28%22%2Bthis%2Ecolor%2Er%2B%22%2C%22%2Bthis%2Ecolor%2Eg%2B%22%2C%22%2Bthis%2Ecolor%2Eb%2B%22%2C%22%2Bthis%2Ecolor%2Ea%2B%22%29%22%7D%7D%5D%29%2Ct%7D%28%29%3Be%5B%22default%22%5D%3Dh%7D%2Cfunction%28t%2Ce%2Ci%29%7Bi%2820%29%3Be%2EonTouch%3Dfunction%28t%2Ce%29%7Be%2EinputHandler%3Dfunction%28t%29%7Bt%2EisFirst%26%26e%28t%29%7D%2Ct%2Eon%28%22hammer%2Einput%22%2Ce%2EinputHandler%29%7D%2Ce%2EonRelease%3Dfunction%28t%2Ce%29%7Breturn%20e%2EinputHandler%3Dfunction%28t%29%7Bt%2EisFinal%26%26e%28t%29%7D%2Ct%2Eon%28%22hammer%2Einput%22%2Ce%2EinputHandler%29%7D%2Ce%2EoffTouch%3Dfunction%28t%2Ce%29%7Bt%2Eoff%28%22hammer%2Einput%22%2Ce%2EinputHandler%29%7D%2Ce%2EoffRelease%3De%2EoffTouch%2Ce%2EdisablePreventDefaultVertically%3Dfunction%28t%29%7Bvar%20e%3D%22pan%2Dy%22%3Breturn%20t%2EgetTouchAction%3Dfunction%28%29%7Breturn%5Be%5D%7D%2Ct%7D%7D%2Cfunction%28t%2Ce%2Ci%29%7Bfunction%20o%28t%2Ce%29%7Bif%28%21%28t%20instanceof%20e%29%29throw%20new%20TypeError%28%22Cannot%20call%20a%20class%20as%20a%20function%22%29%7DObject%2EdefineProperty%28e%2C%22%5F%5FesModule%22%2C%7Bvalue%3A%210%7D%29%3Bvar%20n%3D%22function%22%3D%3Dtypeof%20Symbol%26%26%22symbol%22%3D%3Dtypeof%20Symbol%2Eiterator%3Ffunction%28t%29%7Breturn%20typeof%20t%7D%3Afunction%28t%29%7Breturn%20t%26%26%22function%22%3D%3Dtypeof%20Symbol%26%26t%2Econstructor%3D%3D%3DSymbol%3F%22symbol%22%3Atypeof%20t%7D%2Cs%3Dfunction%28%29%7Bfunction%20t%28t%2Ce%29%7Bfor%28var%20i%3D0%3Bi%3Ce%2Elength%3Bi%2B%2B%29%7Bvar%20o%3De%5Bi%5D%3Bo%2Eenumerable%3Do%2Eenumerable%7C%7C%211%2Co%2Econfigurable%3D%210%2C%22value%22in%20o%26%26%28o%2Ewritable%3D%210%29%2CObject%2EdefineProperty%28t%2Co%2Ekey%2Co%29%7D%7Dreturn%20function%28e%2Ci%2Co%29%7Breturn%20i%26%26t%28e%2Eprototype%2Ci%29%2Co%26%26t%28e%2Co%29%2Ce%7D%7D%28%29%2Cr%3Di%281%29%2Ca%3D%211%2Ch%3Dvoid%200%2Cd%3D%22background%3A%20%23FFeeee%3B%20color%3A%20%23dd0000%22%2Cl%3Dfunction%28%29%7Bfunction%20t%28%29%7Bo%28this%2Ct%29%7Dreturn%20s%28t%2Cnull%2C%5B%7Bkey%3A%22validate%22%2Cvalue%3Afunction%28e%2Ci%2Co%29%7Ba%3D%211%2Ch%3Di%3Bvar%20n%3Di%3Breturn%20void%200%21%3D%3Do%26%26%28n%3Di%5Bo%5D%29%2Ct%2Eparse%28e%2Cn%2C%5B%5D%29%2Ca%7D%7D%2C%7Bkey%3A%22parse%22%2Cvalue%3Afunction%28e%2Ci%2Co%29%7Bfor%28var%20n%20in%20e%29e%2EhasOwnProperty%28n%29%26%26t%2Echeck%28n%2Ce%2Ci%2Co%29%7D%7D%2C%7Bkey%3A%22check%22%2Cvalue%3Afunction%28e%2Ci%2Co%2Cn%29%7Bvoid%200%3D%3D%3Do%5Be%5D%26%26void%200%3D%3D%3Do%2E%5F%5Fany%5F%5F%3Ft%2EgetSuggestion%28e%2Co%2Cn%29%3Avoid%200%3D%3D%3Do%5Be%5D%26%26void%200%21%3D%3Do%2E%5F%5Fany%5F%5F%3F%22object%22%3D%3D%3Dt%2EgetType%28i%5Be%5D%29%26%26void%200%21%3D%3Do%2E%5F%5Fany%5F%5F%2E%5F%5Ftype%5F%5F%3Ft%2EcheckFields%28e%2Ci%2Co%2C%22%5F%5Fany%5F%5F%22%2Co%2E%5F%5Fany%5F%5F%2E%5F%5Ftype%5F%5F%2Cn%29%3At%2EcheckFields%28e%2Ci%2Co%2C%22%5F%5Fany%5F%5F%22%2Co%2E%5F%5Fany%5F%5F%2Cn%29%3Avoid%200%21%3D%3Do%5Be%5D%2E%5F%5Ftype%5F%5F%3Ft%2EcheckFields%28e%2Ci%2Co%2Ce%2Co%5Be%5D%2E%5F%5Ftype%5F%5F%2Cn%29%3At%2EcheckFields%28e%2Ci%2Co%2Ce%2Co%5Be%5D%2Cn%29%7D%7D%2C%7Bkey%3A%22checkFields%22%2Cvalue%3Afunction%28e%2Ci%2Co%2Cn%2Cs%2Ch%29%7Bvar%20l%3Dt%2EgetType%28i%5Be%5D%29%2Cc%3Ds%5Bl%5D%3Bvoid%200%21%3D%3Dc%3F%22array%22%3D%3D%3Dt%2EgetType%28c%29%26%26%2D1%3D%3D%3Dc%2EindexOf%28i%5Be%5D%29%3F%28console%2Elog%28%27%25cInvalid%20option%20detected%20in%20%22%27%2Be%2B%27%22%2E%20Allowed%20values%20are%3A%27%2Bt%2Eprint%28c%29%2B%27%20not%20%22%27%2Bi%5Be%5D%2B%27%22%2E%20%27%2Bt%2EprintLocation%28h%2Ce%29%2Cd%29%2Ca%3D%210%29%3A%22object%22%3D%3D%3Dl%26%26%22%5F%5Fany%5F%5F%22%21%3D%3Dn%26%26%28h%3Dr%2EcopyAndExtendArray%28h%2Ce%29%2Ct%2Eparse%28i%5Be%5D%2Co%5Bn%5D%2Ch%29%29%3Avoid%200%3D%3D%3Ds%2Eany%26%26%28console%2Elog%28%27%25cInvalid%20type%20received%20for%20%22%27%2Be%2B%27%22%2E%20Expected%3A%20%27%2Bt%2Eprint%28Object%2Ekeys%28s%29%29%2B%22%2E%20Received%20%5B%22%2Bl%2B%27%5D%20%22%27%2Bi%5Be%5D%2B%27%22%27%2Bt%2EprintLocation%28h%2Ce%29%2Cd%29%2Ca%3D%210%29%7D%7D%2C%7Bkey%3A%22getType%22%2Cvalue%3Afunction%28t%29%7Bvar%20e%3D%22undefined%22%3D%3Dtypeof%20t%3F%22undefined%22%3An%28t%29%3Breturn%22object%22%3D%3D%3De%3Fnull%3D%3D%3Dt%3F%22null%22%3At%20instanceof%20Boolean%3F%22boolean%22%3At%20instanceof%20Number%3F%22number%22%3At%20instanceof%20String%3F%22string%22%3AArray%2EisArray%28t%29%3F%22array%22%3At%20instanceof%20Date%3F%22date%22%3Avoid%200%21%3D%3Dt%2EnodeType%3F%22dom%22%3At%2E%5FisAMomentObject%3D%3D%3D%210%3F%22moment%22%3A%22object%22%3A%22number%22%3D%3D%3De%3F%22number%22%3A%22boolean%22%3D%3D%3De%3F%22boolean%22%3A%22string%22%3D%3D%3De%3F%22string%22%3Avoid%200%3D%3D%3De%3F%22undefined%22%3Ae%7D%7D%2C%7Bkey%3A%22getSuggestion%22%2Cvalue%3Afunction%28e%2Ci%2Co%29%7Bvar%20n%3Dt%2EfindInOptions%28e%2Ci%2Co%2C%211%29%2Cs%3Dt%2EfindInOptions%28e%2Ch%2C%5B%5D%2C%210%29%2Cr%3D8%2Cl%3D4%3Bvoid%200%21%3D%3Dn%2EindexMatch%3Fconsole%2Elog%28%27%25cUnknown%20option%20detected%3A%20%22%27%2Be%2B%27%22%20in%20%27%2Bt%2EprintLocation%28n%2Epath%2Ce%2C%22%22%29%2B%27Perhaps%20it%20was%20incomplete%3F%20Did%20you%20mean%3A%20%22%27%2Bn%2EindexMatch%2B%27%22%3F%5Cn%5Cn%27%2Cd%29%3As%2Edistance%3C%3Dl%26%26n%2Edistance%3Es%2Edistance%3Fconsole%2Elog%28%27%25cUnknown%20option%20detected%3A%20%22%27%2Be%2B%27%22%20in%20%27%2Bt%2EprintLocation%28n%2Epath%2Ce%2C%22%22%29%2B%22Perhaps%20it%20was%20misplaced%3F%20Matching%20option%20found%20at%3A%20%22%2Bt%2EprintLocation%28s%2Epath%2Cs%2EclosestMatch%2C%22%22%29%2Cd%29%3An%2Edistance%3C%3Dr%3Fconsole%2Elog%28%27%25cUnknown%20option%20detected%3A%20%22%27%2Be%2B%27%22%2E%20Did%20you%20mean%20%22%27%2Bn%2EclosestMatch%2B%27%22%3F%27%2Bt%2EprintLocation%28n%2Epath%2Ce%29%2Cd%29%3Aconsole%2Elog%28%27%25cUnknown%20option%20detected%3A%20%22%27%2Be%2B%27%22%2E%20Did%20you%20mean%20one%20of%20these%3A%20%27%2Bt%2Eprint%28Object%2Ekeys%28i%29%29%2Bt%2EprintLocation%28o%2Ce%29%2Cd%29%2Ca%3D%210%7D%7D%2C%7Bkey%3A%22findInOptions%22%2Cvalue%3Afunction%28e%2Ci%2Co%29%7Bvar%20n%3Darguments%2Elength%3C%3D3%7C%7Cvoid%200%3D%3D%3Darguments%5B3%5D%3F%211%3Aarguments%5B3%5D%2Cs%3D1e9%2Ca%3D%22%22%2Ch%3D%5B%5D%2Cd%3De%2EtoLowerCase%28%29%2Cl%3Dvoid%200%3Bfor%28var%20c%20in%20i%29%7Bvar%20u%3Dvoid%200%3Bif%28void%200%21%3D%3Di%5Bc%5D%2E%5F%5Ftype%5F%5F%26%26n%3D%3D%3D%210%29%7Bvar%20p%3Dt%2EfindInOptions%28e%2Ci%5Bc%5D%2Cr%2EcopyAndExtendArray%28o%2Cc%29%29%3Bs%3Ep%2Edistance%26%26%28a%3Dp%2EclosestMatch%2Ch%3Dp%2Epath%2Cs%3Dp%2Edistance%2Cl%3Dp%2EindexMatch%29%7Delse%2D1%21%3D%3Dc%2EtoLowerCase%28%29%2EindexOf%28d%29%26%26%28l%3Dc%29%2Cu%3Dt%2ElevenshteinDistance%28e%2Cc%29%2Cs%3Eu%26%26%28a%3Dc%2Ch%3Dr%2EcopyArray%28o%29%2Cs%3Du%29%7Dreturn%7BclosestMatch%3Aa%2Cpath%3Ah%2Cdistance%3As%2CindexMatch%3Al%7D%7D%7D%2C%7Bkey%3A%22printLocation%22%2Cvalue%3Afunction%28t%2Ce%29%7Bfor%28var%20i%3Darguments%2Elength%3C%3D2%7C%7Cvoid%200%3D%3D%3Darguments%5B2%5D%3F%22Problem%20value%20found%20at%3A%20%5Cn%22%3Aarguments%5B2%5D%2Co%3D%22%5Cn%5Cn%22%2Bi%2B%22options%20%3D%20%7B%5Cn%22%2Cn%3D0%3Bn%3Ct%2Elength%3Bn%2B%2B%29%7Bfor%28var%20s%3D0%3Bn%2B1%3Es%3Bs%2B%2B%29o%2B%3D%22%20%20%22%3Bo%2B%3Dt%5Bn%5D%2B%22%3A%20%7B%5Cn%22%7Dfor%28var%20r%3D0%3Br%3Ct%2Elength%2B1%3Br%2B%2B%29o%2B%3D%22%20%20%22%3Bo%2B%3De%2B%22%5Cn%22%3Bfor%28var%20a%3D0%3Ba%3Ct%2Elength%2B1%3Ba%2B%2B%29%7Bfor%28var%20h%3D0%3Bh%3Ct%2Elength%2Da%3Bh%2B%2B%29o%2B%3D%22%20%20%22%3Bo%2B%3D%22%7D%5Cn%22%7Dreturn%20o%2B%22%5Cn%5Cn%22%7D%7D%2C%7Bkey%3A%22print%22%2Cvalue%3Afunction%28t%29%7Breturn%20JSON%2Estringify%28t%29%2Ereplace%28%2F%28%5C%22%29%7C%28%5C%5B%29%7C%28%5C%5D%29%7C%28%2C%22%5F%5Ftype%5F%5F%22%29%2Fg%2C%22%22%29%2Ereplace%28%2F%28%5C%2C%29%2Fg%2C%22%2C%20%22%29%7D%7D%2C%7Bkey%3A%22levenshteinDistance%22%2Cvalue%3Afunction%28t%2Ce%29%7Bif%280%3D%3D%3Dt%2Elength%29return%20e%2Elength%3Bif%280%3D%3D%3De%2Elength%29return%20t%2Elength%3Bvar%20i%2Co%3D%5B%5D%3Bfor%28i%3D0%3Bi%3C%3De%2Elength%3Bi%2B%2B%29o%5Bi%5D%3D%5Bi%5D%3Bvar%20n%3Bfor%28n%3D0%3Bn%3C%3Dt%2Elength%3Bn%2B%2B%29o%5B0%5D%5Bn%5D%3Dn%3Bfor%28i%3D1%3Bi%3C%3De%2Elength%3Bi%2B%2B%29for%28n%3D1%3Bn%3C%3Dt%2Elength%3Bn%2B%2B%29e%2EcharAt%28i%2D1%29%3D%3Dt%2EcharAt%28n%2D1%29%3Fo%5Bi%5D%5Bn%5D%3Do%5Bi%2D1%5D%5Bn%2D1%5D%3Ao%5Bi%5D%5Bn%5D%3DMath%2Emin%28o%5Bi%2D1%5D%5Bn%2D1%5D%2B1%2CMath%2Emin%28o%5Bi%5D%5Bn%2D1%5D%2B1%2Co%5Bi%2D1%5D%5Bn%5D%2B1%29%29%3Breturn%20o%5Be%2Elength%5D%5Bt%2Elength%5D%7D%7D%5D%29%2Ct%7D%28%29%3Be%5B%22default%22%5D%3Dl%2Ce%2EprintStyle%3Dd%7D%2Cfunction%28t%2Ce%2Ci%29%7Bfunction%20o%28t%2Ce%29%7Bvar%20i%3Da%28%29%2Ehours%280%29%2Eminutes%280%29%2Eseconds%280%29%2Emilliseconds%280%29%3Bthis%2Estart%3Di%2Eclone%28%29%2Eadd%28%2D3%2C%22days%22%29%2EvalueOf%28%29%2Cthis%2Eend%3Di%2Eclone%28%29%2Eadd%284%2C%22days%22%29%2EvalueOf%28%29%2Cthis%2Ebody%3Dt%2Cthis%2EdeltaDifference%3D0%2Cthis%2EscaleOffset%3D0%2Cthis%2EstartToFront%3D%211%2Cthis%2EendToFront%3D%210%2Cthis%2EdefaultOptions%3D%7Brtl%3A%211%2Cstart%3Anull%2Cend%3Anull%2Cmoment%3Aa%2Cdirection%3A%22horizontal%22%2Cmoveable%3A%210%2Czoomable%3A%210%2Cmin%3Anull%2Cmax%3Anull%2CzoomMin%3A10%2CzoomMax%3A31536e10%7D%2Cthis%2Eoptions%3Dr%2Eextend%28%7B%7D%2Cthis%2EdefaultOptions%29%2Cthis%2Eprops%3D%7Btouch%3A%7B%7D%7D%2Cthis%2EanimationTimer%3Dnull%2Cthis%2Ebody%2Eemitter%2Eon%28%22panstart%22%2Cthis%2E%5FonDragStart%2Ebind%28this%29%29%2Cthis%2Ebody%2Eemitter%2Eon%28%22panmove%22%2Cthis%2E%5FonDrag%2Ebind%28this%29%29%2Cthis%2Ebody%2Eemitter%2Eon%28%22panend%22%2Cthis%2E%5FonDragEnd%2Ebind%28this%29%29%2Cthis%2Ebody%2Eemitter%2Eon%28%22mousewheel%22%2Cthis%2E%5FonMouseWheel%2Ebind%28this%29%29%2Cthis%2Ebody%2Eemitter%2Eon%28%22touch%22%2Cthis%2E%5FonTouch%2Ebind%28this%29%29%2Cthis%2Ebody%2Eemitter%2Eon%28%22pinch%22%2Cthis%2E%5FonPinch%2Ebind%28this%29%29%2Cthis%2EsetOptions%28e%29%7Dfunction%20n%28t%29%7Bif%28%22horizontal%22%21%3Dt%26%26%22vertical%22%21%3Dt%29throw%20new%20TypeError%28%27Unknown%20direction%20%22%27%2Bt%2B%27%22%2E%20Choose%20%22horizontal%22%20or%20%22vertical%22%2E%27%29%7Dvar%20s%3D%22function%22%3D%3Dtypeof%20Symbol%26%26%22symbol%22%3D%3Dtypeof%20Symbol%2Eiterator%3Ffunction%28t%29%7Breturn%20typeof%20t%7D%3Afunction%28t%29%7Breturn%20t%26%26%22function%22%3D%3Dtypeof%20Symbol%26%26t%2Econstructor%3D%3D%3DSymbol%3F%22symbol%22%3Atypeof%20t%7D%2Cr%3Di%281%29%2Ca%3D%28i%2828%29%2Ci%282%29%29%2Ch%3Di%2831%29%2Cd%3Di%2832%29%3Bo%2Eprototype%3Dnew%20h%2Co%2Eprototype%2EsetOptions%3Dfunction%28t%29%7Bif%28t%29%7Bvar%20e%3D%5B%22direction%22%2C%22min%22%2C%22max%22%2C%22zoomMin%22%2C%22zoomMax%22%2C%22moveable%22%2C%22zoomable%22%2C%22moment%22%2C%22activate%22%2C%22hiddenDates%22%2C%22zoomKey%22%2C%22rtl%22%5D%3Br%2EselectiveExtend%28e%2Cthis%2Eoptions%2Ct%29%2C%28%22start%22in%20t%7C%7C%22end%22in%20t%29%26%26this%2EsetRange%28t%2Estart%2Ct%2Eend%29%7D%7D%2Co%2Eprototype%2EsetRange%3Dfunction%28t%2Ce%2Ci%2Co%29%7Bo%21%3D%3D%210%26%26%28o%3D%211%29%3Bvar%20n%3Dvoid%200%21%3Dt%3Fr%2Econvert%28t%2C%22Date%22%29%2EvalueOf%28%29%3Anull%2Ca%3Dvoid%200%21%3De%3Fr%2Econvert%28e%2C%22Date%22%29%2EvalueOf%28%29%3Anull%3Bif%28this%2E%5FcancelAnimation%28%29%2Ci%29%7Bvar%20h%3Dthis%2Cl%3Dthis%2Estart%2Cc%3Dthis%2Eend%2Cu%3D%22object%22%3D%3D%3D%28%22undefined%22%3D%3Dtypeof%20i%3F%22undefined%22%3As%28i%29%29%26%26%22duration%22in%20i%3Fi%2Eduration%3A500%2Cp%3D%22object%22%3D%3D%3D%28%22undefined%22%3D%3Dtypeof%20i%3F%22undefined%22%3As%28i%29%29%26%26%22easingFunction%22in%20i%3Fi%2EeasingFunction%3A%22easeInOutQuad%22%2Cf%3Dr%2EeasingFunctions%5Bp%5D%3Bif%28%21f%29throw%20new%20Error%28%22Unknown%20easing%20function%20%22%2BJSON%2Estringify%28p%29%2B%22%2E%20Choose%20from%3A%20%22%2BObject%2Ekeys%28r%2EeasingFunctions%29%2Ejoin%28%22%2C%20%22%29%29%3Bvar%20m%3D%28new%20Date%29%2EvalueOf%28%29%2Cv%3D%211%2Cg%3Dfunction%20w%28%29%7Bif%28%21h%2Eprops%2Etouch%2Edragging%29%7Bvar%20t%3D%28new%20Date%29%2EvalueOf%28%29%2Ce%3Dt%2Dm%2Ci%3Df%28e%2Fu%29%2Cs%3De%3Eu%2Cr%3Ds%7C%7Cnull%3D%3D%3Dn%3Fn%3Al%2B%28n%2Dl%29%2Ai%2Cp%3Ds%7C%7Cnull%3D%3D%3Da%3Fa%3Ac%2B%28a%2Dc%29%2Ai%3By%3Dh%2E%5FapplyRange%28r%2Cp%29%2Cd%2EupdateHiddenDates%28h%2Eoptions%2Emoment%2Ch%2Ebody%2Ch%2Eoptions%2EhiddenDates%29%2Cv%3Dv%7C%7Cy%2Cy%26%26h%2Ebody%2Eemitter%2Eemit%28%22rangechange%22%2C%7Bstart%3Anew%20Date%28h%2Estart%29%2Cend%3Anew%20Date%28h%2Eend%29%2CbyUser%3Ao%7D%29%2Cs%3Fv%26%26h%2Ebody%2Eemitter%2Eemit%28%22rangechanged%22%2C%7Bstart%3Anew%20Date%28h%2Estart%29%2Cend%3Anew%20Date%28h%2Eend%29%2CbyUser%3Ao%7D%29%3Ah%2EanimationTimer%3DsetTimeout%28w%2C20%29%7D%7D%3Breturn%20g%28%29%7Dvar%20y%3Dthis%2E%5FapplyRange%28n%2Ca%29%3Bif%28d%2EupdateHiddenDates%28this%2Eoptions%2Emoment%2Cthis%2Ebody%2Cthis%2Eoptions%2EhiddenDates%29%2Cy%29%7Bvar%20b%3D%7Bstart%3Anew%20Date%28this%2Estart%29%2Cend%3Anew%20Date%28this%2Eend%29%2CbyUser%3Ao%7D%3Bthis%2Ebody%2Eemitter%2Eemit%28%22rangechange%22%2Cb%29%2Cthis%2Ebody%2Eemitter%2Eemit%28%22rangechanged%22%2Cb%29%7D%7D%2Co%2Eprototype%2E%5FcancelAnimation%3Dfunction%28%29%7Bthis%2EanimationTimer%26%26%28clearTimeout%28this%2EanimationTimer%29%2Cthis%2EanimationTimer%3Dnull%29%7D%2Co%2Eprototype%2E%5FapplyRange%3Dfunction%28t%2Ce%29%7Bvar%20i%2Co%3Dnull%21%3Dt%3Fr%2Econvert%28t%2C%22Date%22%29%2EvalueOf%28%29%3Athis%2Estart%2Cn%3Dnull%21%3De%3Fr%2Econvert%28e%2C%22Date%22%29%2EvalueOf%28%29%3Athis%2Eend%2Cs%3Dnull%21%3Dthis%2Eoptions%2Emax%3Fr%2Econvert%28this%2Eoptions%2Emax%2C%22Date%22%29%2EvalueOf%28%29%3Anull%2Ca%3Dnull%21%3Dthis%2Eoptions%2Emin%3Fr%2Econvert%28this%2Eoptions%2Emin%2C%22Date%22%29%2EvalueOf%28%29%3Anull%3Bif%28isNaN%28o%29%7C%7Cnull%3D%3D%3Do%29throw%20new%20Error%28%27Invalid%20start%20%22%27%2Bt%2B%27%22%27%29%3Bif%28isNaN%28n%29%7C%7Cnull%3D%3D%3Dn%29throw%20new%20Error%28%27Invalid%20end%20%22%27%2Be%2B%27%22%27%29%3Bif%28o%3En%26%26%28n%3Do%29%2Cnull%21%3D%3Da%26%26a%3Eo%26%26%28i%3Da%2Do%2Co%2B%3Di%2Cn%2B%3Di%2Cnull%21%3Ds%26%26n%3Es%26%26%28n%3Ds%29%29%2Cnull%21%3D%3Ds%26%26n%3Es%26%26%28i%3Dn%2Ds%2Co%2D%3Di%2Cn%2D%3Di%2Cnull%21%3Da%26%26a%3Eo%26%26%28o%3Da%29%29%2Cnull%21%3D%3Dthis%2Eoptions%2EzoomMin%29%7Bvar%20h%3DparseFloat%28this%2Eoptions%2EzoomMin%29%3B0%3Eh%26%26%28h%3D0%29%2Ch%3En%2Do%26%26%28this%2Eend%2Dthis%2Estart%3D%3D%3Dh%26%26o%3Ethis%2Estart%26%26n%3Cthis%2Eend%3F%28o%3Dthis%2Estart%2Cn%3Dthis%2Eend%29%3A%28i%3Dh%2D%28n%2Do%29%2Co%2D%3Di%2F2%2Cn%2B%3Di%2F2%29%29%7Dif%28null%21%3D%3Dthis%2Eoptions%2EzoomMax%29%7Bvar%20d%3DparseFloat%28this%2Eoptions%2EzoomMax%29%3B0%3Ed%26%26%28d%3D0%29%2Cn%2Do%3Ed%26%26%28this%2Eend%2Dthis%2Estart%3D%3D%3Dd%26%26o%3Cthis%2Estart%26%26n%3Ethis%2Eend%3F%28o%3Dthis%2Estart%2Cn%3Dthis%2Eend%29%3A%28i%3Dn%2Do%2Dd%2Co%2B%3Di%2F2%2Cn%2D%3Di%2F2%29%29%7Dvar%20l%3Dthis%2Estart%21%3Do%7C%7Cthis%2Eend%21%3Dn%3Breturn%20o%3E%3Dthis%2Estart%26%26o%3C%3Dthis%2Eend%7C%7Cn%3E%3Dthis%2Estart%26%26n%3C%3Dthis%2Eend%7C%7Cthis%2Estart%3E%3Do%26%26this%2Estart%3C%3Dn%7C%7Cthis%2Eend%3E%3Do%26%26this%2Eend%3C%3Dn%7C%7Cthis%2Ebody%2Eemitter%2Eemit%28%22checkRangedItems%22%29%2Cthis%2Estart%3Do%2Cthis%2Eend%3Dn%2Cl%7D%2Co%2Eprototype%2EgetRange%3Dfunction%28%29%7Breturn%7Bstart%3Athis%2Estart%2Cend%3Athis%2Eend%7D%7D%2Co%2Eprototype%2Econversion%3Dfunction%28t%2Ce%29%7Breturn%20o%2Econversion%28this%2Estart%2Cthis%2Eend%2Ct%2Ce%29%7D%2Co%2Econversion%3Dfunction%28t%2Ce%2Ci%2Co%29%7Breturn%20void%200%3D%3D%3Do%26%26%28o%3D0%29%2C0%21%3Di%26%26e%2Dt%21%3D0%3F%7Boffset%3At%2Cscale%3Ai%2F%28e%2Dt%2Do%29%7D%3A%7Boffset%3A0%2Cscale%3A1%7D%7D%2Co%2Eprototype%2E%5FonDragStart%3Dfunction%28t%29%7Bthis%2EdeltaDifference%3D0%2Cthis%2EpreviousDelta%3D0%2Cthis%2Eoptions%2Emoveable%26%26this%2E%5FisInsideRange%28t%29%26%26this%2Eprops%2Etouch%2EallowDragging%26%26%28this%2Eprops%2Etouch%2Estart%3Dthis%2Estart%2Cthis%2Eprops%2Etouch%2Eend%3Dthis%2Eend%2Cthis%2Eprops%2Etouch%2Edragging%3D%210%2Cthis%2Ebody%2Edom%2Eroot%26%26%28this%2Ebody%2Edom%2Eroot%2Estyle%2Ecursor%3D%22move%22%29%29%7D%2Co%2Eprototype%2E%5FonDrag%3Dfunction%28t%29%7Bif%28this%2Eprops%2Etouch%2Edragging%26%26this%2Eoptions%2Emoveable%26%26this%2Eprops%2Etouch%2EallowDragging%29%7Bvar%20e%3Dthis%2Eoptions%2Edirection%3Bn%28e%29%3Bvar%20i%3D%22horizontal%22%3D%3De%3Ft%2EdeltaX%3At%2EdeltaY%3Bi%2D%3Dthis%2EdeltaDifference%3Bvar%20o%3Dthis%2Eprops%2Etouch%2Eend%2Dthis%2Eprops%2Etouch%2Estart%2Cs%3Dd%2EgetHiddenDurationBetween%28this%2Ebody%2EhiddenDates%2Cthis%2Estart%2Cthis%2Eend%29%3Bo%2D%3Ds%3Bvar%20r%3D%22horizontal%22%3D%3De%3Fthis%2Ebody%2EdomProps%2Ecenter%2Ewidth%3Athis%2Ebody%2EdomProps%2Ecenter%2Eheight%3Bif%28this%2Eoptions%2Ertl%29var%20a%3Di%2Fr%2Ao%3Belse%20var%20a%3D%2Di%2Fr%2Ao%3Bvar%20h%3Dthis%2Eprops%2Etouch%2Estart%2Ba%2Cl%3Dthis%2Eprops%2Etouch%2Eend%2Ba%2Cc%3Dd%2EsnapAwayFromHidden%28this%2Ebody%2EhiddenDates%2Ch%2Cthis%2EpreviousDelta%2Di%2C%210%29%2Cu%3Dd%2EsnapAwayFromHidden%28this%2Ebody%2EhiddenDates%2Cl%2Cthis%2EpreviousDelta%2Di%2C%210%29%3Bif%28c%21%3Dh%7C%7Cu%21%3Dl%29return%20this%2EdeltaDifference%2B%3Di%2Cthis%2Eprops%2Etouch%2Estart%3Dc%2Cthis%2Eprops%2Etouch%2Eend%3Du%2Cvoid%20this%2E%5FonDrag%28t%29%3Bthis%2EpreviousDelta%3Di%2Cthis%2E%5FapplyRange%28h%2Cl%29%3Bvar%20p%3Dnew%20Date%28this%2Estart%29%2Cf%3Dnew%20Date%28this%2Eend%29%3Bthis%2Ebody%2Eemitter%2Eemit%28%22rangechange%22%2C%7Bstart%3Ap%2Cend%3Af%2CbyUser%3A%210%7D%29%7D%7D%2Co%2Eprototype%2E%5FonDragEnd%3Dfunction%28t%29%7Bthis%2Eprops%2Etouch%2Edragging%26%26this%2Eoptions%2Emoveable%26%26this%2Eprops%2Etouch%2EallowDragging%26%26%28this%2Eprops%2Etouch%2Edragging%3D%211%2Cthis%2Ebody%2Edom%2Eroot%26%26%28this%2Ebody%2Edom%2Eroot%2Estyle%2Ecursor%3D%22auto%22%29%2Cthis%2Ebody%2Eemitter%2Eemit%28%22rangechanged%22%2C%7Bstart%3Anew%20Date%28this%2Estart%29%2Cend%3Anew%20Date%28this%2Eend%29%2CbyUser%3A%210%7D%29%29%7D%2Co%2Eprototype%2E%5FonMouseWheel%3Dfunction%28t%29%7Bif%28this%2Eoptions%2Ezoomable%26%26this%2Eoptions%2Emoveable%26%26this%2E%5FisInsideRange%28t%29%26%26%28%21this%2Eoptions%2EzoomKey%7C%7Ct%5Bthis%2Eoptions%2EzoomKey%5D%29%29%7Bvar%20e%3D0%3Bif%28t%2EwheelDelta%3Fe%3Dt%2EwheelDelta%2F120%3At%2Edetail%26%26%28e%3D%2Dt%2Edetail%2F3%29%2Ce%29%7Bvar%20i%3Bi%3D0%3Ee%3F1%2De%2F5%3A1%2F%281%2Be%2F5%29%3Bvar%20o%3Dthis%2EgetPointer%28%7Bx%3At%2EclientX%2Cy%3At%2EclientY%7D%2Cthis%2Ebody%2Edom%2Ecenter%29%2Cn%3Dthis%2E%5FpointerToDate%28o%29%3Bthis%2Ezoom%28i%2Cn%2Ce%29%7Dt%2EpreventDefault%28%29%7D%7D%2Co%2Eprototype%2E%5FonTouch%3Dfunction%28t%29%7Bthis%2Eprops%2Etouch%2Estart%3Dthis%2Estart%2Cthis%2Eprops%2Etouch%2Eend%3Dthis%2Eend%2Cthis%2Eprops%2Etouch%2EallowDragging%3D%210%2Cthis%2Eprops%2Etouch%2Ecenter%3Dnull%2Cthis%2EscaleOffset%3D0%2Cthis%2EdeltaDifference%3D0%7D%2Co%2Eprototype%2E%5FonPinch%3Dfunction%28t%29%7Bif%28this%2Eoptions%2Ezoomable%26%26this%2Eoptions%2Emoveable%29%7Bthis%2Eprops%2Etouch%2EallowDragging%3D%211%2Cthis%2Eprops%2Etouch%2Ecenter%7C%7C%28this%2Eprops%2Etouch%2Ecenter%3Dthis%2EgetPointer%28t%2Ecenter%2Cthis%2Ebody%2Edom%2Ecenter%29%29%3Bvar%20e%3D1%2F%28t%2Escale%2Bthis%2EscaleOffset%29%2Ci%3Dthis%2E%5FpointerToDate%28this%2Eprops%2Etouch%2Ecenter%29%2Co%3Dd%2EgetHiddenDurationBetween%28this%2Ebody%2EhiddenDates%2Cthis%2Estart%2Cthis%2Eend%29%2Cn%3Dd%2EgetHiddenDurationBefore%28this%2Eoptions%2Emoment%2Cthis%2Ebody%2EhiddenDates%2Cthis%2Ci%29%2Cs%3Do%2Dn%2Cr%3Di%2Dn%2B%28this%2Eprops%2Etouch%2Estart%2D%28i%2Dn%29%29%2Ae%2Ca%3Di%2Bs%2B%28this%2Eprops%2Etouch%2Eend%2D%28i%2Bs%29%29%2Ae%3B%0Athis%2EstartToFront%3D0%3E%3D1%2De%2Cthis%2EendToFront%3D0%3E%3De%2D1%3Bvar%20h%3Dd%2EsnapAwayFromHidden%28this%2Ebody%2EhiddenDates%2Cr%2C1%2De%2C%210%29%2Cl%3Dd%2EsnapAwayFromHidden%28this%2Ebody%2EhiddenDates%2Ca%2Ce%2D1%2C%210%29%3Bh%3D%3Dr%26%26l%3D%3Da%7C%7C%28this%2Eprops%2Etouch%2Estart%3Dh%2Cthis%2Eprops%2Etouch%2Eend%3Dl%2Cthis%2EscaleOffset%3D1%2Dt%2Escale%2Cr%3Dh%2Ca%3Dl%29%2Cthis%2EsetRange%28r%2Ca%2C%211%2C%210%29%2Cthis%2EstartToFront%3D%211%2Cthis%2EendToFront%3D%210%7D%7D%2Co%2Eprototype%2E%5FisInsideRange%3Dfunction%28t%29%7Bvar%20e%3Dt%2Ecenter%3Ft%2Ecenter%2Ex%3At%2EclientX%3Bif%28this%2Eoptions%2Ertl%29var%20i%3De%2Dr%2EgetAbsoluteLeft%28this%2Ebody%2Edom%2EcenterContainer%29%3Belse%20var%20i%3Dr%2EgetAbsoluteRight%28this%2Ebody%2Edom%2EcenterContainer%29%2De%3Bvar%20o%3Dthis%2Ebody%2Eutil%2EtoTime%28i%29%3Breturn%20o%3E%3Dthis%2Estart%26%26o%3C%3Dthis%2Eend%7D%2Co%2Eprototype%2E%5FpointerToDate%3Dfunction%28t%29%7Bvar%20e%2Ci%3Dthis%2Eoptions%2Edirection%3Bif%28n%28i%29%2C%22horizontal%22%3D%3Di%29return%20this%2Ebody%2Eutil%2EtoTime%28t%2Ex%29%2EvalueOf%28%29%3Bvar%20o%3Dthis%2Ebody%2EdomProps%2Ecenter%2Eheight%3Breturn%20e%3Dthis%2Econversion%28o%29%2Ct%2Ey%2Fe%2Escale%2Be%2Eoffset%7D%2Co%2Eprototype%2EgetPointer%3Dfunction%28t%2Ce%29%7Breturn%20this%2Eoptions%2Ertl%3F%7Bx%3Ar%2EgetAbsoluteRight%28e%29%2Dt%2Ex%2Cy%3At%2Ey%2Dr%2EgetAbsoluteTop%28e%29%7D%3A%7Bx%3At%2Ex%2Dr%2EgetAbsoluteLeft%28e%29%2Cy%3At%2Ey%2Dr%2EgetAbsoluteTop%28e%29%7D%7D%2Co%2Eprototype%2Ezoom%3Dfunction%28t%2Ce%2Ci%29%7Bnull%3D%3De%26%26%28e%3D%28this%2Estart%2Bthis%2Eend%29%2F2%29%3Bvar%20o%3Dd%2EgetHiddenDurationBetween%28this%2Ebody%2EhiddenDates%2Cthis%2Estart%2Cthis%2Eend%29%2Cn%3Dd%2EgetHiddenDurationBefore%28this%2Eoptions%2Emoment%2Cthis%2Ebody%2EhiddenDates%2Cthis%2Ce%29%2Cs%3Do%2Dn%2Cr%3De%2Dn%2B%28this%2Estart%2D%28e%2Dn%29%29%2At%2Ca%3De%2Bs%2B%28this%2Eend%2D%28e%2Bs%29%29%2At%3Bthis%2EstartToFront%3D%21%28i%3E0%29%2Cthis%2EendToFront%3D%21%28%2Di%3E0%29%3Bvar%20h%3Dd%2EsnapAwayFromHidden%28this%2Ebody%2EhiddenDates%2Cr%2Ci%2C%210%29%2Cl%3Dd%2EsnapAwayFromHidden%28this%2Ebody%2EhiddenDates%2Ca%2C%2Di%2C%210%29%3Bh%3D%3Dr%26%26l%3D%3Da%7C%7C%28r%3Dh%2Ca%3Dl%29%2Cthis%2EsetRange%28r%2Ca%2C%211%2C%210%29%2Cthis%2EstartToFront%3D%211%2Cthis%2EendToFront%3D%210%7D%2Co%2Eprototype%2Emove%3Dfunction%28t%29%7Bvar%20e%3Dthis%2Eend%2Dthis%2Estart%2Ci%3Dthis%2Estart%2Be%2At%2Co%3Dthis%2Eend%2Be%2At%3Bthis%2Estart%3Di%2Cthis%2Eend%3Do%7D%2Co%2Eprototype%2EmoveTo%3Dfunction%28t%29%7Bvar%20e%3D%28this%2Estart%2Bthis%2Eend%29%2F2%2Ci%3De%2Dt%2Co%3Dthis%2Estart%2Di%2Cn%3Dthis%2Eend%2Di%3Bthis%2EsetRange%28o%2Cn%29%7D%2Ct%2Eexports%3Do%7D%2Cfunction%28t%2Ce%29%7Bfunction%20i%28t%2Ce%29%7Bthis%2Eoptions%3Dnull%2Cthis%2Eprops%3Dnull%7Di%2Eprototype%2EsetOptions%3Dfunction%28t%29%7Bt%26%26util%2Eextend%28this%2Eoptions%2Ct%29%7D%2Ci%2Eprototype%2Eredraw%3Dfunction%28%29%7Breturn%211%7D%2Ci%2Eprototype%2Edestroy%3Dfunction%28%29%7B%7D%2Ci%2Eprototype%2E%5FisResized%3Dfunction%28%29%7Bvar%20t%3Dthis%2Eprops%2E%5FpreviousWidth%21%3D%3Dthis%2Eprops%2Ewidth%7C%7Cthis%2Eprops%2E%5FpreviousHeight%21%3D%3Dthis%2Eprops%2Eheight%3Breturn%20this%2Eprops%2E%5FpreviousWidth%3Dthis%2Eprops%2Ewidth%2Cthis%2Eprops%2E%5FpreviousHeight%3Dthis%2Eprops%2Eheight%2Ct%7D%2Ct%2Eexports%3Di%7D%2Cfunction%28t%2Ce%29%7Be%2EconvertHiddenOptions%3Dfunction%28t%2Ci%2Co%29%7Bif%28o%26%26%21Array%2EisArray%28o%29%29return%20e%2EconvertHiddenOptions%28t%2Ci%2C%5Bo%5D%29%3Bif%28i%2EhiddenDates%3D%5B%5D%2Co%26%261%3D%3DArray%2EisArray%28o%29%29%7Bfor%28var%20n%3D0%3Bn%3Co%2Elength%3Bn%2B%2B%29if%28void%200%3D%3D%3Do%5Bn%5D%2Erepeat%29%7Bvar%20s%3D%7B%7D%3Bs%2Estart%3Dt%28o%5Bn%5D%2Estart%29%2EtoDate%28%29%2EvalueOf%28%29%2Cs%2Eend%3Dt%28o%5Bn%5D%2Eend%29%2EtoDate%28%29%2EvalueOf%28%29%2Ci%2EhiddenDates%2Epush%28s%29%7Di%2EhiddenDates%2Esort%28function%28t%2Ce%29%7Breturn%20t%2Estart%2De%2Estart%7D%29%7D%7D%2Ce%2EupdateHiddenDates%3Dfunction%28t%2Ci%2Co%29%7Bif%28o%26%26%21Array%2EisArray%28o%29%29return%20e%2EupdateHiddenDates%28t%2Ci%2C%5Bo%5D%29%3Bif%28o%26%26void%200%21%3D%3Di%2EdomProps%2EcenterContainer%2Ewidth%29%7Be%2EconvertHiddenOptions%28t%2Ci%2Co%29%3Bfor%28var%20n%3Dt%28i%2Erange%2Estart%29%2Cs%3Dt%28i%2Erange%2Eend%29%2Cr%3Di%2Erange%2Eend%2Di%2Erange%2Estart%2Ca%3Dr%2Fi%2EdomProps%2EcenterContainer%2Ewidth%2Ch%3D0%3Bh%3Co%2Elength%3Bh%2B%2B%29if%28void%200%21%3D%3Do%5Bh%5D%2Erepeat%29%7Bvar%20d%3Dt%28o%5Bh%5D%2Estart%29%2Cl%3Dt%28o%5Bh%5D%2Eend%29%3Bif%28%22Invalid%20Date%22%3D%3Dd%2E%5Fd%29throw%20new%20Error%28%22Supplied%20start%20date%20is%20not%20valid%3A%20%22%2Bo%5Bh%5D%2Estart%29%3Bif%28%22Invalid%20Date%22%3D%3Dl%2E%5Fd%29throw%20new%20Error%28%22Supplied%20end%20date%20is%20not%20valid%3A%20%22%2Bo%5Bh%5D%2Eend%29%3Bvar%20c%3Dl%2Dd%3Bif%28c%3E%3D4%2Aa%29%7Bvar%20u%3D0%2Cp%3Ds%2Eclone%28%29%3Bswitch%28o%5Bh%5D%2Erepeat%29%7Bcase%22daily%22%3Ad%2Eday%28%29%21%3Dl%2Eday%28%29%26%26%28u%3D1%29%2Cd%2EdayOfYear%28n%2EdayOfYear%28%29%29%2Cd%2Eyear%28n%2Eyear%28%29%29%2Cd%2Esubtract%287%2C%22days%22%29%2Cl%2EdayOfYear%28n%2EdayOfYear%28%29%29%2Cl%2Eyear%28n%2Eyear%28%29%29%2Cl%2Esubtract%287%2Du%2C%22days%22%29%2Cp%2Eadd%281%2C%22weeks%22%29%3Bbreak%3Bcase%22weekly%22%3Avar%20f%3Dl%2Ediff%28d%2C%22days%22%29%2Cm%3Dd%2Eday%28%29%3Bd%2Edate%28n%2Edate%28%29%29%2Cd%2Emonth%28n%2Emonth%28%29%29%2Cd%2Eyear%28n%2Eyear%28%29%29%2Cl%3Dd%2Eclone%28%29%2Cd%2Eday%28m%29%2Cl%2Eday%28m%29%2Cl%2Eadd%28f%2C%22days%22%29%2Cd%2Esubtract%281%2C%22weeks%22%29%2Cl%2Esubtract%281%2C%22weeks%22%29%2Cp%2Eadd%281%2C%22weeks%22%29%3Bbreak%3Bcase%22monthly%22%3Ad%2Emonth%28%29%21%3Dl%2Emonth%28%29%26%26%28u%3D1%29%2Cd%2Emonth%28n%2Emonth%28%29%29%2Cd%2Eyear%28n%2Eyear%28%29%29%2Cd%2Esubtract%281%2C%22months%22%29%2Cl%2Emonth%28n%2Emonth%28%29%29%2Cl%2Eyear%28n%2Eyear%28%29%29%2Cl%2Esubtract%281%2C%22months%22%29%2Cl%2Eadd%28u%2C%22months%22%29%2Cp%2Eadd%281%2C%22months%22%29%3Bbreak%3Bcase%22yearly%22%3Ad%2Eyear%28%29%21%3Dl%2Eyear%28%29%26%26%28u%3D1%29%2Cd%2Eyear%28n%2Eyear%28%29%29%2Cd%2Esubtract%281%2C%22years%22%29%2Cl%2Eyear%28n%2Eyear%28%29%29%2Cl%2Esubtract%281%2C%22years%22%29%2Cl%2Eadd%28u%2C%22years%22%29%2Cp%2Eadd%281%2C%22years%22%29%3Bbreak%3Bdefault%3Areturn%20void%20console%2Elog%28%22Wrong%20repeat%20format%2C%20allowed%20are%3A%20daily%2C%20weekly%2C%20monthly%2C%20yearly%2E%20Given%3A%22%2Co%5Bh%5D%2Erepeat%29%7Dfor%28%3Bp%3Ed%3B%29switch%28i%2EhiddenDates%2Epush%28%7Bstart%3Ad%2EvalueOf%28%29%2Cend%3Al%2EvalueOf%28%29%7D%29%2Co%5Bh%5D%2Erepeat%29%7Bcase%22daily%22%3Ad%2Eadd%281%2C%22days%22%29%2Cl%2Eadd%281%2C%22days%22%29%3Bbreak%3Bcase%22weekly%22%3Ad%2Eadd%281%2C%22weeks%22%29%2Cl%2Eadd%281%2C%22weeks%22%29%3Bbreak%3Bcase%22monthly%22%3Ad%2Eadd%281%2C%22months%22%29%2Cl%2Eadd%281%2C%22months%22%29%3Bbreak%3Bcase%22yearly%22%3Ad%2Eadd%281%2C%22y%22%29%2Cl%2Eadd%281%2C%22y%22%29%3Bbreak%3Bdefault%3Areturn%20void%20console%2Elog%28%22Wrong%20repeat%20format%2C%20allowed%20are%3A%20daily%2C%20weekly%2C%20monthly%2C%20yearly%2E%20Given%3A%22%2Co%5Bh%5D%2Erepeat%29%7Di%2EhiddenDates%2Epush%28%7Bstart%3Ad%2EvalueOf%28%29%2Cend%3Al%2EvalueOf%28%29%7D%29%7D%7De%2EremoveDuplicates%28i%29%3Bvar%20v%3De%2EisHidden%28i%2Erange%2Estart%2Ci%2EhiddenDates%29%2Cg%3De%2EisHidden%28i%2Erange%2Eend%2Ci%2EhiddenDates%29%2Cy%3Di%2Erange%2Estart%2Cb%3Di%2Erange%2Eend%3B1%3D%3Dv%2Ehidden%26%26%28y%3D1%3D%3Di%2Erange%2EstartToFront%3Fv%2EstartDate%2D1%3Av%2EendDate%2B1%29%2C1%3D%3Dg%2Ehidden%26%26%28b%3D1%3D%3Di%2Erange%2EendToFront%3Fg%2EstartDate%2D1%3Ag%2EendDate%2B1%29%2C1%21%3Dv%2Ehidden%26%261%21%3Dg%2Ehidden%7C%7Ci%2Erange%2E%5FapplyRange%28y%2Cb%29%7D%7D%2Ce%2EremoveDuplicates%3Dfunction%28t%29%7Bfor%28var%20e%3Dt%2EhiddenDates%2Ci%3D%5B%5D%2Co%3D0%3Bo%3Ce%2Elength%3Bo%2B%2B%29for%28var%20n%3D0%3Bn%3Ce%2Elength%3Bn%2B%2B%29o%21%3Dn%26%261%21%3De%5Bn%5D%2Eremove%26%261%21%3De%5Bo%5D%2Eremove%26%26%28e%5Bn%5D%2Estart%3E%3De%5Bo%5D%2Estart%26%26e%5Bn%5D%2Eend%3C%3De%5Bo%5D%2Eend%3Fe%5Bn%5D%2Eremove%3D%210%3Ae%5Bn%5D%2Estart%3E%3De%5Bo%5D%2Estart%26%26e%5Bn%5D%2Estart%3C%3De%5Bo%5D%2Eend%3F%28e%5Bo%5D%2Eend%3De%5Bn%5D%2Eend%2Ce%5Bn%5D%2Eremove%3D%210%29%3Ae%5Bn%5D%2Eend%3E%3De%5Bo%5D%2Estart%26%26e%5Bn%5D%2Eend%3C%3De%5Bo%5D%2Eend%26%26%28e%5Bo%5D%2Estart%3De%5Bn%5D%2Estart%2Ce%5Bn%5D%2Eremove%3D%210%29%29%3Bfor%28var%20o%3D0%3Bo%3Ce%2Elength%3Bo%2B%2B%29e%5Bo%5D%2Eremove%21%3D%3D%210%26%26i%2Epush%28e%5Bo%5D%29%3Bt%2EhiddenDates%3Di%2Ct%2EhiddenDates%2Esort%28function%28t%2Ce%29%7Breturn%20t%2Estart%2De%2Estart%7D%29%7D%2Ce%2EprintDates%3Dfunction%28t%29%7Bfor%28var%20e%3D0%3Be%3Ct%2Elength%3Be%2B%2B%29console%2Elog%28e%2Cnew%20Date%28t%5Be%5D%2Estart%29%2Cnew%20Date%28t%5Be%5D%2Eend%29%2Ct%5Be%5D%2Estart%2Ct%5Be%5D%2Eend%2Ct%5Be%5D%2Eremove%29%7D%2Ce%2EstepOverHiddenDates%3Dfunction%28t%2Ce%2Ci%29%7Bfor%28var%20o%3D%211%2Cn%3De%2Ecurrent%2EvalueOf%28%29%2Cs%3D0%3Bs%3Ce%2EhiddenDates%2Elength%3Bs%2B%2B%29%7Bvar%20r%3De%2EhiddenDates%5Bs%5D%2Estart%2Ca%3De%2EhiddenDates%5Bs%5D%2Eend%3Bif%28n%3E%3Dr%26%26a%3En%29%7Bo%3D%210%3Bbreak%7D%7Dif%281%3D%3Do%26%26n%3Ce%2E%5Fend%2EvalueOf%28%29%26%26n%21%3Di%29%7Bvar%20h%3Dt%28i%29%2Cd%3Dt%28a%29%3Bh%2Eyear%28%29%21%3Dd%2Eyear%28%29%3Fe%2EswitchedYear%3D%210%3Ah%2Emonth%28%29%21%3Dd%2Emonth%28%29%3Fe%2EswitchedMonth%3D%210%3Ah%2EdayOfYear%28%29%21%3Dd%2EdayOfYear%28%29%26%26%28e%2EswitchedDay%3D%210%29%2Ce%2Ecurrent%3Dd%7D%7D%2Ce%2EtoScreen%3Dfunction%28t%2Ci%2Co%29%7Bif%280%3D%3Dt%2Ebody%2EhiddenDates%2Elength%29%7Bvar%20n%3Dt%2Erange%2Econversion%28o%29%3Breturn%28i%2EvalueOf%28%29%2Dn%2Eoffset%29%2An%2Escale%7Dvar%20s%3De%2EisHidden%28i%2Ct%2Ebody%2EhiddenDates%29%3B1%3D%3Ds%2Ehidden%26%26%28i%3Ds%2EstartDate%29%3Bvar%20r%3De%2EgetHiddenDurationBetween%28t%2Ebody%2EhiddenDates%2Ct%2Erange%2Estart%2Ct%2Erange%2Eend%29%3Bi%3De%2EcorrectTimeForHidden%28t%2Eoptions%2Emoment%2Ct%2Ebody%2EhiddenDates%2Ct%2Erange%2Ci%29%3Bvar%20n%3Dt%2Erange%2Econversion%28o%2Cr%29%3Breturn%28i%2EvalueOf%28%29%2Dn%2Eoffset%29%2An%2Escale%7D%2Ce%2EtoTime%3Dfunction%28t%2Ci%2Co%29%7Bif%280%3D%3Dt%2Ebody%2EhiddenDates%2Elength%29%7Bvar%20n%3Dt%2Erange%2Econversion%28o%29%3Breturn%20new%20Date%28i%2Fn%2Escale%2Bn%2Eoffset%29%7Dvar%20s%3De%2EgetHiddenDurationBetween%28t%2Ebody%2EhiddenDates%2Ct%2Erange%2Estart%2Ct%2Erange%2Eend%29%2Cr%3Dt%2Erange%2Eend%2Dt%2Erange%2Estart%2Ds%2Ca%3Dr%2Ai%2Fo%2Ch%3De%2EgetAccumulatedHiddenDuration%28t%2Ebody%2EhiddenDates%2Ct%2Erange%2Ca%29%2Cd%3Dnew%20Date%28h%2Ba%2Bt%2Erange%2Estart%29%3Breturn%20d%7D%2Ce%2EgetHiddenDurationBetween%3Dfunction%28t%2Ce%2Ci%29%7Bfor%28var%20o%3D0%2Cn%3D0%3Bn%3Ct%2Elength%3Bn%2B%2B%29%7Bvar%20s%3Dt%5Bn%5D%2Estart%2Cr%3Dt%5Bn%5D%2Eend%3Bs%3E%3De%26%26i%3Er%26%26%28o%2B%3Dr%2Ds%29%7Dreturn%20o%7D%2Ce%2EcorrectTimeForHidden%3Dfunction%28t%2Ci%2Co%2Cn%29%7Breturn%20n%3Dt%28n%29%2EtoDate%28%29%2EvalueOf%28%29%2Cn%2D%3De%2EgetHiddenDurationBefore%28t%2Ci%2Co%2Cn%29%7D%2Ce%2EgetHiddenDurationBefore%3Dfunction%28t%2Ce%2Ci%2Co%29%7Bvar%20n%3D0%3Bo%3Dt%28o%29%2EtoDate%28%29%2EvalueOf%28%29%3Bfor%28var%20s%3D0%3Bs%3Ce%2Elength%3Bs%2B%2B%29%7Bvar%20r%3De%5Bs%5D%2Estart%2Ca%3De%5Bs%5D%2Eend%3Br%3E%3Di%2Estart%26%26a%3Ci%2Eend%26%26o%3E%3Da%26%26%28n%2B%3Da%2Dr%29%7Dreturn%20n%7D%2Ce%2EgetAccumulatedHiddenDuration%3Dfunction%28t%2Ce%2Ci%29%7Bfor%28var%20o%3D0%2Cn%3D0%2Cs%3De%2Estart%2Cr%3D0%3Br%3Ct%2Elength%3Br%2B%2B%29%7Bvar%20a%3Dt%5Br%5D%2Estart%2Ch%3Dt%5Br%5D%2Eend%3Bif%28a%3E%3De%2Estart%26%26h%3Ce%2Eend%29%7Bif%28n%2B%3Da%2Ds%2Cs%3Dh%2Cn%3E%3Di%29break%3Bo%2B%3Dh%2Da%7D%7Dreturn%20o%7D%2Ce%2EsnapAwayFromHidden%3Dfunction%28t%2Ci%2Co%2Cn%29%7Bvar%20s%3De%2EisHidden%28i%2Ct%29%3Breturn%201%3D%3Ds%2Ehidden%3F0%3Eo%3F1%3D%3Dn%3Fs%2EstartDate%2D%28s%2EendDate%2Di%29%2D1%3As%2EstartDate%2D1%3A1%3D%3Dn%3Fs%2EendDate%2B%28i%2Ds%2EstartDate%29%2B1%3As%2EendDate%2B1%3Ai%7D%2Ce%2EisHidden%3Dfunction%28t%2Ce%29%7Bfor%28var%20i%3D0%3Bi%3Ce%2Elength%3Bi%2B%2B%29%7Bvar%20o%3De%5Bi%5D%2Estart%2Cn%3De%5Bi%5D%2Eend%3Bif%28t%3E%3Do%26%26n%3Et%29return%7Bhidden%3A%210%2CstartDate%3Ao%2CendDate%3An%7D%7Dreturn%7Bhidden%3A%211%2CstartDate%3Ao%2CendDate%3An%7D%7D%7D%2Cfunction%28t%2Ce%2Ci%29%7Bfunction%20o%28%29%7B%7Dvar%20n%3D%22function%22%3D%3Dtypeof%20Symbol%26%26%22symbol%22%3D%3Dtypeof%20Symbol%2Eiterator%3Ffunction%28t%29%7Breturn%20typeof%20t%7D%3Afunction%28t%29%7Breturn%20t%26%26%22function%22%3D%3Dtypeof%20Symbol%26%26t%2Econstructor%3D%3D%3DSymbol%3F%22symbol%22%3Atypeof%20t%7D%2Cs%3Di%2813%29%2Cr%3Di%2820%29%2Ca%3Di%2828%29%2Ch%3Di%281%29%2Cd%3D%28i%289%29%2Ci%2811%29%2Ci%2830%29%2Ci%2834%29%2Ci%2844%29%29%2Cl%3Di%2845%29%2Cc%3Di%2832%29%2Cu%3Di%2846%29%3Bs%28o%2Eprototype%29%2Co%2Eprototype%2E%5Fcreate%3Dfunction%28t%29%7Bfunction%20e%28t%29%7Bi%2EisActive%28%29%26%26i%2Eemit%28%22mousewheel%22%2Ct%29%7Dthis%2Edom%3D%7B%7D%2Cthis%2Edom%2Econtainer%3Dt%2Cthis%2Edom%2Eroot%3Ddocument%2EcreateElement%28%22div%22%29%2Cthis%2Edom%2Ebackground%3Ddocument%2EcreateElement%28%22div%22%29%2Cthis%2Edom%2EbackgroundVertical%3Ddocument%2EcreateElement%28%22div%22%29%2Cthis%2Edom%2EbackgroundHorizontal%3Ddocument%2EcreateElement%28%22div%22%29%2Cthis%2Edom%2EcenterContainer%3Ddocument%2EcreateElement%28%22div%22%29%2Cthis%2Edom%2EleftContainer%3Ddocument%2EcreateElement%28%22div%22%29%2Cthis%2Edom%2ErightContainer%3Ddocument%2EcreateElement%28%22div%22%29%2Cthis%2Edom%2Ecenter%3Ddocument%2EcreateElement%28%22div%22%29%2Cthis%2Edom%2Eleft%3Ddocument%2EcreateElement%28%22div%22%29%2Cthis%2Edom%2Eright%3Ddocument%2EcreateElement%28%22div%22%29%2Cthis%2Edom%2Etop%3Ddocument%2EcreateElement%28%22div%22%29%2Cthis%2Edom%2Ebottom%3Ddocument%2EcreateElement%28%22div%22%29%2Cthis%2Edom%2EshadowTop%3Ddocument%2EcreateElement%28%22div%22%29%2Cthis%2Edom%2EshadowBottom%3Ddocument%2EcreateElement%28%22div%22%29%2Cthis%2Edom%2EshadowTopLeft%3Ddocument%2EcreateElement%28%22div%22%29%2Cthis%2Edom%2EshadowBottomLeft%3Ddocument%2EcreateElement%28%22div%22%29%2Cthis%2Edom%2EshadowTopRight%3Ddocument%2EcreateElement%28%22div%22%29%2Cthis%2Edom%2EshadowBottomRight%3Ddocument%2EcreateElement%28%22div%22%29%2Cthis%2Edom%2Eroot%2EclassName%3D%22vis%2Dtimeline%22%2Cthis%2Edom%2Ebackground%2EclassName%3D%22vis%2Dpanel%20vis%2Dbackground%22%2Cthis%2Edom%2EbackgroundVertical%2EclassName%3D%22vis%2Dpanel%20vis%2Dbackground%20vis%2Dvertical%22%2Cthis%2Edom%2EbackgroundHorizontal%2EclassName%3D%22vis%2Dpanel%20vis%2Dbackground%20vis%2Dhorizontal%22%2Cthis%2Edom%2EcenterContainer%2EclassName%3D%22vis%2Dpanel%20vis%2Dcenter%22%2Cthis%2Edom%2EleftContainer%2EclassName%3D%22vis%2Dpanel%20vis%2Dleft%22%2Cthis%2Edom%2ErightContainer%2EclassName%3D%22vis%2Dpanel%20vis%2Dright%22%2Cthis%2Edom%2Etop%2EclassName%3D%22vis%2Dpanel%20vis%2Dtop%22%2Cthis%2Edom%2Ebottom%2EclassName%3D%22vis%2Dpanel%20vis%2Dbottom%22%2Cthis%2Edom%2Eleft%2EclassName%3D%22vis%2Dcontent%22%2Cthis%2Edom%2Ecenter%2EclassName%3D%22vis%2Dcontent%22%2Cthis%2Edom%2Eright%2EclassName%3D%22vis%2Dcontent%22%2Cthis%2Edom%2EshadowTop%2EclassName%3D%22vis%2Dshadow%20vis%2Dtop%22%2Cthis%2Edom%2EshadowBottom%2EclassName%3D%22vis%2Dshadow%20vis%2Dbottom%22%2Cthis%2Edom%2EshadowTopLeft%2EclassName%3D%22vis%2Dshadow%20vis%2Dtop%22%2Cthis%2Edom%2EshadowBottomLeft%2EclassName%3D%22vis%2Dshadow%20vis%2Dbottom%22%2Cthis%2Edom%2EshadowTopRight%2EclassName%3D%22vis%2Dshadow%20vis%2Dtop%22%2Cthis%2Edom%2EshadowBottomRight%2EclassName%3D%22vis%2Dshadow%20vis%2Dbottom%22%2Cthis%2Edom%2Eroot%2EappendChild%28this%2Edom%2Ebackground%29%2Cthis%2Edom%2Eroot%2EappendChild%28this%2Edom%2EbackgroundVertical%29%2Cthis%2Edom%2Eroot%2EappendChild%28this%2Edom%2EbackgroundHorizontal%29%2Cthis%2Edom%2Eroot%2EappendChild%28this%2Edom%2EcenterContainer%29%2Cthis%2Edom%2Eroot%2EappendChild%28this%2Edom%2EleftContainer%29%2Cthis%2Edom%2Eroot%2EappendChild%28this%2Edom%2ErightContainer%29%2Cthis%2Edom%2Eroot%2EappendChild%28this%2Edom%2Etop%29%2Cthis%2Edom%2Eroot%2EappendChild%28this%2Edom%2Ebottom%29%2Cthis%2Edom%2EcenterContainer%2EappendChild%28this%2Edom%2Ecenter%29%2Cthis%2Edom%2EleftContainer%2EappendChild%28this%2Edom%2Eleft%29%2Cthis%2Edom%2ErightContainer%2EappendChild%28this%2Edom%2Eright%29%2Cthis%2Edom%2EcenterContainer%2EappendChild%28this%2Edom%2EshadowTop%29%2Cthis%2Edom%2EcenterContainer%2EappendChild%28this%2Edom%2EshadowBottom%29%2Cthis%2Edom%2EleftContainer%2EappendChild%28this%2Edom%2EshadowTopLeft%29%2Cthis%2Edom%2EleftContainer%2EappendChild%28this%2Edom%2EshadowBottomLeft%29%2Cthis%2Edom%2ErightContainer%2EappendChild%28this%2Edom%2EshadowTopRight%29%2Cthis%2Edom%2ErightContainer%2EappendChild%28this%2Edom%2EshadowBottomRight%29%2Cthis%2Eon%28%22rangechange%22%2Cfunction%28%29%7Bthis%2EinitialDrawDone%3D%3D%3D%210%26%26this%2E%5Fredraw%28%29%7D%2Ebind%28this%29%29%2Cthis%2Eon%28%22touch%22%2Cthis%2E%5FonTouch%2Ebind%28this%29%29%2Cthis%2Eon%28%22pan%22%2Cthis%2E%5FonDrag%2Ebind%28this%29%29%3Bvar%20i%3Dthis%3Bthis%2Eon%28%22%5Fchange%22%2Cfunction%28t%29%7Bt%26%261%3D%3Dt%2Equeue%3Fi%2E%5FredrawTimer%7C%7C%28i%2E%5FredrawTimer%3DsetTimeout%28function%28%29%7Bi%2E%5FredrawTimer%3Dnull%2Ci%2E%5Fredraw%28%29%7D%2C0%29%29%3Ai%2E%5Fredraw%28%29%7D%29%2Cthis%2Ehammer%3Dnew%20r%28this%2Edom%2Eroot%29%3Bvar%20o%3Dthis%2Ehammer%2Eget%28%22pinch%22%29%2Eset%28%7Benable%3A%210%7D%29%3Ba%2EdisablePreventDefaultVertically%28o%29%2Cthis%2Ehammer%2Eget%28%22pan%22%29%2Eset%28%7Bthreshold%3A5%2Cdirection%3Ar%2EDIRECTION%5FHORIZONTAL%7D%29%2Cthis%2Elisteners%3D%7B%7D%3Bvar%20n%3D%5B%22tap%22%2C%22doubletap%22%2C%22press%22%2C%22pinch%22%2C%22pan%22%2C%22panstart%22%2C%22panmove%22%2C%22panend%22%5D%3Bif%28n%2EforEach%28function%28t%29%7Bvar%20e%3Dfunction%28e%29%7Bi%2EisActive%28%29%26%26i%2Eemit%28t%2Ce%29%7D%3Bi%2Ehammer%2Eon%28t%2Ce%29%2Ci%2Elisteners%5Bt%5D%3De%7D%29%2Ca%2EonTouch%28this%2Ehammer%2Cfunction%28t%29%7Bi%2Eemit%28%22touch%22%2Ct%29%7D%2Ebind%28this%29%29%2Ca%2EonRelease%28this%2Ehammer%2Cfunction%28t%29%7Bi%2Eemit%28%22release%22%2Ct%29%7D%2Ebind%28this%29%29%2Cthis%2Edom%2Eroot%2EaddEventListener%28%22mousewheel%22%2Ce%29%2Cthis%2Edom%2Eroot%2EaddEventListener%28%22DOMMouseScroll%22%2Ce%29%2Cthis%2Eprops%3D%7Broot%3A%7B%7D%2Cbackground%3A%7B%7D%2CcenterContainer%3A%7B%7D%2CleftContainer%3A%7B%7D%2CrightContainer%3A%7B%7D%2Ccenter%3A%7B%7D%2Cleft%3A%7B%7D%2Cright%3A%7B%7D%2Ctop%3A%7B%7D%2Cbottom%3A%7B%7D%2Cborder%3A%7B%7D%2CscrollTop%3A0%2CscrollTopMin%3A0%7D%2Cthis%2EcustomTimes%3D%5B%5D%2Cthis%2Etouch%3D%7B%7D%2Cthis%2EredrawCount%3D0%2Cthis%2EinitialDrawDone%3D%211%2C%21t%29throw%20new%20Error%28%22No%20container%20provided%22%29%3Bt%2EappendChild%28this%2Edom%2Eroot%29%7D%2Co%2Eprototype%2EsetOptions%3Dfunction%28t%29%7Bif%28t%29%7Bvar%20e%3D%5B%22width%22%2C%22height%22%2C%22minHeight%22%2C%22maxHeight%22%2C%22autoResize%22%2C%22start%22%2C%22end%22%2C%22clickToUse%22%2C%22dataAttributes%22%2C%22hiddenDates%22%2C%22locale%22%2C%22locales%22%2C%22moment%22%2C%22rtl%22%2C%22throttleRedraw%22%5D%3Bif%28h%2EselectiveExtend%28e%2Cthis%2Eoptions%2Ct%29%2Cthis%2Eoptions%2Ertl%29%7Bvar%20i%3Dthis%2Edom%2EleftContainer%3Bthis%2Edom%2EleftContainer%3Dthis%2Edom%2ErightContainer%2Cthis%2Edom%2ErightContainer%3Di%2Cthis%2Edom%2Econtainer%2Estyle%2Edirection%3D%22rtl%22%2Cthis%2Edom%2EbackgroundVertical%2EclassName%3D%22vis%2Dpanel%20vis%2Dbackground%20vis%2Dvertical%2Drtl%22%7Dif%28this%2Eoptions%2Eorientation%3D%7Bitem%3Avoid%200%2Caxis%3Avoid%200%7D%2C%22orientation%22in%20t%26%26%28%22string%22%3D%3Dtypeof%20t%2Eorientation%3Fthis%2Eoptions%2Eorientation%3D%7Bitem%3At%2Eorientation%2Caxis%3At%2Eorientation%7D%3A%22object%22%3D%3D%3Dn%28t%2Eorientation%29%26%26%28%22item%22in%20t%2Eorientation%26%26%28this%2Eoptions%2Eorientation%2Eitem%3Dt%2Eorientation%2Eitem%29%2C%22axis%22in%20t%2Eorientation%26%26%28this%2Eoptions%2Eorientation%2Eaxis%3Dt%2Eorientation%2Eaxis%29%29%29%2C%22both%22%3D%3D%3Dthis%2Eoptions%2Eorientation%2Eaxis%29%7Bif%28%21this%2EtimeAxis2%29%7Bvar%20o%3Dthis%2EtimeAxis2%3Dnew%20d%28this%2Ebody%29%3Bo%2EsetOptions%3Dfunction%28t%29%7Bvar%20e%3Dt%3Fh%2Eextend%28%7B%7D%2Ct%29%3A%7B%7D%3Be%2Eorientation%3D%22top%22%2Cd%2Eprototype%2EsetOptions%2Ecall%28o%2Ce%29%7D%2Cthis%2Ecomponents%2Epush%28o%29%7D%7Delse%20if%28this%2EtimeAxis2%29%7Bvar%20s%3Dthis%2Ecomponents%2EindexOf%28this%2EtimeAxis2%29%3B%2D1%21%3D%3Ds%26%26this%2Ecomponents%2Esplice%28s%2C1%29%2Cthis%2EtimeAxis2%2Edestroy%28%29%2Cthis%2EtimeAxis2%3Dnull%7Dif%28%22function%22%3D%3Dtypeof%20t%2EdrawPoints%26%26%28t%2EdrawPoints%3D%7BonRender%3At%2EdrawPoints%7D%29%2C%22hiddenDates%22in%20this%2Eoptions%26%26c%2EconvertHiddenOptions%28this%2Eoptions%2Emoment%2Cthis%2Ebody%2Cthis%2Eoptions%2EhiddenDates%29%2C%22clickToUse%22in%20t%26%26%28t%2EclickToUse%3Fthis%2Eactivator%7C%7C%28this%2Eactivator%3Dnew%20l%28this%2Edom%2Eroot%29%29%3Athis%2Eactivator%26%26%28this%2Eactivator%2Edestroy%28%29%2Cdelete%20this%2Eactivator%29%29%2C%22showCustomTime%22in%20t%29throw%20new%20Error%28%22Option%20%60showCustomTime%60%20is%20deprecated%2E%20Create%20a%20custom%20time%20bar%20via%20timeline%2EaddCustomTime%28time%20%5B%2C%20id%5D%29%22%29%3Bthis%2E%5FinitAutoResize%28%29%7Dif%28this%2Ecomponents%2EforEach%28function%28e%29%7Breturn%20e%2EsetOptions%28t%29%7D%29%2C%22configure%22in%20t%29%7Bthis%2Econfigurator%7C%7C%28this%2Econfigurator%3Dthis%2E%5FcreateConfigurator%28%29%29%2Cthis%2Econfigurator%2EsetOptions%28t%2Econfigure%29%3Bvar%20r%3Dh%2EdeepExtend%28%7B%7D%2Cthis%2Eoptions%29%3Bthis%2Ecomponents%2EforEach%28function%28t%29%7Bh%2EdeepExtend%28r%2Ct%2Eoptions%29%7D%29%2Cthis%2Econfigurator%2EsetModuleOptions%28%7Bglobal%3Ar%7D%29%7Dthis%2E%5ForigRedraw%3Fthis%2E%5Fredraw%28%29%3A%28this%2E%5ForigRedraw%3Dthis%2E%5Fredraw%2Ebind%28this%29%2Cthis%2E%5Fredraw%3Dh%2Ethrottle%28this%2E%5ForigRedraw%2Cthis%2Eoptions%2EthrottleRedraw%29%29%7D%2Co%2Eprototype%2EisActive%3Dfunction%28%29%7Breturn%21this%2Eactivator%7C%7Cthis%2Eactivator%2Eactive%7D%2Co%2Eprototype%2Edestroy%3Dfunction%28%29%7Bthis%2EsetItems%28null%29%2Cthis%2EsetGroups%28null%29%2Cthis%2Eoff%28%29%2Cthis%2E%5FstopAutoResize%28%29%2Cthis%2Edom%2Eroot%2EparentNode%26%26this%2Edom%2Eroot%2EparentNode%2EremoveChild%28this%2Edom%2Eroot%29%2Cthis%2Edom%3Dnull%2Cthis%2Eactivator%26%26%28this%2Eactivator%2Edestroy%28%29%2Cdelete%20this%2Eactivator%29%3Bfor%28var%20t%20in%20this%2Elisteners%29this%2Elisteners%2EhasOwnProperty%28t%29%26%26delete%20this%2Elisteners%5Bt%5D%3Bthis%2Elisteners%3Dnull%2Cthis%2Ehammer%3Dnull%2Cthis%2Ecomponents%2EforEach%28function%28t%29%7Breturn%20t%2Edestroy%28%29%7D%29%2Cthis%2Ebody%3Dnull%7D%2Co%2Eprototype%2EsetCustomTime%3Dfunction%28t%2Ce%29%7Bvar%20i%3Dthis%2EcustomTimes%2Efilter%28function%28t%29%7Breturn%20e%3D%3D%3Dt%2Eoptions%2Eid%7D%29%3Bif%280%3D%3D%3Di%2Elength%29throw%20new%20Error%28%22No%20custom%20time%20bar%20found%20with%20id%20%22%2BJSON%2Estringify%28e%29%29%3Bi%2Elength%3E0%26%26i%5B0%5D%2EsetCustomTime%28t%29%7D%2Co%2Eprototype%2EgetCustomTime%3Dfunction%28t%29%7Bvar%20e%3Dthis%2EcustomTimes%2Efilter%28function%28e%29%7Breturn%20e%2Eoptions%2Eid%3D%3D%3Dt%7D%29%3Bif%280%3D%3D%3De%2Elength%29throw%20new%20Error%28%22No%20custom%20time%20bar%20found%20with%20id%20%22%2BJSON%2Estringify%28t%29%29%3Breturn%20e%5B0%5D%2EgetCustomTime%28%29%7D%2Co%2Eprototype%2EsetCustomTimeTitle%3Dfunction%28t%2Ce%29%7Bvar%20i%3Dthis%2EcustomTimes%2Efilter%28function%28t%29%7Breturn%20t%2Eoptions%2Eid%3D%3D%3De%7D%29%3Bif%280%3D%3D%3Di%2Elength%29throw%20new%20Error%28%22No%20custom%20time%20bar%20found%20with%20id%20%22%2BJSON%2Estringify%28e%29%29%3Breturn%20i%2Elength%3E0%3Fi%5B0%5D%2EsetCustomTitle%28t%29%3Avoid%200%7D%2Co%2Eprototype%2EgetEventProperties%3Dfunction%28t%29%7Breturn%7Bevent%3At%7D%7D%2Co%2Eprototype%2EaddCustomTime%3Dfunction%28t%2Ce%29%7Bvar%20i%3Dvoid%200%21%3D%3Dt%3Fh%2Econvert%28t%2C%22Date%22%29%2EvalueOf%28%29%3Anew%20Date%2Co%3Dthis%2EcustomTimes%2Esome%28function%28t%29%7Breturn%20t%2Eoptions%2Eid%3D%3D%3De%7D%29%3Bif%28o%29throw%20new%20Error%28%22A%20custom%20time%20with%20id%20%22%2BJSON%2Estringify%28e%29%2B%22%20already%20exists%22%29%3Bvar%20n%3Dnew%20u%28this%2Ebody%2Ch%2Eextend%28%7B%7D%2Cthis%2Eoptions%2C%7Btime%3Ai%2Cid%3Ae%7D%29%29%3Breturn%20this%2EcustomTimes%2Epush%28n%29%2Cthis%2Ecomponents%2Epush%28n%29%2Cthis%2E%5Fredraw%28%29%2Ce%7D%2Co%2Eprototype%2EremoveCustomTime%3Dfunction%28t%29%7Bvar%20e%3Dthis%2EcustomTimes%2Efilter%28function%28e%29%7Breturn%20e%2Eoptions%2Eid%3D%3D%3Dt%7D%29%3Bif%280%3D%3D%3De%2Elength%29throw%20new%20Error%28%22No%20custom%20time%20bar%20found%20with%20id%20%22%2BJSON%2Estringify%28t%29%29%3Be%2EforEach%28function%28t%29%7Bthis%2EcustomTimes%2Esplice%28this%2EcustomTimes%2EindexOf%28t%29%2C1%29%2Cthis%2Ecomponents%2Esplice%28this%2Ecomponents%2EindexOf%28t%29%2C1%29%2Ct%2Edestroy%28%29%7D%2Ebind%28this%29%29%7D%2Co%2Eprototype%2EgetVisibleItems%3Dfunction%28%29%7Breturn%20this%2EitemSet%26%26this%2EitemSet%2EgetVisibleItems%28%29%7C%7C%5B%5D%7D%2Co%2Eprototype%2Efit%3Dfunction%28t%29%7Bvar%20e%3Dthis%2EgetDataRange%28%29%3Bif%28null%21%3D%3De%2Emin%7C%7Cnull%21%3D%3De%2Emax%29%7Bvar%20i%3De%2Emax%2De%2Emin%2Co%3Dnew%20Date%28e%2Emin%2EvalueOf%28%29%2D%2E01%2Ai%29%2Cn%3Dnew%20Date%28e%2Emax%2EvalueOf%28%29%2B%2E01%2Ai%29%2Cs%3Dt%26%26void%200%21%3D%3Dt%2Eanimation%3Ft%2Eanimation%3A%210%3Bthis%2Erange%2EsetRange%28o%2Cn%2Cs%29%7D%7D%2Co%2Eprototype%2EgetDataRange%3Dfunction%28%29%7Bthrow%20new%20Error%28%22Cannot%20invoke%20abstract%20method%20getDataRange%22%29%7D%2Co%2Eprototype%2EsetWindow%3Dfunction%28t%2Ce%2Ci%29%7Bvar%20o%3Bif%281%3D%3Darguments%2Elength%29%7Bvar%20n%3Darguments%5B0%5D%3Bo%3Dvoid%200%21%3D%3Dn%2Eanimation%3Fn%2Eanimation%3A%210%2Cthis%2Erange%2EsetRange%28n%2Estart%2Cn%2Eend%2Co%29%7Delse%20o%3Di%26%26void%200%21%3D%3Di%2Eanimation%3Fi%2Eanimation%3A%210%2Cthis%2Erange%2EsetRange%28t%2Ce%2Co%29%7D%2Co%2Eprototype%2EmoveTo%3Dfunction%28t%2Ce%29%7Bvar%20i%3Dthis%2Erange%2Eend%2Dthis%2Erange%2Estart%2Co%3Dh%2Econvert%28t%2C%22Date%22%29%2EvalueOf%28%29%2Cn%3Do%2Di%2F2%2Cs%3Do%2Bi%2F2%2Cr%3De%26%26void%200%21%3D%3De%2Eanimation%3Fe%2Eanimation%3A%210%3Bthis%2Erange%2EsetRange%28n%2Cs%2Cr%29%7D%2Co%2Eprototype%2EgetWindow%3Dfunction%28%29%7Bvar%20t%3Dthis%2Erange%2EgetRange%28%29%3Breturn%7Bstart%3Anew%20Date%28t%2Estart%29%2Cend%3Anew%20Date%28t%2Eend%29%7D%7D%2Co%2Eprototype%2Eredraw%3Dfunction%28%29%7Bthis%2E%5Fredraw%28%29%7D%2Co%2Eprototype%2E%5Fredraw%3Dfunction%28%29%7Bthis%2EredrawCount%2B%2B%3Bvar%20t%3D%211%2Ce%3Dthis%2Eoptions%2Ci%3Dthis%2Eprops%2Co%3Dthis%2Edom%3Bif%28o%26%26o%2Econtainer%26%260%21%3Do%2Eroot%2EoffsetWidth%29%7Bc%2EupdateHiddenDates%28this%2Eoptions%2Emoment%2Cthis%2Ebody%2Cthis%2Eoptions%2EhiddenDates%29%2C%22top%22%3D%3De%2Eorientation%3F%28h%2EaddClassName%28o%2Eroot%2C%22vis%2Dtop%22%29%2Ch%2EremoveClassName%28o%2Eroot%2C%22vis%2Dbottom%22%29%29%3A%28h%2EremoveClassName%28o%2Eroot%2C%22vis%2Dtop%22%29%2Ch%2EaddClassName%28o%2Eroot%2C%22vis%2Dbottom%22%29%29%2Co%2Eroot%2Estyle%2EmaxHeight%3Dh%2Eoption%2EasSize%28e%2EmaxHeight%2C%22%22%29%2Co%2Eroot%2Estyle%2EminHeight%3Dh%2Eoption%2EasSize%28e%2EminHeight%2C%22%22%29%2Co%2Eroot%2Estyle%2Ewidth%3Dh%2Eoption%2EasSize%28e%2Ewidth%2C%22%22%29%2Ci%2Eborder%2Eleft%3D%28o%2EcenterContainer%2EoffsetWidth%2Do%2EcenterContainer%2EclientWidth%29%2F2%2Ci%2Eborder%2Eright%3Di%2Eborder%2Eleft%2Ci%2Eborder%2Etop%3D%28o%2EcenterContainer%2EoffsetHeight%2Do%2EcenterContainer%2EclientHeight%29%2F2%2Ci%2Eborder%2Ebottom%3Di%2Eborder%2Etop%3Bvar%20n%3Do%2Eroot%2EoffsetHeight%2Do%2Eroot%2EclientHeight%2Cs%3Do%2Eroot%2EoffsetWidth%2Do%2Eroot%2EclientWidth%3B0%3D%3D%3Do%2EcenterContainer%2EclientHeight%26%26%28i%2Eborder%2Eleft%3Di%2Eborder%2Etop%2Ci%2Eborder%2Eright%3Di%2Eborder%2Eleft%29%2C0%3D%3D%3Do%2Eroot%2EclientHeight%26%26%28s%3Dn%29%2Ci%2Ecenter%2Eheight%3Do%2Ecenter%2EoffsetHeight%2Ci%2Eleft%2Eheight%3Do%2Eleft%2EoffsetHeight%2Ci%2Eright%2Eheight%3Do%2Eright%2EoffsetHeight%2Ci%2Etop%2Eheight%3Do%2Etop%2EclientHeight%7C%7C%2Di%2Eborder%2Etop%2Ci%2Ebottom%2Eheight%3Do%2Ebottom%2EclientHeight%7C%7C%2Di%2Eborder%2Ebottom%3Bvar%20a%3DMath%2Emax%28i%2Eleft%2Eheight%2Ci%2Ecenter%2Eheight%2Ci%2Eright%2Eheight%29%2Cd%3Di%2Etop%2Eheight%2Ba%2Bi%2Ebottom%2Eheight%2Bn%2Bi%2Eborder%2Etop%2Bi%2Eborder%2Ebottom%3Bo%2Eroot%2Estyle%2Eheight%3Dh%2Eoption%2EasSize%28e%2Eheight%2Cd%2B%22px%22%29%2Ci%2Eroot%2Eheight%3Do%2Eroot%2EoffsetHeight%2Ci%2Ebackground%2Eheight%3Di%2Eroot%2Eheight%2Dn%3Bvar%20l%3Di%2Eroot%2Eheight%2Di%2Etop%2Eheight%2Di%2Ebottom%2Eheight%2Dn%3Bi%2EcenterContainer%2Eheight%3Dl%2Ci%2EleftContainer%2Eheight%3Dl%2Ci%2ErightContainer%2Eheight%3Di%2EleftContainer%2Eheight%2Ci%2Eroot%2Ewidth%3Do%2Eroot%2EoffsetWidth%2Ci%2Ebackground%2Ewidth%3Di%2Eroot%2Ewidth%2Ds%2Ci%2Eleft%2Ewidth%3Do%2EleftContainer%2EclientWidth%7C%7C%2Di%2Eborder%2Eleft%2Ci%2EleftContainer%2Ewidth%3Di%2Eleft%2Ewidth%2Ci%2Eright%2Ewidth%3Do%2ErightContainer%2EclientWidth%7C%7C%2Di%2Eborder%2Eright%2Ci%2ErightContainer%2Ewidth%3Di%2Eright%2Ewidth%3Bvar%20u%3Di%2Eroot%2Ewidth%2Di%2Eleft%2Ewidth%2Di%2Eright%2Ewidth%2Ds%3Bi%2Ecenter%2Ewidth%3Du%2Ci%2EcenterContainer%2Ewidth%3Du%2Ci%2Etop%2Ewidth%3Du%2Ci%2Ebottom%2Ewidth%3Du%2Co%2Ebackground%2Estyle%2Eheight%3Di%2Ebackground%2Eheight%2B%22px%22%2Co%2EbackgroundVertical%2Estyle%2Eheight%3Di%2Ebackground%2Eheight%2B%22px%22%2Co%2EbackgroundHorizontal%2Estyle%2Eheight%3Di%2EcenterContainer%2Eheight%2B%22px%22%2Co%2EcenterContainer%2Estyle%2Eheight%3Di%2EcenterContainer%2Eheight%2B%22px%22%2Co%2EleftContainer%2Estyle%2Eheight%3Di%2EleftContainer%2Eheight%2B%22px%22%2Co%2ErightContainer%2Estyle%2Eheight%3Di%2ErightContainer%2Eheight%2B%22px%22%2Co%2Ebackground%2Estyle%2Ewidth%3Di%2Ebackground%2Ewidth%2B%22px%22%2Co%2EbackgroundVertical%2Estyle%2Ewidth%3Di%2EcenterContainer%2Ewidth%2B%22px%22%2Co%2EbackgroundHorizontal%2Estyle%2Ewidth%3Di%2Ebackground%2Ewidth%2B%22px%22%2Co%2EcenterContainer%2Estyle%2Ewidth%3Di%2Ecenter%2Ewidth%2B%22px%22%2Co%2Etop%2Estyle%2Ewidth%3Di%2Etop%2Ewidth%2B%22px%22%2Co%2Ebottom%2Estyle%2Ewidth%3Di%2Ebottom%2Ewidth%2B%22px%22%2Co%2Ebackground%2Estyle%2Eleft%3D%220%22%2Co%2Ebackground%2Estyle%2Etop%3D%220%22%2Co%2EbackgroundVertical%2Estyle%2Eleft%3Di%2Eleft%2Ewidth%2Bi%2Eborder%2Eleft%2B%22px%22%2Co%2EbackgroundVertical%2Estyle%2Etop%3D%220%22%2Co%2EbackgroundHorizontal%2Estyle%2Eleft%3D%220%22%2Co%2EbackgroundHorizontal%2Estyle%2Etop%3Di%2Etop%2Eheight%2B%22px%22%2Co%2EcenterContainer%2Estyle%2Eleft%3Di%2Eleft%2Ewidth%2B%22px%22%2Co%2EcenterContainer%2Estyle%2Etop%3Di%2Etop%2Eheight%2B%22px%22%2Co%2EleftContainer%2Estyle%2Eleft%3D%220%22%2Co%2EleftContainer%2Estyle%2Etop%3Di%2Etop%2Eheight%2B%22px%22%2Co%2ErightContainer%2Estyle%2Eleft%3Di%2Eleft%2Ewidth%2Bi%2Ecenter%2Ewidth%2B%22px%22%2Co%2ErightContainer%2Estyle%2Etop%3Di%2Etop%2Eheight%2B%22px%22%2Co%2Etop%2Estyle%2Eleft%3Di%2Eleft%2Ewidth%2B%22px%22%2Co%2Etop%2Estyle%2Etop%3D%220%22%2Co%2Ebottom%2Estyle%2Eleft%3Di%2Eleft%2Ewidth%2B%22px%22%2Co%2Ebottom%2Estyle%2Etop%3Di%2Etop%2Eheight%2Bi%2EcenterContainer%2Eheight%2B%22px%22%2Cthis%2E%5FupdateScrollTop%28%29%3Bvar%20p%3Dthis%2Eprops%2EscrollTop%3B%22top%22%21%3De%2Eorientation%2Eitem%26%26%28p%2B%3DMath%2Emax%28this%2Eprops%2EcenterContainer%2Eheight%2Dthis%2Eprops%2Ecenter%2Eheight%2Dthis%2Eprops%2Eborder%2Etop%2Dthis%2Eprops%2Eborder%2Ebottom%2C0%29%29%2Co%2Ecenter%2Estyle%2Eleft%3D%220%22%2Co%2Ecenter%2Estyle%2Etop%3Dp%2B%22px%22%2Co%2Eleft%2Estyle%2Eleft%3D%220%22%2Co%2Eleft%2Estyle%2Etop%3Dp%2B%22px%22%2Co%2Eright%2Estyle%2Eleft%3D%220%22%2Co%2Eright%2Estyle%2Etop%3Dp%2B%22px%22%3Bvar%20f%3D0%3D%3Dthis%2Eprops%2EscrollTop%3F%22hidden%22%3A%22%22%2Cm%3Dthis%2Eprops%2EscrollTop%3D%3Dthis%2Eprops%2EscrollTopMin%3F%22hidden%22%3A%22%22%3Bo%2EshadowTop%2Estyle%2Evisibility%3Df%2Co%2EshadowBottom%2Estyle%2Evisibility%3Dm%2Co%2EshadowTopLeft%2Estyle%2Evisibility%3Df%2Co%2EshadowBottomLeft%2Estyle%2Evisibility%3Dm%2Co%2EshadowTopRight%2Estyle%2Evisibility%3Df%2Co%2EshadowBottomRight%2Estyle%2Evisibility%3Dm%3Bvar%20v%3Dthis%2Eprops%2Ecenter%2Eheight%3Ethis%2Eprops%2EcenterContainer%2Eheight%3Bthis%2Ehammer%2Eget%28%22pan%22%29%2Eset%28%7Bdirection%3Av%3Fr%2EDIRECTION%5FALL%3Ar%2EDIRECTION%5FHORIZONTAL%7D%29%2Cthis%2Ecomponents%2EforEach%28function%28e%29%7Bt%3De%2Eredraw%28%29%7C%7Ct%7D%29%3Bvar%20g%3D5%3Bif%28t%29%7Bif%28this%2EredrawCount%3Cg%29return%20void%20this%2Ebody%2Eemitter%2Eemit%28%22%5Fchange%22%29%3Bconsole%2Elog%28%22WARNING%3A%20infinite%20loop%20in%20redraw%3F%22%29%7Delse%20this%2EredrawCount%3D0%3Bthis%2EinitialDrawDone%3D%210%2Cthis%2Ebody%2Eemitter%2Eemit%28%22changed%22%29%7D%7D%2Co%2Eprototype%2Erepaint%3Dfunction%28%29%7Bthrow%20new%20Error%28%22Function%20repaint%20is%20deprecated%2E%20Use%20redraw%20instead%2E%22%29%7D%2Co%2Eprototype%2EsetCurrentTime%3Dfunction%28t%29%7Bif%28%21this%2EcurrentTime%29throw%20new%20Error%28%22Option%20showCurrentTime%20must%20be%20true%22%29%3Bthis%2EcurrentTime%2EsetCurrentTime%28t%29%7D%2Co%2Eprototype%2EgetCurrentTime%3Dfunction%28%29%7Bif%28%21this%2EcurrentTime%29throw%20new%20Error%28%22Option%20showCurrentTime%20must%20be%20true%22%29%3Breturn%20this%2EcurrentTime%2EgetCurrentTime%28%29%7D%2Co%2Eprototype%2E%5FtoTime%3Dfunction%28t%29%7Breturn%20c%2EtoTime%28this%2Ct%2Cthis%2Eprops%2Ecenter%2Ewidth%29%7D%2Co%2Eprototype%2E%5FtoGlobalTime%3Dfunction%28t%29%7Breturn%20c%2EtoTime%28this%2Ct%2Cthis%2Eprops%2Eroot%2Ewidth%29%7D%2Co%2Eprototype%2E%5FtoScreen%3Dfunction%28t%29%7Breturn%20c%2EtoScreen%28this%2Ct%2Cthis%2Eprops%2Ecenter%2Ewidth%29%7D%2Co%2Eprototype%2E%5FtoGlobalScreen%3Dfunction%28t%29%7Breturn%20c%2EtoScreen%28this%2Ct%2Cthis%2Eprops%2Eroot%2Ewidth%29%7D%2Co%2Eprototype%2E%5FinitAutoResize%3Dfunction%28%29%7B1%3D%3Dthis%2Eoptions%2EautoResize%3Fthis%2E%5FstartAutoResize%28%29%3Athis%2E%5FstopAutoResize%28%29%7D%2Co%2Eprototype%2E%5FstartAutoResize%3Dfunction%28%29%7Bvar%20t%3Dthis%3Bthis%2E%5FstopAutoResize%28%29%2Cthis%2E%5FonResize%3Dfunction%28%29%7Breturn%201%21%3Dt%2Eoptions%2EautoResize%3Fvoid%20t%2E%5FstopAutoResize%28%29%3Avoid%28t%2Edom%2Eroot%26%26%28t%2Edom%2Eroot%2EoffsetWidth%3D%3Dt%2Eprops%2ElastWidth%26%26t%2Edom%2Eroot%2EoffsetHeight%3D%3Dt%2Eprops%2ElastHeight%7C%7C%28t%2Eprops%2ElastWidth%3Dt%2Edom%2Eroot%2EoffsetWidth%2Ct%2Eprops%2ElastHeight%3Dt%2Edom%2Eroot%2EoffsetHeight%2Ct%2Ebody%2Eemitter%2Eemit%28%22%5Fchange%22%29%29%29%29%7D%2Ch%2EaddEventListener%28window%2C%22resize%22%2Cthis%2E%5FonResize%29%2Ct%2Edom%2Eroot%26%26%28t%2Eprops%2ElastWidth%3Dt%2Edom%2Eroot%2EoffsetWidth%2Ct%2Eprops%2ElastHeight%3Dt%2Edom%2Eroot%2EoffsetHeight%29%2Cthis%2EwatchTimer%3DsetInterval%28this%2E%5FonResize%2C1e3%29%7D%2Co%2Eprototype%2E%5FstopAutoResize%3Dfunction%28%29%7Bthis%2EwatchTimer%26%26%28clearInterval%28this%2EwatchTimer%29%2Cthis%2EwatchTimer%3Dvoid%200%29%2Cthis%2E%5FonResize%26%26%28h%2EremoveEventListener%28window%2C%22resize%22%2Cthis%2E%5FonResize%29%2Cthis%2E%5FonResize%3Dnull%29%7D%2Co%2Eprototype%2E%5FonTouch%3Dfunction%28t%29%7Bthis%2Etouch%2EallowDragging%3D%210%2Cthis%2Etouch%2EinitialScrollTop%3Dthis%2Eprops%2EscrollTop%7D%2Co%2Eprototype%2E%5FonPinch%3Dfunction%28t%29%7Bthis%2Etouch%2EallowDragging%3D%211%7D%2Co%2Eprototype%2E%5FonDrag%3Dfunction%28t%29%7Bif%28this%2Etouch%2EallowDragging%29%7Bvar%20e%3Dt%2EdeltaY%2Ci%3Dthis%2E%5FgetScrollTop%28%29%2Co%3Dthis%2E%5FsetScrollTop%28this%2Etouch%2EinitialScrollTop%2Be%29%3Bo%21%3Di%26%26this%2Eemit%28%22verticalDrag%22%29%7D%7D%2Co%2Eprototype%2E%5FsetScrollTop%3Dfunction%28t%29%7Breturn%20this%2Eprops%2EscrollTop%3Dt%2Cthis%2E%5FupdateScrollTop%28%29%2Cthis%2Eprops%2EscrollTop%7D%2Co%2Eprototype%2E%5FupdateScrollTop%3Dfunction%28%29%7Bvar%20t%3DMath%2Emin%28this%2Eprops%2EcenterContainer%2Eheight%2Dthis%2Eprops%2Ecenter%2Eheight%2C0%29%3Breturn%20t%21%3Dthis%2Eprops%2EscrollTopMin%26%26%28%22top%22%21%3Dthis%2Eoptions%2Eorientation%2Eitem%26%26%28this%2Eprops%2EscrollTop%2B%3Dt%2Dthis%2Eprops%2EscrollTopMin%29%2Cthis%2Eprops%2EscrollTopMin%3Dt%29%2Cthis%2Eprops%2EscrollTop%3E0%26%26%28this%2Eprops%2EscrollTop%3D0%29%2Cthis%2Eprops%2EscrollTop%3Ct%26%26%28this%2Eprops%2EscrollTop%3Dt%29%2Cthis%2Eprops%2EscrollTop%7D%2Co%2Eprototype%2E%5FgetScrollTop%3Dfunction%28%29%7Breturn%20this%2Eprops%2EscrollTop%7D%2Co%2Eprototype%2E%5FcreateConfigurator%3Dfunction%28%29%7Bthrow%20new%20Error%28%22Cannot%20invoke%20abstract%20method%20%5FcreateConfigurator%22%29%7D%2Ct%2Eexports%3Do%7D%2Cfunction%28t%2Ce%2Ci%29%7Bfunction%20o%28t%2Ce%29%7Bthis%2Ebody%3Dt%2Cthis%2EdefaultOptions%3D%7Brtl%3A%211%2Ctype%3Anull%2Corientation%3A%7Bitem%3A%22bottom%22%7D%2Calign%3A%22auto%22%2Cstack%3A%210%2CgroupOrderSwap%3Afunction%28t%2Ce%2Ci%29%7Bvar%20o%3De%2Eorder%3Be%2Eorder%3Dt%2Eorder%2Ct%2Eorder%3Do%7D%2CgroupOrder%3A%22order%22%2Cselectable%3A%210%2Cmultiselect%3A%211%2CitemsAlwaysDraggable%3A%211%2Ceditable%3A%7BupdateTime%3A%211%2CupdateGroup%3A%211%2Cadd%3A%211%2Cremove%3A%211%7D%2CgroupEditable%3A%7Border%3A%211%2Cadd%3A%211%2Cremove%3A%211%7D%2Csnap%3Ad%2Esnap%2ConAdd%3Afunction%28t%2Ce%29%7Be%28t%29%7D%2ConUpdate%3Afunction%28t%2Ce%29%7Be%28t%29%7D%2ConMove%3Afunction%28t%2Ce%29%7Be%28t%29%7D%2ConRemove%3Afunction%28t%2Ce%29%7Be%28t%29%7D%2ConMoving%3Afunction%28t%2Ce%29%7Be%28t%29%7D%2ConAddGroup%3Afunction%28t%2Ce%29%7Be%28t%29%7D%2ConMoveGroup%3Afunction%28t%2Ce%29%7Be%28t%29%7D%2ConRemoveGroup%3Afunction%28t%2Ce%29%7Be%28t%29%7D%2Cmargin%3A%7Bitem%3A%7Bhorizontal%3A10%2Cvertical%3A10%7D%2Caxis%3A20%7D%7D%2Cthis%2Eoptions%3Dr%2Eextend%28%7B%7D%2Cthis%2EdefaultOptions%29%2Cthis%2EitemOptions%3D%7Btype%3A%7Bstart%3A%22Date%22%2Cend%3A%22Date%22%7D%7D%2Cthis%2Econversion%3D%7BtoScreen%3At%2Eutil%2EtoScreen%2CtoTime%3At%2Eutil%2EtoTime%7D%2Cthis%2Edom%3D%7B%7D%2Cthis%2Eprops%3D%7B%7D%2Cthis%2Ehammer%3Dnull%3Bvar%20i%3Dthis%3Bthis%2EitemsData%3Dnull%2Cthis%2EgroupsData%3Dnull%2Cthis%2EitemListeners%3D%7Badd%3Afunction%28t%2Ce%2Co%29%7Bi%2E%5FonAdd%28e%2Eitems%29%7D%2Cupdate%3Afunction%28t%2Ce%2Co%29%7Bi%2E%5FonUpdate%28e%2Eitems%29%7D%2Cremove%3Afunction%28t%2Ce%2Co%29%7Bi%2E%5FonRemove%28e%2Eitems%29%7D%7D%2Cthis%2EgroupListeners%3D%7Badd%3Afunction%28t%2Ce%2Co%29%7Bi%2E%5FonAddGroups%28e%2Eitems%29%7D%2Cupdate%3Afunction%28t%2Ce%2Co%29%7Bi%2E%5FonUpdateGroups%28e%2Eitems%29%7D%2Cremove%3Afunction%28t%2Ce%2Co%29%7Bi%2E%5FonRemoveGroups%28e%2Eitems%29%7D%7D%2Cthis%2Eitems%3D%7B%7D%2Cthis%2Egroups%3D%7B%7D%2Cthis%2EgroupIds%3D%5B%5D%2Cthis%2Eselection%3D%5B%5D%2Cthis%2EstackDirty%3D%210%2Cthis%2EtouchParams%3D%7B%7D%2Cthis%2EgroupTouchParams%3D%7B%7D%2Cthis%2E%5Fcreate%28%29%2Cthis%2EsetOptions%28e%29%7Dvar%20n%3D%22function%22%3D%3Dtypeof%20Symbol%26%26%22symbol%22%3D%3Dtypeof%20Symbol%2Eiterator%3Ffunction%28t%29%7Breturn%20typeof%20t%7D%3Afunction%28t%29%7Breturn%20t%26%26%22function%22%3D%3Dtypeof%20Symbol%26%26t%2Econstructor%3D%3D%3DSymbol%3F%22symbol%22%3Atypeof%20t%7D%2Cs%3Di%2820%29%2Cr%3Di%281%29%2Ca%3Di%289%29%2Ch%3Di%2811%29%2Cd%3Di%2835%29%2Cl%3Di%2831%29%2Cc%3Di%2836%29%2Cu%3Di%2840%29%2Cp%3Di%2841%29%2Cf%3Di%2842%29%2Cm%3Di%2838%29%2Cv%3Di%2843%29%2Cg%3D%22%5F%5Fungrouped%5F%5F%22%2Cy%3D%22%5F%5Fbackground%5F%5F%22%3Bo%2Eprototype%3Dnew%20l%2Co%2Etypes%3D%7Bbackground%3Av%2Cbox%3Ap%2Crange%3Am%2Cpoint%3Af%7D%2Co%2Eprototype%2E%5Fcreate%3Dfunction%28%29%7Bvar%20t%3Ddocument%2EcreateElement%28%22div%22%29%3Bt%2EclassName%3D%22vis%2Ditemset%22%2Ct%5B%22timeline%2Ditemset%22%5D%3Dthis%2Cthis%2Edom%2Eframe%3Dt%3Bvar%20e%3Ddocument%2EcreateElement%28%22div%22%29%3Be%2EclassName%3D%22vis%2Dbackground%22%2Ct%2EappendChild%28e%29%2Cthis%2Edom%2Ebackground%3De%3Bvar%20i%3Ddocument%2EcreateElement%28%22div%22%29%3Bi%2EclassName%3D%22vis%2Dforeground%22%2Ct%2EappendChild%28i%29%2Cthis%2Edom%2Eforeground%3Di%3Bvar%20o%3Ddocument%2EcreateElement%28%22div%22%29%3Bo%2EclassName%3D%22vis%2Daxis%22%2Cthis%2Edom%2Eaxis%3Do%3Bvar%20n%3Ddocument%2EcreateElement%28%22div%22%29%3Bn%2EclassName%3D%22vis%2Dlabelset%22%2Cthis%2Edom%2ElabelSet%3Dn%2Cthis%2E%5FupdateUngrouped%28%29%3Bvar%20r%3Dnew%20u%28y%2Cnull%2Cthis%29%3Br%2Eshow%28%29%2Cthis%2Egroups%5By%5D%3Dr%2Cthis%2Ehammer%3Dnew%20s%28this%2Ebody%2Edom%2EcenterContainer%29%2Cthis%2Ehammer%2Eon%28%22hammer%2Einput%22%2Cfunction%28t%29%7Bt%2EisFirst%26%26this%2E%5FonTouch%28t%29%7D%2Ebind%28this%29%29%2Cthis%2Ehammer%2Eon%28%22panstart%22%2Cthis%2E%5FonDragStart%2Ebind%28this%29%29%2Cthis%2Ehammer%2Eon%28%22panmove%22%2Cthis%2E%5FonDrag%2Ebind%28this%29%29%2Cthis%2Ehammer%2Eon%28%22panend%22%2Cthis%2E%5FonDragEnd%2Ebind%28this%29%29%2Cthis%2Ehammer%2Eget%28%22pan%22%29%2Eset%28%7Bthreshold%3A5%2Cdirection%3As%2EDIRECTION%5FHORIZONTAL%7D%29%2Cthis%2Ehammer%2Eon%28%22tap%22%2Cthis%2E%5FonSelectItem%2Ebind%28this%29%29%2Cthis%2Ehammer%2Eon%28%22press%22%2Cthis%2E%5FonMultiSelectItem%2Ebind%28this%29%29%2Cthis%2Ehammer%2Eon%28%22doubletap%22%2Cthis%2E%5FonAddItem%2Ebind%28this%29%29%2Cthis%2EgroupHammer%3Dnew%20s%28this%2Ebody%2Edom%2EleftContainer%29%2Cthis%2EgroupHammer%2Eon%28%22panstart%22%2Cthis%2E%5FonGroupDragStart%2Ebind%28this%29%29%2Cthis%2EgroupHammer%2Eon%28%22panmove%22%2Cthis%2E%5FonGroupDrag%2Ebind%28this%29%29%2Cthis%2EgroupHammer%2Eon%28%22panend%22%2Cthis%2E%5FonGroupDragEnd%2Ebind%28this%29%29%2Cthis%2EgroupHammer%2Eget%28%22pan%22%29%2Eset%28%7Bthreshold%3A5%2Cdirection%3As%2EDIRECTION%5FHORIZONTAL%7D%29%2Cthis%2Eshow%28%29%7D%2Co%2Eprototype%2EsetOptions%3Dfunction%28t%29%7Bif%28t%29%7Bvar%20e%3D%5B%22type%22%2C%22rtl%22%2C%22align%22%2C%22order%22%2C%22stack%22%2C%22selectable%22%2C%22multiselect%22%2C%22itemsAlwaysDraggable%22%2C%22multiselectPerGroup%22%2C%22groupOrder%22%2C%22dataAttributes%22%2C%22template%22%2C%22groupTemplate%22%2C%22hide%22%2C%22snap%22%2C%22groupOrderSwap%22%5D%3Br%2EselectiveExtend%28e%2Cthis%2Eoptions%2Ct%29%2C%22orientation%22in%20t%26%26%28%22string%22%3D%3Dtypeof%20t%2Eorientation%3Fthis%2Eoptions%2Eorientation%2Eitem%3D%22top%22%3D%3D%3Dt%2Eorientation%3F%22top%22%3A%22bottom%22%3A%22object%22%3D%3D%3Dn%28t%2Eorientation%29%26%26%22item%22in%20t%2Eorientation%26%26%28this%2Eoptions%2Eorientation%2Eitem%3Dt%2Eorientation%2Eitem%29%29%2C%22margin%22in%20t%26%26%28%22number%22%3D%3Dtypeof%20t%2Emargin%3F%28this%2Eoptions%2Emargin%2Eaxis%3Dt%2Emargin%2Cthis%2Eoptions%2Emargin%2Eitem%2Ehorizontal%3Dt%2Emargin%2Cthis%2Eoptions%2Emargin%2Eitem%2Evertical%3Dt%2Emargin%29%3A%22object%22%3D%3D%3Dn%28t%2Emargin%29%26%26%28r%2EselectiveExtend%28%5B%22axis%22%5D%2Cthis%2Eoptions%2Emargin%2Ct%2Emargin%29%2C%22item%22in%20t%2Emargin%26%26%28%22number%22%3D%3Dtypeof%20t%2Emargin%2Eitem%3F%28this%2Eoptions%2Emargin%2Eitem%2Ehorizontal%3Dt%2Emargin%2Eitem%2Cthis%2Eoptions%2Emargin%2Eitem%2Evertical%3Dt%2Emargin%2Eitem%29%3A%22object%22%3D%3D%3Dn%28t%2Emargin%2Eitem%29%26%26r%2EselectiveExtend%28%5B%22horizontal%22%2C%22vertical%22%5D%2Cthis%2Eoptions%2Emargin%2Eitem%2Ct%2Emargin%2Eitem%29%29%29%29%2C%22editable%22in%20t%26%26%28%22boolean%22%3D%3Dtypeof%20t%2Eeditable%3F%28this%2Eoptions%2Eeditable%2EupdateTime%3Dt%2Eeditable%2Cthis%2Eoptions%2Eeditable%2EupdateGroup%3Dt%2Eeditable%2Cthis%2Eoptions%2Eeditable%2Eadd%3Dt%2Eeditable%2Cthis%2Eoptions%2Eeditable%2Eremove%3Dt%2Eeditable%29%3A%22object%22%3D%3D%3Dn%28t%2Eeditable%29%26%26r%2EselectiveExtend%28%5B%22updateTime%22%2C%22updateGroup%22%2C%22add%22%2C%22remove%22%5D%2Cthis%2Eoptions%2Eeditable%2Ct%2Eeditable%29%29%2C%22groupEditable%22in%20t%26%26%28%22boolean%22%3D%3Dtypeof%20t%2EgroupEditable%3F%28this%2Eoptions%2EgroupEditable%2Eorder%3Dt%2EgroupEditable%2Cthis%2Eoptions%2EgroupEditable%2Eadd%3Dt%2EgroupEditable%2Cthis%2Eoptions%2EgroupEditable%2Eremove%3Dt%2EgroupEditable%29%3A%22object%22%3D%3D%3Dn%28t%2EgroupEditable%29%26%26r%2EselectiveExtend%28%5B%22order%22%2C%22add%22%2C%22remove%22%5D%2Cthis%2Eoptions%2EgroupEditable%2Ct%2EgroupEditable%29%29%3Bvar%20i%3Dfunction%28e%29%7Bvar%20i%3Dt%5Be%5D%3Bif%28i%29%7Bif%28%21%28i%20instanceof%20Function%29%29throw%20new%20Error%28%22option%20%22%2Be%2B%22%20must%20be%20a%20function%20%22%2Be%2B%22%28item%2C%20callback%29%22%29%3Bthis%2Eoptions%5Be%5D%3Di%7D%7D%2Ebind%28this%29%3B%5B%22onAdd%22%2C%22onUpdate%22%2C%22onRemove%22%2C%22onMove%22%2C%22onMoving%22%2C%22onAddGroup%22%2C%22onMoveGroup%22%2C%22onRemoveGroup%22%5D%2EforEach%28i%29%2Cthis%2EmarkDirty%28%29%7D%7D%2Co%2Eprototype%2EmarkDirty%3Dfunction%28t%29%7Bthis%2EgroupIds%3D%5B%5D%2Cthis%2EstackDirty%3D%210%2Ct%26%26t%2ErefreshItems%26%26r%2EforEach%28this%2Eitems%2Cfunction%28t%29%7Bt%2Edirty%3D%210%2Ct%2Edisplayed%26%26t%2Eredraw%28%29%7D%29%7D%2Co%2Eprototype%2Edestroy%3Dfunction%28%29%7Bthis%2Ehide%28%29%2Cthis%2EsetItems%28null%29%2Cthis%2EsetGroups%28null%29%2Cthis%2Ehammer%3Dnull%2Cthis%2Ebody%3Dnull%2Cthis%2Econversion%3Dnull%7D%2Co%2Eprototype%2Ehide%3Dfunction%28%29%7Bthis%2Edom%2Eframe%2EparentNode%26%26this%2Edom%2Eframe%2EparentNode%2EremoveChild%28this%2Edom%2Eframe%29%2Cthis%2Edom%2Eaxis%2EparentNode%26%26this%2Edom%2Eaxis%2EparentNode%2EremoveChild%28this%2Edom%2Eaxis%29%2Cthis%2Edom%2ElabelSet%2EparentNode%26%26this%2Edom%2ElabelSet%2EparentNode%2EremoveChild%28this%2Edom%2ElabelSet%29%7D%2Co%2Eprototype%2Eshow%3Dfunction%28%29%7Bthis%2Edom%2Eframe%2EparentNode%7C%7Cthis%2Ebody%2Edom%2Ecenter%2EappendChild%28this%2Edom%2Eframe%29%2Cthis%2Edom%2Eaxis%2EparentNode%7C%7Cthis%2Ebody%2Edom%2EbackgroundVertical%2EappendChild%28this%2Edom%2Eaxis%29%2Cthis%2Edom%2ElabelSet%2EparentNode%7C%7Cthis%2Ebody%2Edom%2Eleft%2EappendChild%28this%2Edom%2ElabelSet%29%7D%2Co%2Eprototype%2EsetSelection%3Dfunction%28t%29%7Bvar%20e%2Ci%2Co%2Cn%3Bfor%28void%200%3D%3Dt%26%26%28t%3D%5B%5D%29%2CArray%2EisArray%28t%29%7C%7C%28t%3D%5Bt%5D%29%2Ce%3D0%2Ci%3Dthis%2Eselection%2Elength%3Bi%3Ee%3Be%2B%2B%29o%3Dthis%2Eselection%5Be%5D%2Cn%3Dthis%2Eitems%5Bo%5D%2Cn%26%26n%2Eunselect%28%29%3Bfor%28this%2Eselection%3D%5B%5D%2Ce%3D0%2Ci%3Dt%2Elength%3Bi%3Ee%3Be%2B%2B%29o%3Dt%5Be%5D%2Cn%3Dthis%2Eitems%5Bo%5D%2Cn%26%26%28this%2Eselection%2Epush%28o%29%2Cn%2Eselect%28%29%29%7D%2Co%2Eprototype%2EgetSelection%3Dfunction%28%29%7Breturn%20this%2Eselection%2Econcat%28%5B%5D%29%7D%2Co%2Eprototype%2EgetVisibleItems%3Dfunction%28%29%7Bvar%20t%3Dthis%2Ebody%2Erange%2EgetRange%28%29%3Bif%28this%2Eoptions%2Ertl%29var%20e%3Dthis%2Ebody%2Eutil%2EtoScreen%28t%2Estart%29%2Ci%3Dthis%2Ebody%2Eutil%2EtoScreen%28t%2Eend%29%3Belse%20var%20i%3Dthis%2Ebody%2Eutil%2EtoScreen%28t%2Estart%29%2Ce%3Dthis%2Ebody%2Eutil%2EtoScreen%28t%2Eend%29%3Bvar%20o%3D%5B%5D%3Bfor%28var%20n%20in%20this%2Egroups%29if%28this%2Egroups%2EhasOwnProperty%28n%29%29for%28var%20s%3Dthis%2Egroups%5Bn%5D%2Cr%3Ds%2EvisibleItems%2Ca%3D0%3Ba%3Cr%2Elength%3Ba%2B%2B%29%7Bvar%20h%3Dr%5Ba%5D%3Bthis%2Eoptions%2Ertl%3Fh%2Eright%3Ci%26%26h%2Eright%2Bh%2Ewidth%3Ee%26%26o%2Epush%28h%2Eid%29%3Ah%2Eleft%3Ce%26%26h%2Eleft%2Bh%2Ewidth%3Ei%26%26o%2Epush%28h%2Eid%29%7Dreturn%20o%7D%2Co%2Eprototype%2E%5Fdeselect%3Dfunction%28t%29%7Bfor%28var%20e%3Dthis%2Eselection%2Ci%3D0%2Co%3De%2Elength%3Bo%3Ei%3Bi%2B%2B%29if%28e%5Bi%5D%3D%3Dt%29%7Be%2Esplice%28i%2C1%29%3Bbreak%7D%7D%2Co%2Eprototype%2Eredraw%3Dfunction%28%29%7Bvar%20t%3Dthis%2Eoptions%2Emargin%2Ce%3Dthis%2Ebody%2Erange%2Ci%3Dr%2Eoption%2EasSize%2Co%3Dthis%2Eoptions%2Cn%3Do%2Eorientation%2Eitem%2Cs%3D%211%2Ca%3Dthis%2Edom%2Eframe%3Bthis%2Eprops%2Etop%3Dthis%2Ebody%2EdomProps%2Etop%2Eheight%2Bthis%2Ebody%2EdomProps%2Eborder%2Etop%2Cthis%2Eoptions%2Ertl%3Fthis%2Eprops%2Eright%3Dthis%2Ebody%2EdomProps%2Eright%2Ewidth%2Bthis%2Ebody%2EdomProps%2Eborder%2Eright%3Athis%2Eprops%2Eleft%3Dthis%2Ebody%2EdomProps%2Eleft%2Ewidth%2Bthis%2Ebody%2EdomProps%2Eborder%2Eleft%2Ca%2EclassName%3D%22vis%2Ditemset%22%2Cs%3Dthis%2E%5ForderGroups%28%29%7C%7Cs%3Bvar%20h%3De%2Eend%2De%2Estart%2Cd%3Dh%21%3Dthis%2ElastVisibleInterval%7C%7Cthis%2Eprops%2Ewidth%21%3Dthis%2Eprops%2ElastWidth%3Bd%26%26%28this%2EstackDirty%3D%210%29%2C%0Athis%2ElastVisibleInterval%3Dh%2Cthis%2Eprops%2ElastWidth%3Dthis%2Eprops%2Ewidth%3Bvar%20l%3Dthis%2EstackDirty%2Cc%3Dthis%2E%5FfirstGroup%28%29%2Cu%3D%7Bitem%3At%2Eitem%2Caxis%3At%2Eaxis%7D%2Cp%3D%7Bitem%3At%2Eitem%2Caxis%3At%2Eitem%2Evertical%2F2%7D%2Cf%3D0%2Cm%3Dt%2Eaxis%2Bt%2Eitem%2Evertical%3Breturn%20this%2Egroups%5By%5D%2Eredraw%28e%2Cp%2Cl%29%2Cr%2EforEach%28this%2Egroups%2Cfunction%28t%29%7Bvar%20i%3Dt%3D%3Dc%3Fu%3Ap%2Co%3Dt%2Eredraw%28e%2Ci%2Cl%29%3Bs%3Do%7C%7Cs%2Cf%2B%3Dt%2Eheight%7D%29%2Cf%3DMath%2Emax%28f%2Cm%29%2Cthis%2EstackDirty%3D%211%2Ca%2Estyle%2Eheight%3Di%28f%29%2Cthis%2Eprops%2Ewidth%3Da%2EoffsetWidth%2Cthis%2Eprops%2Eheight%3Df%2Cthis%2Edom%2Eaxis%2Estyle%2Etop%3Di%28%22top%22%3D%3Dn%3Fthis%2Ebody%2EdomProps%2Etop%2Eheight%2Bthis%2Ebody%2EdomProps%2Eborder%2Etop%3Athis%2Ebody%2EdomProps%2Etop%2Eheight%2Bthis%2Ebody%2EdomProps%2EcenterContainer%2Eheight%29%2Cthis%2Eoptions%2Ertl%3Fthis%2Edom%2Eaxis%2Estyle%2Eright%3D%220%22%3Athis%2Edom%2Eaxis%2Estyle%2Eleft%3D%220%22%2Cs%3Dthis%2E%5FisResized%28%29%7C%7Cs%7D%2Co%2Eprototype%2E%5FfirstGroup%3Dfunction%28%29%7Bvar%20t%3D%22top%22%3D%3Dthis%2Eoptions%2Eorientation%2Eitem%3F0%3Athis%2EgroupIds%2Elength%2D1%2Ce%3Dthis%2EgroupIds%5Bt%5D%2Ci%3Dthis%2Egroups%5Be%5D%7C%7Cthis%2Egroups%5Bg%5D%3Breturn%20i%7C%7Cnull%7D%2Co%2Eprototype%2E%5FupdateUngrouped%3Dfunction%28%29%7Bvar%20t%2Ce%2Ci%3Dthis%2Egroups%5Bg%5D%3Bthis%2Egroups%5By%5D%3Bif%28this%2EgroupsData%29%7Bif%28i%29%7Bi%2Ehide%28%29%2Cdelete%20this%2Egroups%5Bg%5D%3Bfor%28e%20in%20this%2Eitems%29if%28this%2Eitems%2EhasOwnProperty%28e%29%29%7Bt%3Dthis%2Eitems%5Be%5D%2Ct%2Eparent%26%26t%2Eparent%2Eremove%28t%29%3Bvar%20o%3Dthis%2E%5FgetGroupId%28t%2Edata%29%2Cn%3Dthis%2Egroups%5Bo%5D%3Bn%26%26n%2Eadd%28t%29%7C%7Ct%2Ehide%28%29%7D%7D%7Delse%20if%28%21i%29%7Bvar%20s%3Dnull%2Cr%3Dnull%3Bi%3Dnew%20c%28s%2Cr%2Cthis%29%2Cthis%2Egroups%5Bg%5D%3Di%3Bfor%28e%20in%20this%2Eitems%29this%2Eitems%2EhasOwnProperty%28e%29%26%26%28t%3Dthis%2Eitems%5Be%5D%2Ci%2Eadd%28t%29%29%3Bi%2Eshow%28%29%7D%7D%2Co%2Eprototype%2EgetLabelSet%3Dfunction%28%29%7Breturn%20this%2Edom%2ElabelSet%7D%2Co%2Eprototype%2EsetItems%3Dfunction%28t%29%7Bvar%20e%2Ci%3Dthis%2Co%3Dthis%2EitemsData%3Bif%28t%29%7Bif%28%21%28t%20instanceof%20a%7C%7Ct%20instanceof%20h%29%29throw%20new%20TypeError%28%22Data%20must%20be%20an%20instance%20of%20DataSet%20or%20DataView%22%29%3Bthis%2EitemsData%3Dt%7Delse%20this%2EitemsData%3Dnull%3Bif%28o%26%26%28r%2EforEach%28this%2EitemListeners%2Cfunction%28t%2Ce%29%7Bo%2Eoff%28e%2Ct%29%7D%29%2Ce%3Do%2EgetIds%28%29%2Cthis%2E%5FonRemove%28e%29%29%2Cthis%2EitemsData%29%7Bvar%20n%3Dthis%2Eid%3Br%2EforEach%28this%2EitemListeners%2Cfunction%28t%2Ce%29%7Bi%2EitemsData%2Eon%28e%2Ct%2Cn%29%7D%29%2Ce%3Dthis%2EitemsData%2EgetIds%28%29%2Cthis%2E%5FonAdd%28e%29%2Cthis%2E%5FupdateUngrouped%28%29%7Dthis%2Ebody%2Eemitter%2Eemit%28%22%5Fchange%22%2C%7Bqueue%3A%210%7D%29%7D%2Co%2Eprototype%2EgetItems%3Dfunction%28%29%7Breturn%20this%2EitemsData%7D%2Co%2Eprototype%2EsetGroups%3Dfunction%28t%29%7Bvar%20e%2Ci%3Dthis%3Bif%28this%2EgroupsData%26%26%28r%2EforEach%28this%2EgroupListeners%2Cfunction%28t%2Ce%29%7Bi%2EgroupsData%2Eoff%28e%2Ct%29%7D%29%2Ce%3Dthis%2EgroupsData%2EgetIds%28%29%2Cthis%2EgroupsData%3Dnull%2Cthis%2E%5FonRemoveGroups%28e%29%29%2Ct%29%7Bif%28%21%28t%20instanceof%20a%7C%7Ct%20instanceof%20h%29%29throw%20new%20TypeError%28%22Data%20must%20be%20an%20instance%20of%20DataSet%20or%20DataView%22%29%3Bthis%2EgroupsData%3Dt%7Delse%20this%2EgroupsData%3Dnull%3Bif%28this%2EgroupsData%29%7Bvar%20o%3Dthis%2Eid%3Br%2EforEach%28this%2EgroupListeners%2Cfunction%28t%2Ce%29%7Bi%2EgroupsData%2Eon%28e%2Ct%2Co%29%7D%29%2Ce%3Dthis%2EgroupsData%2EgetIds%28%29%2Cthis%2E%5FonAddGroups%28e%29%7Dthis%2E%5FupdateUngrouped%28%29%2Cthis%2E%5Forder%28%29%2Cthis%2Ebody%2Eemitter%2Eemit%28%22%5Fchange%22%2C%7Bqueue%3A%210%7D%29%7D%2Co%2Eprototype%2EgetGroups%3Dfunction%28%29%7Breturn%20this%2EgroupsData%7D%2Co%2Eprototype%2EremoveItem%3Dfunction%28t%29%7Bvar%20e%3Dthis%2EitemsData%2Eget%28t%29%2Ci%3Dthis%2EitemsData%2EgetDataSet%28%29%3Be%26%26this%2Eoptions%2EonRemove%28e%2Cfunction%28e%29%7Be%26%26i%2Eremove%28t%29%7D%29%7D%2Co%2Eprototype%2E%5FgetType%3Dfunction%28t%29%7Breturn%20t%2Etype%7C%7Cthis%2Eoptions%2Etype%7C%7C%28t%2Eend%3F%22range%22%3A%22box%22%29%7D%2Co%2Eprototype%2E%5FgetGroupId%3Dfunction%28t%29%7Bvar%20e%3Dthis%2E%5FgetType%28t%29%3Breturn%22background%22%3D%3De%26%26void%200%3D%3Dt%2Egroup%3Fy%3Athis%2EgroupsData%3Ft%2Egroup%3Ag%7D%2Co%2Eprototype%2E%5FonUpdate%3Dfunction%28t%29%7Bvar%20e%3Dthis%3Bt%2EforEach%28function%28t%29%7Bvar%20i%2Cn%3De%2EitemsData%2Eget%28t%2Ce%2EitemOptions%29%2Cs%3De%2Eitems%5Bt%5D%2Cr%3De%2E%5FgetType%28n%29%2Ca%3Do%2Etypes%5Br%5D%3Bif%28s%26%26%28a%26%26s%20instanceof%20a%3Fe%2E%5FupdateItem%28s%2Cn%29%3A%28i%3Ds%2Eselected%2Ce%2E%5FremoveItem%28s%29%2Cs%3Dnull%29%29%2C%21s%29%7Bif%28%21a%29throw%22rangeoverflow%22%3D%3Dr%3Fnew%20TypeError%28%27Item%20type%20%22rangeoverflow%22%20is%20deprecated%2E%20Use%20css%20styling%20instead%3A%20%2Evis%2Ditem%2Evis%2Drange%20%2Evis%2Ditem%2Dcontent%20%7Boverflow%3A%20visible%3B%7D%27%29%3Anew%20TypeError%28%27Unknown%20item%20type%20%22%27%2Br%2B%27%22%27%29%3Bs%3Dnew%20a%28n%2Ce%2Econversion%2Ce%2Eoptions%29%2Cs%2Eid%3Dt%2Ce%2E%5FaddItem%28s%29%2Ci%26%26%28this%2Eselection%2Epush%28t%29%2Cs%2Eselect%28%29%29%7D%7D%2Ebind%28this%29%29%2Cthis%2E%5Forder%28%29%2Cthis%2EstackDirty%3D%210%2Cthis%2Ebody%2Eemitter%2Eemit%28%22%5Fchange%22%2C%7Bqueue%3A%210%7D%29%7D%2Co%2Eprototype%2E%5FonAdd%3Do%2Eprototype%2E%5FonUpdate%2Co%2Eprototype%2E%5FonRemove%3Dfunction%28t%29%7Bvar%20e%3D0%2Ci%3Dthis%3Bt%2EforEach%28function%28t%29%7Bvar%20o%3Di%2Eitems%5Bt%5D%3Bo%26%26%28e%2B%2B%2Ci%2E%5FremoveItem%28o%29%29%7D%29%2Ce%26%26%28this%2E%5Forder%28%29%2Cthis%2EstackDirty%3D%210%2Cthis%2Ebody%2Eemitter%2Eemit%28%22%5Fchange%22%2C%7Bqueue%3A%210%7D%29%29%7D%2Co%2Eprototype%2E%5Forder%3Dfunction%28%29%7Br%2EforEach%28this%2Egroups%2Cfunction%28t%29%7Bt%2Eorder%28%29%7D%29%7D%2Co%2Eprototype%2E%5FonUpdateGroups%3Dfunction%28t%29%7Bthis%2E%5FonAddGroups%28t%29%7D%2Co%2Eprototype%2E%5FonAddGroups%3Dfunction%28t%29%7Bvar%20e%3Dthis%3Bt%2EforEach%28function%28t%29%7Bvar%20i%3De%2EgroupsData%2Eget%28t%29%2Co%3De%2Egroups%5Bt%5D%3Bif%28o%29o%2EsetData%28i%29%3Belse%7Bif%28t%3D%3Dg%7C%7Ct%3D%3Dy%29throw%20new%20Error%28%22Illegal%20group%20id%2E%20%22%2Bt%2B%22%20is%20a%20reserved%20id%2E%22%29%3Bvar%20n%3DObject%2Ecreate%28e%2Eoptions%29%3Br%2Eextend%28n%2C%7Bheight%3Anull%7D%29%2Co%3Dnew%20c%28t%2Ci%2Ce%29%2Ce%2Egroups%5Bt%5D%3Do%3Bfor%28var%20s%20in%20e%2Eitems%29if%28e%2Eitems%2EhasOwnProperty%28s%29%29%7Bvar%20a%3De%2Eitems%5Bs%5D%3Ba%2Edata%2Egroup%3D%3Dt%26%26o%2Eadd%28a%29%7Do%2Eorder%28%29%2Co%2Eshow%28%29%7D%7D%29%2Cthis%2Ebody%2Eemitter%2Eemit%28%22%5Fchange%22%2C%7Bqueue%3A%210%7D%29%7D%2Co%2Eprototype%2E%5FonRemoveGroups%3Dfunction%28t%29%7Bvar%20e%3Dthis%2Egroups%3Bt%2EforEach%28function%28t%29%7Bvar%20i%3De%5Bt%5D%3Bi%26%26%28i%2Ehide%28%29%2Cdelete%20e%5Bt%5D%29%7D%29%2Cthis%2EmarkDirty%28%29%2Cthis%2Ebody%2Eemitter%2Eemit%28%22%5Fchange%22%2C%7Bqueue%3A%210%7D%29%7D%2Co%2Eprototype%2E%5ForderGroups%3Dfunction%28%29%7Bif%28this%2EgroupsData%29%7Bvar%20t%3Dthis%2EgroupsData%2EgetIds%28%7Border%3Athis%2Eoptions%2EgroupOrder%7D%29%2Ce%3D%21r%2EequalArray%28t%2Cthis%2EgroupIds%29%3Bif%28e%29%7Bvar%20i%3Dthis%2Egroups%3Bt%2EforEach%28function%28t%29%7Bi%5Bt%5D%2Ehide%28%29%7D%29%2Ct%2EforEach%28function%28t%29%7Bi%5Bt%5D%2Eshow%28%29%7D%29%2Cthis%2EgroupIds%3Dt%7Dreturn%20e%7Dreturn%211%7D%2Co%2Eprototype%2E%5FaddItem%3Dfunction%28t%29%7Bthis%2Eitems%5Bt%2Eid%5D%3Dt%3Bvar%20e%3Dthis%2E%5FgetGroupId%28t%2Edata%29%2Ci%3Dthis%2Egroups%5Be%5D%3Bi%26%26i%2Eadd%28t%29%7D%2Co%2Eprototype%2E%5FupdateItem%3Dfunction%28t%2Ce%29%7Bvar%20i%3Dt%2Edata%2Egroup%2Co%3Dt%2Edata%2Esubgroup%3Bif%28t%2EsetData%28e%29%2Ci%21%3Dt%2Edata%2Egroup%7C%7Co%21%3Dt%2Edata%2Esubgroup%29%7Bvar%20n%3Dthis%2Egroups%5Bi%5D%3Bn%26%26n%2Eremove%28t%29%3Bvar%20s%3Dthis%2E%5FgetGroupId%28t%2Edata%29%2Cr%3Dthis%2Egroups%5Bs%5D%3Br%26%26r%2Eadd%28t%29%7D%7D%2Co%2Eprototype%2E%5FremoveItem%3Dfunction%28t%29%7Bt%2Ehide%28%29%2Cdelete%20this%2Eitems%5Bt%2Eid%5D%3Bvar%20e%3Dthis%2Eselection%2EindexOf%28t%2Eid%29%3B%2D1%21%3De%26%26this%2Eselection%2Esplice%28e%2C1%29%2Ct%2Eparent%26%26t%2Eparent%2Eremove%28t%29%7D%2Co%2Eprototype%2E%5FconstructByEndArray%3Dfunction%28t%29%7Bfor%28var%20e%3D%5B%5D%2Ci%3D0%3Bi%3Ct%2Elength%3Bi%2B%2B%29t%5Bi%5Dinstanceof%20m%26%26e%2Epush%28t%5Bi%5D%29%3Breturn%20e%7D%2Co%2Eprototype%2E%5FonTouch%3Dfunction%28t%29%7Bthis%2EtouchParams%2Eitem%3Dthis%2EitemFromTarget%28t%29%2Cthis%2EtouchParams%2EdragLeftItem%3Dt%2Etarget%2EdragLeftItem%7C%7C%211%2Cthis%2EtouchParams%2EdragRightItem%3Dt%2Etarget%2EdragRightItem%7C%7C%211%2Cthis%2EtouchParams%2EitemProps%3Dnull%7D%2Co%2Eprototype%2E%5FgetGroupIndex%3Dfunction%28t%29%7Bfor%28var%20e%3D0%3Be%3Cthis%2EgroupIds%2Elength%3Be%2B%2B%29if%28t%3D%3Dthis%2EgroupIds%5Be%5D%29return%20e%7D%2Co%2Eprototype%2E%5FonDragStart%3Dfunction%28t%29%7Bvar%20e%2Ci%3Dthis%2EtouchParams%2Eitem%7C%7Cnull%2Co%3Dthis%3Bif%28i%26%26%28i%2Eselected%7C%7Cthis%2Eoptions%2EitemsAlwaysDraggable%29%29%7Bif%28%21this%2Eoptions%2Eeditable%2EupdateTime%26%26%21this%2Eoptions%2Eeditable%2EupdateGroup%26%26%21i%2Eeditable%29return%3Bif%28i%2Eeditable%3D%3D%3D%211%29return%3Bvar%20n%3Dthis%2EtouchParams%2EdragLeftItem%2Cs%3Dthis%2EtouchParams%2EdragRightItem%3Bif%28n%29e%3D%7Bitem%3An%2CinitialX%3At%2Ecenter%2Ex%2CdragLeft%3A%210%2Cdata%3Athis%2E%5FcloneItemData%28i%2Edata%29%7D%2Cthis%2EtouchParams%2EitemProps%3D%5Be%5D%3Belse%20if%28s%29e%3D%7Bitem%3As%2CinitialX%3At%2Ecenter%2Ex%2CdragRight%3A%210%2Cdata%3Athis%2E%5FcloneItemData%28i%2Edata%29%7D%2Cthis%2EtouchParams%2EitemProps%3D%5Be%5D%3Belse%7Bthis%2EtouchParams%2EselectedItem%3Di%3Bvar%20r%3Dthis%2E%5FgetGroupIndex%28i%2Edata%2Egroup%29%2Ca%3Dthis%2Eoptions%2EitemsAlwaysDraggable%26%26%21i%2Eselected%3F%5Bi%2Eid%5D%3Athis%2EgetSelection%28%29%3Bthis%2EtouchParams%2EitemProps%3Da%2Emap%28function%28e%29%7Bvar%20i%3Do%2Eitems%5Be%5D%2Cn%3Do%2E%5FgetGroupIndex%28i%2Edata%2Egroup%29%3Breturn%7Bitem%3Ai%2CinitialX%3At%2Ecenter%2Ex%2CgroupOffset%3Ar%2Dn%2Cdata%3Athis%2E%5FcloneItemData%28i%2Edata%29%7D%7D%2Ebind%28this%29%29%7Dt%2EstopPropagation%28%29%7Delse%20this%2Eoptions%2Eeditable%2Eadd%26%26%28t%2EsrcEvent%2EctrlKey%7C%7Ct%2EsrcEvent%2EmetaKey%29%26%26this%2E%5FonDragStartAddItem%28t%29%7D%2Co%2Eprototype%2E%5FonDragStartAddItem%3Dfunction%28t%29%7Bvar%20e%3Dthis%2Eoptions%2Esnap%7C%7Cnull%3Bif%28this%2Eoptions%2Ertl%29var%20i%3Dr%2EgetAbsoluteRight%28this%2Edom%2Eframe%29%2Co%3Di%2Dt%2Ecenter%2Ex%2B10%3Belse%20var%20i%3Dr%2EgetAbsoluteLeft%28this%2Edom%2Eframe%29%2Co%3Dt%2Ecenter%2Ex%2Di%2D10%3Bvar%20n%3Dthis%2Ebody%2Eutil%2EtoTime%28o%29%2Cs%3Dthis%2Ebody%2Eutil%2EgetScale%28%29%2Ca%3Dthis%2Ebody%2Eutil%2EgetStep%28%29%2Ch%3De%3Fe%28n%2Cs%2Ca%29%3An%2Cd%3Dh%2Cl%3D%7Btype%3A%22range%22%2Cstart%3Ah%2Cend%3Ad%2Ccontent%3A%22new%20item%22%7D%2Cc%3Dr%2ErandomUUID%28%29%3Bl%5Bthis%2EitemsData%2E%5FfieldId%5D%3Dc%3Bvar%20u%3Dthis%2EgroupFromTarget%28t%29%3Bu%26%26%28l%2Egroup%3Du%2EgroupId%29%3Bvar%20p%3Dnew%20m%28l%2Cthis%2Econversion%2Cthis%2Eoptions%29%3Bp%2Eid%3Dc%2Cp%2Edata%3Dthis%2E%5FcloneItemData%28l%29%2Cthis%2E%5FaddItem%28p%29%3Bvar%20f%3D%7Bitem%3Ap%2CinitialX%3At%2Ecenter%2Ex%2Cdata%3Ap%2Edata%7D%3Bthis%2Eoptions%2Ertl%3Ff%2EdragLeft%3D%210%3Af%2EdragRight%3D%210%2Cthis%2EtouchParams%2EitemProps%3D%5Bf%5D%2Ct%2EstopPropagation%28%29%7D%2Co%2Eprototype%2E%5FonDrag%3Dfunction%28t%29%7Bif%28this%2EtouchParams%2EitemProps%29%7Bt%2EstopPropagation%28%29%3Bvar%20e%3Dthis%2Ci%3Dthis%2Eoptions%2Esnap%7C%7Cnull%3Bif%28this%2Eoptions%2Ertl%29var%20o%3Dthis%2Ebody%2Edom%2Eroot%2EoffsetLeft%2Bthis%2Ebody%2EdomProps%2Eright%2Ewidth%3Belse%20var%20o%3Dthis%2Ebody%2Edom%2Eroot%2EoffsetLeft%2Bthis%2Ebody%2EdomProps%2Eleft%2Ewidth%3Bvar%20n%3Dthis%2Ebody%2Eutil%2EgetScale%28%29%2Cs%3Dthis%2Ebody%2Eutil%2EgetStep%28%29%2Ca%3Dthis%2EtouchParams%2EselectedItem%2Ch%3De%2Eoptions%2Eeditable%2EupdateGroup%2Cd%3Dnull%3Bif%28h%26%26a%26%26void%200%21%3Da%2Edata%2Egroup%29%7Bvar%20l%3De%2EgroupFromTarget%28t%29%3Bl%26%26%28d%3Dthis%2E%5FgetGroupIndex%28l%2EgroupId%29%29%7Dthis%2EtouchParams%2EitemProps%2EforEach%28function%28a%29%7Bvar%20h%3De%2Ebody%2Eutil%2EtoTime%28t%2Ecenter%2Ex%2Do%29%2Cl%3De%2Ebody%2Eutil%2EtoTime%28a%2EinitialX%2Do%29%3Bif%28this%2Eoptions%2Ertl%29var%20c%3D%2D%28h%2Dl%29%3Belse%20var%20c%3Dh%2Dl%3Bvar%20u%3Dthis%2E%5FcloneItemData%28a%2Eitem%2Edata%29%3Bif%28a%2Eitem%2Eeditable%21%3D%3D%211%29%7Bvar%20p%3De%2Eoptions%2Eeditable%2EupdateTime%7C%7Ca%2Eitem%2Eeditable%3D%3D%3D%210%3Bif%28p%29if%28a%2EdragLeft%29%7Bif%28this%2Eoptions%2Ertl%29%7Bif%28void%200%21%3Du%2Eend%29%7Bvar%20f%3Dr%2Econvert%28a%2Edata%2Eend%2C%22Date%22%29%2Cm%3Dnew%20Date%28f%2EvalueOf%28%29%2Bc%29%3Bu%2Eend%3Di%3Fi%28m%2Cn%2Cs%29%3Am%7D%7Delse%20if%28void%200%21%3Du%2Estart%29%7Bvar%20v%3Dr%2Econvert%28a%2Edata%2Estart%2C%22Date%22%29%2Cg%3Dnew%20Date%28v%2EvalueOf%28%29%2Bc%29%3Bu%2Estart%3Di%3Fi%28g%2Cn%2Cs%29%3Ag%7D%7Delse%20if%28a%2EdragRight%29%7Bif%28this%2Eoptions%2Ertl%29%7Bif%28void%200%21%3Du%2Estart%29%7Bvar%20v%3Dr%2Econvert%28a%2Edata%2Estart%2C%22Date%22%29%2Cg%3Dnew%20Date%28v%2EvalueOf%28%29%2Bc%29%3Bu%2Estart%3Di%3Fi%28g%2Cn%2Cs%29%3Ag%7D%7Delse%20if%28void%200%21%3Du%2Eend%29%7Bvar%20f%3Dr%2Econvert%28a%2Edata%2Eend%2C%22Date%22%29%2Cm%3Dnew%20Date%28f%2EvalueOf%28%29%2Bc%29%3Bu%2Eend%3Di%3Fi%28m%2Cn%2Cs%29%3Am%7D%7Delse%20if%28void%200%21%3Du%2Estart%29%7Bvar%20v%3Dr%2Econvert%28a%2Edata%2Estart%2C%22Date%22%29%2EvalueOf%28%29%2Cg%3Dnew%20Date%28v%2Bc%29%3Bif%28void%200%21%3Du%2Eend%29%7Bvar%20f%3Dr%2Econvert%28a%2Edata%2Eend%2C%22Date%22%29%2Cy%3Df%2EvalueOf%28%29%2Dv%2EvalueOf%28%29%3Bu%2Estart%3Di%3Fi%28g%2Cn%2Cs%29%3Ag%2Cu%2Eend%3Dnew%20Date%28u%2Estart%2EvalueOf%28%29%2By%29%7Delse%20u%2Estart%3Di%3Fi%28g%2Cn%2Cs%29%3Ag%7Dvar%20b%3De%2Eoptions%2Eeditable%2EupdateGroup%7C%7Ca%2Eitem%2Eeditable%3D%3D%3D%210%3Bif%28b%26%26%21a%2EdragLeft%26%26%21a%2EdragRight%26%26null%21%3Dd%26%26void%200%21%3Du%2Egroup%29%7Bvar%20w%3Dd%2Da%2EgroupOffset%3Bw%3DMath%2Emax%280%2Cw%29%2Cw%3DMath%2Emin%28e%2EgroupIds%2Elength%2D1%2Cw%29%2Cu%2Egroup%3De%2EgroupIds%5Bw%5D%7Du%3Dthis%2E%5FcloneItemData%28u%29%2Ce%2Eoptions%2EonMoving%28u%2Cfunction%28t%29%7Bt%26%26a%2Eitem%2EsetData%28this%2E%5FcloneItemData%28t%2C%22Date%22%29%29%7D%2Ebind%28this%29%29%7D%7D%2Ebind%28this%29%29%2Cthis%2EstackDirty%3D%210%2Cthis%2Ebody%2Eemitter%2Eemit%28%22%5Fchange%22%29%7D%7D%2Co%2Eprototype%2E%5FmoveToGroup%3Dfunction%28t%2Ce%29%7Bvar%20i%3Dthis%2Egroups%5Be%5D%3Bif%28i%26%26i%2EgroupId%21%3Dt%2Edata%2Egroup%29%7Bvar%20o%3Dt%2Eparent%3Bo%2Eremove%28t%29%2Co%2Eorder%28%29%2Ci%2Eadd%28t%29%2Ci%2Eorder%28%29%2Ct%2Edata%2Egroup%3Di%2EgroupId%7D%7D%2Co%2Eprototype%2E%5FonDragEnd%3Dfunction%28t%29%7Bif%28this%2EtouchParams%2EitemProps%29%7Bt%2EstopPropagation%28%29%3Bvar%20e%3Dthis%2Ci%3Dthis%2EitemsData%2EgetDataSet%28%29%2Co%3Dthis%2EtouchParams%2EitemProps%3Bthis%2EtouchParams%2Ei