254 lines
49 KiB
HTML
254 lines
49 KiB
HTML
<!DOCTYPE html>
|
|
|
|
<html>
|
|
|
|
<head>
|
|
|
|
<meta charset="utf-8" />
|
|
<meta name="generator" content="pandoc" />
|
|
<meta http-equiv="X-UA-Compatible" content="IE=EDGE" />
|
|
|
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
|
|
<meta name="author" content="Jim Hester" />
|
|
|
|
<meta name="date" content="2021-11-24" />
|
|
|
|
<title>Server Log Parsing</title>
|
|
|
|
<script src="data:application/javascript;base64,Ly8gUGFuZG9jIDIuOSBhZGRzIGF0dHJpYnV0ZXMgb24gYm90aCBoZWFkZXIgYW5kIGRpdi4gV2UgcmVtb3ZlIHRoZSBmb3JtZXIgKHRvCi8vIGJlIGNvbXBhdGlibGUgd2l0aCB0aGUgYmVoYXZpb3Igb2YgUGFuZG9jIDwgMi44KS4KZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGZ1bmN0aW9uKGUpIHsKICB2YXIgaHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJkaXYuc2VjdGlvbltjbGFzcyo9J2xldmVsJ10gPiA6Zmlyc3QtY2hpbGQiKTsKICB2YXIgaSwgaCwgYTsKICBmb3IgKGkgPSAwOyBpIDwgaHMubGVuZ3RoOyBpKyspIHsKICAgIGggPSBoc1tpXTsKICAgIGlmICghL15oWzEtNl0kL2kudGVzdChoLnRhZ05hbWUpKSBjb250aW51ZTsgIC8vIGl0IHNob3VsZCBiZSBhIGhlYWRlciBoMS1oNgogICAgYSA9IGguYXR0cmlidXRlczsKICAgIHdoaWxlIChhLmxlbmd0aCA+IDApIGgucmVtb3ZlQXR0cmlidXRlKGFbMF0ubmFtZSk7CiAgfQp9KTsK"></script>
|
|
|
|
<style type="text/css">
|
|
code{white-space: pre-wrap;}
|
|
span.smallcaps{font-variant: small-caps;}
|
|
span.underline{text-decoration: underline;}
|
|
div.column{display: inline-block; vertical-align: top; width: 50%;}
|
|
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
|
|
ul.task-list{list-style: none;}
|
|
</style>
|
|
|
|
|
|
<style type="text/css">
|
|
code {
|
|
white-space: pre;
|
|
}
|
|
.sourceCode {
|
|
overflow: visible;
|
|
}
|
|
</style>
|
|
<style type="text/css" data-origin="pandoc">
|
|
pre > code.sourceCode { white-space: pre; position: relative; }
|
|
pre > code.sourceCode > span { display: inline-block; line-height: 1.25; }
|
|
pre > code.sourceCode > span:empty { height: 1.2em; }
|
|
.sourceCode { overflow: visible; }
|
|
code.sourceCode > span { color: inherit; text-decoration: inherit; }
|
|
div.sourceCode { margin: 1em 0; }
|
|
pre.sourceCode { margin: 0; }
|
|
@media screen {
|
|
div.sourceCode { overflow: auto; }
|
|
}
|
|
@media print {
|
|
pre > code.sourceCode { white-space: pre-wrap; }
|
|
pre > code.sourceCode > span { text-indent: -5em; padding-left: 5em; }
|
|
}
|
|
pre.numberSource code
|
|
{ counter-reset: source-line 0; }
|
|
pre.numberSource code > span
|
|
{ position: relative; left: -4em; counter-increment: source-line; }
|
|
pre.numberSource code > span > a:first-child::before
|
|
{ content: counter(source-line);
|
|
position: relative; left: -1em; text-align: right; vertical-align: baseline;
|
|
border: none; display: inline-block;
|
|
-webkit-touch-callout: none; -webkit-user-select: none;
|
|
-khtml-user-select: none; -moz-user-select: none;
|
|
-ms-user-select: none; user-select: none;
|
|
padding: 0 4px; width: 4em;
|
|
color: #aaaaaa;
|
|
}
|
|
pre.numberSource { margin-left: 3em; border-left: 1px solid #aaaaaa; padding-left: 4px; }
|
|
div.sourceCode
|
|
{ }
|
|
@media screen {
|
|
pre > code.sourceCode > span > a:first-child::before { text-decoration: underline; }
|
|
}
|
|
code span.al { color: #ff0000; font-weight: bold; } /* Alert */
|
|
code span.an { color: #60a0b0; font-weight: bold; font-style: italic; } /* Annotation */
|
|
code span.at { color: #7d9029; } /* Attribute */
|
|
code span.bn { color: #40a070; } /* BaseN */
|
|
code span.bu { } /* BuiltIn */
|
|
code span.cf { color: #007020; font-weight: bold; } /* ControlFlow */
|
|
code span.ch { color: #4070a0; } /* Char */
|
|
code span.cn { color: #880000; } /* Constant */
|
|
code span.co { color: #60a0b0; font-style: italic; } /* Comment */
|
|
code span.cv { color: #60a0b0; font-weight: bold; font-style: italic; } /* CommentVar */
|
|
code span.do { color: #ba2121; font-style: italic; } /* Documentation */
|
|
code span.dt { color: #902000; } /* DataType */
|
|
code span.dv { color: #40a070; } /* DecVal */
|
|
code span.er { color: #ff0000; font-weight: bold; } /* Error */
|
|
code span.ex { } /* Extension */
|
|
code span.fl { color: #40a070; } /* Float */
|
|
code span.fu { color: #06287e; } /* Function */
|
|
code span.im { } /* Import */
|
|
code span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Information */
|
|
code span.kw { color: #007020; font-weight: bold; } /* Keyword */
|
|
code span.op { color: #666666; } /* Operator */
|
|
code span.ot { color: #007020; } /* Other */
|
|
code span.pp { color: #bc7a00; } /* Preprocessor */
|
|
code span.sc { color: #4070a0; } /* SpecialChar */
|
|
code span.ss { color: #bb6688; } /* SpecialString */
|
|
code span.st { color: #4070a0; } /* String */
|
|
code span.va { color: #19177c; } /* Variable */
|
|
code span.vs { color: #4070a0; } /* VerbatimString */
|
|
code span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warning */
|
|
|
|
</style>
|
|
<script>
|
|
// apply pandoc div.sourceCode style to pre.sourceCode instead
|
|
(function() {
|
|
var sheets = document.styleSheets;
|
|
for (var i = 0; i < sheets.length; i++) {
|
|
if (sheets[i].ownerNode.dataset["origin"] !== "pandoc") continue;
|
|
try { var rules = sheets[i].cssRules; } catch (e) { continue; }
|
|
for (var j = 0; j < rules.length; j++) {
|
|
var rule = rules[j];
|
|
// check if there is a div.sourceCode rule
|
|
if (rule.type !== rule.STYLE_RULE || rule.selectorText !== "div.sourceCode") continue;
|
|
var style = rule.style.cssText;
|
|
// check if color or background-color is set
|
|
if (rule.style.color === '' && rule.style.backgroundColor === '') continue;
|
|
// replace div.sourceCode by a pre.sourceCode rule
|
|
sheets[i].deleteRule(j);
|
|
sheets[i].insertRule('pre.sourceCode{' + style + '}', j);
|
|
}
|
|
}
|
|
})();
|
|
</script>
|
|
|
|
|
|
|
|
|
|
<link rel="stylesheet" href="data:text/css,body%20%7B%0Abackground%2Dcolor%3A%20%23fff%3B%0Amargin%3A%201em%20auto%3B%0Amax%2Dwidth%3A%20700px%3B%0Aoverflow%3A%20visible%3B%0Apadding%2Dleft%3A%202em%3B%0Apadding%2Dright%3A%202em%3B%0Afont%2Dfamily%3A%20%22Open%20Sans%22%2C%20%22Helvetica%20Neue%22%2C%20Helvetica%2C%20Arial%2C%20sans%2Dserif%3B%0Afont%2Dsize%3A%2014px%3B%0Aline%2Dheight%3A%201%2E35%3B%0A%7D%0A%23TOC%20%7B%0Aclear%3A%20both%3B%0Amargin%3A%200%200%2010px%2010px%3B%0Apadding%3A%204px%3B%0Awidth%3A%20400px%3B%0Aborder%3A%201px%20solid%20%23CCCCCC%3B%0Aborder%2Dradius%3A%205px%3B%0Abackground%2Dcolor%3A%20%23f6f6f6%3B%0Afont%2Dsize%3A%2013px%3B%0Aline%2Dheight%3A%201%2E3%3B%0A%7D%0A%23TOC%20%2Etoctitle%20%7B%0Afont%2Dweight%3A%20bold%3B%0Afont%2Dsize%3A%2015px%3B%0Amargin%2Dleft%3A%205px%3B%0A%7D%0A%23TOC%20ul%20%7B%0Apadding%2Dleft%3A%2040px%3B%0Amargin%2Dleft%3A%20%2D1%2E5em%3B%0Amargin%2Dtop%3A%205px%3B%0Amargin%2Dbottom%3A%205px%3B%0A%7D%0A%23TOC%20ul%20ul%20%7B%0Amargin%2Dleft%3A%20%2D2em%3B%0A%7D%0A%23TOC%20li%20%7B%0Aline%2Dheight%3A%2016px%3B%0A%7D%0Atable%20%7B%0Amargin%3A%201em%20auto%3B%0Aborder%2Dwidth%3A%201px%3B%0Aborder%2Dcolor%3A%20%23DDDDDD%3B%0Aborder%2Dstyle%3A%20outset%3B%0Aborder%2Dcollapse%3A%20collapse%3B%0A%7D%0Atable%20th%20%7B%0Aborder%2Dwidth%3A%202px%3B%0Apadding%3A%205px%3B%0Aborder%2Dstyle%3A%20inset%3B%0A%7D%0Atable%20td%20%7B%0Aborder%2Dwidth%3A%201px%3B%0Aborder%2Dstyle%3A%20inset%3B%0Aline%2Dheight%3A%2018px%3B%0Apadding%3A%205px%205px%3B%0A%7D%0Atable%2C%20table%20th%2C%20table%20td%20%7B%0Aborder%2Dleft%2Dstyle%3A%20none%3B%0Aborder%2Dright%2Dstyle%3A%20none%3B%0A%7D%0Atable%20thead%2C%20table%20tr%2Eeven%20%7B%0Abackground%2Dcolor%3A%20%23f7f7f7%3B%0A%7D%0Ap%20%7B%0Amargin%3A%200%2E5em%200%3B%0A%7D%0Ablockquote%20%7B%0Abackground%2Dcolor%3A%20%23f6f6f6%3B%0Apadding%3A%200%2E25em%200%2E75em%3B%0A%7D%0Ahr%20%7B%0Aborder%2Dstyle%3A%20solid%3B%0Aborder%3A%20none%3B%0Aborder%2Dtop%3A%201px%20solid%20%23777%3B%0Amargin%3A%2028px%200%3B%0A%7D%0Adl%20%7B%0Amargin%2Dleft%3A%200%3B%0A%7D%0Adl%20dd%20%7B%0Amargin%2Dbottom%3A%2013px%3B%0Amargin%2Dleft%3A%2013px%3B%0A%7D%0Adl%20dt%20%7B%0Afont%2Dweight%3A%20bold%3B%0A%7D%0Aul%20%7B%0Amargin%2Dtop%3A%200%3B%0A%7D%0Aul%20li%20%7B%0Alist%2Dstyle%3A%20circle%20outside%3B%0A%7D%0Aul%20ul%20%7B%0Amargin%2Dbottom%3A%200%3B%0A%7D%0Apre%2C%20code%20%7B%0Abackground%2Dcolor%3A%20%23f7f7f7%3B%0Aborder%2Dradius%3A%203px%3B%0Acolor%3A%20%23333%3B%0Awhite%2Dspace%3A%20pre%2Dwrap%3B%20%0A%7D%0Apre%20%7B%0Aborder%2Dradius%3A%203px%3B%0Amargin%3A%205px%200px%2010px%200px%3B%0Apadding%3A%2010px%3B%0A%7D%0Apre%3Anot%28%5Bclass%5D%29%20%7B%0Abackground%2Dcolor%3A%20%23f7f7f7%3B%0A%7D%0Acode%20%7B%0Afont%2Dfamily%3A%20Consolas%2C%20Monaco%2C%20%27Courier%20New%27%2C%20monospace%3B%0Afont%2Dsize%3A%2085%25%3B%0A%7D%0Ap%20%3E%20code%2C%20li%20%3E%20code%20%7B%0Apadding%3A%202px%200px%3B%0A%7D%0Adiv%2Efigure%20%7B%0Atext%2Dalign%3A%20center%3B%0A%7D%0Aimg%20%7B%0Abackground%2Dcolor%3A%20%23FFFFFF%3B%0Apadding%3A%202px%3B%0Aborder%3A%201px%20solid%20%23DDDDDD%3B%0Aborder%2Dradius%3A%203px%3B%0Aborder%3A%201px%20solid%20%23CCCCCC%3B%0Amargin%3A%200%205px%3B%0A%7D%0Ah1%20%7B%0Amargin%2Dtop%3A%200%3B%0Afont%2Dsize%3A%2035px%3B%0Aline%2Dheight%3A%2040px%3B%0A%7D%0Ah2%20%7B%0Aborder%2Dbottom%3A%204px%20solid%20%23f7f7f7%3B%0Apadding%2Dtop%3A%2010px%3B%0Apadding%2Dbottom%3A%202px%3B%0Afont%2Dsize%3A%20145%25%3B%0A%7D%0Ah3%20%7B%0Aborder%2Dbottom%3A%202px%20solid%20%23f7f7f7%3B%0Apadding%2Dtop%3A%2010px%3B%0Afont%2Dsize%3A%20120%25%3B%0A%7D%0Ah4%20%7B%0Aborder%2Dbottom%3A%201px%20solid%20%23f7f7f7%3B%0Amargin%2Dleft%3A%208px%3B%0Afont%2Dsize%3A%20105%25%3B%0A%7D%0Ah5%2C%20h6%20%7B%0Aborder%2Dbottom%3A%201px%20solid%20%23ccc%3B%0Afont%2Dsize%3A%20105%25%3B%0A%7D%0Aa%20%7B%0Acolor%3A%20%230033dd%3B%0Atext%2Ddecoration%3A%20none%3B%0A%7D%0Aa%3Ahover%20%7B%0Acolor%3A%20%236666ff%3B%20%7D%0Aa%3Avisited%20%7B%0Acolor%3A%20%23800080%3B%20%7D%0Aa%3Avisited%3Ahover%20%7B%0Acolor%3A%20%23BB00BB%3B%20%7D%0Aa%5Bhref%5E%3D%22http%3A%22%5D%20%7B%0Atext%2Ddecoration%3A%20underline%3B%20%7D%0Aa%5Bhref%5E%3D%22https%3A%22%5D%20%7B%0Atext%2Ddecoration%3A%20underline%3B%20%7D%0A%0Acode%20%3E%20span%2Ekw%20%7B%20color%3A%20%23555%3B%20font%2Dweight%3A%20bold%3B%20%7D%20%0Acode%20%3E%20span%2Edt%20%7B%20color%3A%20%23902000%3B%20%7D%20%0Acode%20%3E%20span%2Edv%20%7B%20color%3A%20%2340a070%3B%20%7D%20%0Acode%20%3E%20span%2Ebn%20%7B%20color%3A%20%23d14%3B%20%7D%20%0Acode%20%3E%20span%2Efl%20%7B%20color%3A%20%23d14%3B%20%7D%20%0Acode%20%3E%20span%2Ech%20%7B%20color%3A%20%23d14%3B%20%7D%20%0Acode%20%3E%20span%2Est%20%7B%20color%3A%20%23d14%3B%20%7D%20%0Acode%20%3E%20span%2Eco%20%7B%20color%3A%20%23888888%3B%20font%2Dstyle%3A%20italic%3B%20%7D%20%0Acode%20%3E%20span%2Eot%20%7B%20color%3A%20%23007020%3B%20%7D%20%0Acode%20%3E%20span%2Eal%20%7B%20color%3A%20%23ff0000%3B%20font%2Dweight%3A%20bold%3B%20%7D%20%0Acode%20%3E%20span%2Efu%20%7B%20color%3A%20%23900%3B%20font%2Dweight%3A%20bold%3B%20%7D%20%0Acode%20%3E%20span%2Eer%20%7B%20color%3A%20%23a61717%3B%20background%2Dcolor%3A%20%23e3d2d2%3B%20%7D%20%0A" type="text/css" />
|
|
|
|
|
|
|
|
|
|
</head>
|
|
|
|
<body>
|
|
|
|
|
|
|
|
|
|
<h1 class="title toc-ignore">Server Log Parsing</h1>
|
|
<h4 class="author">Jim Hester</h4>
|
|
<h4 class="date">2021-11-24</h4>
|
|
|
|
|
|
|
|
<p>Parsing server log files is a common task in server administration. <a href="https://link.springer.com/article/10.1007/BF03325089">1</a>,<a href="https://stackoverflow.com/search?q=%22Apache+log%22">2</a> Historically R would not be well suited to this and it would be better performed using a scripting language such as perl. Rex, however, makes this easy to do and allows you to perform both the data cleaning and analysis in R!</p>
|
|
<p>Common server logs consist of space separated fields.</p>
|
|
<blockquote>
|
|
<p>198.214.42.14 - - [21/Jul/1995:14:31:46 -0400] “GET /images/ HTTP/1.0” 200 17688</p>
|
|
</blockquote>
|
|
<blockquote>
|
|
<p>lahal.ksc.nasa.gov - - [24/Jul/1995:12:42:40 -0400] “GET /images/USA-logosmall.gif HTTP/1.0” 200 234</p>
|
|
</blockquote>
|
|
<p>The logs used in this vignette come from two months of all HTTP requests to the NASA Kennedy Space Center WWW server in Florida and are freely available for use. <a href="https://web.archive.org/web/20181003084945/http://ita.ee.lbl.gov/html/contrib/NASA-HTTP.html">3</a></p>
|
|
<div class="sourceCode" id="cb1"><pre class="sourceCode r"><code class="sourceCode r"><span id="cb1-1"><a href="#cb1-1" aria-hidden="true" tabindex="-1"></a>parsed <span class="ot"><-</span> <span class="fu">scan</span>(<span class="st">"NASA.txt"</span>, <span class="at">what =</span> <span class="st">"character"</span>, <span class="at">sep =</span> <span class="st">"</span><span class="sc">\n</span><span class="st">"</span>) <span class="sc">%>%</span></span>
|
|
<span id="cb1-2"><a href="#cb1-2" aria-hidden="true" tabindex="-1"></a> <span class="fu">re_matches</span>(</span>
|
|
<span id="cb1-3"><a href="#cb1-3" aria-hidden="true" tabindex="-1"></a> <span class="fu">rex</span>(</span>
|
|
<span id="cb1-4"><a href="#cb1-4" aria-hidden="true" tabindex="-1"></a></span>
|
|
<span id="cb1-5"><a href="#cb1-5" aria-hidden="true" tabindex="-1"></a> <span class="co"># Get the time of the request</span></span>
|
|
<span id="cb1-6"><a href="#cb1-6" aria-hidden="true" tabindex="-1"></a> <span class="st">"["</span>,</span>
|
|
<span id="cb1-7"><a href="#cb1-7" aria-hidden="true" tabindex="-1"></a> <span class="fu">capture</span>(<span class="at">name =</span> <span class="st">"time"</span>,</span>
|
|
<span id="cb1-8"><a href="#cb1-8" aria-hidden="true" tabindex="-1"></a> <span class="fu">except_any_of</span>(<span class="st">"]"</span>)</span>
|
|
<span id="cb1-9"><a href="#cb1-9" aria-hidden="true" tabindex="-1"></a> ),</span>
|
|
<span id="cb1-10"><a href="#cb1-10" aria-hidden="true" tabindex="-1"></a> <span class="st">"]"</span>,</span>
|
|
<span id="cb1-11"><a href="#cb1-11" aria-hidden="true" tabindex="-1"></a></span>
|
|
<span id="cb1-12"><a href="#cb1-12" aria-hidden="true" tabindex="-1"></a> space, double_quote, <span class="st">"GET"</span>, space,</span>
|
|
<span id="cb1-13"><a href="#cb1-13" aria-hidden="true" tabindex="-1"></a></span>
|
|
<span id="cb1-14"><a href="#cb1-14" aria-hidden="true" tabindex="-1"></a> <span class="co"># Get the filetype of the request if requesting a file</span></span>
|
|
<span id="cb1-15"><a href="#cb1-15" aria-hidden="true" tabindex="-1"></a> <span class="fu">maybe</span>(</span>
|
|
<span id="cb1-16"><a href="#cb1-16" aria-hidden="true" tabindex="-1"></a> non_spaces, <span class="st">"."</span>,</span>
|
|
<span id="cb1-17"><a href="#cb1-17" aria-hidden="true" tabindex="-1"></a> <span class="fu">capture</span>(<span class="at">name =</span> <span class="st">"filetype"</span>,</span>
|
|
<span id="cb1-18"><a href="#cb1-18" aria-hidden="true" tabindex="-1"></a> <span class="fu">except_some_of</span>(space, <span class="st">"."</span>, <span class="st">"?"</span>, double_quote)</span>
|
|
<span id="cb1-19"><a href="#cb1-19" aria-hidden="true" tabindex="-1"></a> )</span>
|
|
<span id="cb1-20"><a href="#cb1-20" aria-hidden="true" tabindex="-1"></a> )</span>
|
|
<span id="cb1-21"><a href="#cb1-21" aria-hidden="true" tabindex="-1"></a> )</span>
|
|
<span id="cb1-22"><a href="#cb1-22" aria-hidden="true" tabindex="-1"></a> ) <span class="sc">%>%</span></span>
|
|
<span id="cb1-23"><a href="#cb1-23" aria-hidden="true" tabindex="-1"></a> <span class="fu">mutate</span>(<span class="at">filetype =</span> <span class="fu">tolower</span>(filetype),</span>
|
|
<span id="cb1-24"><a href="#cb1-24" aria-hidden="true" tabindex="-1"></a> <span class="at">time =</span> <span class="fu">as.POSIXct</span>(time, <span class="at">format=</span><span class="st">"%d/%b/%Y:%H:%M:%S %z"</span>))</span></code></pre></div>
|
|
<p>This gives us a nicely formatted data frame of the time and filetypes of the requests.</p>
|
|
<table>
|
|
<thead>
|
|
<tr class="header">
|
|
<th align="left">time</th>
|
|
<th align="left">filetype</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr class="odd">
|
|
<td align="left">1995-07-21 14:31:46</td>
|
|
<td align="left"></td>
|
|
</tr>
|
|
<tr class="even">
|
|
<td align="left">1995-07-24 12:42:40</td>
|
|
<td align="left">gif</td>
|
|
</tr>
|
|
<tr class="odd">
|
|
<td align="left">1995-07-02 02:30:34</td>
|
|
<td align="left">gif</td>
|
|
</tr>
|
|
<tr class="even">
|
|
<td align="left">1995-07-05 13:51:39</td>
|
|
<td align="left"></td>
|
|
</tr>
|
|
<tr class="odd">
|
|
<td align="left">1995-07-10 23:11:49</td>
|
|
<td align="left">gif</td>
|
|
</tr>
|
|
<tr class="even">
|
|
<td align="left">1995-07-15 11:27:49</td>
|
|
<td align="left">mpg</td>
|
|
</tr>
|
|
<tr class="odd">
|
|
<td align="left">1995-07-13 11:02:50</td>
|
|
<td align="left">xbm</td>
|
|
</tr>
|
|
<tr class="even">
|
|
<td align="left">1995-07-23 09:11:06</td>
|
|
<td align="left"></td>
|
|
</tr>
|
|
<tr class="odd">
|
|
<td align="left">1995-07-14 10:38:04</td>
|
|
<td align="left">gif</td>
|
|
</tr>
|
|
<tr class="even">
|
|
<td align="left">1995-07-25 09:33:01</td>
|
|
<td align="left">gif</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<p>We can also easily generate a histogram of the filetypes, or a plot of requests over time.</p>
|
|
<div class="sourceCode" id="cb2"><pre class="sourceCode r"><code class="sourceCode r"><span id="cb2-1"><a href="#cb2-1" aria-hidden="true" tabindex="-1"></a><span class="fu">ggplot</span>(<span class="fu">na.omit</span>(parsed)) <span class="sc">+</span> <span class="fu">stat_count</span>(<span class="fu">aes</span>(<span class="at">x=</span>filetype))</span>
|
|
<span id="cb2-2"><a href="#cb2-2" aria-hidden="true" tabindex="-1"></a><span class="fu">ggplot</span>(<span class="fu">na.omit</span>(parsed)) <span class="sc">+</span> <span class="fu">geom_histogram</span>(<span class="fu">aes</span>(<span class="at">x=</span>time)) <span class="sc">+</span> <span class="fu">ggtitle</span>(<span class="st">"Requests over time"</span>)</span></code></pre></div>
|
|
<p><img src="data:image/png;base64,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4F533XXmzjvv3G6/NoiACIhAIQKRHkQsZIBJqP/4xz8KRdE+ERABEchJIHIL6PnnnzdbtmzJGuH7hx9+aCZMmGAGDRqU3a4vIiACIhCVQGQBGjx4cM5BaLph1157bdT8FE8EREAEsgQiCxDrAAWn1jMr1j8lI2tVX0RABEQgAoHIAsSEVNYCYlXEd955x+y8887mkEMOMUcddZRhuQEFERABESiWQGQBev311w3dMKZkHHzwwebjjz82PJx43HHHmWnTpjVYrL5YJxRfBESgNglEvgt2zjnnmMMOO8wsXLjQvPbaa2bx4sX2OaC3337b3HLLLbVJT6UWARFIRCCSALEyHWsBccdr1113tRmy2hxdMN6a8eSTTyZyQolFQARqk0AkAXJr2uZaIpMlIv2352sTo0otAiIQh0AkAeJlhDzrc+mll5oXXnjB3g1jPeSZM2eaW2+91fDWVAUREAERKJZAJAHC6B133GEHoAcMGGB22mknuzD98ccfb/r162cuvvjiYvNVfBEQAREwke+C8frll156yb6qed68efau17777muOOeYYYRQBERCBWAQit4C45X7eeeeZpUuX2hbPWWedZYYPH25uuukmjQHFQq9EIiACkQWIBekXLFhgDj/8cEuNRchuvvlmOwbEW1MVREAERKBYApG6YLywbtasWebNN980vXr1snlwZ+y0004zrAvE09GnnHJKsXkrfoUJjBgxIlGOEydOTJReiUUgSCBSC4hnfnibIg8fBgMvLVy+fHlws36LgAiIQCiBSALEa1iPPvpoc9lll9knoZ1VHk5kDIjpGAoiIAIiUCyBSAKE0Xvuuce+C3333Xc3nTt3tu+p7t+/v30+iKehFURABESgWAKRxoAw2rVrVzN37lzDLfhXX33VMAZ00EEHmf3337/YPBVfBERABCyByAJEbESHt2PwpyACIiACSQlE7oIlzUjpRUAERCBIQAIUJKLfIiACFSMgAaoYamUkAiIQJCABChLRbxEQgYoRqJgArVixwjz++ON2Gddg6bizNnv2bDvPzL+PeWc8gc1+BREQgeojUBEBeuSRR8zo0aPN/PnzzdVXX23nkDmUPMh44403mldeecWcffbZhrdvEPjN1AEWwB8zZoxdd9ql0acIiEB1ECjqNnycIvM++fvuu8+KTJ8+fczpp59uhg0bZs4880z7njGe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" /><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAASAAAAEgCAYAAAAUg66AAAAEDmlDQ1BrQ0dDb2xvclNwYWNlR2VuZXJpY1JHQgAAOI2NVV1oHFUUPpu5syskzoPUpqaSDv41lLRsUtGE2uj+ZbNt3CyTbLRBkMns3Z1pJjPj/KRpKT4UQRDBqOCT4P9bwSchaqvtiy2itFCiBIMo+ND6R6HSFwnruTOzu5O4a73L3PnmnO9+595z7t4LkLgsW5beJQIsGq4t5dPis8fmxMQ6dMF90A190C0rjpUqlSYBG+PCv9rt7yDG3tf2t/f/Z+uuUEcBiN2F2Kw4yiLiZQD+FcWyXYAEQfvICddi+AnEO2ycIOISw7UAVxieD/Cyz5mRMohfRSwoqoz+xNuIB+cj9loEB3Pw2448NaitKSLLRck2q5pOI9O9g/t/tkXda8Tbg0+PszB9FN8DuPaXKnKW4YcQn1Xk3HSIry5ps8UQ/2W5aQnxIwBdu7yFcgrxPsRjVXu8HOh0qao30cArp9SZZxDfg3h1wTzKxu5E/LUxX5wKdX5SnAzmDx4A4OIqLbB69yMesE1pKojLjVdoNsfyiPi45hZmAn3uLWdpOtfQOaVmikEs7ovj8hFWpz7EV6mel0L9Xy23FMYlPYZenAx0yDB1/PX6dledmQjikjkXCxqMJS9WtfFCyH9XtSekEF+2dH+P4tzITduTygGfv58a5VCTH5PtXD7EFZiNyUDBhHnsFTBgE0SQIA9pfFtgo6cKGuhooeilaKH41eDs38Ip+f4At1Rq/sjr6NEwQqb/I/DQqsLvaFUjvAx+eWirddAJZnAj1DFJL0mSg/gcIpPkMBkhoyCSJ8lTZIxk0TpKDjXHliJzZPO50dR5ASNSnzeLvIvod0HG/mdkmOC0z8VKnzcQ2M/Yz2vKldduXjp9bleLu0ZWn7vWc+l0JGcaai10yNrUnXLP/8Jf59ewX+c3Wgz+B34Df+vbVrc16zTMVgp9um9bxEfzPU5kPqUtVWxhs6OiWTVW+gIfywB9uXi7CGcGW/zk98k/kmvJ95IfJn/j3uQ+4c5zn3Kfcd+AyF3gLnJfcl9xH3OfR2rUee80a+6vo7EK5mmXUdyfQlrYLTwoZIU9wsPCZEtP6BWGhAlhL3p2N6sTjRdduwbHsG9kq32sgBepc+xurLPW4T9URpYGJ3ym4+8zA05u44QjST8ZIoVtu3qE7fWmdn5LPdqvgcZz8Ww8BWJ8X3w0PhQ/wnCDGd+LvlHs8dRy6bLLDuKMaZ20tZrqisPJ5ONiCq8yKhYM5cCgKOu66Lsc0aYOtZdo5QCwezI4wm9J/v0X23mlZXOfBjj8Jzv3WrY5D+CsA9D7aMs2gGfjve8ArD6mePZSeCfEYt8CONWDw8FXTxrPqx/r9Vt4biXeANh8vV7/+/16ffMD1N8AuKD/A/8leAvFY9bLAAAAOGVYSWZNTQAqAAAACAABh2kABAAAAAEAAAAaAAAAAAACoAIABAAAAAEAAAEgoAMABAAAAAEAAAEgAAAAAKtAJY0AACsOSURBVHgB7Z0HmBXVFcfPAi69uwhKESMWVCIIxEpsEVQ0otEoGsWI2LCARooJGCkR0SASEixRVFBEFBQRQQ0idgULoIBKFZHem5TJ/d8vdzLv7Xuz897OzM6897/ftzszd247vztz3m1zboGlnNCRAAmQQBkQKFcGeTJLEiABEtAEqID4IJAACZQZASqgMkPPjEmABKiA+AyQAAmUGQEqoDJDz4xJgASogPgMkAAJlBmBCmWWcykyfuaZZ+T9998vlkKlSpWkXr16cs4550ibNm2K3Y+7x7p16+TAAw+Muxgllt8p51//+lepU6eO3HrrrSXGY4D4ESiI4zqg6667Tp588klp1aqVlCv3/0bcsmXLZO3atVK+fHkZNmxYzjy0e/bskQsuuEBOO+00ueeee+L3lHkscSo5jz32WGnUqJFMnTrVYyoMFicCsWwBGcAzZ86UatWqmUvBmsrZs2fLFVdcIbfffrtcdtllctBBB9n343qyc+dOmTZtmlZAcZXBS7lTyfnyyy/LAQcc4CU6w8SQwP+bDzEsfHKRCwoKpHXr1lr5QBm99dZbCUH27dsnX3/9tbzxxhuydOnShHvOC6PIPv30U9m7d69s3749IfwPP/ygW1rOODhHmps2bUr2lg0bNsiMGTPko48+kh07dhS7D4+tW7fKrFmz5M033xSkb9zPP/8sy5cv15cbN27UeaB8xi1cuFCmTJkin3/+ueAF9upWrVql8/r444+1fM54P/30U0IZnPcgI+RxOjf5DDuUed68efLVV185o9rn6eTED0yVKlXscCtXrhRwgENZ/vOf/8i2bdvs+8gPrJPLaAdQJ27ldYbjeQgE1IMRO/fHP/4Rb6ClXtqUZX/ggQf0/RdeeMG+r1pG1lFHHaX9VRdNHzt06GCpl80OgxOltCw1jmRVqFDBqly5svWLX/zCuvfee3X43bt367CHHnqodckllyTEUy+QDtOnTx/bH369e/e2VDdR/ykFadWoUcNSY1h2GJy8+OKL2h8ymbKdf/751vr16y2lWHS6uGf+lBKz1ItmnX322drPxKlZs6bllDkhk/9dIC74oSwmXvXq1a3HHnvMDn733Xfre0pJ2X44+eCDD3R+Y8aM0f5e5ENYlHvkyJF2+R955JGEdHGRTs5jjjnGQj0Zd/TRR1s333yzde6559rpoa4mT55sjR8/3iosLNT+OP7+97+31A+IiWp5Ka8dmCehEEC3JXbOKKDVq1dbeKHwB2W0YMEC6/HHH7fUr6ZVv359S/1SatnwItetW9dq0aKF9corr+gH8d1337UOOeQQ66yzzrLlX7RokVW7dm3rt7/9rbV582YdTg2C6pcVL1GmCghxEQ9KSY1P6fJ0795d+yF/ONVq0Yru4osv1mEgy+jRo3WY/v376xdoyZIl+rpv376WGqDV8ZA2Xjw1NmLt2rXLQtlPPfVUq2rVqmkVMyKqrqmlujTWqFGjNLc1a9ZYXbp00emDDdw333yjr9U4mr42/2666SYLSg5lhPMin1FAavDc+uc//2kNHz7cUi08k6R9hKJIJWcqBQTFeemll1rffvutpSYjrMMOO8yCEsUPw9ixYy08F3fddZeWAcrdOC/lNWF5DIdArBWQaREkH9UMmKWa+jbBP//5z/phVOMoth9OHn74Ye2vxpK0PxSFmkmz8FI63YknnqjDZaKAoMDQgjrppJOcSVlqoNXCy3jGGWdof9WN0GmjleV0+DX/5JNPtBfSgowDBw60g0BpIB016G77qe6YbgWobqDt5zz58ccftTK95ZZbnN5ayR155JGWGvC1/SHzCSecYF9DdjUbZXXr1k37eZXPKCBn2e1Ek05SyZlKAaEVaZQgkujRo4fmA4VtHFpvYHbfffdpL6/lNfF5DIdArAehlQIRTL1j7OPVV1+Vd955RwYPHiyq26Oevf+7OXPm6HDz58/XY0DmDsY64DAu0a5dOz2OorppUlRUZILo43nnnafHbxI8S7jA2AzKhWUBKKfTqZaXPRbSpEkTOeWUU0QpIC2D6loI/lQXL2GGzxkf56p7Ic8++6wcfvjhoroo+g/lVC2D5KD2NeRXj5UgnNOpFoW0b99eVDdJVDdFVPdFVCtTlLIR1aoUMME4E8ZOrr32Wh3Vq3wmn5YtW5rTUh9Vt1iUcrfTAQO4jh072n6mDs24WKbltRPiSaAEYq2AMB1vZsFuu+02Ua0CUa0YUd0EUd0FGxwGdTFA/cQTT9h+5qR58+aift31JabxGzRoYG7ZR9Wds8/TneDFdjozkPzFF1+I6io4b+lzpKm6TloxTp8+XQYNGiSq1aOPOIdieu655+Tkk08uFhceUDoYZH/ooYe04lJjP3r5wfXXXy+qm6OVSHJEUyYoxWSHFxaD9Fu2bNFrjaDg7rjjDlFdGhkwYIBWdlBEqmWko5q0SpLP5JOKq7mX6TFdfahutp0U6tvpvJYXP2h04RGItQJyYsJ6IDWuIZjVgTLC+hGsm4Fr2LChqPEFwayWc0bFGR/nagxBz6wk+6suWYIX8oLycDrVvXFe6jzhASX5l7/8JeFe8gXKBKWDv8WLF8trr70m/fr1062cFStWJAe3r08//XTBH8qixpRkxIgRmoHqOknXrl3tcOYE62ngkssKP8wuYcmCWeioujm6Ffb8889Lz549dQsIisg4MIXzIh/CJSsE+GXrnGu/vKaRaXm9pstwpSOQU9PweJGxSnr//v36xTBKAquiMc09ceLEBFpPPfWUoDmvxlq0P1ob6HLMnTs3IRwUgtPh5TS/qMYfU+xOh9YCWmcoj9OhS4DyXHPNNdr7s88+k6ZNm+pWDDzUgKpWoGiBYKocU8zmhcOSAOPQFUK3ES0v/Gpj9fejjz6qb3/33XcmWMLxuOOOk4oVK+qWlvMGOKELm9xNQh7ff/+9qHEU3Tr6wx/+YEfzKp8dwcNJKjk9RPMUJIjyesqYgdwJhDPU5G8uZhYs3TQ8ZnqU1HoKHDljABKzYuoX3lK/4nqWBzNNGMzEdLdx6mXXM2MYkFVrSfQsi5m1QnpmEFp1Tez0Mb2PmTcMCGPQ2TkNP2TIEB1OjU1YGAD/8MMP9eyNetEspbB0tkpZWhg0P+KIIyzV2rCU8rAwcIsBX0yzw6mukZ5ebtu2rZ7lQTmUUtRpYwAWZUDaV155pR5kVuuJdLxU/9RKah0G5cQsklKAlhr/0bNnyfFQNqUc9RICNW5ULDkv8plBaEyzl+RSyZlqENpZZ0jTTPGr1qOdBdJCnWVaH3YCPAmFQKxnwdIpIPg3btxYT1OrMQoNEi82Zp6w/gUPJhSS6j4UmxLGQ4yZK4TBH2aDrr76an1uFBCm9aFUnGlBwajB0IQHHi8wpp1r1aql42P6WHULLdXySqhcKAE1FmXniTUsnTp1spcRIDAUh1nj8uWXX+r4UITGD2U9+OCDrZdeeikh7eQLTHergXq9VAFxUCYoQCjcVM5MXTuns004L/JlooCQbrKcfiogL+U1svEYDoFYfgumXpysnZq+1eMdmDlxG5fAB5GYEVIvtf7+CrNrGKzGDJFxqmWlZ4bQhSrJYYBbrVXRH1amC4tZOcw0oWzOfEx4lAddMnycaRy6dFgpjW5hJgO96mXU42IYfEbc0jov8nnNI5WcXuN6Dedneb3myXDFCeSdAiqOoGQffACaSgGVHJMhSIAE3Ajk1CC0m6C8RwIkED0COTMNHyRa9bmG7hJhwR4dCZCAfwTYBfOPJVMiARLIkAC7YBkCY3ASIAH/CFAB+ceSKZEACWRIgAooQ2AMTgIk4B8BKiD/WDIlEiCBDAlQAWUIjMFJgAT8I0AF5B9LpkQCJJAhgditA8K2O/gqXJlOtY2TZyhzRsFhYwZ2clIZm88oIQ+Bw5IJ9oDwSYrTmLuH4mUcBOumlIlYbWMo48gZRMAnNbARhDoyBsgyiJ5RUHwig106YPw+SKfM7WrDePgkCNsVBelgRQLPOD418tvB+oLz06Hk9NkCSibCaxIggdAIUAGFhpoZkQAJJBOgAkomwmsSIIHQCFABhYaaGZEACSQToAJKJsJrEiCB0AhQAYWGmhmRAAkkE6ACSibCaxIggdAIUAGFhpoZkQAJJBOgAkomwmsSIIHQCMRuJXRoZJhRVgTM1s2pImMfNjoScBJgC8hJg+ckQAKhEghNAa1evVrU3lkp90lfuHChYH90fPdCRwIkkD8EQlFAaldMufXWW/X+VcOGDZO///3vNmFcDx06VBAG+4xjjys6EiCB/CAQyhjQqFGjpGfPnqJ2GdVf3A4aNEhv+vfjjz+K2g5YJkyYoPc/HzdunIwdO1bUdrr5QZ9SkkCeEwhcAcFsgdoWWdR+67qb1axZM7nvvvs0drUNsrRo0UIrH3i0atVKpkyZklAluJ40aZLt16tXL2nYsKE2iQDzFUE7mEWAWYkw8oKZhzDyUXvTi9rHXjMMmp8z/aBlg1mJSpUqObP0/RzsYP4j1c61fmZmdu3Fbrpqk2Q/ky6WFp5v5AF+fjuYznFzgXfB1qxZox92KI758+dLv379BN0uuFWrVknNmjXt8mGLYLXvun3NExIggdwmEHgLCHuQYw/1AQMGSMuWLbUhrEsuuUS6du2qWxYwhGQctCV+mZ3u/PPPF/wZB4NkGzdupEEyAySLIwySwXBX0AbJkouGegvCGYNkMLKWawbJtm7dGnuDZG51HngLCA87XPPmzfURzbyioiL5/vvv9XHDhg3aH/9w3qBBA/uaJyRAArlNIHAFhD7s8ccfL2+++aYmuWTJEsHg8xFHHCFt2rSRefPmyYoVK7SZ1cmTJ0vbtm1zmzilIwESsAkE3gVDTn/605/02A8Gk7HWp3///vaAV7du3XR3DHZjmzRpIp07d7YLxxMSIIHcJhCKAmrcuLGMHj1aj93UqlVLzyIYrB07dpT27dvr6flq1aoZbx5JgATygEAoCshwTDcNi+ln/NGRAAnkF4HAx4DyCyelJQESyIQAFVAmtBiWBEjAVwKhdsF8LXkeJUYTF3lU2XkmKltAeVbhFJcEokSACihKtcGykECeEaACyrMKp7gkECUCVEBRqg2WhQTyjAAVUJ5VOMUlgSgRoAKKUm2wLCSQZwSogPKswikuCUSJABVQlGqDZSGBPCNABZRnFU5xSSBKBKiAolQbLAsJ5BkBKqA8q3CKSwJRIkAFFKXaYFlIIM8IUAHlWYVTXBKIEgEqoCjVBstCAnlGgAoozyqc4pJAlAhQAUWpNlgWEsgzAlRAeVbhFJcEokSACihKtcGykECeEaBJ1ohUuJvZ1YgUkcUgAd8JsAXkO1ImSAIk4JUAFZBXUgxHAiTgO4HYdcGqVKki5cuX1xsZptvo0E9KFSpU0PmFkVc25c6mXOXKlZPKlSuHvhlkNmXNhAmejUqVKmUSJeOwYFdQUCCFhYUZx80kAvKAq169uliWlUnUjMPifUIe4Oe327t3r2uSsVNAO3bsEAiFh3njxo2uwvlxs27durJv3z7ZtGmTH8n5nkY2DOrVqyc7d+6Ubdu2+V4etwSzKatbeuYeXtb69esLng3IFaSD4sEuvtu3bw8yG8EPX1FRkWzdulX27NkTaF5QPHjGd+/e7Xs+FStWdE2TXTBXPLxJAiQQJAEqoCDpMm0SIAFXAlRArnh4kwRIIEgCVEBB0mXaJEACrgSogFzx8CYJkECQBKiAgqTLtEmABFwJUAG54uFNEiCBIAlQAQVJl2mTAAm4EqACcsXDmyRAAkESoAIKki7TJgEScCVABeSKhzdJgASCJEAFFCRdpk0CJOBKgArIFQ9vkgAJBEmACihIukybBEjAlUDszHG4ShPxm7lidjVX5Ij445IXxWMLKC+qmUKSQDQJUAFFs15YKhLICwLsguVFNWcuZBDdLLc0n3rqqcwLyRixJ8AWUOyrkAKQQHwJUAHFt+5YchKIPQEqoNhXIQUggfgS4BhQfOuu1CV3G5MpdeJMgAQ8EGALyAMkBiEBEgiGABVQMFyZKgmQgAcCVEAeIDEICZBAMASogILhylRJgAQ8EAhdAc2YMUNvN+ss28KFC2X69Omybt06pzfPSYAEcpxAqLNg7777rvTr10/GjBkj1atX12iHDRsm8+fPl2bNmsnIkSNlxIgR0rhx4xzHTvH8JNClS5e0yeXDCmu32cyoyx+aAkLr5sknn5RatWrZD8vSpUtl1qxZMmHCBClXrpyMGzdOxo4dK3369LHD8IQESCB3CYSigCzLkvvvv1+6d+8uQ4YMsWkuXrxYWrRooZUPPFu1aiVTpkyx7+Pk7bfflmnTptl+N954o9SvX18OOOAAqVmzpu0f1En58uV1+cLIKxsZsikXlH2lSpWyyS6wONnI4aUwfqeL56GgoEAqVAj21UEecNWqVZP9+/d7ETVlGC/yQxa8o0E8E/v27UtZLuMZLMX/5YIWTqNGjaR169YmX31ctWpVghKpUaOGrF+/PiHM5s2bBYrKOAgEYGE8BMjTPAhBP3BGvkyP2ZYLSihKLls5SpLB73TxPITBzjx35gewJDnT3fciv5HH5JkurWz8S1KegSugJUuWyNSpU+Vf//pXsfIDrlND7t27VypXrpwQ7uKLLxb8Gbd27VqtpGrXri0bN2403oEd69atq8u4adOmwPIoTcLJCttLWvXq1ZMdO3Z4CRpamGzk8FI4v9MtLCzUre/t27d7yT7rMFAcRUVFgh/gPXv2ZJ2OF/mrVKmin/Hdu3dnnU+6iBUrVkx3S/sH/jOILtSyZcvkggsukHPOOUd++ukn6dq1q3zyySca8IYNG+wC4rxBgwb2NU9IgARym0DgLSAoG/wZd+mll8qDDz4oTZo0kS1btsjw4cNlxYoVWvFMnjxZ2rZta4IGeozzzEGgYJi4JuD2fIwfP56UfCIQuAJyKyfGfLp166YVVJ06dbRS6ty5s1sU3iMBEsghAqEroBdffDEBX8eOHaV9+/aC/idG/OlIgATyh0DoCigVWkyp4y8qzq35XVIZo77wq6Ty8z4JhEkg8EHoMIVhXiRAAvEiQAUUr/piaUkgpwhQAeVUdVIYEogXASqgeNUXS0sCOUXAswL6zW9+I9u2bSsm/OjRo4VT58Ww0IMESMADAddZsI8//ljefPNNncx7772nPyh1frCGzygmTZqkTWl4yItBSIAESCCBgKsCOvzww6Vnz556jQ6+R8GX6vh+yzhMnR966KHSt29f48UjCZBAhAiUtKSkrJeNuCogfIj5/vvva5wXXnihPPfcc1wsGKGHi0UhgbgTcFVATuFeffVV3RJavny5PjrvYQUzPyJ1EuE5CZCAFwKeFdBLL72kv9lKZZYCH5jyAz0vuBmGBEjAScCzArr55pvloosukptuuknw4ajT8RsuJw2ekwAJeCXgSQHBbMaaNWu0OVUYs6IjARIgAT8IeFoHBLMZTZs2lc8++8yPPJkGCZAACWgCnlpACDlw4EDp0aOH/PDDD1oZOW3NolV0zDHHECkJkAAJZETAswLCGBDs095www3FMuAgdDEk9CABEvBAwLMCWr16td66I1WazsWJqe7TjwRIgARSEfCsgGAwHnsHpXLYyQK7VNCRAAmQQCYEPCugo48+WnfBUiXOLlgqKvQjARIoiYBnBYSPUZ17eG3dulXmzJmj93N37nZaUoa8TwIkQAKGgGcFdOyxx5o49vHUU0/VG9wNHjxYHn/8cdufJyRAAiTghYCndUBuCeEbsLlz57oF4T0SIAESSEnAcwsIO5li62TjcI5dTgcNGiSnn3668eaRBCJFwM0cRVmboogUqDIqjGcFhG2VsQ4o2aEbNmDAgGRvXpMACZBAiQQ8KyCY4Uiehq9atao4V0SXmBsDkAAJkICDgGcFhO/BouCqVKmirTLCGmMU1x6FXaZs8itXrpxg7VaUXDZylLb82eYJdoWFhaXN3jV+QUGBvl+9evViP/yuETO8CQZYSIzGBd4tv51z2CZV2p4VECLDFhCsIi5atEjq168vLVu2lDPOOCPwynAWfMeOHXosCuA2btzovBWJ87DLlE1++HZv586dkeBlCgFTL24uiPGabNihjGC3fft2t+KW+h56FkVFRYLlLjCHHJQDAygeLLHB9uh+u4oVK7om6VkBffXVV4JxIHyS0aJFC1m7dq2sWrVKOnToIBMnThSnsXrXHHmTBEiABP5HwPM0fLdu3eSkk06SFStWyJdffikrV67UCxEXLFggw4cPJ1ASIAESyJiApxYQuj2wBYRWUMOGDXUm6KOiC4ZdM1577TXp1atXxpnnYgS3ad9clDcfZbrssstcxQ6iu+iaYYxvemoBYdASg1RQRMkOfeGSBpqS4/CaBEiABEDAkwLC+A4WG6KV8+mnn2pltGvXLpk6dao88sgjgl1T6UiABEggUwKeFBASHTVqlB6Abtu2rRx00EHaMP15550nrVu3ljvvvDPTfBmeBEiABMTTGBA4NWvWTGbPnq23al64cKGe9TrqqKPkrLPOIkYSIAESyIqA5xYQptxvvPFGWbdunW7xdOnSRTp37izDhg3jGFBW6BmJBEjAswKCQfqlS5fKySefrKlhNejDDz+sx4CwayodCZAACWRKwFMX7Oeff5Zp06bJ/Pnz5eCDD9Z5YGbsiiuu0Cs1sTr64osvzjRvhicBEshzAp5aQFjzg+XgWHyY7LBpIexF05EACZBApgQ8tYDw4eeZZ54pvXv3ltGjR0ujRo10PliciDGg22+/PdN8GZ4ESCCJgNsi1lxd3OipBQROUDxY+9O4cWOpWbOm/pq6TZs2en0QVkPTkQAJkECmBDy1gJBonTp1ZNasWYIp+C+++EIwBnTcccdJ8+bNM82T4UmABEhAE/CsgBAaSgfb8+CPjgRIIDwCbt2z8Erhf06eu2D+Z80USYAE8p0AFVC+PwGUnwTKkAAVUBnCZ9YkkO8EqIDy/Qmg/CRQhgSogMoQPrMmgXwnQAWU708A5SeBMiSQ0TR8GZaTWZNAbAi4TZnn6ormbCuHLaBsyTEeCZBAqQlQAZUaIRMgARLIlgC7YNmSY7zYE3DrKsVeuJgIwBZQTCqKxSSBXCQQmgLCFrBvvfWW3k01GSQ+cJ0+fbo295p8j9ckQAK5SyCULtgrr7wiEyZMkHbt2ukjjNnfcccdmirsCcHSIozejxw5UkaMGKFNfuQucn8lc+tGcMbFX9ZMzX8CgSsgbHr/7LPPytChQ6Vp06Zy5ZVXCnaWvOaaa2Tz5s3axAeUE760HzdunIwdO1b69Onjv6RMkQRIIHIEAldA5cuXl6efflqqVq2qhYdRs23btgkU0+LFi6VFixZa+eBmq1atZMqUKQmQPvjgA5k5c6btd/nll0tRUZFUqFBBqlevbvvzpDiBdHxgYrdixYrFI0TYJ50sES5yyqJFTQ6UBxZPsfNxYWFhyjKXxnP//v2u0QNXQMjdKB8UZvjw4dKhQwc58MAD9XgQrCsaV6NGDVm/fr251EcoKYwdGdepUye9JxlaTNixlS49gXR8oICgwOPk0skSJxlQ1qjJgfLgXYICCuKZ2L17t2sVhfYUoiD33XefFvSee+7RhULrCC0h47DHPLb7cbqrrrpK8Gfc2rVrBX+1a9cWDGzTpScATqlcvXr1ZMeOHaluRdYvnSyRLXCagkVNDpSnSpUq+j0sSVmkEcnVGy1t0wBJFTCUWTA87HfddZfuMg0YMMBu6qEr5dxRA+cNGjRIVU76kQAJ5CCBUFpA/fv3lyOPPFK6d++egBBG7dElW7FihVY8kydPFuw9T+cPAbcZMn9yCC+VXJIlPGrRzylwBfTNN9/IRx99pP/Gjx9vE/nHP/6hB6C7desmXbt21UbvmzRpord7tgPxhARIIKcJBK6AYMAeu2mkcx07dpT27dsL+p/VqlVLF4z+JEACOUggcAXkhRmmAfFHRwIkkF8EQhmEzi+klJYESMArASogr6QYjgRIwHcCVEC+I2WCJEACXgkUqBWQltfAUQiHhVNYsFjahYic1o1CbbIMUSbgx8fMWIiIbd3TObaA0pGhPwmQQOAEqIACR8wMSIAE0hGgAkpHhv4kQAKBE6ACChwxMyABEkhHgAooHRn6kwAJBE4gEiuhg5KSM11BkWW6JOAPAbaA/OHIVEiABLIgQAWUBTRGIQES8IcAFZA/HJkKCZBAFgSogLKAxigkQAL+EKAC8ocjUyEBEsiCABVQFtAYhQRIwB8CVED+cGQqJEACWRCgAsoCGqOQAAn4Q4AKyB+OTIUESCALAlRAWUBjFBIgAX8IUAH5w5GpkAAJZEGACigLaIxCAiTgD4Gc/hjVH0RMhQTyk4Dbx9x+mGsFVbaA8vPZotQkEAkCsWsBVa5cWcqXL683MqxVq1YkILIQJJBvBLy+e9hAws3FTgHt3LlT9u3bp3fF2Lx5s5tsvEcCJBAQAa/vXmFhoWsJYqeAIA12EjJ/rtLxJgmQQCAE/NrNi2NAgVQPEyUBEvBCgArICyWGIQESCIQAFVAgWJkoCZCAFwJUQF4oMQwJkEAgBKiAAsHKREmABLwQoALyQolhSIAEAiFABRQIViZKAiTghQAVkBdKDEMCJBAIASqgQLAyURIgAS8EqIC8UGIYEiCBQAhQAQWClYmSAAl4IUAF5IUSw5AACQRCgAooEKxMlARIwAsBKiAvlBiGBEggEAJUQIFgZaIkQAJeCFABeaHEMCRAAoEQoAIKBCsTJQES8EKACsgLJYYhARIIhAAVUCBYmSgJkIAXAlRAXigxDAmQQCAEqIACwcpESYAEvBCgAvJCiWFIgAQCIUAFFAhWJkoCJOCFABWQF0oMQwIkEAgBKqBAsDJREiABLwQioYAWLlwo06dPl3Xr1nkpM8OQAAnkCIEyV0DDhg2ToUOHyueffy7XXXedLF++PEfQUgwSIIGSCJTp3vBLly6VWbNmyYQJE6RcuXIybtw4GTt2rPTp06ekcvM+CZBADhAoUwW0ePFiadGihVY+YNmqVSuZMmVKAtY5c+bIp59+avt16NBBateuLeXLl5eqVava/jwhARIIj4Bf716ZKqBVq1ZJzZo1bWo1atSQ9evX29c4Qdfs0Ucftf3atWsnjRo1koKCAqlWrZrtn+rk9ddfT+WdkR/ygbMsK6N42QRGXmHlk2syoQW9f//+bLBnFCfM5yEXZNq1a5cr3zJVQGjF7Nu3zy7g3r17pXLlyvY1TjAuhD/j1q5dK6tXr9atoI0bNxrvwI5169bVZdy0aVNgeZiE0bILQ6Z69erJjh07ZNu2bSbrQI6mlbply5ZA0jeJQinUr19fkM/OnTuNdyDHwsJCOeCAA2T79u2BpG8SrVChghQVFcmGDRtkz549xjuQY5UqVfQzvnv3bt/Tr1ixoiD9dK5MB6ENYFM4wG7QoIG55JEESCDHCZSpAmrTpo3MmzdPVqxYIWj9TJ48Wdq2bZvjyCkeCZCAIVCmXTCM+XTr1k26du0qderUkSZNmkjnzp1N2XgkARLIcQJlqoDAtmPHjtK+fXtB/7OkQeUcrwuKRwJ5R6DMFRCIY1APf3QkQAL5RaBMx4DyCzWlJQESSCZABZRMhNckQAKhEaACCg01MyIBEkgmUKBW3ga/xDc51xhdX3nllXqR20MPPRSjUrsX9bTTTpNLL71UbrvtNveAMbmLRZUnnHCC/O1vf5OLLrooJqV2L+aCBQukU6dO+ttIfKKUq44toBJqFsv7w1jiX0IxfL2N1ee5JBN+QyFPLv2W5qJMqR5iKqBUVOhHAiQQCoFITMOHImmWmZx44olSq1atLGNHM9qZZ54pzZo1i2bhsigVvpuClYRDDjkki9jRjFK9enUtE74PzGXHMaBcrl3KRgIRJ8AuWMQriMUjgVwmkHcKCCYoko2epargr776Sr7//vtUt7Tt6mnTpglsWSe7+fPny9tvvy1hmO8weXuV6Y033nA1V4F03n//fZOsPuITGfh98MEHgZuFcGbsl0yYTYLlTePw8fOHH36Y8Pftt9+a24EeFy1apO1buWUCu+iwEprOfffddzJjxoy09Yh7W7duTRc9cv55p4Bg8uPhhx8usSLeeuutBEuMJgIMpF177bWCh+nuu++WiRMnmlty1113yfPPPy9ff/213HDDDfLDDz/Y94I88SrTyJEjtc2cVGWB4ah7771XXnnlFfs2bOt06dJFP/BjxozR8oY10+SHTEuWLJE777xTvvnmG1ummTNnyqRJk+y/AQMGyGuvvWbfD/IESnzq1KmuWcAyBFincj179tTG+fDDh3r55JNPEoK9++670q9fP21DKOFGhC/yehAaJkDwkmHAD+7nn3/Wv/Ju5iahvAYOHCi//OUv5bLLLtNf8p9//vmycuVKHffBBx/UaWFtCpQYHpQwXTYywTRu3759tXVKp4XKF154QX71q1/JHXfcoUWAUv34448FA/NhOrCEcTMYt4KDMTB8OwjjYOkcFOlTTz2VYHETYW+55RY7ClqreGGdBu/smwGfpJMpXbZoucEY37PPPquDHHnkkdqGujFfg5bTk08+GbsJk7xrATkreO7cubrVYvzw6zho0CBzWeyIlxutGtixhjvooIO0tTcon6ZNm8rw4cO1P7pfX375pTYvoj1C/JepTCgaXoZ77rlHrrjiioSSornvXASHc7TuwnajRo1KaGmijlBXbg6WNf/973/r2T5jRtUZHl3LwYMHS69evQRmYcJ2mcrUvHlzeeyxx+xibt68WYy5U7RK77//funevbtUqlTJDhOHk7xWQJlW0Jo1a7QhfOcDjRYDugvGYX+zSy65RJuMPeWUU4x3pI/HHnusHHfcccXK+NNPPyW8nKlsdheLFBGPc845R2BOFy5VtxGtU9SdaUFEpNhpiwH70MZcMZ5DtISuvvpqHR67ysBOeuvWrdPGj+oNKqAMaibZhjWiolXk/NXBgw/Ljngg0FWLs0uWF7KalyDOcqHsr776qv7UIW5yYFwLLR2MQ6IrjGuMK914441xE0WXNy8U0OzZswWzIXAw8G3GEnDtNIpfkkFz/KJi/MFpvButn4MPPlgbyjezYjDCje94PvvsM2QRiPNLJrfCHXjggQmtOyOrW5zS3AtDJpQPm1+i23z66aeXprie4qJ1YrpKUODZPnvIDIPpPXr00ONYMOQHhxnXZcuWyQUXXCD48UOrFRZGkweodeAI/ssLBYSHDbNT+F4IlYjWCRya4KgwjIHAffTRR/qY7h9W3GJQFr+ecJh1wEpV/CGN3r172w8bpkMPP/zwdEmV2t8vmdwKgo9W8euKFwiDnJjFadmypVuUUt1zkwm/9HDYtgkzkKVx+DE66qijQjGChyUMmPZHNxD5Op+9TGQCf8y69u/fX37961/b4kPZQAmh648/7A7yxBNPxKZrmRezYHiRoBDwK4HxGzPQfNhhh+lBVtihxkzY8ccfX2xfMrum/3dy880329Pv6JdjFgUOg9AY+4GNa3RdcA2FFJTzU6Z0ZTz77LP1GiAMTkPWyy+/XMuVLnxp/dPJdO655+pf/quuukp3ATFmVRqHdUGo+zAcZkpHjBihtx+HzfPzzjtPZ5upTOPHj9dry26//Xa72LCjjiUFcXZ59SkGFmjB7rRzEBmVB3+MbaCF49VhpivVN2JoZaHF4LYXktc8vITzU6Z0+WXDJ11aXvzTyYQ90+L6bRRkMss9nAziLJNTjmzP80oBZQuJ8UiABIIhkBdjQMGgY6okQAKlJUAFVFqCjE8CJJA1ASqgrNExIgmQQGkJUAGVliDjkwAJZE2ACihrdIzoRmDLli327XHjxoX2xbmdKU9iQYAKKBbVFK9Cvv7669qcqCk11rDAj44Ekgl4X/iSHJPXJJCGAExH4JMV415++WVzyiMJJBBgCygBBy9KSwBmMl566SVttuT6668XLLSDITRjZAufu2D/LnyeAFtJv/vd7/THu/hOCv5YrY492JwWBlCmZ555RttfuvDCC2XYsGH6I+DSlpXxy54AFVDZ10FOlaBevXrSsGFDvRIcpi5gNAzfKL333ntaTpg/hYLBJyv49AWGxfAJC3a1+OKLL6R9+/byyCOPyJAhQ2wu+PwAlg2xk8fJJ58sDzzwgFZcdgCexJeA+kiOjgR8JaCUh6WMttlpqlaLpawp6mvVksFOvJb68l1fKyuUlvoMxjrppJPs8EoBWepjUX2tLAxY6js067nnnrPvKyWm03jnnXdsP57EkwDHgOL72xHbkuObO5i0hUMLCF+IowVkXFFRkaxatUpfwqSJerW0fW5YmTQO3/ThnvPLcHOPx/gQoAKKT13lTElhBgUWA4zDx8FOs6jOj4Xx0S8UFuzoOP1vvfVWOeaYY0wSPMaUABVQTCsuysV2KorSlhM2lWBEDoPTGP+BgxG5p59+Wo444ojSJs/4ZUyAg9BlXAG5mD3s1KALBcNhmN0qjTvjjDMEO0DA7hJ2sYCpk3vvvbfMjMmXRhbGLU6ACqg4E/qUkkC7du10FwuKo7RmaTFGhC12YHEShvNhJhYWAGGUHed08SZAe0Dxrr9Ilz6d0bZsC42taNCiMrtdZJsO40WHABVQdOqCJSGBvCPALljeVTkFJoHoEKACik5dsCQkkHcEqIDyrsopMAlEhwAVUHTqgiUhgbwjQAWUd1VOgUkgOgSogKJTFywJCeQdASqgvKtyCkwC0SFABRSdumBJSCDvCPwXNwZvAz3PDY0AAAAASUVORK5CYII=" /></p>
|
|
|
|
|
|
|
|
<!-- code folding -->
|
|
|
|
|
|
<!-- dynamically load mathjax for compatibility with self-contained -->
|
|
<script>
|
|
(function () {
|
|
var script = document.createElement("script");
|
|
script.type = "text/javascript";
|
|
script.src = "https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML";
|
|
document.getElementsByTagName("head")[0].appendChild(script);
|
|
})();
|
|
</script>
|
|
|
|
</body>
|
|
</html>
|