Evgeny Pogorelovhttps://evgenypogorelov.com/2023-07-30T23:34:00-04:00Side projects and writingsOn Stoic Philosophy2023-07-30T23:34:00-04:002023-07-30T23:34:00-04:00Evgeny Pogorelovtag:evgenypogorelov.com,2023-07-30:/on-stoic-philosophy.html<p>A beginners guide to Stoic Philosophy</p><style type="text/css">/*!
*
* IPython notebook
*
*/
/* CSS font colors for translated ANSI escape sequences */
/* The color values are a mix of
http://www.xcolors.net/dl/baskerville-ivorylight and
http://www.xcolors.net/dl/euphrasia */
.ansi-black-fg {
color: #3E424D;
}
.ansi-black-bg {
background-color: #3E424D;
}
.ansi-black-intense-fg {
color: #282C36;
}
.ansi-black-intense-bg {
background-color: #282C36;
}
.ansi-red-fg {
color: #E75C58;
}
.ansi-red-bg {
background-color: #E75C58;
}
.ansi-red-intense-fg {
color: #B22B31;
}
.ansi-red-intense-bg {
background-color: #B22B31;
}
.ansi-green-fg {
color: #00A250;
}
.ansi-green-bg {
background-color: #00A250;
}
.ansi-green-intense-fg {
color: #007427;
}
.ansi-green-intense-bg {
background-color: #007427;
}
.ansi-yellow-fg {
color: #DDB62B;
}
.ansi-yellow-bg {
background-color: #DDB62B;
}
.ansi-yellow-intense-fg {
color: #B27D12;
}
.ansi-yellow-intense-bg {
background-color: #B27D12;
}
.ansi-blue-fg {
color: #208FFB;
}
.ansi-blue-bg {
background-color: #208FFB;
}
.ansi-blue-intense-fg {
color: #0065CA;
}
.ansi-blue-intense-bg {
background-color: #0065CA;
}
.ansi-magenta-fg {
color: #D160C4;
}
.ansi-magenta-bg {
background-color: #D160C4;
}
.ansi-magenta-intense-fg {
color: #A03196;
}
.ansi-magenta-intense-bg {
background-color: #A03196;
}
.ansi-cyan-fg {
color: #60C6C8;
}
.ansi-cyan-bg {
background-color: #60C6C8;
}
.ansi-cyan-intense-fg {
color: #258F8F;
}
.ansi-cyan-intense-bg {
background-color: #258F8F;
}
.ansi-white-fg {
color: #C5C1B4;
}
.ansi-white-bg {
background-color: #C5C1B4;
}
.ansi-white-intense-fg {
color: #A1A6B2;
}
.ansi-white-intense-bg {
background-color: #A1A6B2;
}
.ansi-default-inverse-fg {
color: #FFFFFF;
}
.ansi-default-inverse-bg {
background-color: #000000;
}
.ansi-bold {
font-weight: bold;
}
.ansi-underline {
text-decoration: underline;
}
/* The following styles are deprecated an will be removed in a future version */
.ansibold {
font-weight: bold;
}
.ansi-inverse {
outline: 0.5px dotted;
}
/* use dark versions for foreground, to improve visibility */
.ansiblack {
color: black;
}
.ansired {
color: darkred;
}
.ansigreen {
color: darkgreen;
}
.ansiyellow {
color: #c4a000;
}
.ansiblue {
color: darkblue;
}
.ansipurple {
color: darkviolet;
}
.ansicyan {
color: steelblue;
}
.ansigray {
color: gray;
}
/* and light for background, for the same reason */
.ansibgblack {
background-color: black;
}
.ansibgred {
background-color: red;
}
.ansibggreen {
background-color: green;
}
.ansibgyellow {
background-color: yellow;
}
.ansibgblue {
background-color: blue;
}
.ansibgpurple {
background-color: magenta;
}
.ansibgcyan {
background-color: cyan;
}
.ansibggray {
background-color: gray;
}
div.cell {
/* Old browsers */
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-box-align: stretch;
display: -moz-box;
-moz-box-orient: vertical;
-moz-box-align: stretch;
display: box;
box-orient: vertical;
box-align: stretch;
/* Modern browsers */
display: flex;
flex-direction: column;
align-items: stretch;
border-radius: 2px;
box-sizing: border-box;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
border-width: 1px;
border-style: solid;
border-color: transparent;
width: 100%;
padding: 5px;
/* This acts as a spacer between cells, that is outside the border */
margin: 0px;
outline: none;
position: relative;
overflow: visible;
}
div.cell:before {
position: absolute;
display: block;
top: -1px;
left: -1px;
width: 5px;
height: calc(100% + 2px);
content: '';
background: transparent;
}
div.cell.jupyter-soft-selected {
border-left-color: #E3F2FD;
border-left-width: 1px;
padding-left: 5px;
border-right-color: #E3F2FD;
border-right-width: 1px;
background: #E3F2FD;
}
@media print {
div.cell.jupyter-soft-selected {
border-color: transparent;
}
}
div.cell.selected,
div.cell.selected.jupyter-soft-selected {
border-color: #ababab;
}
div.cell.selected:before,
div.cell.selected.jupyter-soft-selected:before {
position: absolute;
display: block;
top: -1px;
left: -1px;
width: 5px;
height: calc(100% + 2px);
content: '';
background: #42A5F5;
}
@media print {
div.cell.selected,
div.cell.selected.jupyter-soft-selected {
border-color: transparent;
}
}
.edit_mode div.cell.selected {
border-color: #66BB6A;
}
.edit_mode div.cell.selected:before {
position: absolute;
display: block;
top: -1px;
left: -1px;
width: 5px;
height: calc(100% + 2px);
content: '';
background: #66BB6A;
}
@media print {
.edit_mode div.cell.selected {
border-color: transparent;
}
}
.prompt {
/* This needs to be wide enough for 3 digit prompt numbers: In[100]: */
min-width: 14ex;
/* This padding is tuned to match the padding on the CodeMirror editor. */
padding: 0.4em;
margin: 0px;
font-family: monospace;
text-align: right;
/* This has to match that of the the CodeMirror class line-height below */
line-height: 1.21429em;
/* Don't highlight prompt number selection */
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
/* Use default cursor */
cursor: default;
}
@media (max-width: 540px) {
.prompt {
text-align: left;
}
}
div.inner_cell {
min-width: 0;
/* Old browsers */
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-box-align: stretch;
display: -moz-box;
-moz-box-orient: vertical;
-moz-box-align: stretch;
display: box;
box-orient: vertical;
box-align: stretch;
/* Modern browsers */
display: flex;
flex-direction: column;
align-items: stretch;
/* Old browsers */
-webkit-box-flex: 1;
-moz-box-flex: 1;
box-flex: 1;
/* Modern browsers */
flex: 1;
}
/* input_area and input_prompt must match in top border and margin for alignment */
div.input_area {
border: 1px solid #cfcfcf;
border-radius: 2px;
background: #f7f7f7;
line-height: 1.21429em;
}
/* This is needed so that empty prompt areas can collapse to zero height when there
is no content in the output_subarea and the prompt. The main purpose of this is
to make sure that empty JavaScript output_subareas have no height. */
div.prompt:empty {
padding-top: 0;
padding-bottom: 0;
}
div.unrecognized_cell {
padding: 5px 5px 5px 0px;
/* Old browsers */
display: -webkit-box;
-webkit-box-orient: horizontal;
-webkit-box-align: stretch;
display: -moz-box;
-moz-box-orient: horizontal;
-moz-box-align: stretch;
display: box;
box-orient: horizontal;
box-align: stretch;
/* Modern browsers */
display: flex;
flex-direction: row;
align-items: stretch;
}
div.unrecognized_cell .inner_cell {
border-radius: 2px;
padding: 5px;
font-weight: bold;
color: red;
border: 1px solid #cfcfcf;
background: #eaeaea;
}
div.unrecognized_cell .inner_cell a {
color: inherit;
text-decoration: none;
}
div.unrecognized_cell .inner_cell a:hover {
color: inherit;
text-decoration: none;
}
@media (max-width: 540px) {
div.unrecognized_cell > div.prompt {
display: none;
}
}
div.code_cell {
/* avoid page breaking on code cells when printing */
}
@media print {
div.code_cell {
page-break-inside: avoid;
}
}
/* any special styling for code cells that are currently running goes here */
div.input {
page-break-inside: avoid;
/* Old browsers */
display: -webkit-box;
-webkit-box-orient: horizontal;
-webkit-box-align: stretch;
display: -moz-box;
-moz-box-orient: horizontal;
-moz-box-align: stretch;
display: box;
box-orient: horizontal;
box-align: stretch;
/* Modern browsers */
display: flex;
flex-direction: row;
align-items: stretch;
}
@media (max-width: 540px) {
div.input {
/* Old browsers */
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-box-align: stretch;
display: -moz-box;
-moz-box-orient: vertical;
-moz-box-align: stretch;
display: box;
box-orient: vertical;
box-align: stretch;
/* Modern browsers */
display: flex;
flex-direction: column;
align-items: stretch;
}
}
/* input_area and input_prompt must match in top border and margin for alignment */
div.input_prompt {
color: #303F9F;
border-top: 1px solid transparent;
}
div.input_area > div.highlight {
margin: 0.4em;
border: none;
padding: 0px;
background-color: transparent;
}
div.input_area > div.highlight > pre {
margin: 0px;
border: none;
padding: 0px;
background-color: transparent;
}
/* The following gets added to the <head> if it is detected that the user has a
* monospace font with inconsistent normal/bold/italic height. See
* notebookmain.js. Such fonts will have keywords vertically offset with
* respect to the rest of the text. The user should select a better font.
* See: https://github.com/ipython/ipython/issues/1503
*
* .CodeMirror span {
* vertical-align: bottom;
* }
*/
.CodeMirror {
line-height: 1.21429em;
/* Changed from 1em to our global default */
font-size: 14px;
height: auto;
/* Changed to auto to autogrow */
background: none;
/* Changed from white to allow our bg to show through */
}
.CodeMirror-scroll {
/* The CodeMirror docs are a bit fuzzy on if overflow-y should be hidden or visible.*/
/* We have found that if it is visible, vertical scrollbars appear with font size changes.*/
overflow-y: hidden;
overflow-x: auto;
}
.CodeMirror-lines {
/* In CM2, this used to be 0.4em, but in CM3 it went to 4px. We need the em value because */
/* we have set a different line-height and want this to scale with that. */
/* Note that this should set vertical padding only, since CodeMirror assumes
that horizontal padding will be set on CodeMirror pre */
padding: 0.4em 0;
}
.CodeMirror-linenumber {
padding: 0 8px 0 4px;
}
.CodeMirror-gutters {
border-bottom-left-radius: 2px;
border-top-left-radius: 2px;
}
.CodeMirror pre {
/* In CM3 this went to 4px from 0 in CM2. This sets horizontal padding only,
use .CodeMirror-lines for vertical */
padding: 0 0.4em;
border: 0;
border-radius: 0;
}
.CodeMirror-cursor {
border-left: 1.4px solid black;
}
@media screen and (min-width: 2138px) and (max-width: 4319px) {
.CodeMirror-cursor {
border-left: 2px solid black;
}
}
@media screen and (min-width: 4320px) {
.CodeMirror-cursor {
border-left: 4px solid black;
}
}
/*
Original style from softwaremaniacs.org (c) Ivan Sagalaev <Maniac@SoftwareManiacs.Org>
Adapted from GitHub theme
*/
.highlight-base {
color: #000;
}
.highlight-variable {
color: #000;
}
.highlight-variable-2 {
color: #1a1a1a;
}
.highlight-variable-3 {
color: #333333;
}
.highlight-string {
color: #BA2121;
}
.highlight-comment {
color: #408080;
font-style: italic;
}
.highlight-number {
color: #080;
}
.highlight-atom {
color: #88F;
}
.highlight-keyword {
color: #008000;
font-weight: bold;
}
.highlight-builtin {
color: #008000;
}
.highlight-error {
color: #f00;
}
.highlight-operator {
color: #AA22FF;
font-weight: bold;
}
.highlight-meta {
color: #AA22FF;
}
/* previously not defined, copying from default codemirror */
.highlight-def {
color: #00f;
}
.highlight-string-2 {
color: #f50;
}
.highlight-qualifier {
color: #555;
}
.highlight-bracket {
color: #997;
}
.highlight-tag {
color: #170;
}
.highlight-attribute {
color: #00c;
}
.highlight-header {
color: blue;
}
.highlight-quote {
color: #090;
}
.highlight-link {
color: #00c;
}
/* apply the same style to codemirror */
.cm-s-ipython span.cm-keyword {
color: #008000;
font-weight: bold;
}
.cm-s-ipython span.cm-atom {
color: #88F;
}
.cm-s-ipython span.cm-number {
color: #080;
}
.cm-s-ipython span.cm-def {
color: #00f;
}
.cm-s-ipython span.cm-variable {
color: #000;
}
.cm-s-ipython span.cm-operator {
color: #AA22FF;
font-weight: bold;
}
.cm-s-ipython span.cm-variable-2 {
color: #1a1a1a;
}
.cm-s-ipython span.cm-variable-3 {
color: #333333;
}
.cm-s-ipython span.cm-comment {
color: #408080;
font-style: italic;
}
.cm-s-ipython span.cm-string {
color: #BA2121;
}
.cm-s-ipython span.cm-string-2 {
color: #f50;
}
.cm-s-ipython span.cm-meta {
color: #AA22FF;
}
.cm-s-ipython span.cm-qualifier {
color: #555;
}
.cm-s-ipython span.cm-builtin {
color: #008000;
}
.cm-s-ipython span.cm-bracket {
color: #997;
}
.cm-s-ipython span.cm-tag {
color: #170;
}
.cm-s-ipython span.cm-attribute {
color: #00c;
}
.cm-s-ipython span.cm-header {
color: blue;
}
.cm-s-ipython span.cm-quote {
color: #090;
}
.cm-s-ipython span.cm-link {
color: #00c;
}
.cm-s-ipython span.cm-error {
color: #f00;
}
.cm-s-ipython span.cm-tab {
background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAMCAYAAAAkuj5RAAAAAXNSR0IArs4c6QAAAGFJREFUSMft1LsRQFAQheHPowAKoACx3IgEKtaEHujDjORSgWTH/ZOdnZOcM/sgk/kFFWY0qV8foQwS4MKBCS3qR6ixBJvElOobYAtivseIE120FaowJPN75GMu8j/LfMwNjh4HUpwg4LUAAAAASUVORK5CYII=);
background-position: right;
background-repeat: no-repeat;
}
div.output_wrapper {
/* this position must be relative to enable descendents to be absolute within it */
position: relative;
/* Old browsers */
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-box-align: stretch;
display: -moz-box;
-moz-box-orient: vertical;
-moz-box-align: stretch;
display: box;
box-orient: vertical;
box-align: stretch;
/* Modern browsers */
display: flex;
flex-direction: column;
align-items: stretch;
z-index: 1;
}
/* class for the output area when it should be height-limited */
div.output_scroll {
/* ideally, this would be max-height, but FF barfs all over that */
height: 24em;
/* FF needs this *and the wrapper* to specify full width, or it will shrinkwrap */
width: 100%;
overflow: auto;
border-radius: 2px;
-webkit-box-shadow: inset 0 2px 8px rgba(0, 0, 0, 0.8);
box-shadow: inset 0 2px 8px rgba(0, 0, 0, 0.8);
display: block;
}
/* output div while it is collapsed */
div.output_collapsed {
margin: 0px;
padding: 0px;
/* Old browsers */
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-box-align: stretch;
display: -moz-box;
-moz-box-orient: vertical;
-moz-box-align: stretch;
display: box;
box-orient: vertical;
box-align: stretch;
/* Modern browsers */
display: flex;
flex-direction: column;
align-items: stretch;
}
div.out_prompt_overlay {
height: 100%;
padding: 0px 0.4em;
position: absolute;
border-radius: 2px;
}
div.out_prompt_overlay:hover {
/* use inner shadow to get border that is computed the same on WebKit/FF */
-webkit-box-shadow: inset 0 0 1px #000;
box-shadow: inset 0 0 1px #000;
background: rgba(240, 240, 240, 0.5);
}
div.output_prompt {
color: #D84315;
}
/* This class is the outer container of all output sections. */
div.output_area {
padding: 0px;
page-break-inside: avoid;
/* Old browsers */
display: -webkit-box;
-webkit-box-orient: horizontal;
-webkit-box-align: stretch;
display: -moz-box;
-moz-box-orient: horizontal;
-moz-box-align: stretch;
display: box;
box-orient: horizontal;
box-align: stretch;
/* Modern browsers */
display: flex;
flex-direction: row;
align-items: stretch;
}
div.output_area .MathJax_Display {
text-align: left !important;
}
div.output_area
div.output_area
div.output_area img,
div.output_area svg {
max-width: 100%;
height: auto;
}
div.output_area img.unconfined,
div.output_area svg.unconfined {
max-width: none;
}
div.output_area .mglyph > img {
max-width: none;
}
/* This is needed to protect the pre formating from global settings such
as that of bootstrap */
.output {
/* Old browsers */
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-box-align: stretch;
display: -moz-box;
-moz-box-orient: vertical;
-moz-box-align: stretch;
display: box;
box-orient: vertical;
box-align: stretch;
/* Modern browsers */
display: flex;
flex-direction: column;
align-items: stretch;
}
@media (max-width: 540px) {
div.output_area {
/* Old browsers */
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-box-align: stretch;
display: -moz-box;
-moz-box-orient: vertical;
-moz-box-align: stretch;
display: box;
box-orient: vertical;
box-align: stretch;
/* Modern browsers */
display: flex;
flex-direction: column;
align-items: stretch;
}
}
div.output_area pre {
margin: 0;
padding: 1px 0 1px 0;
border: 0;
vertical-align: baseline;
color: black;
background-color: transparent;
border-radius: 0;
}
/* This class is for the output subarea inside the output_area and after
the prompt div. */
div.output_subarea {
overflow-x: auto;
padding: 0.4em;
/* Old browsers */
-webkit-box-flex: 1;
-moz-box-flex: 1;
box-flex: 1;
/* Modern browsers */
flex: 1;
max-width: calc(100% - 14ex);
}
div.output_scroll div.output_subarea {
overflow-x: visible;
}
/* The rest of the output_* classes are for special styling of the different
output types */
/* all text output has this class: */
div.output_text {
text-align: left;
color: #000;
/* This has to match that of the the CodeMirror class line-height below */
line-height: 1.21429em;
}
/* stdout/stderr are 'text' as well as 'stream', but execute_result/error are *not* streams */
div.output_stderr {
background: #fdd;
/* very light red background for stderr */
}
div.output_latex {
text-align: left;
}
/* Empty output_javascript divs should have no height */
div.output_javascript:empty {
padding: 0;
}
.js-error {
color: darkred;
}
/* raw_input styles */
div.raw_input_container {
line-height: 1.21429em;
padding-top: 5px;
}
pre.raw_input_prompt {
/* nothing needed here. */
}
input.raw_input {
font-family: monospace;
font-size: inherit;
color: inherit;
width: auto;
/* make sure input baseline aligns with prompt */
vertical-align: baseline;
/* padding + margin = 0.5em between prompt and cursor */
padding: 0em 0.25em;
margin: 0em 0.25em;
}
input.raw_input:focus {
box-shadow: none;
}
p.p-space {
margin-bottom: 10px;
}
div.output_unrecognized {
padding: 5px;
font-weight: bold;
color: red;
}
div.output_unrecognized a {
color: inherit;
text-decoration: none;
}
div.output_unrecognized a:hover {
color: inherit;
text-decoration: none;
}
.rendered_html {
color: #000;
/* any extras will just be numbers: */
}
.rendered_html :link {
text-decoration: underline;
}
.rendered_html :visited {
text-decoration: underline;
}
.rendered_html h1:first-child {
margin-top: 0.538em;
}
.rendered_html h2:first-child {
margin-top: 0.636em;
}
.rendered_html h3:first-child {
margin-top: 0.777em;
}
.rendered_html h4:first-child {
margin-top: 1em;
}
.rendered_html h5:first-child {
margin-top: 1em;
}
.rendered_html h6:first-child {
margin-top: 1em;
}
.rendered_html ul:not(.list-inline),
.rendered_html ol:not(.list-inline) {
padding-left: 2em;
}
.rendered_html * + ul {
margin-top: 1em;
}
.rendered_html * + ol {
margin-top: 1em;
}
.rendered_html pre,
.rendered_html tr,
.rendered_html th,
.rendered_html tbody tr:nth-child(odd) {
background: #f5f5f5;
}
.rendered_html tbody tr:hover {
background: rgba(66, 165, 245, 0.2);
}
.rendered_html * + table {
margin-top: 1em;
}
.rendered_html * + p {
margin-top: 1em;
}
.rendered_html * + img {
margin-top: 1em;
}
.rendered_html img,
.rendered_html img.unconfined,
.rendered_html * + .alert {
margin-top: 1em;
}
[dir="rtl"]
div.text_cell {
/* Old browsers */
display: -webkit-box;
-webkit-box-orient: horizontal;
-webkit-box-align: stretch;
display: -moz-box;
-moz-box-orient: horizontal;
-moz-box-align: stretch;
display: box;
box-orient: horizontal;
box-align: stretch;
/* Modern browsers */
display: flex;
flex-direction: row;
align-items: stretch;
}
@media (max-width: 540px) {
div.text_cell > div.prompt {
display: none;
}
}
div.text_cell_render {
/*font-family: "Helvetica Neue", Arial, Helvetica, Geneva, sans-serif;*/
outline: none;
resize: none;
width: inherit;
border-style: none;
padding: 0.5em 0.5em 0.5em 0.4em;
color: #000;
box-sizing: border-box;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
}
a.anchor-link:link {
text-decoration: none;
padding: 0px 20px;
visibility: hidden;
}
h1:hover .anchor-link,
h2:hover .anchor-link,
h3:hover .anchor-link,
h4:hover .anchor-link,
h5:hover .anchor-link,
h6:hover .anchor-link {
visibility: visible;
}
.text_cell.rendered .input_area {
display: none;
}
.text_cell.rendered
.text_cell.rendered .rendered_html tr,
.text_cell.rendered .rendered_html th,
.text_cell.rendered
.text_cell.unrendered .text_cell_render {
display: none;
}
.text_cell .dropzone .input_area {
border: 2px dashed #bababa;
margin: -1px;
}
.cm-header-1,
.cm-header-2,
.cm-header-3,
.cm-header-4,
.cm-header-5,
.cm-header-6 {
font-weight: bold;
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
}
.cm-header-1 {
font-size: 185.7%;
}
.cm-header-2 {
font-size: 157.1%;
}
.cm-header-3 {
font-size: 128.6%;
}
.cm-header-4 {
font-size: 110%;
}
.cm-header-5 {
font-size: 100%;
font-style: italic;
}
.cm-header-6 {
font-size: 100%;
font-style: italic;
}
</style>
<style type="text/css">pre { line-height: 125%; }
td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
.highlight pre .hll { background-color: #ffffcc }
.highlight pre { background: #f8f8f8; }
.highlight pre .c { color: #3D7B7B; font-style: italic } /* Comment */
.highlight pre .err { border: 1px solid #FF0000 } /* Error */
.highlight pre .k { color: #008000; font-weight: bold } /* Keyword */
.highlight pre .o { color: #666666 } /* Operator */
.highlight pre .ch { color: #3D7B7B; font-style: italic } /* Comment.Hashbang */
.highlight pre .cm { color: #3D7B7B; font-style: italic } /* Comment.Multiline */
.highlight pre .cp { color: #9C6500 } /* Comment.Preproc */
.highlight pre .cpf { color: #3D7B7B; font-style: italic } /* Comment.PreprocFile */
.highlight pre .c1 { color: #3D7B7B; font-style: italic } /* Comment.Single */
.highlight pre .cs { color: #3D7B7B; font-style: italic } /* Comment.Special */
.highlight pre .gd { color: #A00000 } /* Generic.Deleted */
.highlight pre .ge { font-style: italic } /* Generic.Emph */
.highlight pre .gr { color: #E40000 } /* Generic.Error */
.highlight pre .gh { color: #000080; font-weight: bold } /* Generic.Heading */
.highlight pre .gi { color: #008400 } /* Generic.Inserted */
.highlight pre .go { color: #717171 } /* Generic.Output */
.highlight pre .gp { color: #000080; font-weight: bold } /* Generic.Prompt */
.highlight pre .gs { font-weight: bold } /* Generic.Strong */
.highlight pre .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
.highlight pre .gt { color: #0044DD } /* Generic.Traceback */
.highlight pre .kc { color: #008000; font-weight: bold } /* Keyword.Constant */
.highlight pre .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */
.highlight pre .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */
.highlight pre .kp { color: #008000 } /* Keyword.Pseudo */
.highlight pre .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */
.highlight pre .kt { color: #B00040 } /* Keyword.Type */
.highlight pre .m { color: #666666 } /* Literal.Number */
.highlight pre .s { color: #BA2121 } /* Literal.String */
.highlight pre .na { color: #687822 } /* Name.Attribute */
.highlight pre .nb { color: #008000 } /* Name.Builtin */
.highlight pre .nc { color: #0000FF; font-weight: bold } /* Name.Class */
.highlight pre .no { color: #880000 } /* Name.Constant */
.highlight pre .nd { color: #AA22FF } /* Name.Decorator */
.highlight pre .ni { color: #717171; font-weight: bold } /* Name.Entity */
.highlight pre .ne { color: #CB3F38; font-weight: bold } /* Name.Exception */
.highlight pre .nf { color: #0000FF } /* Name.Function */
.highlight pre .nl { color: #767600 } /* Name.Label */
.highlight pre .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */
.highlight pre .nt { color: #008000; font-weight: bold } /* Name.Tag */
.highlight pre .nv { color: #19177C } /* Name.Variable */
.highlight pre .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */
.highlight pre .w { color: #bbbbbb } /* Text.Whitespace */
.highlight pre .mb { color: #666666 } /* Literal.Number.Bin */
.highlight pre .mf { color: #666666 } /* Literal.Number.Float */
.highlight pre .mh { color: #666666 } /* Literal.Number.Hex */
.highlight pre .mi { color: #666666 } /* Literal.Number.Integer */
.highlight pre .mo { color: #666666 } /* Literal.Number.Oct */
.highlight pre .sa { color: #BA2121 } /* Literal.String.Affix */
.highlight pre .sb { color: #BA2121 } /* Literal.String.Backtick */
.highlight pre .sc { color: #BA2121 } /* Literal.String.Char */
.highlight pre .dl { color: #BA2121 } /* Literal.String.Delimiter */
.highlight pre .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */
.highlight pre .s2 { color: #BA2121 } /* Literal.String.Double */
.highlight pre .se { color: #AA5D1F; font-weight: bold } /* Literal.String.Escape */
.highlight pre .sh { color: #BA2121 } /* Literal.String.Heredoc */
.highlight pre .si { color: #A45A77; font-weight: bold } /* Literal.String.Interpol */
.highlight pre .sx { color: #008000 } /* Literal.String.Other */
.highlight pre .sr { color: #A45A77 } /* Literal.String.Regex */
.highlight pre .s1 { color: #BA2121 } /* Literal.String.Single */
.highlight pre .ss { color: #19177C } /* Literal.String.Symbol */
.highlight pre .bp { color: #008000 } /* Name.Builtin.Pseudo */
.highlight pre .fm { color: #0000FF } /* Name.Function.Magic */
.highlight pre .vc { color: #19177C } /* Name.Variable.Class */
.highlight pre .vg { color: #19177C } /* Name.Variable.Global */
.highlight pre .vi { color: #19177C } /* Name.Variable.Instance */
.highlight pre .vm { color: #19177C } /* Name.Variable.Magic */
.highlight pre .il { color: #666666 } /* Literal.Number.Integer.Long */</style><div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div><div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<p><img src="./images/dall-e-stoic.png" alt="dall-e-stoic" title="Dall-E generative AI image of a stoic in meditation"></p>
<p>Throughout my life I have sought principles I could learn from and apply to live the best life I could. One of the greatest schools of secular thought on the subject is Stoic philosophy, also known as Stoicism. In this article, I embark to provide a concise synopsis of Stoicism, offering a mix of history, principles, and daily practices to give you a good place to start. I also threw in some of my favorite quotes, and a reading list for further study should this article peak your interest. Best of luck on your own journey into Stoicism!</p>
<p><em>Note: Since this blog is related to machine learning and AI topics, parts of this article were written with the help of Generative AI, but all were edited and fact checked by me</em></p>
<hr>
<h2 id="A-brief-history">A brief history<a class="anchor-link" href="#A-brief-history">¶</a></h2><p>Stoic philosophy originated in ancient Greece and evolved into a prominent school of thought in ancient Rome. Stoicism was founded by Zeno of Citium around 300 BCE in Athens. Zeno was influenced by the Cynics and Socrates. The name "Stoicism" is derived from the Stoa Poikile, a painted colonnade where Zeno taught. Zeno's teachings emphasized living in accordance with nature, self-control, and virtuous living. His successors, Cleanthes and Chrysippus, further developed Stoic philosophy, laying the groundwork for its principles and practices. Stoicism gained popularity in Rome during the 1st century BCE, with Roman statesmen, philosophers, and intellectuals embracing its ideas. Prominent Roman Stoics included Seneca the Younger, Epictetus, and the Roman Emperor Marcus Aurelius. These three great Roman Stoics came to define the core elements of accesible Stoic literature, partially because their oral teachings and writings were well preserved and translated into English.</p>
<p><strong>Seneca</strong>, a prominent Stoic philosopher and statesman, emphasized the importance of reason, self-discipline, and accepting one's fate. His writings on ethics, such as "Letters to Lucilius," became influential in Stoic teachings. <strong>Epictetus</strong> was born a house slave to a noble, but rose to become a respected philosopher. His teachings focused on distinguishing between what is in our control (our thoughts and actions) and what is not (external events). He emphasized personal freedom through inner peace. <strong>Marcus Aurelius</strong> was the last of the "five good emperors" of Rome and ruled in the final years of the Pax Romana period in Roman history. Marcus Aurelius practiced Stoicism in his rule. His personal diary "Meditations" remains a classic work of Stoic philosophy, reflecting on ethical principles and the transient nature of life.</p>
<p>Stoicism continued to influence philosophical thought throughout the Roman Empire and beyond. However, as the Western Roman Empire declined, Stoicism gradually declined in prominence. Stoicism experienced a revival during the Renaissance and Enlightenment periods. In more recent times, its ideas have influenced various philosophical and psychological movements. Despite its ancient origins, Stoicism's core principles and practices have remained relevant over the centuries. It continues to inspire individuals seeking wisdom, resilience, and inner peace in their lives.</p>
<h2 id="Stoic-principles">Stoic principles<a class="anchor-link" href="#Stoic-principles">¶</a></h2><p>The Stoics believed that philosophy was a way of life and not just a theoretical discipline, so they developed principles which can be put into daily practice. The principles of Stoic philosophy revolve around the pursuit of virtue, rationality, and inner tranquility. Key tenets include accepting what is beyond our control, focusing on what we can control (our thoughts and actions), cultivating self-discipline, practicing gratitude, and embracing the impermanence of life. Stoicism emphasizes living in harmony with nature and understanding that external events don't dictate our well-being – it's our response to them that matters. The goal is to achieve eudaimonia, a state of flourishing and living a meaningful life.</p>
<p>Living a life of virtue, according to Stoic philosophy, involves cultivating certain qualities and behaviors to lead a morally upright and fulfilling life. Here are some deeper insights on how one can strive to live a virtuous life:</p>
<ol>
<li><p><strong>Wisdom</strong>: Seek knowledge, embrace reason, and develop a deep understanding of the world and oneself. Cultivate wisdom by learning from experiences and reflecting on your actions.</p>
</li>
<li><p><strong>Courage</strong>: Face challenges with bravery and resilience, both in the face of adversity and in standing up for what is right. Embrace difficulties as opportunities for growth.</p>
</li>
<li><p><strong>Temperance</strong>: Practice self-discipline and moderation. Avoid excess and indulgence, practice moderation, find a balanced approach in your actions and desires.</p>
</li>
<li><p><strong>Justice</strong>: Treat others with fairness, kindness, and empathy. Recognize the inherent worth and equality of all people, and act in ways that contribute positively to society.</p>
</li>
<li><p><strong>Tranquility</strong>: Develop inner peace and equanimity by accepting the things you cannot control and not being overly attached to external outcomes. Let go of unnecessary worries and focus on the present moment.</p>
</li>
<li><p><strong>Gratitude</strong>: Acknowledge and appreciate the good things in life, no matter how small. Cultivate an attitude of gratitude to foster contentment and prevent feelings of entitlement.</p>
</li>
<li><p><strong>Humility</strong>: Remain humble and open-minded, recognizing that there is always more to learn and that you are part of a greater whole. Avoid arrogance and the belief that you are better than others.</p>
</li>
<li><p><strong>Purpose</strong>: Find a meaningful purpose or calling in life, aligning your actions with your values and contributing positively to the world.</p>
</li>
<li><p><strong>Self-Reflection</strong>: Regularly examine your thoughts and behaviors, seeking to identify and rectify any flaws or areas for improvement.</p>
</li>
<li><p><strong>Practice</strong>: Virtue is not just a theoretical concept but a way of life. It requires continuous practice and effort to embody these principles in your everyday actions.</p>
</li>
</ol>
<p>Living a life of virtue is a journey, and no one is perfect. The Stoics emphasized <strong>progress over perfection</strong>, and by constantly striving to live in accordance with these principles, we can lead a more virtuous and fulfilling life.</p>
<h2 id="Stoic-Sayings">Stoic Sayings<a class="anchor-link" href="#Stoic-Sayings">¶</a></h2><p>Stoic philosophy is filled with insightful quotes that offer guidance and wisdom for life's journey. Here are some famous Stoic quotes that can help inspire and guide:</p>
<p>Epictetus:
></p>
<blockquote><ul>
<li><p>"It's not what happens to you, but how you react to it that matters."</p>
</li>
<li><p>"If a person gave away your body to some passerby, you'd be furious. Yet, you hand over your mind to anyone who comes along, so they may abuse you, leaving it disturbed and troubled — have you no shame in that?"</p>
</li>
<li><p>"The more we value things outside our control, the less control we have."</p>
</li>
<li><p>"No man is free who is not master of himself."</p>
</li>
</ul>
</blockquote>
<p>Seneca:
></p>
<blockquote><ul>
<li><p>"He who fears death will never do anything worthy of a living man."</p>
</li>
<li><p>"We suffer more often in imagination than in reality."</p>
</li>
<li><p>"Ignorance is the cause of fear."</p>
</li>
</ul>
</blockquote>
<p>Marcus Aurelius:
></p>
<blockquote><ul>
<li><p>"You have power over your mind, not outside events. Realize this, and you will find strength."</p>
</li>
<li><p>"The impediment to action advances action, what stands in the way becomes the way."</p>
</li>
<li><p>"You could leave life right now, let that determine what you do and say and think."</p>
</li>
</ul>
</blockquote>
<p>These quotes encapsulate Stoic principles and can serve as reminders to focus on what is within our control, to cultivate virtue, and to find inner strength and tranquility amidst life's challenges. Reflecting on these quotes and integrating their wisdom into your life can help you navigate your journey with greater wisdom and resilience.</p>
<h2 id="How-to-Stoic">How to Stoic<a class="anchor-link" href="#How-to-Stoic">¶</a></h2><p>Implementing Stoic philosophy in your daily life involves practicing specific techniques that help reinforce Stoic principles and cultivate virtue. Here are 19 useful Stoic practices you can incorporate into your routine:</p>
<ol>
<li><p><strong>Morning Meditation</strong>: Begin your day with a moment of reflection and set your intentions for the day ahead. Remind yourself of Stoic principles and how you aim to embody them in your actions.</p>
</li>
<li><p><strong>Negative Visualization</strong>: Take time to contemplate potential challenges or losses you might face. By mentally preparing for adversity, you build resilience and learn to appreciate what you have.</p>
</li>
<li><p><strong>Journaling</strong>: Keep a Stoic journal to reflect on your thoughts, emotions, and actions. Assess how well you adhered to Stoic principles and identify areas for improvement.</p>
</li>
<li><p><strong>Moment of Pause</strong>: When faced with a difficult situation or strong emotion, pause and take a deep breath. Allow yourself to respond rationally and calmly, rather than reacting impulsively.</p>
</li>
<li><p><strong>Practice Gratitude</strong>: Each day, express gratitude for the things you have and the people in your life. Cultivating appreciation helps foster contentment and diminish feelings of lacking.</p>
</li>
<li><p><strong>View from Above</strong>: Imagine looking at your life from a higher perspective, as if observing it from space. This practice can help you gain clarity, see the bigger picture, and reduce attachment to trivial matters.</p>
</li>
<li><p><strong>Voluntary Discomfort and Self Denial</strong>: Occasionally, practice self-denial or minimalism. By embracing discomfort, you strengthen your willpower and reduce dependency on external comforts.</p>
</li>
<li><p><strong>Delayed Gratification</strong>: Related to the last one, practice self-control and delay gratification for greater rewards in the future. Avoid impulsive behaviors and focus on long-term goals.</p>
</li>
<li><p><strong>Stoic Reading</strong>: Regularly read Stoic texts and philosophical works to deepen your understanding and inspire your journey.</p>
</li>
<li><p><strong>Evening Reflection</strong>: At the end of the day, review your actions and thoughts. Acknowledge successes in aligning with Stoic principles and identify areas where you can improve.</p>
</li>
<li><p><strong>Acceptance of Impermanence</strong>: Remind yourself regularly of the impermanent nature of all things, including life itself. Embrace change and focus on the present moment rather than dwelling on the past or worrying about the future.</p>
</li>
<li><p><strong>Practicing Equanimity</strong>: Maintain a balanced and even-tempered mindset in the face of both success and failure, joy and sorrow. Avoid excessive emotional reactions and seek a calm center.</p>
</li>
<li><p><strong>Charity and Kindness</strong>: Practice acts of kindness and charity towards others. Recognize the interconnectedness of humanity and be compassionate and supportive to those in need.</p>
</li>
<li><p><strong>Avoid Gossip and Criticism</strong>: Refrain from engaging in gossip and harsh criticism of others. Instead, focus on improving yourself and understanding the challenges faced by others.</p>
</li>
<li><p><strong>Contemplation of Death (Memento Mori)</strong>: Reflect on the inevitability of death to remind yourself of life's preciousness and encourage you to live fully and virtuously. Prepare yourself mentally for the inevitable so you can leave the world in peace.</p>
</li>
<li><p><strong>Simplify and Reduce Attachment</strong>: Detach yourself from material possessions and reduce your attachment to external outcomes. Find contentment in the essentials rather than constantly seeking more.</p>
</li>
<li><p><strong>Mindfulness of Speech</strong>: Be mindful of your words and practice speaking with clarity, honesty, and consideration. Avoid harmful or excessive speech that may cause harm to others or yourself.</p>
</li>
<li><p><strong>Cultivate Resilience</strong>: View challenges and setbacks as opportunities for growth and learning. Develop resilience by adapting to difficulties with a proactive and positive attitude.</p>
</li>
<li><p><strong>Visualize Virtuous Role Models</strong>: Imagine how virtuous role models from history or fictional characters would handle various situations. Use them as inspiration to guide your own behavior.</p>
</li>
</ol>
<p>Consistent practice is key to incorporating Stoic philosophy into your life effectively, but remember that these practices are meant to be integrated gradually into your life. Choose the ones that resonate with you the most and incorporate them into your routine consistently. Over time, these Stoic practices can help you live with greater wisdom, virtue, and tranquility.</p>
<h2 id="Modern-Stoics">Modern Stoics<a class="anchor-link" href="#Modern-Stoics">¶</a></h2><p>In modern times, there are several famous individuals who have exemplified virtuous qualities and can serve as role models. While no one is perfect, these individuals have demonstrated characteristics aligned with Stoic principles and have made positive contributions to society. Here are some good virtuous role models from various fields:</p>
<ul>
<li><p><strong>Nelson Mandela</strong>: Known for his forgiveness, resilience, and commitment to social justice, Nelson Mandela fought against apartheid in South Africa and promoted reconciliation and unity.</p>
</li>
<li><p><strong>Malala Yousafzai</strong>: An advocate for girls' education and women's rights, Malala showed immense courage and determination in the face of adversity.</p>
</li>
<li><p><strong>Mahatma Gandhi</strong>: A leader of nonviolent resistance, Gandhi's commitment to truth, nonviolence, and civil rights inspired change in India and beyond.</p>
</li>
<li><p><strong>Nadia Murad</strong>: A human rights activist and Nobel laureate who advocates for survivors of sexual violence and human trafficking.</p>
</li>
<li><p><strong>Malaika Vaz</strong>: An environmentalist and wildlife filmmaker, dedicating her work to raising awareness about conservation.</p>
</li>
<li><p><strong>Greta Thunberg</strong>: A young climate activist who advocates for environmental protection and action against climate change.</p>
</li>
</ul>
<p>Though these are examples of well known individuals, being a role model doesn't require fame or global recognition. Many virtuous individuals make significant impacts within their communities or personal spheres, and their actions can inspire those around them. Look for people who embody qualities like wisdom, courage, compassion, and a commitment to the greater good, and learn from their example as you strive to cultivate virtuous traits in your own life.</p>
<h2 id="Stoic-Readings">Stoic Readings<a class="anchor-link" href="#Stoic-Readings">¶</a></h2><p>In my own Stoic journey I found the following writings to be incredibly powerful and to offer excellent guidance on the path to living a virtuous life - I can recommend them highly.</p>
<ul>
<li>The Manual: A Philosopher's Guide to Life - Epictetus, Torode, Sam, Higginson, and Thomas Wentworth</li>
<li>Meditations: A New Translation - Marcus Aurelius, Gregory Hays</li>
<li>Dialogues and Essays - Seneca, Oxford World's Classics</li>
<li>A Guide to the Good Life: The Ancient Art of Stoic Joy - William B. Irvine</li>
</ul>
<h2 id="In-Closing">In Closing<a class="anchor-link" href="#In-Closing">¶</a></h2><p>In conclusion, Stoic philosophy offers timeless wisdom that resonates with people across generations. Its emphasis on virtue, self-discipline, and the pursuit of inner tranquility provides a roadmap for leading a fulfilling and purposeful life. By embracing the Stoic principles of acceptance, wisdom, and gratitude, individuals can navigate life's challenges with resilience and cultivate a profound sense of well-being. As we continue to grapple with the complexities of the modern world, Stoicism serves as a guiding light, reminding us to focus on what is within our control and to lead lives of virtue, wisdom, and compassion. By integrating Stoic practices into our daily routines, we can embark on a journey of self-improvement and find solace in the pursuit of eudaimonia - a flourishing life grounded in virtue and inner peace.</p>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [ ]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span>
</pre></div>
</div>
</div>
</div>
</div>
<script type="text/javascript">if (!document.getElementById('mathjaxscript_pelican_#%@#$@#')) {
var mathjaxscript = document.createElement('script');
mathjaxscript.id = 'mathjaxscript_pelican_#%@#$@#';
mathjaxscript.type = 'text/javascript';
mathjaxscript.src = '//cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML';
mathjaxscript[(window.opera ? "innerHTML" : "text")] =
"MathJax.Hub.Config({" +
" config: ['MMLorHTML.js']," +
" TeX: { extensions: ['AMSmath.js','AMSsymbols.js','noErrors.js','noUndefined.js'], equationNumbers: { autoNumber: 'AMS' } }," +
" jax: ['input/TeX','input/MathML','output/HTML-CSS']," +
" extensions: ['tex2jax.js','mml2jax.js','MathMenu.js','MathZoom.js']," +
" displayAlign: 'center'," +
" displayIndent: '0em'," +
" showMathMenu: true," +
" tex2jax: { " +
" inlineMath: [ ['$','$'] ], " +
" displayMath: [ ['$$','$$'] ]," +
" processEscapes: true," +
" preview: 'TeX'," +
" }, " +
" 'HTML-CSS': { " +
" linebreaks: { automatic: true, width: '95% container' }, " +
" styles: { '.MathJax_Display, .MathJax .mo, .MathJax .mi, .MathJax .mn': {color: 'black ! important'} }" +
" } " +
"}); ";
(document.body || document.getElementsByTagName('head')[0]).appendChild(mathjaxscript);
}
</script>
Explaining Multi-class XGBoost Models with SHAP2019-05-12T21:15:00-04:002019-05-12T21:15:00-04:00Evgeny Pogorelovtag:evgenypogorelov.com,2019-05-12:/multiclass-xgb-shap.html<p>Explaining Multi-class XGBoost Models with SHAP</p><style type="text/css">/*!
*
* IPython notebook
*
*/
/* CSS font colors for translated ANSI escape sequences */
/* The color values are a mix of
http://www.xcolors.net/dl/baskerville-ivorylight and
http://www.xcolors.net/dl/euphrasia */
.ansi-black-fg {
color: #3E424D;
}
.ansi-black-bg {
background-color: #3E424D;
}
.ansi-black-intense-fg {
color: #282C36;
}
.ansi-black-intense-bg {
background-color: #282C36;
}
.ansi-red-fg {
color: #E75C58;
}
.ansi-red-bg {
background-color: #E75C58;
}
.ansi-red-intense-fg {
color: #B22B31;
}
.ansi-red-intense-bg {
background-color: #B22B31;
}
.ansi-green-fg {
color: #00A250;
}
.ansi-green-bg {
background-color: #00A250;
}
.ansi-green-intense-fg {
color: #007427;
}
.ansi-green-intense-bg {
background-color: #007427;
}
.ansi-yellow-fg {
color: #DDB62B;
}
.ansi-yellow-bg {
background-color: #DDB62B;
}
.ansi-yellow-intense-fg {
color: #B27D12;
}
.ansi-yellow-intense-bg {
background-color: #B27D12;
}
.ansi-blue-fg {
color: #208FFB;
}
.ansi-blue-bg {
background-color: #208FFB;
}
.ansi-blue-intense-fg {
color: #0065CA;
}
.ansi-blue-intense-bg {
background-color: #0065CA;
}
.ansi-magenta-fg {
color: #D160C4;
}
.ansi-magenta-bg {
background-color: #D160C4;
}
.ansi-magenta-intense-fg {
color: #A03196;
}
.ansi-magenta-intense-bg {
background-color: #A03196;
}
.ansi-cyan-fg {
color: #60C6C8;
}
.ansi-cyan-bg {
background-color: #60C6C8;
}
.ansi-cyan-intense-fg {
color: #258F8F;
}
.ansi-cyan-intense-bg {
background-color: #258F8F;
}
.ansi-white-fg {
color: #C5C1B4;
}
.ansi-white-bg {
background-color: #C5C1B4;
}
.ansi-white-intense-fg {
color: #A1A6B2;
}
.ansi-white-intense-bg {
background-color: #A1A6B2;
}
.ansi-default-inverse-fg {
color: #FFFFFF;
}
.ansi-default-inverse-bg {
background-color: #000000;
}
.ansi-bold {
font-weight: bold;
}
.ansi-underline {
text-decoration: underline;
}
/* The following styles are deprecated an will be removed in a future version */
.ansibold {
font-weight: bold;
}
.ansi-inverse {
outline: 0.5px dotted;
}
/* use dark versions for foreground, to improve visibility */
.ansiblack {
color: black;
}
.ansired {
color: darkred;
}
.ansigreen {
color: darkgreen;
}
.ansiyellow {
color: #c4a000;
}
.ansiblue {
color: darkblue;
}
.ansipurple {
color: darkviolet;
}
.ansicyan {
color: steelblue;
}
.ansigray {
color: gray;
}
/* and light for background, for the same reason */
.ansibgblack {
background-color: black;
}
.ansibgred {
background-color: red;
}
.ansibggreen {
background-color: green;
}
.ansibgyellow {
background-color: yellow;
}
.ansibgblue {
background-color: blue;
}
.ansibgpurple {
background-color: magenta;
}
.ansibgcyan {
background-color: cyan;
}
.ansibggray {
background-color: gray;
}
div.cell {
/* Old browsers */
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-box-align: stretch;
display: -moz-box;
-moz-box-orient: vertical;
-moz-box-align: stretch;
display: box;
box-orient: vertical;
box-align: stretch;
/* Modern browsers */
display: flex;
flex-direction: column;
align-items: stretch;
border-radius: 2px;
box-sizing: border-box;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
border-width: 1px;
border-style: solid;
border-color: transparent;
width: 100%;
padding: 5px;
/* This acts as a spacer between cells, that is outside the border */
margin: 0px;
outline: none;
position: relative;
overflow: visible;
}
div.cell:before {
position: absolute;
display: block;
top: -1px;
left: -1px;
width: 5px;
height: calc(100% + 2px);
content: '';
background: transparent;
}
div.cell.jupyter-soft-selected {
border-left-color: #E3F2FD;
border-left-width: 1px;
padding-left: 5px;
border-right-color: #E3F2FD;
border-right-width: 1px;
background: #E3F2FD;
}
@media print {
div.cell.jupyter-soft-selected {
border-color: transparent;
}
}
div.cell.selected,
div.cell.selected.jupyter-soft-selected {
border-color: #ababab;
}
div.cell.selected:before,
div.cell.selected.jupyter-soft-selected:before {
position: absolute;
display: block;
top: -1px;
left: -1px;
width: 5px;
height: calc(100% + 2px);
content: '';
background: #42A5F5;
}
@media print {
div.cell.selected,
div.cell.selected.jupyter-soft-selected {
border-color: transparent;
}
}
.edit_mode div.cell.selected {
border-color: #66BB6A;
}
.edit_mode div.cell.selected:before {
position: absolute;
display: block;
top: -1px;
left: -1px;
width: 5px;
height: calc(100% + 2px);
content: '';
background: #66BB6A;
}
@media print {
.edit_mode div.cell.selected {
border-color: transparent;
}
}
.prompt {
/* This needs to be wide enough for 3 digit prompt numbers: In[100]: */
min-width: 14ex;
/* This padding is tuned to match the padding on the CodeMirror editor. */
padding: 0.4em;
margin: 0px;
font-family: monospace;
text-align: right;
/* This has to match that of the the CodeMirror class line-height below */
line-height: 1.21429em;
/* Don't highlight prompt number selection */
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
/* Use default cursor */
cursor: default;
}
@media (max-width: 540px) {
.prompt {
text-align: left;
}
}
div.inner_cell {
min-width: 0;
/* Old browsers */
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-box-align: stretch;
display: -moz-box;
-moz-box-orient: vertical;
-moz-box-align: stretch;
display: box;
box-orient: vertical;
box-align: stretch;
/* Modern browsers */
display: flex;
flex-direction: column;
align-items: stretch;
/* Old browsers */
-webkit-box-flex: 1;
-moz-box-flex: 1;
box-flex: 1;
/* Modern browsers */
flex: 1;
}
/* input_area and input_prompt must match in top border and margin for alignment */
div.input_area {
border: 1px solid #cfcfcf;
border-radius: 2px;
background: #f7f7f7;
line-height: 1.21429em;
}
/* This is needed so that empty prompt areas can collapse to zero height when there
is no content in the output_subarea and the prompt. The main purpose of this is
to make sure that empty JavaScript output_subareas have no height. */
div.prompt:empty {
padding-top: 0;
padding-bottom: 0;
}
div.unrecognized_cell {
padding: 5px 5px 5px 0px;
/* Old browsers */
display: -webkit-box;
-webkit-box-orient: horizontal;
-webkit-box-align: stretch;
display: -moz-box;
-moz-box-orient: horizontal;
-moz-box-align: stretch;
display: box;
box-orient: horizontal;
box-align: stretch;
/* Modern browsers */
display: flex;
flex-direction: row;
align-items: stretch;
}
div.unrecognized_cell .inner_cell {
border-radius: 2px;
padding: 5px;
font-weight: bold;
color: red;
border: 1px solid #cfcfcf;
background: #eaeaea;
}
div.unrecognized_cell .inner_cell a {
color: inherit;
text-decoration: none;
}
div.unrecognized_cell .inner_cell a:hover {
color: inherit;
text-decoration: none;
}
@media (max-width: 540px) {
div.unrecognized_cell > div.prompt {
display: none;
}
}
div.code_cell {
/* avoid page breaking on code cells when printing */
}
@media print {
div.code_cell {
page-break-inside: avoid;
}
}
/* any special styling for code cells that are currently running goes here */
div.input {
page-break-inside: avoid;
/* Old browsers */
display: -webkit-box;
-webkit-box-orient: horizontal;
-webkit-box-align: stretch;
display: -moz-box;
-moz-box-orient: horizontal;
-moz-box-align: stretch;
display: box;
box-orient: horizontal;
box-align: stretch;
/* Modern browsers */
display: flex;
flex-direction: row;
align-items: stretch;
}
@media (max-width: 540px) {
div.input {
/* Old browsers */
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-box-align: stretch;
display: -moz-box;
-moz-box-orient: vertical;
-moz-box-align: stretch;
display: box;
box-orient: vertical;
box-align: stretch;
/* Modern browsers */
display: flex;
flex-direction: column;
align-items: stretch;
}
}
/* input_area and input_prompt must match in top border and margin for alignment */
div.input_prompt {
color: #303F9F;
border-top: 1px solid transparent;
}
div.input_area > div.highlight {
margin: 0.4em;
border: none;
padding: 0px;
background-color: transparent;
}
div.input_area > div.highlight > pre {
margin: 0px;
border: none;
padding: 0px;
background-color: transparent;
}
/* The following gets added to the <head> if it is detected that the user has a
* monospace font with inconsistent normal/bold/italic height. See
* notebookmain.js. Such fonts will have keywords vertically offset with
* respect to the rest of the text. The user should select a better font.
* See: https://github.com/ipython/ipython/issues/1503
*
* .CodeMirror span {
* vertical-align: bottom;
* }
*/
.CodeMirror {
line-height: 1.21429em;
/* Changed from 1em to our global default */
font-size: 14px;
height: auto;
/* Changed to auto to autogrow */
background: none;
/* Changed from white to allow our bg to show through */
}
.CodeMirror-scroll {
/* The CodeMirror docs are a bit fuzzy on if overflow-y should be hidden or visible.*/
/* We have found that if it is visible, vertical scrollbars appear with font size changes.*/
overflow-y: hidden;
overflow-x: auto;
}
.CodeMirror-lines {
/* In CM2, this used to be 0.4em, but in CM3 it went to 4px. We need the em value because */
/* we have set a different line-height and want this to scale with that. */
/* Note that this should set vertical padding only, since CodeMirror assumes
that horizontal padding will be set on CodeMirror pre */
padding: 0.4em 0;
}
.CodeMirror-linenumber {
padding: 0 8px 0 4px;
}
.CodeMirror-gutters {
border-bottom-left-radius: 2px;
border-top-left-radius: 2px;
}
.CodeMirror pre {
/* In CM3 this went to 4px from 0 in CM2. This sets horizontal padding only,
use .CodeMirror-lines for vertical */
padding: 0 0.4em;
border: 0;
border-radius: 0;
}
.CodeMirror-cursor {
border-left: 1.4px solid black;
}
@media screen and (min-width: 2138px) and (max-width: 4319px) {
.CodeMirror-cursor {
border-left: 2px solid black;
}
}
@media screen and (min-width: 4320px) {
.CodeMirror-cursor {
border-left: 4px solid black;
}
}
/*
Original style from softwaremaniacs.org (c) Ivan Sagalaev <Maniac@SoftwareManiacs.Org>
Adapted from GitHub theme
*/
.highlight-base {
color: #000;
}
.highlight-variable {
color: #000;
}
.highlight-variable-2 {
color: #1a1a1a;
}
.highlight-variable-3 {
color: #333333;
}
.highlight-string {
color: #BA2121;
}
.highlight-comment {
color: #408080;
font-style: italic;
}
.highlight-number {
color: #080;
}
.highlight-atom {
color: #88F;
}
.highlight-keyword {
color: #008000;
font-weight: bold;
}
.highlight-builtin {
color: #008000;
}
.highlight-error {
color: #f00;
}
.highlight-operator {
color: #AA22FF;
font-weight: bold;
}
.highlight-meta {
color: #AA22FF;
}
/* previously not defined, copying from default codemirror */
.highlight-def {
color: #00f;
}
.highlight-string-2 {
color: #f50;
}
.highlight-qualifier {
color: #555;
}
.highlight-bracket {
color: #997;
}
.highlight-tag {
color: #170;
}
.highlight-attribute {
color: #00c;
}
.highlight-header {
color: blue;
}
.highlight-quote {
color: #090;
}
.highlight-link {
color: #00c;
}
/* apply the same style to codemirror */
.cm-s-ipython span.cm-keyword {
color: #008000;
font-weight: bold;
}
.cm-s-ipython span.cm-atom {
color: #88F;
}
.cm-s-ipython span.cm-number {
color: #080;
}
.cm-s-ipython span.cm-def {
color: #00f;
}
.cm-s-ipython span.cm-variable {
color: #000;
}
.cm-s-ipython span.cm-operator {
color: #AA22FF;
font-weight: bold;
}
.cm-s-ipython span.cm-variable-2 {
color: #1a1a1a;
}
.cm-s-ipython span.cm-variable-3 {
color: #333333;
}
.cm-s-ipython span.cm-comment {
color: #408080;
font-style: italic;
}
.cm-s-ipython span.cm-string {
color: #BA2121;
}
.cm-s-ipython span.cm-string-2 {
color: #f50;
}
.cm-s-ipython span.cm-meta {
color: #AA22FF;
}
.cm-s-ipython span.cm-qualifier {
color: #555;
}
.cm-s-ipython span.cm-builtin {
color: #008000;
}
.cm-s-ipython span.cm-bracket {
color: #997;
}
.cm-s-ipython span.cm-tag {
color: #170;
}
.cm-s-ipython span.cm-attribute {
color: #00c;
}
.cm-s-ipython span.cm-header {
color: blue;
}
.cm-s-ipython span.cm-quote {
color: #090;
}
.cm-s-ipython span.cm-link {
color: #00c;
}
.cm-s-ipython span.cm-error {
color: #f00;
}
.cm-s-ipython span.cm-tab {
background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAMCAYAAAAkuj5RAAAAAXNSR0IArs4c6QAAAGFJREFUSMft1LsRQFAQheHPowAKoACx3IgEKtaEHujDjORSgWTH/ZOdnZOcM/sgk/kFFWY0qV8foQwS4MKBCS3qR6ixBJvElOobYAtivseIE120FaowJPN75GMu8j/LfMwNjh4HUpwg4LUAAAAASUVORK5CYII=);
background-position: right;
background-repeat: no-repeat;
}
div.output_wrapper {
/* this position must be relative to enable descendents to be absolute within it */
position: relative;
/* Old browsers */
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-box-align: stretch;
display: -moz-box;
-moz-box-orient: vertical;
-moz-box-align: stretch;
display: box;
box-orient: vertical;
box-align: stretch;
/* Modern browsers */
display: flex;
flex-direction: column;
align-items: stretch;
z-index: 1;
}
/* class for the output area when it should be height-limited */
div.output_scroll {
/* ideally, this would be max-height, but FF barfs all over that */
height: 24em;
/* FF needs this *and the wrapper* to specify full width, or it will shrinkwrap */
width: 100%;
overflow: auto;
border-radius: 2px;
-webkit-box-shadow: inset 0 2px 8px rgba(0, 0, 0, 0.8);
box-shadow: inset 0 2px 8px rgba(0, 0, 0, 0.8);
display: block;
}
/* output div while it is collapsed */
div.output_collapsed {
margin: 0px;
padding: 0px;
/* Old browsers */
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-box-align: stretch;
display: -moz-box;
-moz-box-orient: vertical;
-moz-box-align: stretch;
display: box;
box-orient: vertical;
box-align: stretch;
/* Modern browsers */
display: flex;
flex-direction: column;
align-items: stretch;
}
div.out_prompt_overlay {
height: 100%;
padding: 0px 0.4em;
position: absolute;
border-radius: 2px;
}
div.out_prompt_overlay:hover {
/* use inner shadow to get border that is computed the same on WebKit/FF */
-webkit-box-shadow: inset 0 0 1px #000;
box-shadow: inset 0 0 1px #000;
background: rgba(240, 240, 240, 0.5);
}
div.output_prompt {
color: #D84315;
}
/* This class is the outer container of all output sections. */
div.output_area {
padding: 0px;
page-break-inside: avoid;
/* Old browsers */
display: -webkit-box;
-webkit-box-orient: horizontal;
-webkit-box-align: stretch;
display: -moz-box;
-moz-box-orient: horizontal;
-moz-box-align: stretch;
display: box;
box-orient: horizontal;
box-align: stretch;
/* Modern browsers */
display: flex;
flex-direction: row;
align-items: stretch;
}
div.output_area .MathJax_Display {
text-align: left !important;
}
div.output_area
div.output_area
div.output_area img,
div.output_area svg {
max-width: 100%;
height: auto;
}
div.output_area img.unconfined,
div.output_area svg.unconfined {
max-width: none;
}
div.output_area .mglyph > img {
max-width: none;
}
/* This is needed to protect the pre formating from global settings such
as that of bootstrap */
.output {
/* Old browsers */
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-box-align: stretch;
display: -moz-box;
-moz-box-orient: vertical;
-moz-box-align: stretch;
display: box;
box-orient: vertical;
box-align: stretch;
/* Modern browsers */
display: flex;
flex-direction: column;
align-items: stretch;
}
@media (max-width: 540px) {
div.output_area {
/* Old browsers */
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-box-align: stretch;
display: -moz-box;
-moz-box-orient: vertical;
-moz-box-align: stretch;
display: box;
box-orient: vertical;
box-align: stretch;
/* Modern browsers */
display: flex;
flex-direction: column;
align-items: stretch;
}
}
div.output_area pre {
margin: 0;
padding: 1px 0 1px 0;
border: 0;
vertical-align: baseline;
color: black;
background-color: transparent;
border-radius: 0;
}
/* This class is for the output subarea inside the output_area and after
the prompt div. */
div.output_subarea {
overflow-x: auto;
padding: 0.4em;
/* Old browsers */
-webkit-box-flex: 1;
-moz-box-flex: 1;
box-flex: 1;
/* Modern browsers */
flex: 1;
max-width: calc(100% - 14ex);
}
div.output_scroll div.output_subarea {
overflow-x: visible;
}
/* The rest of the output_* classes are for special styling of the different
output types */
/* all text output has this class: */
div.output_text {
text-align: left;
color: #000;
/* This has to match that of the the CodeMirror class line-height below */
line-height: 1.21429em;
}
/* stdout/stderr are 'text' as well as 'stream', but execute_result/error are *not* streams */
div.output_stderr {
background: #fdd;
/* very light red background for stderr */
}
div.output_latex {
text-align: left;
}
/* Empty output_javascript divs should have no height */
div.output_javascript:empty {
padding: 0;
}
.js-error {
color: darkred;
}
/* raw_input styles */
div.raw_input_container {
line-height: 1.21429em;
padding-top: 5px;
}
pre.raw_input_prompt {
/* nothing needed here. */
}
input.raw_input {
font-family: monospace;
font-size: inherit;
color: inherit;
width: auto;
/* make sure input baseline aligns with prompt */
vertical-align: baseline;
/* padding + margin = 0.5em between prompt and cursor */
padding: 0em 0.25em;
margin: 0em 0.25em;
}
input.raw_input:focus {
box-shadow: none;
}
p.p-space {
margin-bottom: 10px;
}
div.output_unrecognized {
padding: 5px;
font-weight: bold;
color: red;
}
div.output_unrecognized a {
color: inherit;
text-decoration: none;
}
div.output_unrecognized a:hover {
color: inherit;
text-decoration: none;
}
.rendered_html {
color: #000;
/* any extras will just be numbers: */
}
.rendered_html :link {
text-decoration: underline;
}
.rendered_html :visited {
text-decoration: underline;
}
.rendered_html h1:first-child {
margin-top: 0.538em;
}
.rendered_html h2:first-child {
margin-top: 0.636em;
}
.rendered_html h3:first-child {
margin-top: 0.777em;
}
.rendered_html h4:first-child {
margin-top: 1em;
}
.rendered_html h5:first-child {
margin-top: 1em;
}
.rendered_html h6:first-child {
margin-top: 1em;
}
.rendered_html ul:not(.list-inline),
.rendered_html ol:not(.list-inline) {
padding-left: 2em;
}
.rendered_html * + ul {
margin-top: 1em;
}
.rendered_html * + ol {
margin-top: 1em;
}
.rendered_html pre,
.rendered_html tr,
.rendered_html th,
.rendered_html tbody tr:nth-child(odd) {
background: #f5f5f5;
}
.rendered_html tbody tr:hover {
background: rgba(66, 165, 245, 0.2);
}
.rendered_html * + table {
margin-top: 1em;
}
.rendered_html * + p {
margin-top: 1em;
}
.rendered_html * + img {
margin-top: 1em;
}
.rendered_html img,
.rendered_html img.unconfined,
.rendered_html * + .alert {
margin-top: 1em;
}
[dir="rtl"]
div.text_cell {
/* Old browsers */
display: -webkit-box;
-webkit-box-orient: horizontal;
-webkit-box-align: stretch;
display: -moz-box;
-moz-box-orient: horizontal;
-moz-box-align: stretch;
display: box;
box-orient: horizontal;
box-align: stretch;
/* Modern browsers */
display: flex;
flex-direction: row;
align-items: stretch;
}
@media (max-width: 540px) {
div.text_cell > div.prompt {
display: none;
}
}
div.text_cell_render {
/*font-family: "Helvetica Neue", Arial, Helvetica, Geneva, sans-serif;*/
outline: none;
resize: none;
width: inherit;
border-style: none;
padding: 0.5em 0.5em 0.5em 0.4em;
color: #000;
box-sizing: border-box;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
}
a.anchor-link:link {
text-decoration: none;
padding: 0px 20px;
visibility: hidden;
}
h1:hover .anchor-link,
h2:hover .anchor-link,
h3:hover .anchor-link,
h4:hover .anchor-link,
h5:hover .anchor-link,
h6:hover .anchor-link {
visibility: visible;
}
.text_cell.rendered .input_area {
display: none;
}
.text_cell.rendered
.text_cell.rendered .rendered_html tr,
.text_cell.rendered .rendered_html th,
.text_cell.rendered
.text_cell.unrendered .text_cell_render {
display: none;
}
.text_cell .dropzone .input_area {
border: 2px dashed #bababa;
margin: -1px;
}
.cm-header-1,
.cm-header-2,
.cm-header-3,
.cm-header-4,
.cm-header-5,
.cm-header-6 {
font-weight: bold;
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
}
.cm-header-1 {
font-size: 185.7%;
}
.cm-header-2 {
font-size: 157.1%;
}
.cm-header-3 {
font-size: 128.6%;
}
.cm-header-4 {
font-size: 110%;
}
.cm-header-5 {
font-size: 100%;
font-style: italic;
}
.cm-header-6 {
font-size: 100%;
font-style: italic;
}
</style>
<style type="text/css">pre { line-height: 125%; }
td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
.highlight pre .hll { background-color: #ffffcc }
.highlight pre { background: #f8f8f8; }
.highlight pre .c { color: #3D7B7B; font-style: italic } /* Comment */
.highlight pre .err { border: 1px solid #FF0000 } /* Error */
.highlight pre .k { color: #008000; font-weight: bold } /* Keyword */
.highlight pre .o { color: #666666 } /* Operator */
.highlight pre .ch { color: #3D7B7B; font-style: italic } /* Comment.Hashbang */
.highlight pre .cm { color: #3D7B7B; font-style: italic } /* Comment.Multiline */
.highlight pre .cp { color: #9C6500 } /* Comment.Preproc */
.highlight pre .cpf { color: #3D7B7B; font-style: italic } /* Comment.PreprocFile */
.highlight pre .c1 { color: #3D7B7B; font-style: italic } /* Comment.Single */
.highlight pre .cs { color: #3D7B7B; font-style: italic } /* Comment.Special */
.highlight pre .gd { color: #A00000 } /* Generic.Deleted */
.highlight pre .ge { font-style: italic } /* Generic.Emph */
.highlight pre .gr { color: #E40000 } /* Generic.Error */
.highlight pre .gh { color: #000080; font-weight: bold } /* Generic.Heading */
.highlight pre .gi { color: #008400 } /* Generic.Inserted */
.highlight pre .go { color: #717171 } /* Generic.Output */
.highlight pre .gp { color: #000080; font-weight: bold } /* Generic.Prompt */
.highlight pre .gs { font-weight: bold } /* Generic.Strong */
.highlight pre .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
.highlight pre .gt { color: #0044DD } /* Generic.Traceback */
.highlight pre .kc { color: #008000; font-weight: bold } /* Keyword.Constant */
.highlight pre .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */
.highlight pre .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */
.highlight pre .kp { color: #008000 } /* Keyword.Pseudo */
.highlight pre .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */
.highlight pre .kt { color: #B00040 } /* Keyword.Type */
.highlight pre .m { color: #666666 } /* Literal.Number */
.highlight pre .s { color: #BA2121 } /* Literal.String */
.highlight pre .na { color: #687822 } /* Name.Attribute */
.highlight pre .nb { color: #008000 } /* Name.Builtin */
.highlight pre .nc { color: #0000FF; font-weight: bold } /* Name.Class */
.highlight pre .no { color: #880000 } /* Name.Constant */
.highlight pre .nd { color: #AA22FF } /* Name.Decorator */
.highlight pre .ni { color: #717171; font-weight: bold } /* Name.Entity */
.highlight pre .ne { color: #CB3F38; font-weight: bold } /* Name.Exception */
.highlight pre .nf { color: #0000FF } /* Name.Function */
.highlight pre .nl { color: #767600 } /* Name.Label */
.highlight pre .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */
.highlight pre .nt { color: #008000; font-weight: bold } /* Name.Tag */
.highlight pre .nv { color: #19177C } /* Name.Variable */
.highlight pre .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */
.highlight pre .w { color: #bbbbbb } /* Text.Whitespace */
.highlight pre .mb { color: #666666 } /* Literal.Number.Bin */
.highlight pre .mf { color: #666666 } /* Literal.Number.Float */
.highlight pre .mh { color: #666666 } /* Literal.Number.Hex */
.highlight pre .mi { color: #666666 } /* Literal.Number.Integer */
.highlight pre .mo { color: #666666 } /* Literal.Number.Oct */
.highlight pre .sa { color: #BA2121 } /* Literal.String.Affix */
.highlight pre .sb { color: #BA2121 } /* Literal.String.Backtick */
.highlight pre .sc { color: #BA2121 } /* Literal.String.Char */
.highlight pre .dl { color: #BA2121 } /* Literal.String.Delimiter */
.highlight pre .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */
.highlight pre .s2 { color: #BA2121 } /* Literal.String.Double */
.highlight pre .se { color: #AA5D1F; font-weight: bold } /* Literal.String.Escape */
.highlight pre .sh { color: #BA2121 } /* Literal.String.Heredoc */
.highlight pre .si { color: #A45A77; font-weight: bold } /* Literal.String.Interpol */
.highlight pre .sx { color: #008000 } /* Literal.String.Other */
.highlight pre .sr { color: #A45A77 } /* Literal.String.Regex */
.highlight pre .s1 { color: #BA2121 } /* Literal.String.Single */
.highlight pre .ss { color: #19177C } /* Literal.String.Symbol */
.highlight pre .bp { color: #008000 } /* Name.Builtin.Pseudo */
.highlight pre .fm { color: #0000FF } /* Name.Function.Magic */
.highlight pre .vc { color: #19177C } /* Name.Variable.Class */
.highlight pre .vg { color: #19177C } /* Name.Variable.Global */
.highlight pre .vi { color: #19177C } /* Name.Variable.Instance */
.highlight pre .vm { color: #19177C } /* Name.Variable.Magic */
.highlight pre .il { color: #666666 } /* Literal.Number.Integer.Long */</style><div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div><div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<p><img src="./images/paynoattentionman.jpg" alt="paynoattentionman" title="Pay no attention to that man behind the curtain"></p>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div><div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<p>These days, when people talk about machine learning, they are usually referring to the modern nonlinear methods that tend to win Kaggle competetitions: Random Forests, Gradient Boosted Trees, XGBoost, or the various forms of Neural Networks. People talk about how these modern methods generally provide lower bias and are able to better optimize an objective function than the more traditional methods like Linear Regression or Logistic Regression (for classification). However, when organizations- specifically organizations in heavily regulated industries like finance, healthcare, and insurance - talk about machine learning, they tend to talk about how they can't implement machine learning in their business because it's too much of a "black box."</p>
<p>These organizations make underwriting and pricing decisions based on predictons for annual income, credit default risk, probability of death, disease risk, and many others. They worry about a series of regulatory requirements forcing them to explain why a particular decision was reached on a single sample, in a clear and defensible manner. Nobody wants to be the first to test a new regulatory standard and it is far easier to continue business-as-usual, so these organizations like their tidy formulas and interpretable coefficients and they won't give them up without good reason. From the perspective of a data scientist, that good reason is lower model bias leading to better predictions further leading to better customer experiences, a reduction in regulatory issues, and ultimately a stronger competitive advantage and higher profits for the enterprise. The first mover has much to gain, but also a lot to lose. By applying the techniques discussed here it should become clear there are ways to create value and effectively mitigate the regulatory risks involved.</p>
<p>In recent years the "black box" nature of nonparametric machine learnings models has given way to several methods that help us crack open what is happening inside a complex model. Thanks to ongoing research in the field of ML model explainability, we now have at least five good methods with which we can explore the inner workings of our models.</p>
<p>An exhaustive review of all methods is outside the scope of this article, but below is a non-exhaustive set of links for those interested in further research:</p>
<ul>
<li><a href="https://xgboost.readthedocs.io/en/latest/python/python_api.html#module-xgboost.plotting">Feature Importance (XGBoost)</a></li>
<li><a href="https://www.kaggle.com/dansbecker/permutation-importance">Permutation Importance</a></li>
<li><a href="https://www.kaggle.com/dansbecker/partial-plots">Partial Dependence</a></li>
<li><a href="https://www.oreilly.com/learning/introduction-to-local-interpretable-model-agnostic-explanations-lime">LIME</a></li>
<li><a href="https://github.com/slundberg/shap">SHAP</a></li>
</ul>
<p>The goals of this post are to:</p>
<ol>
<li>Build an XGBoost binary classifier </li>
<li>Showcase SHAP to explain model predictions so a regulator can understand</li>
<li>Discuss some edge cases and limitations of SHAP in a multi-class problem</li>
</ol>
<p>In <a href="https://towardsdatascience.com/interpretable-machine-learning-with-xgboost-9ec80d148d27">a well-argued piece</a>, one of the team members behind SHAP explains why this is the ideal choice for explaining ML models and is superior to other methods. SHAP stands for 'Shapley Additive Explanations' and it applies game theory to local explanations to create consistent and locally accurate additive feature attributions. If this doesn't make a lot of sense, don't worry, the graphs below will mostly speak for themselves.</p>
<p>In this post I will demonstrate a simple XGBoost example for a binary and multiclass classification problem, and how to use SHAP to effectively explain what is going on under the hood. I will begin with a binary classifier using the <a href="http://web.stanford.edu/class/archive/cs/cs109/cs109.1166/problem12.html">Titanic Survival Dataset</a>.</p>
<p>Then we will explain the predictions using SHAP plots like this one:</p>
<p><img src="./images/shap_example.png" alt="shap_example" title="SHAP example"></p>
<h2 id="1.-Build-the-Model">1. Build the Model<a class="anchor-link" href="#1.-Build-the-Model">¶</a></h2><p>First we import the necessary packages:</p>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [424]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="kn">import</span> <span class="nn">xgboost</span> <span class="k">as</span> <span class="nn">xgb</span>
<span class="kn">from</span> <span class="nn">sklearn.model_selection</span> <span class="kn">import</span> <span class="n">train_test_split</span><span class="p">,</span> <span class="n">StratifiedKFold</span><span class="p">,</span> <span class="n">GridSearchCV</span><span class="p">,</span> <span class="n">cross_validate</span>
<span class="kn">import</span> <span class="nn">matplotlib.pylab</span> <span class="k">as</span> <span class="nn">pl</span>
<span class="kn">import</span> <span class="nn">pandas</span> <span class="k">as</span> <span class="nn">pd</span>
<span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
<span class="kn">import</span> <span class="nn">sklearn.metrics</span> <span class="k">as</span> <span class="nn">metrics</span>
<span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="k">as</span> <span class="nn">plt</span>
</pre></div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div><div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<p>Next, we import our data an look at a preview</p>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [425]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">titanic</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="s1">'./extra/data/titanic.csv'</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="n">titanic</span><span class="o">.</span><span class="n">shape</span><span class="p">)</span>
<span class="n">titanic</span><span class="o">.</span><span class="n">head</span><span class="p">()</span>
</pre></div>
</div>
</div>
</div>
<div class="output_wrapper">
<div class="output">
<div class="output_area">
<div class="prompt"></div>
<div class="output_subarea output_stream output_stdout output_text">
<pre>(891, 11)
</pre>
</div>
</div>
<div class="output_area">
<div class="prompt output_prompt">Out[425]:</div>
<div class="output_html rendered_html output_subarea output_execute_result">
<div>
<style scoped>
.dataframe tbody tr th:only-of-type {
vertical-align: middle;
}
.dataframe tbody tr th {
vertical-align: top;
}
.dataframe thead th {
text-align: right;
}
</style>
<table border="1" class="dataframe">
<thead>
<tr style="text-align: right;">
<th></th>
<th>survived</th>
<th>pclass</th>
<th>name</th>
<th>sex</th>
<th>age</th>
<th>sibsp</th>
<th>parch</th>
<th>ticket</th>
<th>fare</th>
<th>cabin</th>
<th>embarked</th>
</tr>
</thead>
<tbody>
<tr>
<th>0</th>
<td>0</td>
<td>3</td>
<td>Braund, Mr. Owen Harris</td>
<td>male</td>
<td>22.0</td>
<td>1</td>
<td>0</td>
<td>A/5 21171</td>
<td>7.2500</td>
<td>NaN</td>
<td>S</td>
</tr>
<tr>
<th>1</th>
<td>1</td>
<td>1</td>
<td>Cumings, Mrs. John Bradley (Florence Briggs Th...</td>
<td>female</td>
<td>38.0</td>
<td>1</td>
<td>0</td>
<td>PC 17599</td>
<td>71.2833</td>
<td>C85</td>
<td>C</td>
</tr>
<tr>
<th>2</th>
<td>1</td>
<td>3</td>
<td>Heikkinen, Miss. Laina</td>
<td>female</td>
<td>26.0</td>
<td>0</td>
<td>0</td>
<td>STON/O2. 3101282</td>
<td>7.9250</td>
<td>NaN</td>
<td>S</td>
</tr>
<tr>
<th>3</th>
<td>1</td>
<td>1</td>
<td>Futrelle, Mrs. Jacques Heath (Lily May Peel)</td>
<td>female</td>
<td>35.0</td>
<td>1</td>
<td>0</td>
<td>113803</td>
<td>53.1000</td>
<td>C123</td>
<td>S</td>
</tr>
<tr>
<th>4</th>
<td>0</td>
<td>3</td>
<td>Allen, Mr. William Henry</td>
<td>male</td>
<td>35.0</td>
<td>0</td>
<td>0</td>
<td>373450</td>
<td>8.0500</td>
<td>NaN</td>
<td>S</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [426]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#Check for missing values</span>
<span class="nb">print</span><span class="p">(</span><span class="n">titanic</span><span class="o">.</span><span class="n">isna</span><span class="p">()</span><span class="o">.</span><span class="n">sum</span><span class="p">()[</span><span class="n">titanic</span><span class="o">.</span><span class="n">isna</span><span class="p">()</span><span class="o">.</span><span class="n">sum</span><span class="p">()</span><span class="o">></span><span class="mi">0</span><span class="p">])</span>
</pre></div>
</div>
</div>
</div>
<div class="output_wrapper">
<div class="output">
<div class="output_area">
<div class="prompt"></div>
<div class="output_subarea output_stream output_stdout output_text">
<pre>age 177
cabin 687
embarked 2
dtype: int64
</pre>
</div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div><div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<p>Our target column is the binary <code>survived</code> and we will use every column except <code>name</code>, <code>ticket</code>, and <code>cabin</code>. First, we will create an engineered feature <code>family_size</code> by adding in the siblings and parents features. Then, we must deal with missing values in the <code>age</code> and <code>embarked</code> columns so we will impute values. Next, we need to dummy encode the two remaining text columns <code>sex</code> and <code>embarked</code>. Finally, we can drop extra columns, assign our X and y, and train our model.</p>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [427]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#store off the original data for later</span>
<span class="n">titanic_orig</span> <span class="o">=</span> <span class="n">titanic</span>
<span class="c1">#Create family size engineered feature</span>
<span class="n">titanic</span><span class="p">[</span><span class="s1">'family_size'</span><span class="p">]</span> <span class="o">=</span> <span class="n">titanic</span><span class="p">[</span><span class="s1">'sibsp'</span><span class="p">]</span> <span class="o">+</span> <span class="n">titanic</span><span class="p">[</span><span class="s1">'parch'</span><span class="p">]</span>
<span class="c1">#impute missing age with mean age</span>
<span class="n">titanic</span><span class="p">[</span><span class="s1">'age'</span><span class="p">]</span> <span class="o">=</span> <span class="n">titanic</span><span class="p">[</span><span class="s1">'age'</span><span class="p">]</span><span class="o">.</span><span class="n">fillna</span><span class="p">(</span><span class="n">titanic</span><span class="p">[</span><span class="s1">'age'</span><span class="p">]</span><span class="o">.</span><span class="n">mean</span><span class="p">())</span>
<span class="c1">#impute missing embarked with mode</span>
<span class="n">titanic</span><span class="p">[</span><span class="s1">'embarked'</span><span class="p">]</span> <span class="o">=</span> <span class="n">titanic</span><span class="p">[</span><span class="s1">'embarked'</span><span class="p">]</span><span class="o">.</span><span class="n">fillna</span><span class="p">(</span><span class="n">titanic</span><span class="p">[</span><span class="s1">'embarked'</span><span class="p">]</span><span class="o">.</span><span class="n">mode</span><span class="p">()</span><span class="o">.</span><span class="n">values</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
<span class="c1">#dummy encode text columns</span>
<span class="n">cols_to_encode</span> <span class="o">=</span> <span class="p">[</span><span class="s1">'pclass'</span><span class="p">,</span><span class="s1">'sex'</span><span class="p">,</span><span class="s1">'embarked'</span><span class="p">]</span> <span class="c1">#,'cabin_letter'</span>
<span class="n">titanic</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">get_dummies</span><span class="p">(</span><span class="n">titanic</span><span class="p">,</span> <span class="n">columns</span><span class="o">=</span><span class="n">cols_to_encode</span><span class="p">,</span> <span class="n">drop_first</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
<span class="c1">#drop extra columns from X</span>
<span class="n">cols_to_drop</span> <span class="o">=</span> <span class="p">[</span><span class="s1">'survived'</span><span class="p">,</span><span class="s1">'name'</span><span class="p">,</span><span class="s1">'ticket'</span><span class="p">,</span><span class="s1">'cabin'</span><span class="p">]</span>
<span class="n">y</span> <span class="o">=</span> <span class="n">titanic</span><span class="o">.</span><span class="n">loc</span><span class="p">[:,</span><span class="s1">'survived'</span><span class="p">]</span>
<span class="n">X</span> <span class="o">=</span> <span class="n">titanic</span><span class="o">.</span><span class="n">drop</span><span class="p">(</span><span class="n">cols_to_drop</span><span class="p">,</span> <span class="n">axis</span><span class="o">=</span><span class="s1">'columns'</span><span class="p">)</span>
<span class="n">display</span><span class="p">(</span><span class="n">X</span><span class="o">.</span><span class="n">head</span><span class="p">())</span>
<span class="nb">print</span><span class="p">(</span><span class="s1">'Survived class distribution: </span><span class="se">\n</span><span class="s1">'</span><span class="p">,</span> <span class="n">y</span><span class="o">.</span><span class="n">value_counts</span><span class="p">(</span><span class="n">normalize</span> <span class="o">=</span> <span class="kc">True</span><span class="p">),</span><span class="s1">'</span><span class="se">\n</span><span class="s1">'</span><span class="p">)</span>
</pre></div>
</div>
</div>
</div>
<div class="output_wrapper">
<div class="output">
<div class="output_area">
<div class="prompt"></div>
<div class="output_html rendered_html output_subarea ">
<div>
<style scoped>
.dataframe tbody tr th:only-of-type {
vertical-align: middle;
}
.dataframe tbody tr th {
vertical-align: top;
}
.dataframe thead th {
text-align: right;
}
</style>
<table border="1" class="dataframe">
<thead>
<tr style="text-align: right;">
<th></th>
<th>age</th>
<th>sibsp</th>
<th>parch</th>
<th>fare</th>
<th>family_size</th>
<th>pclass_2</th>
<th>pclass_3</th>
<th>sex_male</th>
<th>embarked_Q</th>
<th>embarked_S</th>
</tr>
</thead>
<tbody>
<tr>
<th>0</th>
<td>22.0</td>
<td>1</td>
<td>0</td>
<td>7.2500</td>
<td>1</td>
<td>0</td>
<td>1</td>
<td>1</td>
<td>0</td>
<td>1</td>
</tr>
<tr>
<th>1</th>
<td>38.0</td>
<td>1</td>
<td>0</td>
<td>71.2833</td>
<td>1</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
</tr>
<tr>
<th>2</th>
<td>26.0</td>
<td>0</td>
<td>0</td>
<td>7.9250</td>
<td>0</td>
<td>0</td>
<td>1</td>
<td>0</td>
<td>0</td>
<td>1</td>
</tr>
<tr>
<th>3</th>
<td>35.0</td>
<td>1</td>
<td>0</td>
<td>53.1000</td>
<td>1</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>1</td>
</tr>
<tr>
<th>4</th>
<td>35.0</td>
<td>0</td>
<td>0</td>
<td>8.0500</td>
<td>0</td>
<td>0</td>
<td>1</td>
<td>1</td>
<td>0</td>
<td>1</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="output_area">
<div class="prompt"></div>
<div class="output_subarea output_stream output_stdout output_text">
<pre>Survived class distribution:
0 0.616162
1 0.383838
Name: survived, dtype: float64
</pre>
</div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div><div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<p>Above, we see a sample of our final training dataset and below it the distribution of the survived column - only 38% of passengers survived! Because decision tree models are robust to multicollinearity and scaling - and because this is a very simple dataset - we can skip the usual EDA and data normalization procedures and jump to model training and evaluation. Below we train an XGBoost binary classifier using k-fold cross-validation to tune our hyperparameters to ensure an optimal model fit.</p>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [1]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">X_train</span><span class="p">,</span> <span class="n">X_test</span><span class="p">,</span> <span class="n">y_train</span><span class="p">,</span> <span class="n">y_test</span> <span class="o">=</span> <span class="n">train_test_split</span><span class="p">(</span><span class="n">X</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">random_state</span><span class="o">=</span><span class="mi">42</span><span class="p">)</span>
<span class="n">xgbcl</span> <span class="o">=</span> <span class="n">xgb</span><span class="o">.</span><span class="n">XGBClassifier</span><span class="p">(</span><span class="n">base_score</span><span class="o">=</span><span class="mf">0.5</span><span class="p">,</span> <span class="n">booster</span><span class="o">=</span><span class="s1">'gbtree'</span><span class="p">,</span> <span class="n">colsample_bylevel</span><span class="o">=</span><span class="mf">1.0</span><span class="p">,</span>
<span class="n">gamma</span><span class="o">=</span><span class="mf">0.0</span><span class="p">,</span> <span class="n">max_delta_step</span><span class="o">=</span><span class="mf">0.0</span><span class="p">,</span> <span class="n">min_child_weight</span><span class="o">=</span><span class="mf">1.0</span><span class="p">,</span>
<span class="n">missing</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">n_jobs</span><span class="o">=-</span><span class="mi">1</span><span class="p">,</span> <span class="n">objective</span><span class="o">=</span><span class="s1">'binary:logistic'</span><span class="p">,</span> <span class="n">random_state</span><span class="o">=</span><span class="mi">42</span><span class="p">,</span> <span class="n">reg_alpha</span><span class="o">=</span><span class="mf">0.0</span><span class="p">,</span>
<span class="n">reg_lambda</span><span class="o">=</span><span class="mf">1.0</span><span class="p">,</span> <span class="n">scale_pos_weight</span><span class="o">=</span><span class="mf">1.0</span><span class="p">,</span> <span class="n">tree_method</span><span class="o">=</span><span class="s1">'auto'</span><span class="p">)</span>
<span class="n">kfold</span> <span class="o">=</span> <span class="n">StratifiedKFold</span><span class="p">(</span><span class="n">n_splits</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span> <span class="n">shuffle</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">random_state</span><span class="o">=</span><span class="mi">42</span><span class="p">)</span>
<span class="n">param_grid</span> <span class="o">=</span> <span class="p">{</span>
<span class="s1">'colsample_bytree'</span><span class="p">:[</span><span class="mf">.75</span><span class="p">,</span><span class="mi">1</span><span class="p">],</span>
<span class="s1">'learning_rate'</span><span class="p">:[</span><span class="mf">0.01</span><span class="p">,</span><span class="mf">0.05</span><span class="p">,</span><span class="mf">0.1</span><span class="p">,</span><span class="mf">0.3</span><span class="p">,</span><span class="mf">0.5</span><span class="p">],</span>
<span class="s1">'max_depth'</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="mi">3</span><span class="p">,</span><span class="mi">5</span><span class="p">],</span>
<span class="s1">'subsample'</span><span class="p">:[</span><span class="mf">.75</span><span class="p">,</span><span class="mi">1</span><span class="p">],</span>
<span class="s1">'n_estimators'</span><span class="p">:</span> <span class="nb">list</span><span class="p">(</span><span class="nb">range</span><span class="p">(</span><span class="mi">50</span><span class="p">,</span> <span class="mi">400</span><span class="p">,</span> <span class="mi">50</span><span class="p">))</span>
<span class="p">}</span>
<span class="n">grid_search</span> <span class="o">=</span> <span class="n">GridSearchCV</span><span class="p">(</span><span class="n">estimator</span><span class="o">=</span><span class="n">xgbcl</span><span class="p">,</span> <span class="n">scoring</span><span class="o">=</span><span class="s1">'roc_auc'</span><span class="p">,</span> <span class="n">param_grid</span><span class="o">=</span><span class="n">param_grid</span><span class="p">,</span> <span class="n">n_jobs</span><span class="o">=-</span><span class="mi">1</span><span class="p">,</span> <span class="n">cv</span><span class="o">=</span><span class="n">kfold</span><span class="p">)</span>
<span class="n">grid_result</span> <span class="o">=</span> <span class="n">grid_search</span><span class="o">.</span><span class="n">fit</span><span class="p">(</span><span class="n">X_train</span><span class="p">,</span> <span class="n">y_train</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s1">'Best: </span><span class="si">{</span><span class="n">grid_result</span><span class="o">.</span><span class="n">best_score_</span><span class="si">}</span><span class="s1"> using </span><span class="si">{</span><span class="n">grid_result</span><span class="o">.</span><span class="n">best_params_</span><span class="si">}</span><span class="s1">'</span><span class="p">,</span><span class="s1">'</span><span class="se">\n</span><span class="s1">'</span><span class="p">)</span>
</pre></div>
</div>
</div>
</div>
<div class="output_wrapper">
<div class="output">
<div class="output_area">
<div class="prompt"></div>
<div class="output_subarea output_text output_error">
<pre>
<span class="ansi-red-fg">---------------------------------------------------------------------------</span>
<span class="ansi-red-fg">NameError</span> Traceback (most recent call last)
<span class="ansi-green-fg"><ipython-input-1-16788866ec55></span> in <span class="ansi-cyan-fg"><module></span>
<span class="ansi-green-fg">----> 1</span><span class="ansi-red-fg"> </span>X_train<span class="ansi-blue-fg">,</span> X_test<span class="ansi-blue-fg">,</span> y_train<span class="ansi-blue-fg">,</span> y_test <span class="ansi-blue-fg">=</span> train_test_split<span class="ansi-blue-fg">(</span>X<span class="ansi-blue-fg">,</span> y<span class="ansi-blue-fg">,</span> random_state<span class="ansi-blue-fg">=</span><span class="ansi-cyan-fg">42</span><span class="ansi-blue-fg">)</span>
<span class="ansi-green-intense-fg ansi-bold"> 2</span>
<span class="ansi-green-intense-fg ansi-bold"> 3</span> xgbcl = xgb.XGBClassifier(base_score=0.5, booster='gbtree', colsample_bylevel=1.0,
<span class="ansi-green-intense-fg ansi-bold"> 4</span> gamma<span class="ansi-blue-fg">=</span><span class="ansi-cyan-fg">0.0</span><span class="ansi-blue-fg">,</span> max_delta_step<span class="ansi-blue-fg">=</span><span class="ansi-cyan-fg">0.0</span><span class="ansi-blue-fg">,</span> min_child_weight<span class="ansi-blue-fg">=</span><span class="ansi-cyan-fg">1.0</span><span class="ansi-blue-fg">,</span>
<span class="ansi-green-intense-fg ansi-bold"> 5</span> missing<span class="ansi-blue-fg">=</span><span class="ansi-green-fg">None</span><span class="ansi-blue-fg">,</span> n_jobs<span class="ansi-blue-fg">=</span><span class="ansi-blue-fg">-</span><span class="ansi-cyan-fg">1</span><span class="ansi-blue-fg">,</span> objective<span class="ansi-blue-fg">=</span><span class="ansi-blue-fg">'binary:logistic'</span><span class="ansi-blue-fg">,</span> random_state<span class="ansi-blue-fg">=</span><span class="ansi-cyan-fg">42</span><span class="ansi-blue-fg">,</span> reg_alpha<span class="ansi-blue-fg">=</span><span class="ansi-cyan-fg">0.0</span><span class="ansi-blue-fg">,</span>
<span class="ansi-red-fg">NameError</span>: name 'train_test_split' is not defined</pre>
</div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div><div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<p>We have now found our optimal hyperparameters optimizing for area under the Receiver Operating Characteristic (AUC ROC). Next, we will use those optimal hyperparameters to train our final model but first, because the dataset is so small, we will do a final k-fold cross-validation to get stable error metrics and ensure a good fit.</p>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [439]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#Set our final hyperparameters to the tuned values</span>
<span class="n">xgbcl</span> <span class="o">=</span> <span class="n">xgb</span><span class="o">.</span><span class="n">XGBClassifier</span><span class="p">(</span><span class="n">base_score</span><span class="o">=</span><span class="mf">0.5</span><span class="p">,</span> <span class="n">booster</span><span class="o">=</span><span class="s1">'gbtree'</span><span class="p">,</span> <span class="n">colsample_bylevel</span><span class="o">=</span><span class="mf">1.0</span><span class="p">,</span>
<span class="n">gamma</span><span class="o">=</span><span class="mf">0.0</span><span class="p">,</span> <span class="n">max_delta_step</span><span class="o">=</span><span class="mf">0.0</span><span class="p">,</span> <span class="n">min_child_weight</span><span class="o">=</span><span class="mf">1.0</span><span class="p">,</span>
<span class="n">missing</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">n_jobs</span><span class="o">=-</span><span class="mi">1</span><span class="p">,</span> <span class="n">objective</span><span class="o">=</span><span class="s1">'binary:logistic'</span><span class="p">,</span> <span class="n">random_state</span><span class="o">=</span><span class="mi">42</span><span class="p">,</span> <span class="n">reg_alpha</span><span class="o">=</span><span class="mf">0.0</span><span class="p">,</span>
<span class="n">reg_lambda</span><span class="o">=</span><span class="mf">1.0</span><span class="p">,</span> <span class="n">scale_pos_weight</span><span class="o">=</span><span class="mf">1.0</span><span class="p">,</span> <span class="n">tree_method</span><span class="o">=</span><span class="s1">'auto'</span><span class="p">,</span>
<span class="n">colsample_bytree</span> <span class="o">=</span> <span class="n">grid_result</span><span class="o">.</span><span class="n">best_params_</span><span class="p">[</span><span class="s1">'colsample_bytree'</span><span class="p">],</span>
<span class="n">learning_rate</span> <span class="o">=</span> <span class="n">grid_result</span><span class="o">.</span><span class="n">best_params_</span><span class="p">[</span><span class="s1">'learning_rate'</span><span class="p">],</span>
<span class="n">max_depth</span> <span class="o">=</span> <span class="n">grid_result</span><span class="o">.</span><span class="n">best_params_</span><span class="p">[</span><span class="s1">'max_depth'</span><span class="p">],</span>
<span class="n">subsample</span> <span class="o">=</span> <span class="n">grid_result</span><span class="o">.</span><span class="n">best_params_</span><span class="p">[</span><span class="s1">'subsample'</span><span class="p">],</span>
<span class="n">n_estimators</span> <span class="o">=</span> <span class="n">grid_result</span><span class="o">.</span><span class="n">best_params_</span><span class="p">[</span><span class="s1">'n_estimators'</span><span class="p">])</span>
<span class="n">kfold</span> <span class="o">=</span> <span class="n">StratifiedKFold</span><span class="p">(</span><span class="n">n_splits</span><span class="o">=</span><span class="mi">5</span><span class="p">,</span> <span class="n">shuffle</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">random_state</span><span class="o">=</span><span class="mi">42</span><span class="p">)</span>
<span class="c1">#refit the model on k-folds to get stable avg error metrics</span>
<span class="n">scores</span> <span class="o">=</span> <span class="n">cross_validate</span><span class="p">(</span><span class="n">estimator</span><span class="o">=</span><span class="n">xgbcl</span><span class="p">,</span> <span class="n">X</span><span class="o">=</span><span class="n">X_train</span><span class="p">,</span> <span class="n">y</span><span class="o">=</span><span class="n">y_train</span><span class="p">,</span> <span class="n">cv</span><span class="o">=</span><span class="n">kfold</span><span class="p">,</span> <span class="n">n_jobs</span><span class="o">=-</span><span class="mi">1</span><span class="p">,</span>
<span class="n">scoring</span><span class="o">=</span><span class="p">[</span><span class="s1">'accuracy'</span><span class="p">,</span> <span class="s1">'roc_auc'</span><span class="p">,</span> <span class="s1">'precision'</span><span class="p">,</span> <span class="s1">'recall'</span><span class="p">,</span> <span class="s1">'f1'</span><span class="p">])</span>
<span class="nb">print</span><span class="p">(</span><span class="s1">'Training 5-fold Cross Validation Results:</span><span class="se">\n</span><span class="s1">'</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="s1">'AUC: '</span><span class="p">,</span> <span class="n">scores</span><span class="p">[</span><span class="s1">'test_roc_auc'</span><span class="p">]</span><span class="o">.</span><span class="n">mean</span><span class="p">())</span>
<span class="nb">print</span><span class="p">(</span><span class="s1">'Accuracy: '</span><span class="p">,</span> <span class="n">scores</span><span class="p">[</span><span class="s1">'test_accuracy'</span><span class="p">]</span><span class="o">.</span><span class="n">mean</span><span class="p">())</span>
<span class="nb">print</span><span class="p">(</span><span class="s1">'Precision: '</span><span class="p">,</span> <span class="n">scores</span><span class="p">[</span><span class="s1">'test_precision'</span><span class="p">]</span><span class="o">.</span><span class="n">mean</span><span class="p">())</span>
<span class="nb">print</span><span class="p">(</span><span class="s1">'Recall: '</span><span class="p">,</span> <span class="n">scores</span><span class="p">[</span><span class="s1">'test_recall'</span><span class="p">]</span><span class="o">.</span><span class="n">mean</span><span class="p">())</span>
<span class="nb">print</span><span class="p">(</span><span class="s1">'F1: '</span><span class="p">,</span> <span class="n">scores</span><span class="p">[</span><span class="s1">'test_f1'</span><span class="p">]</span><span class="o">.</span><span class="n">mean</span><span class="p">(),</span> <span class="s1">'</span><span class="se">\n</span><span class="s1">'</span><span class="p">)</span>
</pre></div>
</div>
</div>
</div>
<div class="output_wrapper">
<div class="output">
<div class="output_area">
<div class="prompt"></div>
<div class="output_subarea output_stream output_stdout output_text">
<pre>Training 5-fold Cross Validation Results:
AUC: 0.8610985116938341
Accuracy: 0.8203344181348895
Precision: 0.8097487479840421
Recall: 0.6912941176470588
F1: 0.7437777576040261
</pre>
</div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div><div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<p>Above, we see a good AUC in the high 80's, and an accuracy in the 80's which is far better than guessing <code>0</code> every time yielding only a 61% accuracy. Next, we'll fit the final model and visualize the AUC. We can improve further by determining whether we care more about false positives or false negatives and tuning our prediction threshold accordingly, but this is good enough to stop and show off SHAP.</p>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [440]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#Fit the final model</span>
<span class="n">xgbcl</span><span class="o">.</span><span class="n">fit</span><span class="p">(</span><span class="n">X_train</span><span class="p">,</span> <span class="n">y_train</span><span class="p">)</span>
<span class="c1">#Generate predictions against our training and test data</span>
<span class="n">pred_train</span> <span class="o">=</span> <span class="n">xgbcl</span><span class="o">.</span><span class="n">predict</span><span class="p">(</span><span class="n">X_train</span><span class="p">)</span>
<span class="n">proba_train</span> <span class="o">=</span> <span class="n">xgbcl</span><span class="o">.</span><span class="n">predict_proba</span><span class="p">(</span><span class="n">X_train</span><span class="p">)</span>
<span class="n">pred_test</span> <span class="o">=</span> <span class="n">xgbcl</span><span class="o">.</span><span class="n">predict</span><span class="p">(</span><span class="n">X_test</span><span class="p">)</span>
<span class="n">proba_test</span> <span class="o">=</span> <span class="n">xgbcl</span><span class="o">.</span><span class="n">predict_proba</span><span class="p">(</span><span class="n">X_test</span><span class="p">)</span>
<span class="c1"># Print model report</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">"Classification report (Test): </span><span class="se">\n</span><span class="s2">"</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="n">metrics</span><span class="o">.</span><span class="n">classification_report</span><span class="p">(</span><span class="n">y_test</span><span class="p">,</span> <span class="n">pred_test</span><span class="p">))</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">"Confusion matrix (Test): </span><span class="se">\n</span><span class="s2">"</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="n">metrics</span><span class="o">.</span><span class="n">confusion_matrix</span><span class="p">(</span><span class="n">y_test</span><span class="p">,</span> <span class="n">pred_test</span><span class="p">)</span><span class="o">/</span><span class="nb">len</span><span class="p">(</span><span class="n">y_test</span><span class="p">))</span>
<span class="nb">print</span> <span class="p">(</span><span class="s1">'</span><span class="se">\n</span><span class="s1">Train Accuracy:'</span><span class="p">,</span> <span class="n">metrics</span><span class="o">.</span><span class="n">accuracy_score</span><span class="p">(</span><span class="n">y_train</span><span class="p">,</span> <span class="n">pred_train</span><span class="p">))</span>
<span class="nb">print</span> <span class="p">(</span><span class="s1">'Test Accuracy:'</span><span class="p">,</span> <span class="n">metrics</span><span class="o">.</span><span class="n">accuracy_score</span><span class="p">(</span><span class="n">y_test</span><span class="p">,</span> <span class="n">pred_test</span><span class="p">))</span>
<span class="nb">print</span> <span class="p">(</span><span class="s1">'</span><span class="se">\n</span><span class="s1">Train AUC:'</span><span class="p">,</span> <span class="n">metrics</span><span class="o">.</span><span class="n">roc_auc_score</span><span class="p">(</span><span class="n">y_train</span><span class="p">,</span> <span class="n">proba_train</span><span class="p">[:,</span><span class="mi">1</span><span class="p">]))</span>
<span class="nb">print</span> <span class="p">(</span><span class="s1">'Test AUC:'</span><span class="p">,</span> <span class="n">metrics</span><span class="o">.</span><span class="n">roc_auc_score</span><span class="p">(</span><span class="n">y_test</span><span class="p">,</span> <span class="n">proba_test</span><span class="p">[:,</span><span class="mi">1</span><span class="p">]))</span>
<span class="c1"># calculate the fpr and tpr for all thresholds of the classification</span>
<span class="n">train_fpr</span><span class="p">,</span> <span class="n">train_tpr</span><span class="p">,</span> <span class="n">train_threshold</span> <span class="o">=</span> <span class="n">metrics</span><span class="o">.</span><span class="n">roc_curve</span><span class="p">(</span><span class="n">y_train</span><span class="p">,</span> <span class="n">proba_train</span><span class="p">[:,</span><span class="mi">1</span><span class="p">])</span>
<span class="n">test_fpr</span><span class="p">,</span> <span class="n">test_tpr</span><span class="p">,</span> <span class="n">test_threshold</span> <span class="o">=</span> <span class="n">metrics</span><span class="o">.</span><span class="n">roc_curve</span><span class="p">(</span><span class="n">y_test</span><span class="p">,</span> <span class="n">proba_test</span><span class="p">[:,</span><span class="mi">1</span><span class="p">])</span>
<span class="n">train_roc_auc</span> <span class="o">=</span> <span class="n">metrics</span><span class="o">.</span><span class="n">auc</span><span class="p">(</span><span class="n">train_fpr</span><span class="p">,</span> <span class="n">train_tpr</span><span class="p">)</span>
<span class="n">test_roc_auc</span> <span class="o">=</span> <span class="n">metrics</span><span class="o">.</span><span class="n">auc</span><span class="p">(</span><span class="n">test_fpr</span><span class="p">,</span> <span class="n">test_tpr</span><span class="p">)</span>
<span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="k">as</span> <span class="nn">plt</span>
<span class="n">fig</span><span class="p">,</span> <span class="n">ax</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="n">figsize</span><span class="o">=</span><span class="p">[</span><span class="mi">7</span><span class="p">,</span><span class="mi">5</span><span class="p">])</span>
<span class="n">plt</span><span class="o">.</span><span class="n">title</span><span class="p">(</span><span class="s1">'Receiver Operating Characteristic'</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">train_fpr</span><span class="p">,</span> <span class="n">train_tpr</span><span class="p">,</span> <span class="s1">'b'</span><span class="p">,</span> <span class="n">label</span> <span class="o">=</span> <span class="s1">'Train AUC = </span><span class="si">%0.2f</span><span class="s1">'</span> <span class="o">%</span> <span class="n">train_roc_auc</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">test_fpr</span><span class="p">,</span> <span class="n">test_tpr</span><span class="p">,</span> <span class="s1">'g'</span><span class="p">,</span> <span class="n">label</span> <span class="o">=</span> <span class="s1">'Test AUC = </span><span class="si">%0.2f</span><span class="s1">'</span> <span class="o">%</span> <span class="n">test_roc_auc</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">legend</span><span class="p">(</span><span class="n">loc</span> <span class="o">=</span> <span class="s1">'lower right'</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">plot</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="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">],</span><span class="s1">'r--'</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">xlim</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="n">plt</span><span class="o">.</span><span class="n">ylim</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="n">plt</span><span class="o">.</span><span class="n">ylabel</span><span class="p">(</span><span class="s1">'True Positive Rate'</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">xlabel</span><span class="p">(</span><span class="s1">'False Positive Rate'</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="c1"># plot feature importance</span>
<span class="n">xgb</span><span class="o">.</span><span class="n">plot_importance</span><span class="p">(</span><span class="n">xgbcl</span><span class="p">,</span> <span class="n">importance_type</span><span class="o">=</span><span class="s1">'gain'</span><span class="p">);</span>
</pre></div>
</div>
</div>
</div>
<div class="output_wrapper">
<div class="output">
<div class="output_area">
<div class="prompt"></div>
<div class="output_subarea output_stream output_stdout output_text">
<pre>Classification report (Test):
precision recall f1-score support
0 0.84 0.87 0.85 134
1 0.80 0.74 0.77 89
micro avg 0.82 0.82 0.82 223
macro avg 0.82 0.81 0.81 223
weighted avg 0.82 0.82 0.82 223
Confusion matrix (Test):
[[0.52466368 0.07623318]
[0.10313901 0.29596413]]
Train Accuracy: 0.8937125748502994
Test Accuracy: 0.820627802690583
Train AUC: 0.9496642697271298
Test AUC: 0.8747694113701157
</pre>
</div>
</div>
<div class="output_area">
<div class="prompt"></div>
<div class="output_png output_subarea ">
<img src="data:image/png;base64,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
"
>
</div>
</div>
<div class="output_area">
<div class="prompt"></div>
<div class="output_png output_subarea ">
<img src="data:image/png;base64,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GgClS5emdOnSfm1mzpxJly5duPbaawGoVq2aW5eRkcHp06e54oorOHXqFDVq1PDb9+TJkyxevNh9N55fX0FBQQQFBQFQsWJFIiIiSElJoUGDBvnGPm/ePLp3706ZMmUICgoiNDSU1atXEx8fT/PmzUlOTs53X1Vl1qxZLF68GIDy5cu7dWfOnMG50R4Ae/fuZcGCBTz99NNMnDjRLW/fvr37uHHjxuzduxcAEeHkyZOoKqmpqVSpUoVSpQr37zfn+TLmUmKXM36dQaoaq6oxwA9A/4sdkDG/1vfff0/VqlV54IEHuP766+nbty9paWl+bXbs2MGxY8dISEigYcOGvP/++wAEBwczdOhQrr32WoKCgqhUqRK33nqr375z5syhdevWXHnllQX25Ss5OZn169fTpEkTt2zKlCnExMTQu3dvjh07BkBKSgq1atVy29SsWZOUlJRCHfeyZcuoXr06YWFhbtmqVauIjIwkOjqaN998033hHzhwIC+++CIlSuT9LzQ9PZ0ZM2bQrl07APr378/WrVupUaMG0dHRTJ482d33zJkzNGrUiEceeYS5c+fm6ivn+QJYsWIFsbGx3HbbbWzevLlQx2dMcbisZiJEpDbwX2AVcD3ed/89gUi8d9MMAM4CrXPs1xh4GSgHnAYeUNXtIhIJvAeUxptQ/QXYB8wCagIlgWdV9Z95xaOqJ5z+xelb84j5QeBBgMDAqoyKzijq4f/mqpfzvlu+XPyR4vV4PBc2GB/bt28nKSmJXr160atXL1599VUefvhh7rrrLnfc3bt3s337dl566SXOnTvHo48+iohQuXJlpk+fzgcffECFChUYPXo0Tz/9NG3atHH7f+2112jfvv15+8pOBk6fPs3jjz9O3759WbduHQAxMTFMnToVEeHdd9/l7rvv5sknn2Tv3r1s3boVj8dDamoq+/fvZ/PmzQQGBgLw448/kpaWluf5mzRpEo0bN85V99prr7F7926eeuopAgICSEpKIj09nZMnT7JhwwaOHDmSa58JEyYQEhJCZmYmHo+HpUuXEhgYyMyZM9m3bx99+/blnXfeISAggI8++ojAwEB27txJv379SEtLIzg4ON/zlZaWxgcffEC5cuVYuXIlbdu25YMPPijib7voUlNTi/Xv0FweLqskwhEO9FHV5SLyLt53//2Abqq6RkSuxJso+NoGNFfV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gTSvfXzjvZxYvMXL7uJpm6oW+gZcbwNPAP9wEo+vRWQm8PcLmM9cFKra9/ytLozT6ZnUHr7gtxruV5vWLqDY+g4KCiIoKAiAihUrEhERQUpKCg0aNHDbzJs3j549eyIiNG3alOPHj7N//348Hg9t2rShSpUqALRp04b//ve/BAUFceWVVwKQkZHBuXPnEJEC49iyZQutW7cGoFq1alSuXJm1a9fSuHFjt823337LwYMHadasWa79ExMTGTNmDACLFi3KM64ePXoUOP6kSZMAaNmyJXfccYdb17p1a3dmxFf79u3dx40bN3ZnL2bOnEmXLl249tpr3ePJ6YsvvqBu3bpcd911ALzxxhsMHz6cMmXK5LuPMcbkp7BrIsqr6uocZRkXOpjiJiIBIrJARDaKyDci0s35+GojnzYvicg6EflCRKo6ZQNEZIuIfC0iHzllo0VkhogsFpFvReSvF+u4LnfJycmsX7+eJk2a+JWnpKRQq1Yt93nNmjVJSUnJtzxb27ZtqVatGhUrVqRr165u+ZQpU4iJiaF3794cO3YMgNjYWObNm0dGRga7du0iKSmJPXv2+MWRmJhIt27dciUku3fvZteuXbRq1arAeLM98MADxMXF8eyzz+J9c+Udf/bs2QDMmTOHkydPcuTIkUKdt/T0dGbMmEG7du0A2LFjB8eOHSMhIYGGDRvy/vvv59rno48+8ktqduzYwbJly2jSpAktWrRgzZo1hRrbGGOg8LcCPywidQEFEJGuwP5ii6r4tAP2qWoHABGpBDzsUx8ArFPVISIyCngG6A8MB+qo6lkRqezTPgZo6uy3XkQWqOo+3wFF5EHgQYDAwKqMir58cq/U1NQ83wlfSKdPn+bxxx+nb9++fmseAA4fPsz69evJyPCes2PHjpGUlMTOnTtJT093Y9u1axdly5alfv36eDweRowYwblz5/j73//OpEmTaNSoETExMUydOhUR4d133+Xuu+/mySefpG7dunz++efUr1+f6tWrU79+fbZu3ep33O+++y4jRozIdS4SExOJj49n2bJlAPnG5fF4ePTRR6latSqnTp3imWee4dSpU/zpT3+iS5cuvPLKK26CExgYyIoVK6hQoQIAGzZs4MiRI3n+HiZMmEBISAiZmZl4PB52797N9u3beemllzh37hyPPvooIuImNunp6cyePZuOHTu6/f30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
"
>
</div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div><div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<p>Above, we see the final model is making decent predictions with minor overfit. Using the built-in XGBoost feature importance method we see which attributes most reduced the loss function on the training dataset, in this case <code>sex_male</code> was the most important feature by far, followed by <code>pclass_3</code> which represents a 3rd class the ticket. We know from historical accounts that there were not enough lifeboats for everyone and two groups were prioritized: first class passengers and women with children. So, <code>sex</code> and <code>pclass</code> are justifiably important, but this method provides precious little to explain precisely why a prediction was made on a case-by-case basis.</p>
<p>Now that we have a trained model, let us make a prediction on a random row of data, and then use SHAP to understand why this was predicted.</p>
<h2 id="2.-Use-SHAP-to-Explain-the-Model">2. Use SHAP to Explain the Model<a class="anchor-link" href="#2.-Use-SHAP-to-Explain-the-Model">¶</a></h2>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [441]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#take a random row of data</span>
<span class="n">X_rand</span> <span class="o">=</span> <span class="n">X</span><span class="o">.</span><span class="n">sample</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">random_state</span> <span class="o">=</span> <span class="mi">5</span><span class="p">)</span>
<span class="n">display</span><span class="p">(</span><span class="n">titanic_orig</span><span class="o">.</span><span class="n">iloc</span><span class="p">[</span><span class="n">X_rand</span><span class="o">.</span><span class="n">index</span><span class="p">])</span>
<span class="c1">#generate a prediction for the row</span>
<span class="n">rand_pred</span> <span class="o">=</span> <span class="n">xgbcl</span><span class="o">.</span><span class="n">predict</span><span class="p">(</span><span class="n">X_rand</span><span class="p">)</span>
<span class="n">rand_proba</span> <span class="o">=</span> <span class="n">xgbcl</span><span class="o">.</span><span class="n">predict_proba</span><span class="p">(</span><span class="n">X_rand</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s1">'Predicted Probability (no, yes): </span><span class="si">{</span><span class="n">rand_proba</span><span class="si">}</span><span class="s1">'</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s1">'Predicted Survival (0 = no, 1 = yes): </span><span class="si">{</span><span class="n">rand_pred</span><span class="si">}</span><span class="s1">'</span><span class="p">,</span><span class="s1">'</span><span class="se">\n</span><span class="s1">'</span><span class="p">)</span>
</pre></div>
</div>
</div>
</div>
<div class="output_wrapper">
<div class="output">
<div class="output_area">
<div class="prompt"></div>
<div class="output_html rendered_html output_subarea ">
<div>
<style scoped>
.dataframe tbody tr th:only-of-type {
vertical-align: middle;
}
.dataframe tbody tr th {
vertical-align: top;
}
.dataframe thead th {
text-align: right;
}
</style>
<table border="1" class="dataframe">
<thead>
<tr style="text-align: right;">
<th></th>
<th>survived</th>
<th>pclass</th>
<th>name</th>
<th>sex</th>
<th>age</th>
<th>sibsp</th>
<th>parch</th>
<th>ticket</th>
<th>fare</th>
<th>cabin</th>
<th>embarked</th>
<th>family_size</th>
</tr>
</thead>
<tbody>
<tr>
<th>126</th>
<td>0</td>
<td>3</td>
<td>McMahon, Mr. Martin</td>
<td>male</td>
<td>29.699118</td>
<td>0</td>
<td>0</td>
<td>370372</td>
<td>7.75</td>
<td>NaN</td>
<td>Q</td>
<td>0</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="output_area">
<div class="prompt"></div>
<div class="output_subarea output_stream output_stdout output_text">
<pre>Predicted Probability (no, yes): [[0.8719378 0.12806217]]
Predicted Survival (0 = no, 1 = yes): [0]
</pre>
</div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div><div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<p>We see the input data of row 126 from the dataset belonging to a 29 year old male Mr. Martin McMahon posessing a 3rd class ticket, and the output prediction was <code>0</code> with an 87% probability. Because we are using the default threshold of 50% for a prediction one way or another, 87% is more than enough to trigger a prediction of <code>0</code>. But <strong>why</strong> did the model determine an 87% probability of death and only an 13% probability of survival for this particular passenger? This is the question a regulator wants answered if this passenger had survived and complains to the authority that he is very much alive and takes great offense at our inaccurate prediction. In this case, the model correctly predicted his unfortunate end, but even when we are right we still need to understand why. To gain this understanding we will import the SHAP package and explain this row of data.</p>
<p>Before we do, its worth mentioning how SHAP actually works. Greatly oversimplyfing, SHAP takes the base value for the dataset, in our case a 0.38 chance of survival for anyone aboard, and goes through the input data row-by-row and feature-by-feature varying its values to detect how it changes the base prediction holding all-else-equal for that row. For non-linear models the order in which the features are added matters so SHAP values arise from averaging the values across all possible orderings. In so doing, SHAP is essentially building a mini explainer model for a single row-prediction pair to explain how this prediction was reached. The full source text is available <a href="http://papers.nips.cc/paper/7062-a-unified-approach-to-interpreting-model-predictions.pdf">here</a>. Now, let's have a look at SHAP.</p>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [442]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="kn">import</span> <span class="nn">shap</span>
<span class="n">explainer</span> <span class="o">=</span> <span class="n">shap</span><span class="o">.</span><span class="n">TreeExplainer</span><span class="p">(</span><span class="n">xgbcl</span><span class="p">,</span> <span class="n">model_output</span><span class="o">=</span><span class="s1">'probability'</span><span class="p">,</span> <span class="n">feature_dependence</span><span class="o">=</span><span class="s1">'independent'</span><span class="p">,</span> <span class="n">data</span><span class="o">=</span><span class="n">X</span><span class="p">)</span>
<span class="n">shap_values</span> <span class="o">=</span> <span class="n">explainer</span><span class="o">.</span><span class="n">shap_values</span><span class="p">(</span><span class="n">X</span><span class="o">.</span><span class="n">iloc</span><span class="p">[</span><span class="n">X_rand</span><span class="o">.</span><span class="n">index</span><span class="p">])</span>
<span class="n">shap</span><span class="o">.</span><span class="n">initjs</span><span class="p">()</span>
<span class="n">display</span><span class="p">(</span><span class="n">shap</span><span class="o">.</span><span class="n">force_plot</span><span class="p">(</span><span class="n">explainer</span><span class="o">.</span><span class="n">expected_value</span><span class="p">,</span> <span class="n">shap_values</span><span class="p">,</span> <span class="n">X</span><span class="o">.</span><span class="n">iloc</span><span class="p">[</span><span class="n">X_rand</span><span class="o">.</span><span class="n">index</span><span class="p">]))</span>
<span class="c1">#Display all features and SHAP values</span>
<span class="n">display</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="n">shap_values</span><span class="p">,</span> <span class="n">columns</span><span class="o">=</span><span class="n">X</span><span class="o">.</span><span class="n">columns</span><span class="p">,</span> <span class="n">index</span><span class="o">=</span><span class="p">[</span><span class="mi">126</span><span class="p">])</span><span class="o">.</span><span class="n">transpose</span><span class="p">()</span><span class="o">.</span><span class="n">sort_values</span><span class="p">(</span><span class="n">by</span><span class="o">=</span><span class="mi">126</span><span class="p">,</span> <span class="n">ascending</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span>
</pre></div>
</div>
</div>
</div>
<div class="output_wrapper">
<div class="output">
<div class="output_area">
<div class="prompt"></div>
<div class="output_html rendered_html output_subarea ">
<div align='center'><img src='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAWCAYAAAA1vze2AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAdxJREFUeNq0Vt1Rg0AQJjcpgBJiBWIFkgoMFYhPPAIVECogPuYpdJBYgXQQrMCUkA50V7+d2ZwXuXPGm9khHLu3f9+3l1nkWNvtNqfHLgpfQ1EUS3tz5nAQ0+NIsiAZSc6eDlI8M3J00B/mDuUKDk6kfOebAgW3pkdD0pFcODGW4gKKvOrAUm04MA4QDt1OEIXU9hDigfS5rC1eS5T90gltck1Xrizo257kgySZcNRzgCSxCvgiE9nckPJo2b/B2AcEkk2OwL8bD8gmOKR1GPbaCUqxEgTq0tLvgb6zfo7+DgYGkkWL2tqLDV4RSITfbHPPfJKIrWz4nJQTMPAWA7IbD6imcNaDeDfgk+4No+wZr40BL3g9eQJJCFqRQ54KiSt72lsLpE3o3MCBSxDuq4yOckU2hKXRuwBH3OyMR4g1UpyTYw6mlmBqNdUXRM1NfyF5EPI6JkcpIDBIX8jX6DR/6ckAZJ0wEAdLR8DEk6OfC1Pp8BKo6TQIwPJbvJ6toK5lmuvJoRtfK6Ym1iRYIarRo2UyYHvRN5qpakR3yoizWrouoyuXXQqI185LCw07op5ZyCRGL99h24InP0e9xdQukEKVmhzrqZuRIfwISB//cP3Wk3f8f/yR+BRgAHu00HjLcEQBAAAAAElFTkSuQmCC' /></div><script>!function(t){function e(r){if(n[r])return n[r].exports;var i=n[r]={i:r,l:!1,exports:{}};return t[r].call(i.exports,i,i.exports,e),i.l=!0,i.exports}var n={};e.m=t,e.c=n,e.i=function(t){return t},e.d=function(t,n,r){e.o(t,n)||Object.defineProperty(t,n,{configurable:!1,enumerable:!0,get:r})},e.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(n,"a",n),n},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=189)}([function(t,e,n){"use strict";function r(t,e,n,r,o,a,u,c){if(i(e),!t){var s;if(void 0===e)s=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var l=[n,r,o,a,u,c],f=0;s=new Error(e.replace(/%s/g,function(){return l[f++]})),s.name="Invariant Violation"}throw s.framesToPop=1,s}}var i=function(t){};t.exports=r},function(t,e,n){"use strict";function r(t){for(var e=arguments.length-1,n="Minified React error #"+t+"; visit http://facebook.github.io/react/docs/error-decoder.html?invariant="+t,r=0;r<e;r++)n+="&args[]="+encodeURIComponent(arguments[r+1]);n+=" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.";var i=new Error(n);throw i.name="Invariant Violation",i.framesToPop=1,i}t.exports=r},function(t,e,n){"use strict";var r=n(11),i=r;t.exports=i},function(t,e,n){"use strict";function r(t){if(null===t||void 0===t)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(t)}/*
object-assign
(c) Sindre Sorhus
@license MIT
*/
var i=Object.getOwnPropertySymbols,o=Object.prototype.hasOwnProperty,a=Object.prototype.propertyIsEnumerable;t.exports=function(){try{if(!Object.assign)return!1;var t=new String("abc");if(t[5]="de","5"===Object.getOwnPropertyNames(t)[0])return!1;for(var e={},n=0;n<10;n++)e["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(e).map(function(t){return e[t]}).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach(function(t){r[t]=t}),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(t){return!1}}()?Object.assign:function(t,e){for(var n,u,c=r(t),s=1;s<arguments.length;s++){n=Object(arguments[s]);for(var l in n)o.call(n,l)&&(c[l]=n[l]);if(i){u=i(n);for(var f=0;f<u.length;f++)a.call(n,u[f])&&(c[u[f]]=n[u[f]])}}return c}},function(t,e,n){"use strict";function r(t,e){return 1===t.nodeType&&t.getAttribute(d)===String(e)||8===t.nodeType&&t.nodeValue===" react-text: "+e+" "||8===t.nodeType&&t.nodeValue===" react-empty: "+e+" "}function i(t){for(var e;e=t._renderedComponent;)t=e;return t}function o(t,e){var n=i(t);n._hostNode=e,e[g]=n}function a(t){var e=t._hostNode;e&&(delete e[g],t._hostNode=null)}function u(t,e){if(!(t._flags&v.hasCachedChildNodes)){var n=t._renderedChildren,a=e.firstChild;t:for(var u in n)if(n.hasOwnProperty(u)){var c=n[u],s=i(c)._domID;if(0!==s){for(;null!==a;a=a.nextSibling)if(r(a,s)){o(c,a);continue t}f("32",s)}}t._flags|=v.hasCachedChildNodes}}function c(t){if(t[g])return t[g];for(var e=[];!t[g];){if(e.push(t),!t.parentNode)return null;t=t.parentNode}for(var n,r;t&&(r=t[g]);t=e.pop())n=r,e.length&&u(r,t);return n}function s(t){var e=c(t);return null!=e&&e._hostNode===t?e:null}function l(t){if(void 0===t._hostNode&&f("33"),t._hostNode)return t._hostNode;for(var e=[];!t._hostNode;)e.push(t),t._hostParent||f("34"),t=t._hostParent;for(;e.length;t=e.pop())u(t,t._hostNode);return t._hostNode}var f=n(1),p=n(21),h=n(161),d=(n(0),p.ID_ATTRIBUTE_NAME),v=h,g="__reactInternalInstance$"+Math.random().toString(36).slice(2),m={getClosestInstanceFromNode:c,getInstanceFromNode:s,getNodeFromInstance:l,precacheChildNodes:u,precacheNode:o,uncacheNode:a};t.exports=m},function(t,e,n){"use strict";function r(t,e,n,a){function u(e){return t(e=new Date(+e)),e}return u.floor=u,u.ceil=function(n){return t(n=new Date(n-1)),e(n,1),t(n),n},u.round=function(t){var e=u(t),n=u.ceil(t);return t-e<n-t?e:n},u.offset=function(t,n){return e(t=new Date(+t),null==n?1:Math.floor(n)),t},u.range=function(n,r,i){var o,a=[];if(n=u.ceil(n),i=null==i?1:Math.floor(i),!(n<r&&i>0))return a;do{a.push(o=new Date(+n)),e(n,i),t(n)}while(o<n&&n<r);return a},u.filter=function(n){return r(function(e){if(e>=e)for(;t(e),!n(e);)e.setTime(e-1)},function(t,r){if(t>=t)if(r<0)for(;++r<=0;)for(;e(t,-1),!n(t););else for(;--r>=0;)for(;e(t,1),!n(t););})},n&&(u.count=function(e,r){return i.setTime(+e),o.setTime(+r),t(i),t(o),Math.floor(n(i,o))},u.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?u.filter(a?function(e){return a(e)%t==0}:function(e){return u.count(0,e)%t==0}):u:null}),u}e.a=r;var i=new Date,o=new Date},function(t,e,n){"use strict";var r=!("undefined"==typeof window||!window.document||!window.document.createElement),i={canUseDOM:r,canUseWorkers:"undefined"!=typeof Worker,canUseEventListeners:r&&!(!window.addEventListener&&!window.attachEvent),canUseViewport:r&&!!window.screen,isInWorker:!r};t.exports=i},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(101);n.d(e,"bisect",function(){return r.a}),n.d(e,"bisectRight",function(){return r.b}),n.d(e,"bisectLeft",function(){return r.c});var i=n(19);n.d(e,"ascending",function(){return i.a});var o=n(102);n.d(e,"bisector",function(){return o.a});var a=n(193);n.d(e,"cross",function(){return a.a});var u=n(194);n.d(e,"descending",function(){return u.a});var c=n(103);n.d(e,"deviation",function(){return c.a});var s=n(104);n.d(e,"extent",function(){return s.a});var l=n(195);n.d(e,"histogram",function(){return l.a});var f=n(205);n.d(e,"thresholdFreedmanDiaconis",function(){return f.a});var p=n(206);n.d(e,"thresholdScott",function(){return p.a});var h=n(108);n.d(e,"thresholdSturges",function(){return h.a});var d=n(197);n.d(e,"max",function(){return d.a});var v=n(198);n.d(e,"mean",function(){return v.a});var g=n(199);n.d(e,"median",function(){return g.a});var m=n(200);n.d(e,"merge",function(){return m.a});var y=n(105);n.d(e,"min",function(){return y.a});var _=n(106);n.d(e,"pairs",function(){return _.a});var b=n(201);n.d(e,"permute",function(){return b.a});var x=n(59);n.d(e,"quantile",function(){return x.a});var w=n(107);n.d(e,"range",function(){return w.a});var C=n(202);n.d(e,"scan",function(){return C.a});var k=n(203);n.d(e,"shuffle",function(){return k.a});var E=n(204);n.d(e,"sum",function(){return E.a});var M=n(109);n.d(e,"ticks",function(){return M.a}),n.d(e,"tickIncrement",function(){return M.b}),n.d(e,"tickStep",function(){return M.c});var T=n(110);n.d(e,"transpose",function(){return T.a});var S=n(111);n.d(e,"variance",function(){return S.a});var N=n(207);n.d(e,"zip",function(){return N.a})},function(t,e,n){"use strict";function r(t,e){this._groups=t,this._parents=e}function i(){return new r([[document.documentElement]],R)}n.d(e,"c",function(){return R}),e.b=r;var o=n(283),a=n(284),u=n(272),c=n(266),s=n(132),l=n(271),f=n(276),p=n(279),h=n(286),d=n(263),v=n(278),g=n(277),m=n(285),y=n(270),_=n(269),b=n(262),x=n(134),w=n(280),C=n(264),k=n(287),E=n(273),M=n(281),T=n(275),S=n(261),N=n(274),A=n(282),P=n(265),O=n(267),I=n(70),D=n(268),R=[null];r.prototype=i.prototype={constructor:r,select:o.a,selectAll:a.a,filter:u.a,data:c.a,enter:s.a,exit:l.a,merge:f.a,order:p.a,sort:h.a,call:d.a,nodes:v.a,node:g.a,size:m.a,empty:y.a,each:_.a,attr:b.a,style:x.b,property:w.a,classed:C.a,text:k.a,html:E.a,raise:M.a,lower:T.a,append:S.a,insert:N.a,remove:A.a,clone:P.a,datum:O.a,on:I.c,dispatch:D.a},e.a=i},function(t,e,n){"use strict";var r=null;t.exports={debugTool:r}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(61);n.d(e,"color",function(){return r.a}),n.d(e,"rgb",function(){return r.b}),n.d(e,"hsl",function(){return r.c});var i=n(218);n.d(e,"lab",function(){return i.a}),n.d(e,"hcl",function(){return i.b});var o=n(217);n.d(e,"cubehelix",function(){return o.a})},function(t,e,n){"use strict";function r(t){return function(){return t}}var i=function(){};i.thatReturns=r,i.thatReturnsFalse=r(!1),i.thatReturnsTrue=r(!0),i.thatReturnsNull=r(null),i.thatReturnsThis=function(){return this},i.thatReturnsArgument=function(t){return t},t.exports=i},function(t,e,n){"use strict";function r(){S.ReactReconcileTransaction&&w||l("123")}function i(){this.reinitializeTransaction(),this.dirtyComponentsLength=null,this.callbackQueue=p.getPooled(),this.reconcileTransaction=S.ReactReconcileTransaction.getPooled(!0)}function o(t,e,n,i,o,a){return r(),w.batchedUpdates(t,e,n,i,o,a)}function a(t,e){return t._mountOrder-e._mountOrder}function u(t){var e=t.dirtyComponentsLength;e!==y.length&&l("124",e,y.length),y.sort(a),_++;for(var n=0;n<e;n++){var r=y[n],i=r._pendingCallbacks;r._pendingCallbacks=null;var o;if(d.logTopLevelRenders){var u=r;r._currentElement.type.isReactTopLevelWrapper&&(u=r._renderedComponent),o="React update: "+u.getName(),console.time(o)}if(v.performUpdateIfNecessary(r,t.reconcileTransaction,_),o&&console.timeEnd(o),i)for(var c=0;c<i.length;c++)t.callbackQueue.enqueue(i[c],r.getPublicInstance())}}function c(t){if(r(),!w.isBatchingUpdates)return void w.batchedUpdates(c,t);y.push(t),null==t._updateBatchNumber&&(t._updateBatchNumber=_+1)}function s(t,e){m(w.isBatchingUpdates,"ReactUpdates.asap: Can't enqueue an asap callback in a context whereupdates are not being batched."),b.enqueue(t,e),x=!0}var l=n(1),f=n(3),p=n(159),h=n(18),d=n(164),v=n(24),g=n(55),m=n(0),y=[],_=0,b=p.getPooled(),x=!1,w=null,C={initialize:function(){this.dirtyComponentsLength=y.length},close:function(){this.dirtyComponentsLength!==y.length?(y.splice(0,this.dirtyComponentsLength),M()):y.length=0}},k={initialize:function(){this.callbackQueue.reset()},close:function(){this.callbackQueue.notifyAll()}},E=[C,k];f(i.prototype,g,{getTransactionWrappers:function(){return E},destructor:function(){this.dirtyComponentsLength=null,p.release(this.callbackQueue),this.callbackQueue=null,S.ReactReconcileTransaction.release(this.reconcileTransaction),this.reconcileTransaction=null},perform:function(t,e,n){return g.perform.call(this,this.reconcileTransaction.perform,this.reconcileTransaction,t,e,n)}}),h.addPoolingTo(i);var M=function(){for(;y.length||x;){if(y.length){var t=i.getPooled();t.perform(u,null,t),i.release(t)}if(x){x=!1;var e=b;b=p.getPooled(),e.notifyAll(),p.release(e)}}},T={injectReconcileTransaction:function(t){t||l("126"),S.ReactReconcileTransaction=t},injectBatchingStrategy:function(t){t||l("127"),"function"!=typeof t.batchedUpdates&&l("128"),"boolean"!=typeof t.isBatchingUpdates&&l("129"),w=t}},S={ReactReconcileTransaction:null,batchedUpdates:o,enqueueUpdate:c,flushBatchedUpdates:M,injection:T,asap:s};t.exports=S},function(t,e,n){"use strict";n.d(e,"e",function(){return r}),n.d(e,"d",function(){return i}),n.d(e,"c",function(){return o}),n.d(e,"b",function(){return a}),n.d(e,"a",function(){return u});var r=1e3,i=6e4,o=36e5,a=864e5,u=6048e5},function(t,e,n){"use strict";function r(t,e,n,r){this.dispatchConfig=t,this._targetInst=e,this.nativeEvent=n;var i=this.constructor.Interface;for(var o in i)if(i.hasOwnProperty(o)){var u=i[o];u?this[o]=u(n):"target"===o?this.target=r:this[o]=n[o]}var c=null!=n.defaultPrevented?n.defaultPrevented:!1===n.returnValue;return this.isDefaultPrevented=c?a.thatReturnsTrue:a.thatReturnsFalse,this.isPropagationStopped=a.thatReturnsFalse,this}var i=n(3),o=n(18),a=n(11),u=(n(2),["dispatchConfig","_targetInst","nativeEvent","isDefaultPrevented","isPropagationStopped","_dispatchListeners","_dispatchInstances"]),c={type:null,target:null,currentTarget:a.thatReturnsNull,eventPhase:null,bubbles:null,cancelable:null,timeStamp:function(t){return t.timeStamp||Date.now()},defaultPrevented:null,isTrusted:null};i(r.prototype,{preventDefault:function(){this.defaultPrevented=!0;var t=this.nativeEvent;t&&(t.preventDefault?t.preventDefault():"unknown"!=typeof t.returnValue&&(t.returnValue=!1),this.isDefaultPrevented=a.thatReturnsTrue)},stopPropagation:function(){var t=this.nativeEvent;t&&(t.stopPropagation?t.stopPropagation():"unknown"!=typeof t.cancelBubble&&(t.cancelBubble=!0),this.isPropagationStopped=a.thatReturnsTrue)},persist:function(){this.isPersistent=a.thatReturnsTrue},isPersistent:a.thatReturnsFalse,destructor:function(){var t=this.constructor.Interface;for(var e in t)this[e]=null;for(var n=0;n<u.length;n++)this[u[n]]=null}}),r.Interface=c,r.augmentClass=function(t,e){var n=this,r=function(){};r.prototype=n.prototype;var a=new r;i(a,t.prototype),t.prototype=a,t.prototype.constructor=t,t.Interface=i({},n.Interface,e),t.augmentClass=n.augmentClass,o.addPoolingTo(t,o.fourArgumentPooler)},o.addPoolingTo(r,o.fourArgumentPooler),t.exports=r},function(t,e,n){"use strict";var r={current:null};t.exports=r},function(t,e,n){"use strict";n.d(e,"a",function(){return i}),n.d(e,"b",function(){return o});var r=Array.prototype,i=r.map,o=r.slice},function(t,e,n){"use strict";e.a=function(t){return function(){return t}}},function(t,e,n){"use strict";var r=n(1),i=(n(0),function(t){var e=this;if(e.instancePool.length){var n=e.instancePool.pop();return e.call(n,t),n}return new e(t)}),o=function(t,e){var n=this;if(n.instancePool.length){var r=n.instancePool.pop();return n.call(r,t,e),r}return new n(t,e)},a=function(t,e,n){var r=this;if(r.instancePool.length){var i=r.instancePool.pop();return r.call(i,t,e,n),i}return new r(t,e,n)},u=function(t,e,n,r){var i=this;if(i.instancePool.length){var o=i.instancePool.pop();return i.call(o,t,e,n,r),o}return new i(t,e,n,r)},c=function(t){var e=this;t instanceof e||r("25"),t.destructor(),e.instancePool.length<e.poolSize&&e.instancePool.push(t)},s=i,l=function(t,e){var n=t;return n.instancePool=[],n.getPooled=e||s,n.poolSize||(n.poolSize=10),n.release=c,n},f={addPoolingTo:l,oneArgumentPooler:i,twoArgumentPooler:o,threeArgumentPooler:a,fourArgumentPooler:u};t.exports=f},function(t,e,n){"use strict";e.a=function(t,e){return t<e?-1:t>e?1:t>=e?0:NaN}},function(t,e,n){"use strict";function r(t){if(d){var e=t.node,n=t.children;if(n.length)for(var r=0;r<n.length;r++)v(e,n[r],null);else null!=t.html?f(e,t.html):null!=t.text&&h(e,t.text)}}function i(t,e){t.parentNode.replaceChild(e.node,t),r(e)}function o(t,e){d?t.children.push(e):t.node.appendChild(e.node)}function a(t,e){d?t.html=e:f(t.node,e)}function u(t,e){d?t.text=e:h(t.node,e)}function c(){return this.node.nodeName}function s(t){return{node:t,children:[],html:null,text:null,toString:c}}var l=n(83),f=n(57),p=n(91),h=n(176),d="undefined"!=typeof document&&"number"==typeof document.documentMode||"undefined"!=typeof navigator&&"string"==typeof navigator.userAgent&&/\bEdge\/\d/.test(navigator.userAgent),v=p(function(t,e,n){11===e.node.nodeType||1===e.node.nodeType&&"object"===e.node.nodeName.toLowerCase()&&(null==e.node.namespaceURI||e.node.namespaceURI===l.html)?(r(e),t.insertBefore(e.node,n)):(t.insertBefore(e.node,n),r(e))});s.insertTreeBefore=v,s.replaceChildWithTree=i,s.queueChild=o,s.queueHTML=a,s.queueText=u,t.exports=s},function(t,e,n){"use strict";function r(t,e){return(t&e)===e}var i=n(1),o=(n(0),{MUST_USE_PROPERTY:1,HAS_BOOLEAN_VALUE:4,HAS_NUMERIC_VALUE:8,HAS_POSITIVE_NUMERIC_VALUE:24,HAS_OVERLOADED_BOOLEAN_VALUE:32,injectDOMPropertyConfig:function(t){var e=o,n=t.Properties||{},a=t.DOMAttributeNamespaces||{},c=t.DOMAttributeNames||{},s=t.DOMPropertyNames||{},l=t.DOMMutationMethods||{};t.isCustomAttribute&&u._isCustomAttributeFunctions.push(t.isCustomAttribute);for(var f in n){u.properties.hasOwnProperty(f)&&i("48",f);var p=f.toLowerCase(),h=n[f],d={attributeName:p,attributeNamespace:null,propertyName:f,mutationMethod:null,mustUseProperty:r(h,e.MUST_USE_PROPERTY),hasBooleanValue:r(h,e.HAS_BOOLEAN_VALUE),hasNumericValue:r(h,e.HAS_NUMERIC_VALUE),hasPositiveNumericValue:r(h,e.HAS_POSITIVE_NUMERIC_VALUE),hasOverloadedBooleanValue:r(h,e.HAS_OVERLOADED_BOOLEAN_VALUE)};if(d.hasBooleanValue+d.hasNumericValue+d.hasOverloadedBooleanValue<=1||i("50",f),c.hasOwnProperty(f)){var v=c[f];d.attributeName=v}a.hasOwnProperty(f)&&(d.attributeNamespace=a[f]),s.hasOwnProperty(f)&&(d.propertyName=s[f]),l.hasOwnProperty(f)&&(d.mutationMethod=l[f]),u.properties[f]=d}}}),a=":A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD",u={ID_ATTRIBUTE_NAME:"data-reactid",ROOT_ATTRIBUTE_NAME:"data-reactroot",ATTRIBUTE_NAME_START_CHAR:a,ATTRIBUTE_NAME_CHAR:a+"\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040",properties:{},getPossibleStandardName:null,_isCustomAttributeFunctions:[],isCustomAttribute:function(t){for(var e=0;e<u._isCustomAttributeFunctions.length;e++){if((0,u._isCustomAttributeFunctions[e])(t))return!0}return!1},injection:o};t.exports=u},function(t,e,n){"use strict";function r(t){return"button"===t||"input"===t||"select"===t||"textarea"===t}function i(t,e,n){switch(t){case"onClick":case"onClickCapture":case"onDoubleClick":case"onDoubleClickCapture":case"onMouseDown":case"onMouseDownCapture":case"onMouseMove":case"onMouseMoveCapture":case"onMouseUp":case"onMouseUpCapture":return!(!n.disabled||!r(e));default:return!1}}var o=n(1),a=n(84),u=n(52),c=n(88),s=n(169),l=n(170),f=(n(0),{}),p=null,h=function(t,e){t&&(u.executeDispatchesInOrder(t,e),t.isPersistent()||t.constructor.release(t))},d=function(t){return h(t,!0)},v=function(t){return h(t,!1)},g=function(t){return"."+t._rootNodeID},m={injection:{injectEventPluginOrder:a.injectEventPluginOrder,injectEventPluginsByName:a.injectEventPluginsByName},putListener:function(t,e,n){"function"!=typeof n&&o("94",e,typeof n);var r=g(t);(f[e]||(f[e]={}))[r]=n;var i=a.registrationNameModules[e];i&&i.didPutListener&&i.didPutListener(t,e,n)},getListener:function(t,e){var n=f[e];if(i(e,t._currentElement.type,t._currentElement.props))return null;var r=g(t);return n&&n[r]},deleteListener:function(t,e){var n=a.registrationNameModules[e];n&&n.willDeleteListener&&n.willDeleteListener(t,e);var r=f[e];if(r){delete r[g(t)]}},deleteAllListeners:function(t){var e=g(t);for(var n in f)if(f.hasOwnProperty(n)&&f[n][e]){var r=a.registrationNameModules[n];r&&r.willDeleteListener&&r.willDeleteListener(t,n),delete f[n][e]}},extractEvents:function(t,e,n,r){for(var i,o=a.plugins,u=0;u<o.length;u++){var c=o[u];if(c){var l=c.extractEvents(t,e,n,r);l&&(i=s(i,l))}}return i},enqueueEvents:function(t){t&&(p=s(p,t))},processEventQueue:function(t){var e=p;p=null,t?l(e,d):l(e,v),p&&o("95"),c.rethrowCaughtError()},__purge:function(){f={}},__getListenerBank:function(){return f}};t.exports=m},function(t,e,n){"use strict";function r(t,e,n){var r=e.dispatchConfig.phasedRegistrationNames[n];return m(t,r)}function i(t,e,n){var i=r(t,n,e);i&&(n._dispatchListeners=v(n._dispatchListeners,i),n._dispatchInstances=v(n._dispatchInstances,t))}function o(t){t&&t.dispatchConfig.phasedRegistrationNames&&d.traverseTwoPhase(t._targetInst,i,t)}function a(t){if(t&&t.dispatchConfig.phasedRegistrationNames){var e=t._targetInst,n=e?d.getParentInstance(e):null;d.traverseTwoPhase(n,i,t)}}function u(t,e,n){if(n&&n.dispatchConfig.registrationName){var r=n.dispatchConfig.registrationName,i=m(t,r);i&&(n._dispatchListeners=v(n._dispatchListeners,i),n._dispatchInstances=v(n._dispatchInstances,t))}}function c(t){t&&t.dispatchConfig.registrationName&&u(t._targetInst,null,t)}function s(t){g(t,o)}function l(t){g(t,a)}function f(t,e,n,r){d.traverseEnterLeave(n,r,u,t,e)}function p(t){g(t,c)}var h=n(22),d=n(52),v=n(169),g=n(170),m=(n(2),h.getListener),y={accumulateTwoPhaseDispatches:s,accumulateTwoPhaseDispatchesSkipTarget:l,accumulateDirectDispatches:p,accumulateEnterLeaveDispatches:f};t.exports=y},function(t,e,n){"use strict";function r(){i.attachRefs(this,this._currentElement)}var i=n(382),o=(n(9),n(2),{mountComponent:function(t,e,n,i,o,a){var u=t.mountComponent(e,n,i,o,a);return t._currentElement&&null!=t._currentElement.ref&&e.getReactMountReady().enqueue(r,t),u},getHostNode:function(t){return t.getHostNode()},unmountComponent:function(t,e){i.detachRefs(t,t._currentElement),t.unmountComponent(e)},receiveComponent:function(t,e,n,o){var a=t._currentElement;if(e!==a||o!==t._context){var u=i.shouldUpdateRefs(a,e);u&&i.detachRefs(t,a),t.receiveComponent(e,n,o),u&&t._currentElement&&null!=t._currentElement.ref&&n.getReactMountReady().enqueue(r,t)}},performUpdateIfNecessary:function(t,e,n){t._updateBatchNumber===n&&t.performUpdateIfNecessary(e)}});t.exports=o},function(t,e,n){"use strict";function r(t,e,n,r){return i.call(this,t,e,n,r)}var i=n(14),o=n(94),a={view:function(t){if(t.view)return t.view;var e=o(t);if(e.window===e)return e;var n=e.ownerDocument;return n?n.defaultView||n.parentWindow:window},detail:function(t){return t.detail||0}};i.augmentClass(r,a),t.exports=r},function(t,e,n){"use strict";var r=n(3),i=n(178),o=n(414),a=n(415),u=n(27),c=n(416),s=n(417),l=n(418),f=n(422),p=u.createElement,h=u.createFactory,d=u.cloneElement,v=r,g=function(t){return t},m={Children:{map:o.map,forEach:o.forEach,count:o.count,toArray:o.toArray,only:f},Component:i.Component,PureComponent:i.PureComponent,createElement:p,cloneElement:d,isValidElement:u.isValidElement,PropTypes:c,createClass:l,createFactory:h,createMixin:g,DOM:a,version:s,__spread:v};t.exports=m},function(t,e,n){"use strict";function r(t){return void 0!==t.ref}function i(t){return void 0!==t.key}var o=n(3),a=n(15),u=(n(2),n(182),Object.prototype.hasOwnProperty),c=n(180),s={key:!0,ref:!0,__self:!0,__source:!0},l=function(t,e,n,r,i,o,a){var u={$$typeof:c,type:t,key:e,ref:n,props:a,_owner:o};return u};l.createElement=function(t,e,n){var o,c={},f=null,p=null;if(null!=e){r(e)&&(p=e.ref),i(e)&&(f=""+e.key),void 0===e.__self?null:e.__self,void 0===e.__source?null:e.__source;for(o in e)u.call(e,o)&&!s.hasOwnProperty(o)&&(c[o]=e[o])}var h=arguments.length-2;if(1===h)c.children=n;else if(h>1){for(var d=Array(h),v=0;v<h;v++)d[v]=arguments[v+2];c.children=d}if(t&&t.defaultProps){var g=t.defaultProps;for(o in g)void 0===c[o]&&(c[o]=g[o])}return l(t,f,p,0,0,a.current,c)},l.createFactory=function(t){var e=l.createElement.bind(null,t);return e.type=t,e},l.cloneAndReplaceKey=function(t,e){return l(t.type,e,t.ref,t._self,t._source,t._owner,t.props)},l.cloneElement=function(t,e,n){var c,f=o({},t.props),p=t.key,h=t.ref,d=(t._self,t._source,t._owner);if(null!=e){r(e)&&(h=e.ref,d=a.current),i(e)&&(p=""+e.key);var v;t.type&&t.type.defaultProps&&(v=t.type.defaultProps);for(c in e)u.call(e,c)&&!s.hasOwnProperty(c)&&(void 0===e[c]&&void 0!==v?f[c]=v[c]:f[c]=e[c])}var g=arguments.length-2;if(1===g)f.children=n;else if(g>1){for(var m=Array(g),y=0;y<g;y++)m[y]=arguments[y+2];f.children=m}return l(t.type,p,h,0,0,d,f)},l.isValidElement=function(t){return"object"==typeof t&&null!==t&&t.$$typeof===c},t.exports=l},function(t,e,n){"use strict";e.a=function(t){return null===t?NaN:+t}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(219);n.d(e,"formatDefaultLocale",function(){return r.a}),n.d(e,"format",function(){return r.b}),n.d(e,"formatPrefix",function(){return r.c});var i=n(117);n.d(e,"formatLocale",function(){return i.a});var o=n(115);n.d(e,"formatSpecifier",function(){return o.a});var a=n(225);n.d(e,"precisionFixed",function(){return a.a});var u=n(226);n.d(e,"precisionPrefix",function(){return u.a});var c=n(227);n.d(e,"precisionRound",function(){return c.a})},function(t,e,n){"use strict";var r=n(65);n.d(e,"b",function(){return r.a});var i=(n(118),n(64),n(119),n(121),n(43));n.d(e,"a",function(){return i.a});var o=(n(122),n(233));n.d(e,"c",function(){return o.a});var a=(n(124),n(235),n(237),n(123),n(230),n(231),n(229),n(228));n.d(e,"d",function(){return a.a});n(232)},function(t,e,n){"use strict";function r(t,e){return function(n){return t+n*e}}function i(t,e,n){return t=Math.pow(t,n),e=Math.pow(e,n)-t,n=1/n,function(r){return Math.pow(t+r*e,n)}}function o(t,e){var i=e-t;return i?r(t,i>180||i<-180?i-360*Math.round(i/360):i):n.i(c.a)(isNaN(t)?e:t)}function a(t){return 1==(t=+t)?u:function(e,r){return r-e?i(e,r,t):n.i(c.a)(isNaN(e)?r:e)}}function u(t,e){var i=e-t;return i?r(t,i):n.i(c.a)(isNaN(t)?e:t)}e.b=o,e.c=a,e.a=u;var c=n(120)},function(t,e,n){"use strict";var r=n(238);n.d(e,"a",function(){return r.a})},function(t,e,n){"use strict";e.a=function(t){return t.match(/.{6}/g).map(function(t){return"#"+t})}},function(t,e,n){"use strict";function r(t){var e=t.domain;return t.ticks=function(t){var r=e();return n.i(o.ticks)(r[0],r[r.length-1],null==t?10:t)},t.tickFormat=function(t,r){return n.i(c.a)(e(),t,r)},t.nice=function(r){null==r&&(r=10);var i,a=e(),u=0,c=a.length-1,s=a[u],l=a[c];return l<s&&(i=s,s=l,l=i,i=u,u=c,c=i),i=n.i(o.tickIncrement)(s,l,r),i>0?(s=Math.floor(s/i)*i,l=Math.ceil(l/i)*i,i=n.i(o.tickIncrement)(s,l,r)):i<0&&(s=Math.ceil(s*i)/i,l=Math.floor(l*i)/i,i=n.i(o.tickIncrement)(s,l,r)),i>0?(a[u]=Math.floor(s/i)*i,a[c]=Math.ceil(l/i)*i,e(a)):i<0&&(a[u]=Math.ceil(s*i)/i,a[c]=Math.floor(l*i)/i,e(a)),t},t}function i(){var t=n.i(u.a)(u.b,a.a);return t.copy=function(){return n.i(u.c)(t,i())},r(t)}e.b=r,e.a=i;var o=n(7),a=n(30),u=n(44),c=n(253)},function(t,e,n){"use strict";function r(t){return t>1?0:t<-1?h:Math.acos(t)}function i(t){return t>=1?d:t<=-1?-d:Math.asin(t)}n.d(e,"g",function(){return o}),n.d(e,"m",function(){return a}),n.d(e,"h",function(){return u}),n.d(e,"e",function(){return c}),n.d(e,"j",function(){return s}),n.d(e,"i",function(){return l}),n.d(e,"d",function(){return f}),n.d(e,"a",function(){return p}),n.d(e,"b",function(){return h}),n.d(e,"f",function(){return d}),n.d(e,"c",function(){return v}),e.l=r,e.k=i;var o=Math.abs,a=Math.atan2,u=Math.cos,c=Math.max,s=Math.min,l=Math.sin,f=Math.sqrt,p=1e-12,h=Math.PI,d=h/2,v=2*h},function(t,e,n){"use strict";e.a=function(t,e){if((i=t.length)>1)for(var n,r,i,o=1,a=t[e[0]],u=a.length;o<i;++o)for(r=a,a=t[e[o]],n=0;n<u;++n)a[n][1]+=a[n][0]=isNaN(r[n][1])?r[n][0]:r[n][1]}},function(t,e,n){"use strict";e.a=function(t){for(var e=t.length,n=new Array(e);--e>=0;)n[e]=e;return n}},function(t,e,n){(function(t,r){var i;(function(){function o(t,e,n){switch(n.length){case 0:return t.call(e);case 1:return t.call(e,n[0]);case 2:return t.call(e,n[0],n[1]);case 3:return t.call(e,n[0],n[1],n[2])}return t.apply(e,n)}function a(t,e,n,r){for(var i=-1,o=null==t?0:t.length;++i<o;){var a=t[i];e(r,a,n(a),t)}return r}function u(t,e){for(var n=-1,r=null==t?0:t.length;++n<r&&!1!==e(t[n],n,t););return t}function c(t,e){for(var n=null==t?0:t.length;n--&&!1!==e(t[n],n,t););return t}function s(t,e){for(var n=-1,r=null==t?0:t.length;++n<r;)if(!e(t[n],n,t))return!1;return!0}function l(t,e){for(var n=-1,r=null==t?0:t.length,i=0,o=[];++n<r;){var a=t[n];e(a,n,t)&&(o[i++]=a)}return o}function f(t,e){return!!(null==t?0:t.length)&&w(t,e,0)>-1}function p(t,e,n){for(var r=-1,i=null==t?0:t.length;++r<i;)if(n(e,t[r]))return!0;return!1}function h(t,e){for(var n=-1,r=null==t?0:t.length,i=Array(r);++n<r;)i[n]=e(t[n],n,t);return i}function d(t,e){for(var n=-1,r=e.length,i=t.length;++n<r;)t[i+n]=e[n];return t}function v(t,e,n,r){var i=-1,o=null==t?0:t.length;for(r&&o&&(n=t[++i]);++i<o;)n=e(n,t[i],i,t);return n}function g(t,e,n,r){var i=null==t?0:t.length;for(r&&i&&(n=t[--i]);i--;)n=e(n,t[i],i,t);return n}function m(t,e){for(var n=-1,r=null==t?0:t.length;++n<r;)if(e(t[n],n,t))return!0;return!1}function y(t){return t.split("")}function _(t){return t.match(Ue)||[]}function b(t,e,n){var r;return n(t,function(t,n,i){if(e(t,n,i))return r=n,!1}),r}function x(t,e,n,r){for(var i=t.length,o=n+(r?1:-1);r?o--:++o<i;)if(e(t[o],o,t))return o;return-1}function w(t,e,n){return e===e?$(t,e,n):x(t,k,n)}function C(t,e,n,r){for(var i=n-1,o=t.length;++i<o;)if(r(t[i],e))return i;return-1}function k(t){return t!==t}function E(t,e){var n=null==t?0:t.length;return n?A(t,e)/n:It}function M(t){return function(e){return null==e?nt:e[t]}}function T(t){return function(e){return null==t?nt:t[e]}}function S(t,e,n,r,i){return i(t,function(t,i,o){n=r?(r=!1,t):e(n,t,i,o)}),n}function N(t,e){var n=t.length;for(t.sort(e);n--;)t[n]=t[n].value;return t}function A(t,e){for(var n,r=-1,i=t.length;++r<i;){var o=e(t[r]);o!==nt&&(n=n===nt?o:n+o)}return n}function P(t,e){for(var n=-1,r=Array(t);++n<t;)r[n]=e(n);return r}function O(t,e){return h(e,function(e){return[e,t[e]]})}function I(t){return function(e){return t(e)}}function D(t,e){return h(e,function(e){return t[e]})}function R(t,e){return t.has(e)}function L(t,e){for(var n=-1,r=t.length;++n<r&&w(e,t[n],0)>-1;);return n}function U(t,e){for(var n=t.length;n--&&w(e,t[n],0)>-1;);return n}function F(t,e){for(var n=t.length,r=0;n--;)t[n]===e&&++r;return r}function j(t){return"\\"+En[t]}function B(t,e){return null==t?nt:t[e]}function V(t){return gn.test(t)}function W(t){return mn.test(t)}function z(t){for(var e,n=[];!(e=t.next()).done;)n.push(e.value);return n}function H(t){var e=-1,n=Array(t.size);return t.forEach(function(t,r){n[++e]=[r,t]}),n}function q(t,e){return function(n){return t(e(n))}}function Y(t,e){for(var n=-1,r=t.length,i=0,o=[];++n<r;){var a=t[n];a!==e&&a!==ct||(t[n]=ct,o[i++]=n)}return o}function K(t){var e=-1,n=Array(t.size);return t.forEach(function(t){n[++e]=t}),n}function G(t){var e=-1,n=Array(t.size);return t.forEach(function(t){n[++e]=[t,t]}),n}function $(t,e,n){for(var r=n-1,i=t.length;++r<i;)if(t[r]===e)return r;return-1}function X(t,e,n){for(var r=n+1;r--;)if(t[r]===e)return r;return r}function Q(t){return V(t)?J(t):Wn(t)}function Z(t){return V(t)?tt(t):y(t)}function J(t){for(var e=dn.lastIndex=0;dn.test(t);)++e;return e}function tt(t){return t.match(dn)||[]}function et(t){return t.match(vn)||[]}var nt,rt=200,it="Unsupported core-js use. Try https://npms.io/search?q=ponyfill.",ot="Expected a function",at="__lodash_hash_undefined__",ut=500,ct="__lodash_placeholder__",st=1,lt=2,ft=4,pt=1,ht=2,dt=1,vt=2,gt=4,mt=8,yt=16,_t=32,bt=64,xt=128,wt=256,Ct=512,kt=30,Et="...",Mt=800,Tt=16,St=1,Nt=2,At=1/0,Pt=9007199254740991,Ot=1.7976931348623157e308,It=NaN,Dt=4294967295,Rt=Dt-1,Lt=Dt>>>1,Ut=[["ary",xt],["bind",dt],["bindKey",vt],["curry",mt],["curryRight",yt],["flip",Ct],["partial",_t],["partialRight",bt],["rearg",wt]],Ft="[object Arguments]",jt="[object Array]",Bt="[object AsyncFunction]",Vt="[object Boolean]",Wt="[object Date]",zt="[object DOMException]",Ht="[object Error]",qt="[object Function]",Yt="[object GeneratorFunction]",Kt="[object Map]",Gt="[object Number]",$t="[object Null]",Xt="[object Object]",Qt="[object Proxy]",Zt="[object RegExp]",Jt="[object Set]",te="[object String]",ee="[object Symbol]",ne="[object Undefined]",re="[object WeakMap]",ie="[object WeakSet]",oe="[object ArrayBuffer]",ae="[object DataView]",ue="[object Float32Array]",ce="[object Float64Array]",se="[object Int8Array]",le="[object Int16Array]",fe="[object Int32Array]",pe="[object Uint8Array]",he="[object Uint8ClampedArray]",de="[object Uint16Array]",ve="[object Uint32Array]",ge=/\b__p \+= '';/g,me=/\b(__p \+=) '' \+/g,ye=/(__e\(.*?\)|\b__t\)) \+\n'';/g,_e=/&(?:amp|lt|gt|quot|#39);/g,be=/[&<>"']/g,xe=RegExp(_e.source),we=RegExp(be.source),Ce=/<%-([\s\S]+?)%>/g,ke=/<%([\s\S]+?)%>/g,Ee=/<%=([\s\S]+?)%>/g,Me=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Te=/^\w*$/,Se=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Ne=/[\\^$.*+?()[\]{}|]/g,Ae=RegExp(Ne.source),Pe=/^\s+|\s+$/g,Oe=/^\s+/,Ie=/\s+$/,De=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,Re=/\{\n\/\* \[wrapped with (.+)\] \*/,Le=/,? & /,Ue=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,Fe=/\\(\\)?/g,je=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,Be=/\w*$/,Ve=/^[-+]0x[0-9a-f]+$/i,We=/^0b[01]+$/i,ze=/^\[object .+?Constructor\]$/,He=/^0o[0-7]+$/i,qe=/^(?:0|[1-9]\d*)$/,Ye=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,Ke=/($^)/,Ge=/['\n\r\u2028\u2029\\]/g,$e="\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff",Xe="\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",Qe="["+Xe+"]",Ze="["+$e+"]",Je="[a-z\\xdf-\\xf6\\xf8-\\xff]",tn="[^\\ud800-\\udfff"+Xe+"\\d+\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde]",en="\\ud83c[\\udffb-\\udfff]",nn="(?:\\ud83c[\\udde6-\\uddff]){2}",rn="[\\ud800-\\udbff][\\udc00-\\udfff]",on="[A-Z\\xc0-\\xd6\\xd8-\\xde]",an="(?:"+Je+"|"+tn+")",un="(?:[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]|\\ud83c[\\udffb-\\udfff])?",cn="(?:\\u200d(?:"+["[^\\ud800-\\udfff]",nn,rn].join("|")+")[\\ufe0e\\ufe0f]?"+un+")*",sn="[\\ufe0e\\ufe0f]?"+un+cn,ln="(?:"+["[\\u2700-\\u27bf]",nn,rn].join("|")+")"+sn,fn="(?:"+["[^\\ud800-\\udfff]"+Ze+"?",Ze,nn,rn,"[\\ud800-\\udfff]"].join("|")+")",pn=RegExp("['’]","g"),hn=RegExp(Ze,"g"),dn=RegExp(en+"(?="+en+")|"+fn+sn,"g"),vn=RegExp([on+"?"+Je+"+(?:['’](?:d|ll|m|re|s|t|ve))?(?="+[Qe,on,"$"].join("|")+")","(?:[A-Z\\xc0-\\xd6\\xd8-\\xde]|[^\\ud800-\\udfff\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\d+\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde])+(?:['’](?:D|LL|M|RE|S|T|VE))?(?="+[Qe,on+an,"$"].join("|")+")",on+"?"+an+"+(?:['’](?:d|ll|m|re|s|t|ve))?",on+"+(?:['’](?:D|LL|M|RE|S|T|VE))?","\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])","\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])","\\d+",ln].join("|"),"g"),gn=RegExp("[\\u200d\\ud800-\\udfff"+$e+"\\ufe0e\\ufe0f]"),mn=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,yn=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],_n=-1,bn={};bn[ue]=bn[ce]=bn[se]=bn[le]=bn[fe]=bn[pe]=bn[he]=bn[de]=bn[ve]=!0,bn[Ft]=bn[jt]=bn[oe]=bn[Vt]=bn[ae]=bn[Wt]=bn[Ht]=bn[qt]=bn[Kt]=bn[Gt]=bn[Xt]=bn[Zt]=bn[Jt]=bn[te]=bn[re]=!1;var xn={};xn[Ft]=xn[jt]=xn[oe]=xn[ae]=xn[Vt]=xn[Wt]=xn[ue]=xn[ce]=xn[se]=xn[le]=xn[fe]=xn[Kt]=xn[Gt]=xn[Xt]=xn[Zt]=xn[Jt]=xn[te]=xn[ee]=xn[pe]=xn[he]=xn[de]=xn[ve]=!0,xn[Ht]=xn[qt]=xn[re]=!1;var wn={"À":"A","Á":"A","Â":"A","Ã":"A","Ä":"A","Å":"A","à":"a","á":"a","â":"a","ã":"a","ä":"a","å":"a","Ç":"C","ç":"c","Ð":"D","ð":"d","È":"E","É":"E","Ê":"E","Ë":"E","è":"e","é":"e","ê":"e","ë":"e","Ì":"I","Í":"I","Î":"I","Ï":"I","ì":"i","í":"i","î":"i","ï":"i","Ñ":"N","ñ":"n","Ò":"O","Ó":"O","Ô":"O","Õ":"O","Ö":"O","Ø":"O","ò":"o","ó":"o","ô":"o","õ":"o","ö":"o","ø":"o","Ù":"U","Ú":"U","Û":"U","Ü":"U","ù":"u","ú":"u","û":"u","ü":"u","Ý":"Y","ý":"y","ÿ":"y","Æ":"Ae","æ":"ae","Þ":"Th","þ":"th","ß":"ss","Ā":"A","Ă":"A","Ą":"A","ā":"a","ă":"a","ą":"a","Ć":"C","Ĉ":"C","Ċ":"C","Č":"C","ć":"c","ĉ":"c","ċ":"c","č":"c","Ď":"D","Đ":"D","ď":"d","đ":"d","Ē":"E","Ĕ":"E","Ė":"E","Ę":"E","Ě":"E","ē":"e","ĕ":"e","ė":"e","ę":"e","ě":"e","Ĝ":"G","Ğ":"G","Ġ":"G","Ģ":"G","ĝ":"g","ğ":"g","ġ":"g","ģ":"g","Ĥ":"H","Ħ":"H","ĥ":"h","ħ":"h","Ĩ":"I","Ī":"I","Ĭ":"I","Į":"I","İ":"I","ĩ":"i","ī":"i","ĭ":"i","į":"i","ı":"i","Ĵ":"J","ĵ":"j","Ķ":"K","ķ":"k","ĸ":"k","Ĺ":"L","Ļ":"L","Ľ":"L","Ŀ":"L","Ł":"L","ĺ":"l","ļ":"l","ľ":"l","ŀ":"l","ł":"l","Ń":"N","Ņ":"N","Ň":"N","Ŋ":"N","ń":"n","ņ":"n","ň":"n","ŋ":"n","Ō":"O","Ŏ":"O","Ő":"O","ō":"o","ŏ":"o","ő":"o","Ŕ":"R","Ŗ":"R","Ř":"R","ŕ":"r","ŗ":"r","ř":"r","Ś":"S","Ŝ":"S","Ş":"S","Š":"S","ś":"s","ŝ":"s","ş":"s","š":"s","Ţ":"T","Ť":"T","Ŧ":"T","ţ":"t","ť":"t","ŧ":"t","Ũ":"U","Ū":"U","Ŭ":"U","Ů":"U","Ű":"U","Ų":"U","ũ":"u","ū":"u","ŭ":"u","ů":"u","ű":"u","ų":"u","Ŵ":"W","ŵ":"w","Ŷ":"Y","ŷ":"y","Ÿ":"Y","Ź":"Z","Ż":"Z","Ž":"Z","ź":"z","ż":"z","ž":"z","IJ":"IJ","ij":"ij","Œ":"Oe","œ":"oe","ʼn":"'n","ſ":"s"},Cn={"&":"&","<":"<",">":">",'"':""","'":"'"},kn={"&":"&","<":"<",">":">",""":'"',"'":"'"},En={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},Mn=parseFloat,Tn=parseInt,Sn="object"==typeof t&&t&&t.Object===Object&&t,Nn="object"==typeof self&&self&&self.Object===Object&&self,An=Sn||Nn||Function("return this")(),Pn="object"==typeof e&&e&&!e.nodeType&&e,On=Pn&&"object"==typeof r&&r&&!r.nodeType&&r,In=On&&On.exports===Pn,Dn=In&&Sn.process,Rn=function(){try{var t=On&&On.require&&On.require("util").types;return t||Dn&&Dn.binding&&Dn.binding("util")}catch(t){}}(),Ln=Rn&&Rn.isArrayBuffer,Un=Rn&&Rn.isDate,Fn=Rn&&Rn.isMap,jn=Rn&&Rn.isRegExp,Bn=Rn&&Rn.isSet,Vn=Rn&&Rn.isTypedArray,Wn=M("length"),zn=T(wn),Hn=T(Cn),qn=T(kn),Yn=function t(e){function n(t){if(ec(t)&&!hp(t)&&!(t instanceof y)){if(t instanceof i)return t;if(pl.call(t,"__wrapped__"))return Zo(t)}return new i(t)}function r(){}function i(t,e){this.__wrapped__=t,this.__actions__=[],this.__chain__=!!e,this.__index__=0,this.__values__=nt}function y(t){this.__wrapped__=t,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=Dt,this.__views__=[]}function T(){var t=new y(this.__wrapped__);return t.__actions__=Oi(this.__actions__),t.__dir__=this.__dir__,t.__filtered__=this.__filtered__,t.__iteratees__=Oi(this.__iteratees__),t.__takeCount__=this.__takeCount__,t.__views__=Oi(this.__views__),t}function $(){if(this.__filtered__){var t=new y(this);t.__dir__=-1,t.__filtered__=!0}else t=this.clone(),t.__dir__*=-1;return t}function J(){var t=this.__wrapped__.value(),e=this.__dir__,n=hp(t),r=e<0,i=n?t.length:0,o=wo(0,i,this.__views__),a=o.start,u=o.end,c=u-a,s=r?u:a-1,l=this.__iteratees__,f=l.length,p=0,h=Wl(c,this.__takeCount__);if(!n||!r&&i==c&&h==c)return vi(t,this.__actions__);var d=[];t:for(;c--&&p<h;){s+=e;for(var v=-1,g=t[s];++v<f;){var m=l[v],y=m.iteratee,_=m.type,b=y(g);if(_==Nt)g=b;else if(!b){if(_==St)continue t;break t}}d[p++]=g}return d}function tt(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var r=t[e];this.set(r[0],r[1])}}function Ue(){this.__data__=Zl?Zl(null):{},this.size=0}function $e(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e}function Xe(t){var e=this.__data__;if(Zl){var n=e[t];return n===at?nt:n}return pl.call(e,t)?e[t]:nt}function Qe(t){var e=this.__data__;return Zl?e[t]!==nt:pl.call(e,t)}function Ze(t,e){var n=this.__data__;return this.size+=this.has(t)?0:1,n[t]=Zl&&e===nt?at:e,this}function Je(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var r=t[e];this.set(r[0],r[1])}}function tn(){this.__data__=[],this.size=0}function en(t){var e=this.__data__,n=Kn(e,t);return!(n<0)&&(n==e.length-1?e.pop():Ml.call(e,n,1),--this.size,!0)}function nn(t){var e=this.__data__,n=Kn(e,t);return n<0?nt:e[n][1]}function rn(t){return Kn(this.__data__,t)>-1}function on(t,e){var n=this.__data__,r=Kn(n,t);return r<0?(++this.size,n.push([t,e])):n[r][1]=e,this}function an(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var r=t[e];this.set(r[0],r[1])}}function un(){this.size=0,this.__data__={hash:new tt,map:new(Gl||Je),string:new tt}}function cn(t){var e=yo(this,t).delete(t);return this.size-=e?1:0,e}function sn(t){return yo(this,t).get(t)}function ln(t){return yo(this,t).has(t)}function fn(t,e){var n=yo(this,t),r=n.size;return n.set(t,e),this.size+=n.size==r?0:1,this}function dn(t){var e=-1,n=null==t?0:t.length;for(this.__data__=new an;++e<n;)this.add(t[e])}function vn(t){return this.__data__.set(t,at),this}function gn(t){return this.__data__.has(t)}function mn(t){var e=this.__data__=new Je(t);this.size=e.size}function wn(){this.__data__=new Je,this.size=0}function Cn(t){var e=this.__data__,n=e.delete(t);return this.size=e.size,n}function kn(t){return this.__data__.get(t)}function En(t){return this.__data__.has(t)}function Sn(t,e){var n=this.__data__;if(n instanceof Je){var r=n.__data__;if(!Gl||r.length<rt-1)return r.push([t,e]),this.size=++n.size,this;n=this.__data__=new an(r)}return n.set(t,e),this.size=n.size,this}function Nn(t,e){var n=hp(t),r=!n&&pp(t),i=!n&&!r&&vp(t),o=!n&&!r&&!i&&bp(t),a=n||r||i||o,u=a?P(t.length,ol):[],c=u.length;for(var s in t)!e&&!pl.call(t,s)||a&&("length"==s||i&&("offset"==s||"parent"==s)||o&&("buffer"==s||"byteLength"==s||"byteOffset"==s)||Ao(s,c))||u.push(s);return u}function Pn(t){var e=t.length;return e?t[Xr(0,e-1)]:nt}function On(t,e){return Go(Oi(t),Jn(e,0,t.length))}function Dn(t){return Go(Oi(t))}function Rn(t,e,n){(n===nt||Vu(t[e],n))&&(n!==nt||e in t)||Qn(t,e,n)}function Wn(t,e,n){var r=t[e];pl.call(t,e)&&Vu(r,n)&&(n!==nt||e in t)||Qn(t,e,n)}function Kn(t,e){for(var n=t.length;n--;)if(Vu(t[n][0],e))return n;return-1}function Gn(t,e,n,r){return ff(t,function(t,i,o){e(r,t,n(t),o)}),r}function $n(t,e){return t&&Ii(e,Lc(e),t)}function Xn(t,e){return t&&Ii(e,Uc(e),t)}function Qn(t,e,n){"__proto__"==e&&Al?Al(t,e,{configurable:!0,enumerable:!0,value:n,writable:!0}):t[e]=n}function Zn(t,e){for(var n=-1,r=e.length,i=Zs(r),o=null==t;++n<r;)i[n]=o?nt:Ic(t,e[n]);return i}function Jn(t,e,n){return t===t&&(n!==nt&&(t=t<=n?t:n),e!==nt&&(t=t>=e?t:e)),t}function tr(t,e,n,r,i,o){var a,c=e&st,s=e<,l=e&ft;if(n&&(a=i?n(t,r,i,o):n(t)),a!==nt)return a;if(!tc(t))return t;var f=hp(t);if(f){if(a=Eo(t),!c)return Oi(t,a)}else{var p=Cf(t),h=p==qt||p==Yt;if(vp(t))return wi(t,c);if(p==Xt||p==Ft||h&&!i){if(a=s||h?{}:Mo(t),!c)return s?Ri(t,Xn(a,t)):Di(t,$n(a,t))}else{if(!xn[p])return i?t:{};a=To(t,p,c)}}o||(o=new mn);var d=o.get(t);if(d)return d;if(o.set(t,a),_p(t))return t.forEach(function(r){a.add(tr(r,e,n,r,t,o))}),a;if(mp(t))return t.forEach(function(r,i){a.set(i,tr(r,e,n,i,t,o))}),a;var v=l?s?ho:po:s?Uc:Lc,g=f?nt:v(t);return u(g||t,function(r,i){g&&(i=r,r=t[i]),Wn(a,i,tr(r,e,n,i,t,o))}),a}function er(t){var e=Lc(t);return function(n){return nr(n,t,e)}}function nr(t,e,n){var r=n.length;if(null==t)return!r;for(t=rl(t);r--;){var i=n[r],o=e[i],a=t[i];if(a===nt&&!(i in t)||!o(a))return!1}return!0}function rr(t,e,n){if("function"!=typeof t)throw new al(ot);return Mf(function(){t.apply(nt,n)},e)}function ir(t,e,n,r){var i=-1,o=f,a=!0,u=t.length,c=[],s=e.length;if(!u)return c;n&&(e=h(e,I(n))),r?(o=p,a=!1):e.length>=rt&&(o=R,a=!1,e=new dn(e));t:for(;++i<u;){var l=t[i],d=null==n?l:n(l);if(l=r||0!==l?l:0,a&&d===d){for(var v=s;v--;)if(e[v]===d)continue t;c.push(l)}else o(e,d,r)||c.push(l)}return c}function or(t,e){var n=!0;return ff(t,function(t,r,i){return n=!!e(t,r,i)}),n}function ar(t,e,n){for(var r=-1,i=t.length;++r<i;){var o=t[r],a=e(o);if(null!=a&&(u===nt?a===a&&!pc(a):n(a,u)))var u=a,c=o}return c}function ur(t,e,n,r){var i=t.length;for(n=yc(n),n<0&&(n=-n>i?0:i+n),r=r===nt||r>i?i:yc(r),r<0&&(r+=i),r=n>r?0:_c(r);n<r;)t[n++]=e;return t}function cr(t,e){var n=[];return ff(t,function(t,r,i){e(t,r,i)&&n.push(t)}),n}function sr(t,e,n,r,i){var o=-1,a=t.length;for(n||(n=No),i||(i=[]);++o<a;){var u=t[o];e>0&&n(u)?e>1?sr(u,e-1,n,r,i):d(i,u):r||(i[i.length]=u)}return i}function lr(t,e){return t&&hf(t,e,Lc)}function fr(t,e){return t&&df(t,e,Lc)}function pr(t,e){return l(e,function(e){return Qu(t[e])})}function hr(t,e){e=bi(e,t);for(var n=0,r=e.length;null!=t&&n<r;)t=t[$o(e[n++])];return n&&n==r?t:nt}function dr(t,e,n){var r=e(t);return hp(t)?r:d(r,n(t))}function vr(t){return null==t?t===nt?ne:$t:Nl&&Nl in rl(t)?xo(t):Vo(t)}function gr(t,e){return t>e}function mr(t,e){return null!=t&&pl.call(t,e)}function yr(t,e){return null!=t&&e in rl(t)}function _r(t,e,n){return t>=Wl(e,n)&&t<Vl(e,n)}function br(t,e,n){for(var r=n?p:f,i=t[0].length,o=t.length,a=o,u=Zs(o),c=1/0,s=[];a--;){var l=t[a];a&&e&&(l=h(l,I(e))),c=Wl(l.length,c),u[a]=!n&&(e||i>=120&&l.length>=120)?new dn(a&&l):nt}l=t[0];var d=-1,v=u[0];t:for(;++d<i&&s.length<c;){var g=l[d],m=e?e(g):g;if(g=n||0!==g?g:0,!(v?R(v,m):r(s,m,n))){for(a=o;--a;){var y=u[a];if(!(y?R(y,m):r(t[a],m,n)))continue t}v&&v.push(m),s.push(g)}}return s}function xr(t,e,n,r){return lr(t,function(t,i,o){e(r,n(t),i,o)}),r}function wr(t,e,n){e=bi(e,t),t=zo(t,e);var r=null==t?t:t[$o(ma(e))];return null==r?nt:o(r,t,n)}function Cr(t){return ec(t)&&vr(t)==Ft}function kr(t){return ec(t)&&vr(t)==oe}function Er(t){return ec(t)&&vr(t)==Wt}function Mr(t,e,n,r,i){return t===e||(null==t||null==e||!ec(t)&&!ec(e)?t!==t&&e!==e:Tr(t,e,n,r,Mr,i))}function Tr(t,e,n,r,i,o){var a=hp(t),u=hp(e),c=a?jt:Cf(t),s=u?jt:Cf(e);c=c==Ft?Xt:c,s=s==Ft?Xt:s;var l=c==Xt,f=s==Xt,p=c==s;if(p&&vp(t)){if(!vp(e))return!1;a=!0,l=!1}if(p&&!l)return o||(o=new mn),a||bp(t)?co(t,e,n,r,i,o):so(t,e,c,n,r,i,o);if(!(n&pt)){var h=l&&pl.call(t,"__wrapped__"),d=f&&pl.call(e,"__wrapped__");if(h||d){var v=h?t.value():t,g=d?e.value():e;return o||(o=new mn),i(v,g,n,r,o)}}return!!p&&(o||(o=new mn),lo(t,e,n,r,i,o))}function Sr(t){return ec(t)&&Cf(t)==Kt}function Nr(t,e,n,r){var i=n.length,o=i,a=!r;if(null==t)return!o;for(t=rl(t);i--;){var u=n[i];if(a&&u[2]?u[1]!==t[u[0]]:!(u[0]in t))return!1}for(;++i<o;){u=n[i];var c=u[0],s=t[c],l=u[1];if(a&&u[2]){if(s===nt&&!(c in t))return!1}else{var f=new mn;if(r)var p=r(s,l,c,t,e,f);if(!(p===nt?Mr(l,s,pt|ht,r,f):p))return!1}}return!0}function Ar(t){return!(!tc(t)||Ro(t))&&(Qu(t)?yl:ze).test(Xo(t))}function Pr(t){return ec(t)&&vr(t)==Zt}function Or(t){return ec(t)&&Cf(t)==Jt}function Ir(t){return ec(t)&&Ju(t.length)&&!!bn[vr(t)]}function Dr(t){return"function"==typeof t?t:null==t?Ms:"object"==typeof t?hp(t)?Br(t[0],t[1]):jr(t):Ds(t)}function Rr(t){if(!Lo(t))return Bl(t);var e=[];for(var n in rl(t))pl.call(t,n)&&"constructor"!=n&&e.push(n);return e}function Lr(t){if(!tc(t))return Bo(t);var e=Lo(t),n=[];for(var r in t)("constructor"!=r||!e&&pl.call(t,r))&&n.push(r);return n}function Ur(t,e){return t<e}function Fr(t,e){var n=-1,r=Wu(t)?Zs(t.length):[];return ff(t,function(t,i,o){r[++n]=e(t,i,o)}),r}function jr(t){var e=_o(t);return 1==e.length&&e[0][2]?Fo(e[0][0],e[0][1]):function(n){return n===t||Nr(n,t,e)}}function Br(t,e){return Oo(t)&&Uo(e)?Fo($o(t),e):function(n){var r=Ic(n,t);return r===nt&&r===e?Rc(n,t):Mr(e,r,pt|ht)}}function Vr(t,e,n,r,i){t!==e&&hf(e,function(o,a){if(tc(o))i||(i=new mn),Wr(t,e,a,n,Vr,r,i);else{var u=r?r(qo(t,a),o,a+"",t,e,i):nt;u===nt&&(u=o),Rn(t,a,u)}},Uc)}function Wr(t,e,n,r,i,o,a){var u=qo(t,n),c=qo(e,n),s=a.get(c);if(s)return void Rn(t,n,s);var l=o?o(u,c,n+"",t,e,a):nt,f=l===nt;if(f){var p=hp(c),h=!p&&vp(c),d=!p&&!h&&bp(c);l=c,p||h||d?hp(u)?l=u:zu(u)?l=Oi(u):h?(f=!1,l=wi(c,!0)):d?(f=!1,l=Ti(c,!0)):l=[]:sc(c)||pp(c)?(l=u,pp(u)?l=xc(u):tc(u)&&!Qu(u)||(l=Mo(c))):f=!1}f&&(a.set(c,l),i(l,c,r,o,a),a.delete(c)),Rn(t,n,l)}function zr(t,e){var n=t.length;if(n)return e+=e<0?n:0,Ao(e,n)?t[e]:nt}function Hr(t,e,n){var r=-1;return e=h(e.length?e:[Ms],I(mo())),N(Fr(t,function(t,n,i){return{criteria:h(e,function(e){return e(t)}),index:++r,value:t}}),function(t,e){return Ni(t,e,n)})}function qr(t,e){return Yr(t,e,function(e,n){return Rc(t,n)})}function Yr(t,e,n){for(var r=-1,i=e.length,o={};++r<i;){var a=e[r],u=hr(t,a);n(u,a)&&ni(o,bi(a,t),u)}return o}function Kr(t){return function(e){return hr(e,t)}}function Gr(t,e,n,r){var i=r?C:w,o=-1,a=e.length,u=t;for(t===e&&(e=Oi(e)),n&&(u=h(t,I(n)));++o<a;)for(var c=0,s=e[o],l=n?n(s):s;(c=i(u,l,c,r))>-1;)u!==t&&Ml.call(u,c,1),Ml.call(t,c,1);return t}function $r(t,e){for(var n=t?e.length:0,r=n-1;n--;){var i=e[n];if(n==r||i!==o){var o=i;Ao(i)?Ml.call(t,i,1):pi(t,i)}}return t}function Xr(t,e){return t+Rl(ql()*(e-t+1))}function Qr(t,e,n,r){for(var i=-1,o=Vl(Dl((e-t)/(n||1)),0),a=Zs(o);o--;)a[r?o:++i]=t,t+=n;return a}function Zr(t,e){var n="";if(!t||e<1||e>Pt)return n;do{e%2&&(n+=t),(e=Rl(e/2))&&(t+=t)}while(e);return n}function Jr(t,e){return Tf(Wo(t,e,Ms),t+"")}function ti(t){return Pn($c(t))}function ei(t,e){var n=$c(t);return Go(n,Jn(e,0,n.length))}function ni(t,e,n,r){if(!tc(t))return t;e=bi(e,t);for(var i=-1,o=e.length,a=o-1,u=t;null!=u&&++i<o;){var c=$o(e[i]),s=n;if(i!=a){var l=u[c];s=r?r(l,c,u):nt,s===nt&&(s=tc(l)?l:Ao(e[i+1])?[]:{})}Wn(u,c,s),u=u[c]}return t}function ri(t){return Go($c(t))}function ii(t,e,n){var r=-1,i=t.length;e<0&&(e=-e>i?0:i+e),n=n>i?i:n,n<0&&(n+=i),i=e>n?0:n-e>>>0,e>>>=0;for(var o=Zs(i);++r<i;)o[r]=t[r+e];return o}function oi(t,e){var n;return ff(t,function(t,r,i){return!(n=e(t,r,i))}),!!n}function ai(t,e,n){var r=0,i=null==t?r:t.length;if("number"==typeof e&&e===e&&i<=Lt){for(;r<i;){var o=r+i>>>1,a=t[o];null!==a&&!pc(a)&&(n?a<=e:a<e)?r=o+1:i=o}return i}return ui(t,e,Ms,n)}function ui(t,e,n,r){e=n(e);for(var i=0,o=null==t?0:t.length,a=e!==e,u=null===e,c=pc(e),s=e===nt;i<o;){var l=Rl((i+o)/2),f=n(t[l]),p=f!==nt,h=null===f,d=f===f,v=pc(f);if(a)var g=r||d;else g=s?d&&(r||p):u?d&&p&&(r||!h):c?d&&p&&!h&&(r||!v):!h&&!v&&(r?f<=e:f<e);g?i=l+1:o=l}return Wl(o,Rt)}function ci(t,e){for(var n=-1,r=t.length,i=0,o=[];++n<r;){var a=t[n],u=e?e(a):a;if(!n||!Vu(u,c)){var c=u;o[i++]=0===a?0:a}}return o}function si(t){return"number"==typeof t?t:pc(t)?It:+t}function li(t){if("string"==typeof t)return t;if(hp(t))return h(t,li)+"";if(pc(t))return sf?sf.call(t):"";var e=t+"";return"0"==e&&1/t==-At?"-0":e}function fi(t,e,n){var r=-1,i=f,o=t.length,a=!0,u=[],c=u;if(n)a=!1,i=p;else if(o>=rt){var s=e?null:_f(t);if(s)return K(s);a=!1,i=R,c=new dn}else c=e?[]:u;t:for(;++r<o;){var l=t[r],h=e?e(l):l;if(l=n||0!==l?l:0,a&&h===h){for(var d=c.length;d--;)if(c[d]===h)continue t;e&&c.push(h),u.push(l)}else i(c,h,n)||(c!==u&&c.push(h),u.push(l))}return u}function pi(t,e){return e=bi(e,t),null==(t=zo(t,e))||delete t[$o(ma(e))]}function hi(t,e,n,r){return ni(t,e,n(hr(t,e)),r)}function di(t,e,n,r){for(var i=t.length,o=r?i:-1;(r?o--:++o<i)&&e(t[o],o,t););return n?ii(t,r?0:o,r?o+1:i):ii(t,r?o+1:0,r?i:o)}function vi(t,e){var n=t;return n instanceof y&&(n=n.value()),v(e,function(t,e){return e.func.apply(e.thisArg,d([t],e.args))},n)}function gi(t,e,n){var r=t.length;if(r<2)return r?fi(t[0]):[];for(var i=-1,o=Zs(r);++i<r;)for(var a=t[i],u=-1;++u<r;)u!=i&&(o[i]=ir(o[i]||a,t[u],e,n));return fi(sr(o,1),e,n)}function mi(t,e,n){for(var r=-1,i=t.length,o=e.length,a={};++r<i;){var u=r<o?e[r]:nt;n(a,t[r],u)}return a}function yi(t){return zu(t)?t:[]}function _i(t){return"function"==typeof t?t:Ms}function bi(t,e){return hp(t)?t:Oo(t,e)?[t]:Sf(Cc(t))}function xi(t,e,n){var r=t.length;return n=n===nt?r:n,!e&&n>=r?t:ii(t,e,n)}function wi(t,e){if(e)return t.slice();var n=t.length,r=wl?wl(n):new t.constructor(n);return t.copy(r),r}function Ci(t){var e=new t.constructor(t.byteLength);return new xl(e).set(new xl(t)),e}function ki(t,e){var n=e?Ci(t.buffer):t.buffer;return new t.constructor(n,t.byteOffset,t.byteLength)}function Ei(t){var e=new t.constructor(t.source,Be.exec(t));return e.lastIndex=t.lastIndex,e}function Mi(t){return cf?rl(cf.call(t)):{}}function Ti(t,e){var n=e?Ci(t.buffer):t.buffer;return new t.constructor(n,t.byteOffset,t.length)}function Si(t,e){if(t!==e){var n=t!==nt,r=null===t,i=t===t,o=pc(t),a=e!==nt,u=null===e,c=e===e,s=pc(e);if(!u&&!s&&!o&&t>e||o&&a&&c&&!u&&!s||r&&a&&c||!n&&c||!i)return 1;if(!r&&!o&&!s&&t<e||s&&n&&i&&!r&&!o||u&&n&&i||!a&&i||!c)return-1}return 0}function Ni(t,e,n){for(var r=-1,i=t.criteria,o=e.criteria,a=i.length,u=n.length;++r<a;){var c=Si(i[r],o[r]);if(c){if(r>=u)return c;return c*("desc"==n[r]?-1:1)}}return t.index-e.index}function Ai(t,e,n,r){for(var i=-1,o=t.length,a=n.length,u=-1,c=e.length,s=Vl(o-a,0),l=Zs(c+s),f=!r;++u<c;)l[u]=e[u];for(;++i<a;)(f||i<o)&&(l[n[i]]=t[i]);for(;s--;)l[u++]=t[i++];return l}function Pi(t,e,n,r){for(var i=-1,o=t.length,a=-1,u=n.length,c=-1,s=e.length,l=Vl(o-u,0),f=Zs(l+s),p=!r;++i<l;)f[i]=t[i];for(var h=i;++c<s;)f[h+c]=e[c];for(;++a<u;)(p||i<o)&&(f[h+n[a]]=t[i++]);return f}function Oi(t,e){var n=-1,r=t.length;for(e||(e=Zs(r));++n<r;)e[n]=t[n];return e}function Ii(t,e,n,r){var i=!n;n||(n={});for(var o=-1,a=e.length;++o<a;){var u=e[o],c=r?r(n[u],t[u],u,n,t):nt;c===nt&&(c=t[u]),i?Qn(n,u,c):Wn(n,u,c)}return n}function Di(t,e){return Ii(t,xf(t),e)}function Ri(t,e){return Ii(t,wf(t),e)}function Li(t,e){return function(n,r){var i=hp(n)?a:Gn,o=e?e():{};return i(n,t,mo(r,2),o)}}function Ui(t){return Jr(function(e,n){var r=-1,i=n.length,o=i>1?n[i-1]:nt,a=i>2?n[2]:nt;for(o=t.length>3&&"function"==typeof o?(i--,o):nt,a&&Po(n[0],n[1],a)&&(o=i<3?nt:o,i=1),e=rl(e);++r<i;){var u=n[r];u&&t(e,u,r,o)}return e})}function Fi(t,e){return function(n,r){if(null==n)return n;if(!Wu(n))return t(n,r);for(var i=n.length,o=e?i:-1,a=rl(n);(e?o--:++o<i)&&!1!==r(a[o],o,a););return n}}function ji(t){return function(e,n,r){for(var i=-1,o=rl(e),a=r(e),u=a.length;u--;){var c=a[t?u:++i];if(!1===n(o[c],c,o))break}return e}}function Bi(t,e,n){function r(){return(this&&this!==An&&this instanceof r?o:t).apply(i?n:this,arguments)}var i=e&dt,o=zi(t);return r}function Vi(t){return function(e){e=Cc(e);var n=V(e)?Z(e):nt,r=n?n[0]:e.charAt(0),i=n?xi(n,1).join(""):e.slice(1);return r[t]()+i}}function Wi(t){return function(e){return v(xs(es(e).replace(pn,"")),t,"")}}function zi(t){return function(){var e=arguments;switch(e.length){case 0:return new t;case 1:return new t(e[0]);case 2:return new t(e[0],e[1]);case 3:return new t(e[0],e[1],e[2]);case 4:return new t(e[0],e[1],e[2],e[3]);case 5:return new t(e[0],e[1],e[2],e[3],e[4]);case 6:return new t(e[0],e[1],e[2],e[3],e[4],e[5]);case 7:return new t(e[0],e[1],e[2],e[3],e[4],e[5],e[6])}var n=lf(t.prototype),r=t.apply(n,e);return tc(r)?r:n}}function Hi(t,e,n){function r(){for(var a=arguments.length,u=Zs(a),c=a,s=go(r);c--;)u[c]=arguments[c];var l=a<3&&u[0]!==s&&u[a-1]!==s?[]:Y(u,s);return(a-=l.length)<n?eo(t,e,Ki,r.placeholder,nt,u,l,nt,nt,n-a):o(this&&this!==An&&this instanceof r?i:t,this,u)}var i=zi(t);return r}function qi(t){return function(e,n,r){var i=rl(e);if(!Wu(e)){var o=mo(n,3);e=Lc(e),n=function(t){return o(i[t],t,i)}}var a=t(e,n,r);return a>-1?i[o?e[a]:a]:nt}}function Yi(t){return fo(function(e){var n=e.length,r=n,o=i.prototype.thru;for(t&&e.reverse();r--;){var a=e[r];if("function"!=typeof a)throw new al(ot);if(o&&!u&&"wrapper"==vo(a))var u=new i([],!0)}for(r=u?r:n;++r<n;){a=e[r];var c=vo(a),s="wrapper"==c?bf(a):nt;u=s&&Do(s[0])&&s[1]==(xt|mt|_t|wt)&&!s[4].length&&1==s[9]?u[vo(s[0])].apply(u,s[3]):1==a.length&&Do(a)?u[c]():u.thru(a)}return function(){var t=arguments,r=t[0];if(u&&1==t.length&&hp(r))return u.plant(r).value();for(var i=0,o=n?e[i].apply(this,t):r;++i<n;)o=e[i].call(this,o);return o}})}function Ki(t,e,n,r,i,o,a,u,c,s){function l(){for(var m=arguments.length,y=Zs(m),_=m;_--;)y[_]=arguments[_];if(d)var b=go(l),x=F(y,b);if(r&&(y=Ai(y,r,i,d)),o&&(y=Pi(y,o,a,d)),m-=x,d&&m<s){var w=Y(y,b);return eo(t,e,Ki,l.placeholder,n,y,w,u,c,s-m)}var C=p?n:this,k=h?C[t]:t;return m=y.length,u?y=Ho(y,u):v&&m>1&&y.reverse(),f&&c<m&&(y.length=c),this&&this!==An&&this instanceof l&&(k=g||zi(k)),k.apply(C,y)}var f=e&xt,p=e&dt,h=e&vt,d=e&(mt|yt),v=e&Ct,g=h?nt:zi(t);return l}function Gi(t,e){return function(n,r){return xr(n,t,e(r),{})}}function $i(t,e){return function(n,r){var i;if(n===nt&&r===nt)return e;if(n!==nt&&(i=n),r!==nt){if(i===nt)return r;"string"==typeof n||"string"==typeof r?(n=li(n),r=li(r)):(n=si(n),r=si(r)),i=t(n,r)}return i}}function Xi(t){return fo(function(e){return e=h(e,I(mo())),Jr(function(n){var r=this;return t(e,function(t){return o(t,r,n)})})})}function Qi(t,e){e=e===nt?" ":li(e);var n=e.length;if(n<2)return n?Zr(e,t):e;var r=Zr(e,Dl(t/Q(e)));return V(e)?xi(Z(r),0,t).join(""):r.slice(0,t)}function Zi(t,e,n,r){function i(){for(var e=-1,c=arguments.length,s=-1,l=r.length,f=Zs(l+c),p=this&&this!==An&&this instanceof i?u:t;++s<l;)f[s]=r[s];for(;c--;)f[s++]=arguments[++e];return o(p,a?n:this,f)}var a=e&dt,u=zi(t);return i}function Ji(t){return function(e,n,r){return r&&"number"!=typeof r&&Po(e,n,r)&&(n=r=nt),e=mc(e),n===nt?(n=e,e=0):n=mc(n),r=r===nt?e<n?1:-1:mc(r),Qr(e,n,r,t)}}function to(t){return function(e,n){return"string"==typeof e&&"string"==typeof n||(e=bc(e),n=bc(n)),t(e,n)}}function eo(t,e,n,r,i,o,a,u,c,s){var l=e&mt,f=l?a:nt,p=l?nt:a,h=l?o:nt,d=l?nt:o;e|=l?_t:bt,(e&=~(l?bt:_t))>||(e&=~(dt|vt));var v=[t,e,i,h,f,d,p,u,c,s],g=n.apply(nt,v);return Do(t)&&Ef(g,v),g.placeholder=r,Yo(g,t,e)}function no(t){var e=nl[t];return function(t,n){if(t=bc(t),n=null==n?0:Wl(yc(n),292)){var r=(Cc(t)+"e").split("e");return r=(Cc(e(r[0]+"e"+(+r[1]+n)))+"e").split("e"),+(r[0]+"e"+(+r[1]-n))}return e(t)}}function ro(t){return function(e){var n=Cf(e);return n==Kt?H(e):n==Jt?G(e):O(e,t(e))}}function io(t,e,n,r,i,o,a,u){var c=e&vt;if(!c&&"function"!=typeof t)throw new al(ot);var s=r?r.length:0;if(s||(e&=~(_t|bt),r=i=nt),a=a===nt?a:Vl(yc(a),0),u=u===nt?u:yc(u),s-=i?i.length:0,e&bt){var l=r,f=i;r=i=nt}var p=c?nt:bf(t),h=[t,e,n,r,i,l,f,o,a,u];if(p&&jo(h,p),t=h[0],e=h[1],n=h[2],r=h[3],i=h[4],u=h[9]=h[9]===nt?c?0:t.length:Vl(h[9]-s,0),!u&&e&(mt|yt)&&(e&=~(mt|yt)),e&&e!=dt)d=e==mt||e==yt?Hi(t,e,u):e!=_t&&e!=(dt|_t)||i.length?Ki.apply(nt,h):Zi(t,e,n,r);else var d=Bi(t,e,n);return Yo((p?vf:Ef)(d,h),t,e)}function oo(t,e,n,r){return t===nt||Vu(t,sl[n])&&!pl.call(r,n)?e:t}function ao(t,e,n,r,i,o){return tc(t)&&tc(e)&&(o.set(e,t),Vr(t,e,nt,ao,o),o.delete(e)),t}function uo(t){return sc(t)?nt:t}function co(t,e,n,r,i,o){var a=n&pt,u=t.length,c=e.length;if(u!=c&&!(a&&c>u))return!1;var s=o.get(t);if(s&&o.get(e))return s==e;var l=-1,f=!0,p=n&ht?new dn:nt;for(o.set(t,e),o.set(e,t);++l<u;){var h=t[l],d=e[l];if(r)var v=a?r(d,h,l,e,t,o):r(h,d,l,t,e,o);if(v!==nt){if(v)continue;f=!1;break}if(p){if(!m(e,function(t,e){if(!R(p,e)&&(h===t||i(h,t,n,r,o)))return p.push(e)})){f=!1;break}}else if(h!==d&&!i(h,d,n,r,o)){f=!1;break}}return o.delete(t),o.delete(e),f}function so(t,e,n,r,i,o,a){switch(n){case ae:if(t.byteLength!=e.byteLength||t.byteOffset!=e.byteOffset)return!1;t=t.buffer,e=e.buffer;case oe:return!(t.byteLength!=e.byteLength||!o(new xl(t),new xl(e)));case Vt:case Wt:case Gt:return Vu(+t,+e);case Ht:return t.name==e.name&&t.message==e.message;case Zt:case te:return t==e+"";case Kt:var u=H;case Jt:var c=r&pt;if(u||(u=K),t.size!=e.size&&!c)return!1;var s=a.get(t);if(s)return s==e;r|=ht,a.set(t,e);var l=co(u(t),u(e),r,i,o,a);return a.delete(t),l;case ee:if(cf)return cf.call(t)==cf.call(e)}return!1}function lo(t,e,n,r,i,o){var a=n&pt,u=po(t),c=u.length;if(c!=po(e).length&&!a)return!1;for(var s=c;s--;){var l=u[s];if(!(a?l in e:pl.call(e,l)))return!1}var f=o.get(t);if(f&&o.get(e))return f==e;var p=!0;o.set(t,e),o.set(e,t);for(var h=a;++s<c;){l=u[s];var d=t[l],v=e[l];if(r)var g=a?r(v,d,l,e,t,o):r(d,v,l,t,e,o);if(!(g===nt?d===v||i(d,v,n,r,o):g)){p=!1;break}h||(h="constructor"==l)}if(p&&!h){var m=t.constructor,y=e.constructor;m!=y&&"constructor"in t&&"constructor"in e&&!("function"==typeof m&&m instanceof m&&"function"==typeof y&&y instanceof y)&&(p=!1)}return o.delete(t),o.delete(e),p}function fo(t){return Tf(Wo(t,nt,sa),t+"")}function po(t){return dr(t,Lc,xf)}function ho(t){return dr(t,Uc,wf)}function vo(t){for(var e=t.name+"",n=tf[e],r=pl.call(tf,e)?n.length:0;r--;){var i=n[r],o=i.func;if(null==o||o==t)return i.name}return e}function go(t){return(pl.call(n,"placeholder")?n:t).placeholder}function mo(){var t=n.iteratee||Ts;return t=t===Ts?Dr:t,arguments.length?t(arguments[0],arguments[1]):t}function yo(t,e){var n=t.__data__;return Io(e)?n["string"==typeof e?"string":"hash"]:n.map}function _o(t){for(var e=Lc(t),n=e.length;n--;){var r=e[n],i=t[r];e[n]=[r,i,Uo(i)]}return e}function bo(t,e){var n=B(t,e);return Ar(n)?n:nt}function xo(t){var e=pl.call(t,Nl),n=t[Nl];try{t[Nl]=nt;var r=!0}catch(t){}var i=vl.call(t);return r&&(e?t[Nl]=n:delete t[Nl]),i}function wo(t,e,n){for(var r=-1,i=n.length;++r<i;){var o=n[r],a=o.size;switch(o.type){case"drop":t+=a;break;case"dropRight":e-=a;break;case"take":e=Wl(e,t+a);break;case"takeRight":t=Vl(t,e-a)}}return{start:t,end:e}}function Co(t){var e=t.match(Re);return e?e[1].split(Le):[]}function ko(t,e,n){e=bi(e,t);for(var r=-1,i=e.length,o=!1;++r<i;){var a=$o(e[r]);if(!(o=null!=t&&n(t,a)))break;t=t[a]}return o||++r!=i?o:!!(i=null==t?0:t.length)&&Ju(i)&&Ao(a,i)&&(hp(t)||pp(t))}function Eo(t){var e=t.length,n=new t.constructor(e);return e&&"string"==typeof t[0]&&pl.call(t,"index")&&(n.index=t.index,n.input=t.input),n}function Mo(t){return"function"!=typeof t.constructor||Lo(t)?{}:lf(Cl(t))}function To(t,e,n){var r=t.constructor;switch(e){case oe:return Ci(t);case Vt:case Wt:return new r(+t);case ae:return ki(t,n);case ue:case ce:case se:case le:case fe:case pe:case he:case de:case ve:return Ti(t,n);case Kt:return new r;case Gt:case te:return new r(t);case Zt:return Ei(t);case Jt:return new r;case ee:return Mi(t)}}function So(t,e){var n=e.length;if(!n)return t;var r=n-1;return e[r]=(n>1?"& ":"")+e[r],e=e.join(n>2?", ":" "),t.replace(De,"{\n/* [wrapped with "+e+"] */\n")}function No(t){return hp(t)||pp(t)||!!(Tl&&t&&t[Tl])}function Ao(t,e){var n=typeof t;return!!(e=null==e?Pt:e)&&("number"==n||"symbol"!=n&&qe.test(t))&&t>-1&&t%1==0&&t<e}function Po(t,e,n){if(!tc(n))return!1;var r=typeof e;return!!("number"==r?Wu(n)&&Ao(e,n.length):"string"==r&&e in n)&&Vu(n[e],t)}function Oo(t,e){if(hp(t))return!1;var n=typeof t;return!("number"!=n&&"symbol"!=n&&"boolean"!=n&&null!=t&&!pc(t))||(Te.test(t)||!Me.test(t)||null!=e&&t in rl(e))}function Io(t){var e=typeof t;return"string"==e||"number"==e||"symbol"==e||"boolean"==e?"__proto__"!==t:null===t}function Do(t){var e=vo(t),r=n[e];if("function"!=typeof r||!(e in y.prototype))return!1;if(t===r)return!0;var i=bf(r);return!!i&&t===i[0]}function Ro(t){return!!dl&&dl in t}function Lo(t){var e=t&&t.constructor;return t===("function"==typeof e&&e.prototype||sl)}function Uo(t){return t===t&&!tc(t)}function Fo(t,e){return function(n){return null!=n&&(n[t]===e&&(e!==nt||t in rl(n)))}}function jo(t,e){var n=t[1],r=e[1],i=n|r,o=i<(dt|vt|xt),a=r==xt&&n==mt||r==xt&&n==wt&&t[7].length<=e[8]||r==(xt|wt)&&e[7].length<=e[8]&&n==mt;if(!o&&!a)return t;r&dt&&(t[2]=e[2],i|=n&dt?0:gt);var u=e[3];if(u){var c=t[3];t[3]=c?Ai(c,u,e[4]):u,t[4]=c?Y(t[3],ct):e[4]}return u=e[5],u&&(c=t[5],t[5]=c?Pi(c,u,e[6]):u,t[6]=c?Y(t[5],ct):e[6]),u=e[7],u&&(t[7]=u),r&xt&&(t[8]=null==t[8]?e[8]:Wl(t[8],e[8])),null==t[9]&&(t[9]=e[9]),t[0]=e[0],t[1]=i,t}function Bo(t){var e=[];if(null!=t)for(var n in rl(t))e.push(n);return e}function Vo(t){return vl.call(t)}function Wo(t,e,n){return e=Vl(e===nt?t.length-1:e,0),function(){for(var r=arguments,i=-1,a=Vl(r.length-e,0),u=Zs(a);++i<a;)u[i]=r[e+i];i=-1;for(var c=Zs(e+1);++i<e;)c[i]=r[i];return c[e]=n(u),o(t,this,c)}}function zo(t,e){return e.length<2?t:hr(t,ii(e,0,-1))}function Ho(t,e){for(var n=t.length,r=Wl(e.length,n),i=Oi(t);r--;){var o=e[r];t[r]=Ao(o,n)?i[o]:nt}return t}function qo(t,e){if("__proto__"!=e)return t[e]}function Yo(t,e,n){var r=e+"";return Tf(t,So(r,Qo(Co(r),n)))}function Ko(t){var e=0,n=0;return function(){var r=zl(),i=Tt-(r-n);if(n=r,i>0){if(++e>=Mt)return arguments[0]}else e=0;return t.apply(nt,arguments)}}function Go(t,e){var n=-1,r=t.length,i=r-1;for(e=e===nt?r:e;++n<e;){var o=Xr(n,i),a=t[o];t[o]=t[n],t[n]=a}return t.length=e,t}function $o(t){if("string"==typeof t||pc(t))return t;var e=t+"";return"0"==e&&1/t==-At?"-0":e}function Xo(t){if(null!=t){try{return fl.call(t)}catch(t){}try{return t+""}catch(t){}}return""}function Qo(t,e){return u(Ut,function(n){var r="_."+n[0];e&n[1]&&!f(t,r)&&t.push(r)}),t.sort()}function Zo(t){if(t instanceof y)return t.clone();var e=new i(t.__wrapped__,t.__chain__);return e.__actions__=Oi(t.__actions__),e.__index__=t.__index__,e.__values__=t.__values__,e}function Jo(t,e,n){e=(n?Po(t,e,n):e===nt)?1:Vl(yc(e),0);var r=null==t?0:t.length;if(!r||e<1)return[];for(var i=0,o=0,a=Zs(Dl(r/e));i<r;)a[o++]=ii(t,i,i+=e);return a}function ta(t){for(var e=-1,n=null==t?0:t.length,r=0,i=[];++e<n;){var o=t[e];o&&(i[r++]=o)}return i}function ea(){var t=arguments.length;if(!t)return[];for(var e=Zs(t-1),n=arguments[0],r=t;r--;)e[r-1]=arguments[r];return d(hp(n)?Oi(n):[n],sr(e,1))}function na(t,e,n){var r=null==t?0:t.length;return r?(e=n||e===nt?1:yc(e),ii(t,e<0?0:e,r)):[]}function ra(t,e,n){var r=null==t?0:t.length;return r?(e=n||e===nt?1:yc(e),e=r-e,ii(t,0,e<0?0:e)):[]}function ia(t,e){return t&&t.length?di(t,mo(e,3),!0,!0):[]}function oa(t,e){return t&&t.length?di(t,mo(e,3),!0):[]}function aa(t,e,n,r){var i=null==t?0:t.length;return i?(n&&"number"!=typeof n&&Po(t,e,n)&&(n=0,r=i),ur(t,e,n,r)):[]}function ua(t,e,n){var r=null==t?0:t.length;if(!r)return-1;var i=null==n?0:yc(n);return i<0&&(i=Vl(r+i,0)),x(t,mo(e,3),i)}function ca(t,e,n){var r=null==t?0:t.length;if(!r)return-1;var i=r-1;return n!==nt&&(i=yc(n),i=n<0?Vl(r+i,0):Wl(i,r-1)),x(t,mo(e,3),i,!0)}function sa(t){return(null==t?0:t.length)?sr(t,1):[]}function la(t){return(null==t?0:t.length)?sr(t,At):[]}function fa(t,e){return(null==t?0:t.length)?(e=e===nt?1:yc(e),sr(t,e)):[]}function pa(t){for(var e=-1,n=null==t?0:t.length,r={};++e<n;){var i=t[e];r[i[0]]=i[1]}return r}function ha(t){return t&&t.length?t[0]:nt}function da(t,e,n){var r=null==t?0:t.length;if(!r)return-1;var i=null==n?0:yc(n);return i<0&&(i=Vl(r+i,0)),w(t,e,i)}function va(t){return(null==t?0:t.length)?ii(t,0,-1):[]}function ga(t,e){return null==t?"":jl.call(t,e)}function ma(t){var e=null==t?0:t.length;return e?t[e-1]:nt}function ya(t,e,n){var r=null==t?0:t.length;if(!r)return-1;var i=r;return n!==nt&&(i=yc(n),i=i<0?Vl(r+i,0):Wl(i,r-1)),e===e?X(t,e,i):x(t,k,i,!0)}function _a(t,e){return t&&t.length?zr(t,yc(e)):nt}function ba(t,e){return t&&t.length&&e&&e.length?Gr(t,e):t}function xa(t,e,n){return t&&t.length&&e&&e.length?Gr(t,e,mo(n,2)):t}function wa(t,e,n){return t&&t.length&&e&&e.length?Gr(t,e,nt,n):t}function Ca(t,e){var n=[];if(!t||!t.length)return n;var r=-1,i=[],o=t.length;for(e=mo(e,3);++r<o;){var a=t[r];e(a,r,t)&&(n.push(a),i.push(r))}return $r(t,i),n}function ka(t){return null==t?t:Yl.call(t)}function Ea(t,e,n){var r=null==t?0:t.length;return r?(n&&"number"!=typeof n&&Po(t,e,n)?(e=0,n=r):(e=null==e?0:yc(e),n=n===nt?r:yc(n)),ii(t,e,n)):[]}function Ma(t,e){return ai(t,e)}function Ta(t,e,n){return ui(t,e,mo(n,2))}function Sa(t,e){var n=null==t?0:t.length;if(n){var r=ai(t,e);if(r<n&&Vu(t[r],e))return r}return-1}function Na(t,e){return ai(t,e,!0)}function Aa(t,e,n){return ui(t,e,mo(n,2),!0)}function Pa(t,e){if(null==t?0:t.length){var n=ai(t,e,!0)-1;if(Vu(t[n],e))return n}return-1}function Oa(t){return t&&t.length?ci(t):[]}function Ia(t,e){return t&&t.length?ci(t,mo(e,2)):[]}function Da(t){var e=null==t?0:t.length;return e?ii(t,1,e):[]}function Ra(t,e,n){return t&&t.length?(e=n||e===nt?1:yc(e),ii(t,0,e<0?0:e)):[]}function La(t,e,n){var r=null==t?0:t.length;return r?(e=n||e===nt?1:yc(e),e=r-e,ii(t,e<0?0:e,r)):[]}function Ua(t,e){return t&&t.length?di(t,mo(e,3),!1,!0):[]}function Fa(t,e){return t&&t.length?di(t,mo(e,3)):[]}function ja(t){return t&&t.length?fi(t):[]}function Ba(t,e){return t&&t.length?fi(t,mo(e,2)):[]}function Va(t,e){return e="function"==typeof e?e:nt,t&&t.length?fi(t,nt,e):[]}function Wa(t){if(!t||!t.length)return[];var e=0;return t=l(t,function(t){if(zu(t))return e=Vl(t.length,e),!0}),P(e,function(e){return h(t,M(e))})}function za(t,e){if(!t||!t.length)return[];var n=Wa(t);return null==e?n:h(n,function(t){return o(e,nt,t)})}function Ha(t,e){return mi(t||[],e||[],Wn)}function qa(t,e){return mi(t||[],e||[],ni)}function Ya(t){var e=n(t);return e.__chain__=!0,e}function Ka(t,e){return e(t),t}function Ga(t,e){return e(t)}function $a(){return Ya(this)}function Xa(){return new i(this.value(),this.__chain__)}function Qa(){this.__values__===nt&&(this.__values__=gc(this.value()));var t=this.__index__>=this.__values__.length;return{done:t,value:t?nt:this.__values__[this.__index__++]}}function Za(){return this}function Ja(t){for(var e,n=this;n instanceof r;){var i=Zo(n);i.__index__=0,i.__values__=nt,e?o.__wrapped__=i:e=i;var o=i;n=n.__wrapped__}return o.__wrapped__=t,e}function tu(){var t=this.__wrapped__;if(t instanceof y){var e=t;return this.__actions__.length&&(e=new y(this)),e=e.reverse(),e.__actions__.push({func:Ga,args:[ka],thisArg:nt}),new i(e,this.__chain__)}return this.thru(ka)}function eu(){return vi(this.__wrapped__,this.__actions__)}function nu(t,e,n){var r=hp(t)?s:or;return n&&Po(t,e,n)&&(e=nt),r(t,mo(e,3))}function ru(t,e){return(hp(t)?l:cr)(t,mo(e,3))}function iu(t,e){return sr(lu(t,e),1)}function ou(t,e){return sr(lu(t,e),At)}function au(t,e,n){return n=n===nt?1:yc(n),sr(lu(t,e),n)}function uu(t,e){return(hp(t)?u:ff)(t,mo(e,3))}function cu(t,e){return(hp(t)?c:pf)(t,mo(e,3))}function su(t,e,n,r){t=Wu(t)?t:$c(t),n=n&&!r?yc(n):0;var i=t.length;return n<0&&(n=Vl(i+n,0)),fc(t)?n<=i&&t.indexOf(e,n)>-1:!!i&&w(t,e,n)>-1}function lu(t,e){return(hp(t)?h:Fr)(t,mo(e,3))}function fu(t,e,n,r){return null==t?[]:(hp(e)||(e=null==e?[]:[e]),n=r?nt:n,hp(n)||(n=null==n?[]:[n]),Hr(t,e,n))}function pu(t,e,n){var r=hp(t)?v:S,i=arguments.length<3;return r(t,mo(e,4),n,i,ff)}function hu(t,e,n){var r=hp(t)?g:S,i=arguments.length<3;return r(t,mo(e,4),n,i,pf)}function du(t,e){return(hp(t)?l:cr)(t,Su(mo(e,3)))}function vu(t){return(hp(t)?Pn:ti)(t)}function gu(t,e,n){return e=(n?Po(t,e,n):e===nt)?1:yc(e),(hp(t)?On:ei)(t,e)}function mu(t){return(hp(t)?Dn:ri)(t)}function yu(t){if(null==t)return 0;if(Wu(t))return fc(t)?Q(t):t.length;var e=Cf(t);return e==Kt||e==Jt?t.size:Rr(t).length}function _u(t,e,n){var r=hp(t)?m:oi;return n&&Po(t,e,n)&&(e=nt),r(t,mo(e,3))}function bu(t,e){if("function"!=typeof e)throw new al(ot);return t=yc(t),function(){if(--t<1)return e.apply(this,arguments)}}function xu(t,e,n){return e=n?nt:e,e=t&&null==e?t.length:e,io(t,xt,nt,nt,nt,nt,e)}function wu(t,e){var n;if("function"!=typeof e)throw new al(ot);return t=yc(t),function(){return--t>0&&(n=e.apply(this,arguments)),t<=1&&(e=nt),n}}function Cu(t,e,n){e=n?nt:e;var r=io(t,mt,nt,nt,nt,nt,nt,e);return r.placeholder=Cu.placeholder,r}function ku(t,e,n){e=n?nt:e;var r=io(t,yt,nt,nt,nt,nt,nt,e);return r.placeholder=ku.placeholder,r}function Eu(t,e,n){function r(e){var n=p,r=h;return p=h=nt,y=e,v=t.apply(r,n)}function i(t){return y=t,g=Mf(u,e),_?r(t):v}function o(t){var n=t-m,r=t-y,i=e-n;return b?Wl(i,d-r):i}function a(t){var n=t-m,r=t-y;return m===nt||n>=e||n<0||b&&r>=d}function u(){var t=ep();if(a(t))return c(t);g=Mf(u,o(t))}function c(t){return g=nt,x&&p?r(t):(p=h=nt,v)}function s(){g!==nt&&yf(g),y=0,p=m=h=g=nt}function l(){return g===nt?v:c(ep())}function f(){var t=ep(),n=a(t);if(p=arguments,h=this,m=t,n){if(g===nt)return i(m);if(b)return g=Mf(u,e),r(m)}return g===nt&&(g=Mf(u,e)),v}var p,h,d,v,g,m,y=0,_=!1,b=!1,x=!0;if("function"!=typeof t)throw new al(ot);return e=bc(e)||0,tc(n)&&(_=!!n.leading,b="maxWait"in n,d=b?Vl(bc(n.maxWait)||0,e):d,x="trailing"in n?!!n.trailing:x),f.cancel=s,f.flush=l,f}function Mu(t){return io(t,Ct)}function Tu(t,e){if("function"!=typeof t||null!=e&&"function"!=typeof e)throw new al(ot);var n=function(){var r=arguments,i=e?e.apply(this,r):r[0],o=n.cache;if(o.has(i))return o.get(i);var a=t.apply(this,r);return n.cache=o.set(i,a)||o,a};return n.cache=new(Tu.Cache||an),n}function Su(t){if("function"!=typeof t)throw new al(ot);return function(){var e=arguments;switch(e.length){case 0:return!t.call(this);case 1:return!t.call(this,e[0]);case 2:return!t.call(this,e[0],e[1]);case 3:return!t.call(this,e[0],e[1],e[2])}return!t.apply(this,e)}}function Nu(t){return wu(2,t)}function Au(t,e){if("function"!=typeof t)throw new al(ot);return e=e===nt?e:yc(e),Jr(t,e)}function Pu(t,e){if("function"!=typeof t)throw new al(ot);return e=null==e?0:Vl(yc(e),0),Jr(function(n){var r=n[e],i=xi(n,0,e);return r&&d(i,r),o(t,this,i)})}function Ou(t,e,n){var r=!0,i=!0;if("function"!=typeof t)throw new al(ot);return tc(n)&&(r="leading"in n?!!n.leading:r,i="trailing"in n?!!n.trailing:i),Eu(t,e,{leading:r,maxWait:e,trailing:i})}function Iu(t){return xu(t,1)}function Du(t,e){return up(_i(e),t)}function Ru(){if(!arguments.length)return[];var t=arguments[0];return hp(t)?t:[t]}function Lu(t){return tr(t,ft)}function Uu(t,e){return e="function"==typeof e?e:nt,tr(t,ft,e)}function Fu(t){return tr(t,st|ft)}function ju(t,e){return e="function"==typeof e?e:nt,tr(t,st|ft,e)}function Bu(t,e){return null==e||nr(t,e,Lc(e))}function Vu(t,e){return t===e||t!==t&&e!==e}function Wu(t){return null!=t&&Ju(t.length)&&!Qu(t)}function zu(t){return ec(t)&&Wu(t)}function Hu(t){return!0===t||!1===t||ec(t)&&vr(t)==Vt}function qu(t){return ec(t)&&1===t.nodeType&&!sc(t)}function Yu(t){if(null==t)return!0;if(Wu(t)&&(hp(t)||"string"==typeof t||"function"==typeof t.splice||vp(t)||bp(t)||pp(t)))return!t.length;var e=Cf(t);if(e==Kt||e==Jt)return!t.size;if(Lo(t))return!Rr(t).length;for(var n in t)if(pl.call(t,n))return!1;return!0}function Ku(t,e){return Mr(t,e)}function Gu(t,e,n){n="function"==typeof n?n:nt;var r=n?n(t,e):nt;return r===nt?Mr(t,e,nt,n):!!r}function $u(t){if(!ec(t))return!1;var e=vr(t);return e==Ht||e==zt||"string"==typeof t.message&&"string"==typeof t.name&&!sc(t)}function Xu(t){return"number"==typeof t&&Fl(t)}function Qu(t){if(!tc(t))return!1;var e=vr(t);return e==qt||e==Yt||e==Bt||e==Qt}function Zu(t){return"number"==typeof t&&t==yc(t)}function Ju(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=Pt}function tc(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)}function ec(t){return null!=t&&"object"==typeof t}function nc(t,e){return t===e||Nr(t,e,_o(e))}function rc(t,e,n){return n="function"==typeof n?n:nt,Nr(t,e,_o(e),n)}function ic(t){return cc(t)&&t!=+t}function oc(t){if(kf(t))throw new tl(it);return Ar(t)}function ac(t){return null===t}function uc(t){return null==t}function cc(t){return"number"==typeof t||ec(t)&&vr(t)==Gt}function sc(t){if(!ec(t)||vr(t)!=Xt)return!1;var e=Cl(t);if(null===e)return!0;var n=pl.call(e,"constructor")&&e.constructor;return"function"==typeof n&&n instanceof n&&fl.call(n)==gl}function lc(t){return Zu(t)&&t>=-Pt&&t<=Pt}function fc(t){return"string"==typeof t||!hp(t)&&ec(t)&&vr(t)==te}function pc(t){return"symbol"==typeof t||ec(t)&&vr(t)==ee}function hc(t){return t===nt}function dc(t){return ec(t)&&Cf(t)==re}function vc(t){return ec(t)&&vr(t)==ie}function gc(t){if(!t)return[];if(Wu(t))return fc(t)?Z(t):Oi(t);if(Sl&&t[Sl])return z(t[Sl]());var e=Cf(t);return(e==Kt?H:e==Jt?K:$c)(t)}function mc(t){if(!t)return 0===t?t:0;if((t=bc(t))===At||t===-At){return(t<0?-1:1)*Ot}return t===t?t:0}function yc(t){var e=mc(t),n=e%1;return e===e?n?e-n:e:0}function _c(t){return t?Jn(yc(t),0,Dt):0}function bc(t){if("number"==typeof t)return t;if(pc(t))return It;if(tc(t)){var e="function"==typeof t.valueOf?t.valueOf():t;t=tc(e)?e+"":e}if("string"!=typeof t)return 0===t?t:+t;t=t.replace(Pe,"");var n=We.test(t);return n||He.test(t)?Tn(t.slice(2),n?2:8):Ve.test(t)?It:+t}function xc(t){return Ii(t,Uc(t))}function wc(t){return t?Jn(yc(t),-Pt,Pt):0===t?t:0}function Cc(t){return null==t?"":li(t)}function kc(t,e){var n=lf(t);return null==e?n:$n(n,e)}function Ec(t,e){return b(t,mo(e,3),lr)}function Mc(t,e){return b(t,mo(e,3),fr)}function Tc(t,e){return null==t?t:hf(t,mo(e,3),Uc)}function Sc(t,e){return null==t?t:df(t,mo(e,3),Uc)}function Nc(t,e){return t&&lr(t,mo(e,3))}function Ac(t,e){return t&&fr(t,mo(e,3))}function Pc(t){return null==t?[]:pr(t,Lc(t))}function Oc(t){return null==t?[]:pr(t,Uc(t))}function Ic(t,e,n){var r=null==t?nt:hr(t,e);return r===nt?n:r}function Dc(t,e){return null!=t&&ko(t,e,mr)}function Rc(t,e){return null!=t&&ko(t,e,yr)}function Lc(t){return Wu(t)?Nn(t):Rr(t)}function Uc(t){return Wu(t)?Nn(t,!0):Lr(t)}function Fc(t,e){var n={};return e=mo(e,3),lr(t,function(t,r,i){Qn(n,e(t,r,i),t)}),n}function jc(t,e){var n={};return e=mo(e,3),lr(t,function(t,r,i){Qn(n,r,e(t,r,i))}),n}function Bc(t,e){return Vc(t,Su(mo(e)))}function Vc(t,e){if(null==t)return{};var n=h(ho(t),function(t){return[t]});return e=mo(e),Yr(t,n,function(t,n){return e(t,n[0])})}function Wc(t,e,n){e=bi(e,t);var r=-1,i=e.length;for(i||(i=1,t=nt);++r<i;){var o=null==t?nt:t[$o(e[r])];o===nt&&(r=i,o=n),t=Qu(o)?o.call(t):o}return t}function zc(t,e,n){return null==t?t:ni(t,e,n)}function Hc(t,e,n,r){return r="function"==typeof r?r:nt,null==t?t:ni(t,e,n,r)}function qc(t,e,n){var r=hp(t),i=r||vp(t)||bp(t);if(e=mo(e,4),null==n){var o=t&&t.constructor;n=i?r?new o:[]:tc(t)&&Qu(o)?lf(Cl(t)):{}}return(i?u:lr)(t,function(t,r,i){return e(n,t,r,i)}),n}function Yc(t,e){return null==t||pi(t,e)}function Kc(t,e,n){return null==t?t:hi(t,e,_i(n))}function Gc(t,e,n,r){return r="function"==typeof r?r:nt,null==t?t:hi(t,e,_i(n),r)}function $c(t){return null==t?[]:D(t,Lc(t))}function Xc(t){return null==t?[]:D(t,Uc(t))}function Qc(t,e,n){return n===nt&&(n=e,e=nt),n!==nt&&(n=bc(n),n=n===n?n:0),e!==nt&&(e=bc(e),e=e===e?e:0),Jn(bc(t),e,n)}function Zc(t,e,n){return e=mc(e),n===nt?(n=e,e=0):n=mc(n),t=bc(t),_r(t,e,n)}function Jc(t,e,n){if(n&&"boolean"!=typeof n&&Po(t,e,n)&&(e=n=nt),n===nt&&("boolean"==typeof e?(n=e,e=nt):"boolean"==typeof t&&(n=t,t=nt)),t===nt&&e===nt?(t=0,e=1):(t=mc(t),e===nt?(e=t,t=0):e=mc(e)),t>e){var r=t;t=e,e=r}if(n||t%1||e%1){var i=ql();return Wl(t+i*(e-t+Mn("1e-"+((i+"").length-1))),e)}return Xr(t,e)}function ts(t){return Yp(Cc(t).toLowerCase())}function es(t){return(t=Cc(t))&&t.replace(Ye,zn).replace(hn,"")}function ns(t,e,n){t=Cc(t),e=li(e);var r=t.length;n=n===nt?r:Jn(yc(n),0,r);var i=n;return(n-=e.length)>=0&&t.slice(n,i)==e}function rs(t){return t=Cc(t),t&&we.test(t)?t.replace(be,Hn):t}function is(t){return t=Cc(t),t&&Ae.test(t)?t.replace(Ne,"\\$&"):t}function os(t,e,n){t=Cc(t),e=yc(e);var r=e?Q(t):0;if(!e||r>=e)return t;var i=(e-r)/2;return Qi(Rl(i),n)+t+Qi(Dl(i),n)}function as(t,e,n){t=Cc(t),e=yc(e);var r=e?Q(t):0;return e&&r<e?t+Qi(e-r,n):t}function us(t,e,n){t=Cc(t),e=yc(e);var r=e?Q(t):0;return e&&r<e?Qi(e-r,n)+t:t}function cs(t,e,n){return n||null==e?e=0:e&&(e=+e),Hl(Cc(t).replace(Oe,""),e||0)}function ss(t,e,n){return e=(n?Po(t,e,n):e===nt)?1:yc(e),Zr(Cc(t),e)}function ls(){var t=arguments,e=Cc(t[0]);return t.length<3?e:e.replace(t[1],t[2])}function fs(t,e,n){return n&&"number"!=typeof n&&Po(t,e,n)&&(e=n=nt),(n=n===nt?Dt:n>>>0)?(t=Cc(t),t&&("string"==typeof e||null!=e&&!yp(e))&&!(e=li(e))&&V(t)?xi(Z(t),0,n):t.split(e,n)):[]}function ps(t,e,n){return t=Cc(t),n=null==n?0:Jn(yc(n),0,t.length),e=li(e),t.slice(n,n+e.length)==e}function hs(t,e,r){var i=n.templateSettings;r&&Po(t,e,r)&&(e=nt),t=Cc(t),e=Ep({},e,i,oo);var o,a,u=Ep({},e.imports,i.imports,oo),c=Lc(u),s=D(u,c),l=0,f=e.interpolate||Ke,p="__p += '",h=il((e.escape||Ke).source+"|"+f.source+"|"+(f===Ee?je:Ke).source+"|"+(e.evaluate||Ke).source+"|$","g"),d="//# sourceURL="+("sourceURL"in e?e.sourceURL:"lodash.templateSources["+ ++_n+"]")+"\n";t.replace(h,function(e,n,r,i,u,c){return r||(r=i),p+=t.slice(l,c).replace(Ge,j),n&&(o=!0,p+="' +\n__e("+n+") +\n'"),u&&(a=!0,p+="';\n"+u+";\n__p += '"),r&&(p+="' +\n((__t = ("+r+")) == null ? '' : __t) +\n'"),l=c+e.length,e}),p+="';\n";var v=e.variable;v||(p="with (obj) {\n"+p+"\n}\n"),p=(a?p.replace(ge,""):p).replace(me,"$1").replace(ye,"$1;"),p="function("+(v||"obj")+") {\n"+(v?"":"obj || (obj = {});\n")+"var __t, __p = ''"+(o?", __e = _.escape":"")+(a?", __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\n":";\n")+p+"return __p\n}";var g=Kp(function(){return el(c,d+"return "+p).apply(nt,s)});if(g.source=p,$u(g))throw g;return g}function ds(t){return Cc(t).toLowerCase()}function vs(t){return Cc(t).toUpperCase()}function gs(t,e,n){if((t=Cc(t))&&(n||e===nt))return t.replace(Pe,"");if(!t||!(e=li(e)))return t;var r=Z(t),i=Z(e);return xi(r,L(r,i),U(r,i)+1).join("")}function ms(t,e,n){if((t=Cc(t))&&(n||e===nt))return t.replace(Ie,"");if(!t||!(e=li(e)))return t;var r=Z(t);return xi(r,0,U(r,Z(e))+1).join("")}function ys(t,e,n){if((t=Cc(t))&&(n||e===nt))return t.replace(Oe,"");if(!t||!(e=li(e)))return t;var r=Z(t);return xi(r,L(r,Z(e))).join("")}function _s(t,e){var n=kt,r=Et;if(tc(e)){var i="separator"in e?e.separator:i;n="length"in e?yc(e.length):n,r="omission"in e?li(e.omission):r}t=Cc(t);var o=t.length;if(V(t)){var a=Z(t);o=a.length}if(n>=o)return t;var u=n-Q(r);if(u<1)return r;var c=a?xi(a,0,u).join(""):t.slice(0,u);if(i===nt)return c+r;if(a&&(u+=c.length-u),yp(i)){if(t.slice(u).search(i)){var s,l=c;for(i.global||(i=il(i.source,Cc(Be.exec(i))+"g")),i.lastIndex=0;s=i.exec(l);)var f=s.index;c=c.slice(0,f===nt?u:f)}}else if(t.indexOf(li(i),u)!=u){var p=c.lastIndexOf(i);p>-1&&(c=c.slice(0,p))}return c+r}function bs(t){return t=Cc(t),t&&xe.test(t)?t.replace(_e,qn):t}function xs(t,e,n){return t=Cc(t),e=n?nt:e,e===nt?W(t)?et(t):_(t):t.match(e)||[]}function ws(t){var e=null==t?0:t.length,n=mo();return t=e?h(t,function(t){if("function"!=typeof t[1])throw new al(ot);return[n(t[0]),t[1]]}):[],Jr(function(n){for(var r=-1;++r<e;){var i=t[r];if(o(i[0],this,n))return o(i[1],this,n)}})}function Cs(t){return er(tr(t,st))}function ks(t){return function(){return t}}function Es(t,e){return null==t||t!==t?e:t}function Ms(t){return t}function Ts(t){return Dr("function"==typeof t?t:tr(t,st))}function Ss(t){return jr(tr(t,st))}function Ns(t,e){return Br(t,tr(e,st))}function As(t,e,n){var r=Lc(e),i=pr(e,r);null!=n||tc(e)&&(i.length||!r.length)||(n=e,e=t,t=this,i=pr(e,Lc(e)));var o=!(tc(n)&&"chain"in n&&!n.chain),a=Qu(t);return u(i,function(n){var r=e[n];t[n]=r,a&&(t.prototype[n]=function(){var e=this.__chain__;if(o||e){var n=t(this.__wrapped__);return(n.__actions__=Oi(this.__actions__)).push({func:r,args:arguments,thisArg:t}),n.__chain__=e,n}return r.apply(t,d([this.value()],arguments))})}),t}function Ps(){return An._===this&&(An._=ml),this}function Os(){}function Is(t){return t=yc(t),Jr(function(e){return zr(e,t)})}function Ds(t){return Oo(t)?M($o(t)):Kr(t)}function Rs(t){return function(e){return null==t?nt:hr(t,e)}}function Ls(){return[]}function Us(){return!1}function Fs(){return{}}function js(){return""}function Bs(){return!0}function Vs(t,e){if((t=yc(t))<1||t>Pt)return[];var n=Dt,r=Wl(t,Dt);e=mo(e),t-=Dt;for(var i=P(r,e);++n<t;)e(n);return i}function Ws(t){return hp(t)?h(t,$o):pc(t)?[t]:Oi(Sf(Cc(t)))}function zs(t){var e=++hl;return Cc(t)+e}function Hs(t){return t&&t.length?ar(t,Ms,gr):nt}function qs(t,e){return t&&t.length?ar(t,mo(e,2),gr):nt}function Ys(t){return E(t,Ms)}function Ks(t,e){return E(t,mo(e,2))}function Gs(t){return t&&t.length?ar(t,Ms,Ur):nt}function $s(t,e){return t&&t.length?ar(t,mo(e,2),Ur):nt}function Xs(t){return t&&t.length?A(t,Ms):0}function Qs(t,e){return t&&t.length?A(t,mo(e,2)):0}e=null==e?An:Yn.defaults(An.Object(),e,Yn.pick(An,yn));var Zs=e.Array,Js=e.Date,tl=e.Error,el=e.Function,nl=e.Math,rl=e.Object,il=e.RegExp,ol=e.String,al=e.TypeError,ul=Zs.prototype,cl=el.prototype,sl=rl.prototype,ll=e["__core-js_shared__"],fl=cl.toString,pl=sl.hasOwnProperty,hl=0,dl=function(){var t=/[^.]+$/.exec(ll&&ll.keys&&ll.keys.IE_PROTO||"");return t?"Symbol(src)_1."+t:""}(),vl=sl.toString,gl=fl.call(rl),ml=An._,yl=il("^"+fl.call(pl).replace(Ne,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),_l=In?e.Buffer:nt,bl=e.Symbol,xl=e.Uint8Array,wl=_l?_l.allocUnsafe:nt,Cl=q(rl.getPrototypeOf,rl),kl=rl.create,El=sl.propertyIsEnumerable,Ml=ul.splice,Tl=bl?bl.isConcatSpreadable:nt,Sl=bl?bl.iterator:nt,Nl=bl?bl.toStringTag:nt,Al=function(){try{var t=bo(rl,"defineProperty");return t({},"",{}),t}catch(t){}}(),Pl=e.clearTimeout!==An.clearTimeout&&e.clearTimeout,Ol=Js&&Js.now!==An.Date.now&&Js.now,Il=e.setTimeout!==An.setTimeout&&e.setTimeout,Dl=nl.ceil,Rl=nl.floor,Ll=rl.getOwnPropertySymbols,Ul=_l?_l.isBuffer:nt,Fl=e.isFinite,jl=ul.join,Bl=q(rl.keys,rl),Vl=nl.max,Wl=nl.min,zl=Js.now,Hl=e.parseInt,ql=nl.random,Yl=ul.reverse,Kl=bo(e,"DataView"),Gl=bo(e,"Map"),$l=bo(e,"Promise"),Xl=bo(e,"Set"),Ql=bo(e,"WeakMap"),Zl=bo(rl,"create"),Jl=Ql&&new Ql,tf={},ef=Xo(Kl),nf=Xo(Gl),rf=Xo($l),of=Xo(Xl),af=Xo(Ql),uf=bl?bl.prototype:nt,cf=uf?uf.valueOf:nt,sf=uf?uf.toString:nt,lf=function(){function t(){}return function(e){if(!tc(e))return{};if(kl)return kl(e);t.prototype=e;var n=new t;return t.prototype=nt,n}}();n.templateSettings={escape:Ce,evaluate:ke,interpolate:Ee,variable:"",imports:{_:n}},n.prototype=r.prototype,n.prototype.constructor=n,i.prototype=lf(r.prototype),i.prototype.constructor=i,y.prototype=lf(r.prototype),y.prototype.constructor=y,tt.prototype.clear=Ue,tt.prototype.delete=$e,tt.prototype.get=Xe,tt.prototype.has=Qe,tt.prototype.set=Ze,Je.prototype.clear=tn,Je.prototype.delete=en,Je.prototype.get=nn,Je.prototype.has=rn,Je.prototype.set=on,an.prototype.clear=un,an.prototype.delete=cn,an.prototype.get=sn,an.prototype.has=ln,an.prototype.set=fn,dn.prototype.add=dn.prototype.push=vn,dn.prototype.has=gn,mn.prototype.clear=wn,mn.prototype.delete=Cn,mn.prototype.get=kn,mn.prototype.has=En,mn.prototype.set=Sn;var ff=Fi(lr),pf=Fi(fr,!0),hf=ji(),df=ji(!0),vf=Jl?function(t,e){return Jl.set(t,e),t}:Ms,gf=Al?function(t,e){return Al(t,"toString",{configurable:!0,enumerable:!1,value:ks(e),writable:!0})}:Ms,mf=Jr,yf=Pl||function(t){return An.clearTimeout(t)},_f=Xl&&1/K(new Xl([,-0]))[1]==At?function(t){return new Xl(t)}:Os,bf=Jl?function(t){return Jl.get(t)}:Os,xf=Ll?function(t){return null==t?[]:(t=rl(t),l(Ll(t),function(e){return El.call(t,e)}))}:Ls,wf=Ll?function(t){for(var e=[];t;)d(e,xf(t)),t=Cl(t);return e}:Ls,Cf=vr;(Kl&&Cf(new Kl(new ArrayBuffer(1)))!=ae||Gl&&Cf(new Gl)!=Kt||$l&&"[object Promise]"!=Cf($l.resolve())||Xl&&Cf(new Xl)!=Jt||Ql&&Cf(new Ql)!=re)&&(Cf=function(t){var e=vr(t),n=e==Xt?t.constructor:nt,r=n?Xo(n):"";if(r)switch(r){case ef:return ae;case nf:return Kt;case rf:return"[object Promise]";case of:return Jt;case af:return re}return e});var kf=ll?Qu:Us,Ef=Ko(vf),Mf=Il||function(t,e){return An.setTimeout(t,e)},Tf=Ko(gf),Sf=function(t){var e=Tu(t,function(t){return n.size===ut&&n.clear(),t}),n=e.cache;return e}(function(t){var e=[];return 46===t.charCodeAt(0)&&e.push(""),t.replace(Se,function(t,n,r,i){e.push(r?i.replace(Fe,"$1"):n||t)}),e}),Nf=Jr(function(t,e){return zu(t)?ir(t,sr(e,1,zu,!0)):[]}),Af=Jr(function(t,e){var n=ma(e);return zu(n)&&(n=nt),zu(t)?ir(t,sr(e,1,zu,!0),mo(n,2)):[]}),Pf=Jr(function(t,e){var n=ma(e);return zu(n)&&(n=nt),zu(t)?ir(t,sr(e,1,zu,!0),nt,n):[]}),Of=Jr(function(t){var e=h(t,yi);return e.length&&e[0]===t[0]?br(e):[]}),If=Jr(function(t){var e=ma(t),n=h(t,yi);return e===ma(n)?e=nt:n.pop(),n.length&&n[0]===t[0]?br(n,mo(e,2)):[]}),Df=Jr(function(t){var e=ma(t),n=h(t,yi);return e="function"==typeof e?e:nt,e&&n.pop(),n.length&&n[0]===t[0]?br(n,nt,e):[]}),Rf=Jr(ba),Lf=fo(function(t,e){var n=null==t?0:t.length,r=Zn(t,e);return $r(t,h(e,function(t){return Ao(t,n)?+t:t}).sort(Si)),r}),Uf=Jr(function(t){return fi(sr(t,1,zu,!0))}),Ff=Jr(function(t){var e=ma(t);return zu(e)&&(e=nt),fi(sr(t,1,zu,!0),mo(e,2))}),jf=Jr(function(t){var e=ma(t);return e="function"==typeof e?e:nt,fi(sr(t,1,zu,!0),nt,e)}),Bf=Jr(function(t,e){return zu(t)?ir(t,e):[]}),Vf=Jr(function(t){return gi(l(t,zu))}),Wf=Jr(function(t){var e=ma(t);return zu(e)&&(e=nt),gi(l(t,zu),mo(e,2))}),zf=Jr(function(t){var e=ma(t);return e="function"==typeof e?e:nt,gi(l(t,zu),nt,e)}),Hf=Jr(Wa),qf=Jr(function(t){var e=t.length,n=e>1?t[e-1]:nt;return n="function"==typeof n?(t.pop(),n):nt,za(t,n)}),Yf=fo(function(t){var e=t.length,n=e?t[0]:0,r=this.__wrapped__,o=function(e){return Zn(e,t)};return!(e>1||this.__actions__.length)&&r instanceof y&&Ao(n)?(r=r.slice(n,+n+(e?1:0)),r.__actions__.push({func:Ga,args:[o],thisArg:nt}),new i(r,this.__chain__).thru(function(t){return e&&!t.length&&t.push(nt),t})):this.thru(o)}),Kf=Li(function(t,e,n){pl.call(t,n)?++t[n]:Qn(t,n,1)}),Gf=qi(ua),$f=qi(ca),Xf=Li(function(t,e,n){pl.call(t,n)?t[n].push(e):Qn(t,n,[e])}),Qf=Jr(function(t,e,n){var r=-1,i="function"==typeof e,a=Wu(t)?Zs(t.length):[];return ff(t,function(t){a[++r]=i?o(e,t,n):wr(t,e,n)}),a}),Zf=Li(function(t,e,n){Qn(t,n,e)}),Jf=Li(function(t,e,n){t[n?0:1].push(e)},function(){return[[],[]]}),tp=Jr(function(t,e){if(null==t)return[];var n=e.length;return n>1&&Po(t,e[0],e[1])?e=[]:n>2&&Po(e[0],e[1],e[2])&&(e=[e[0]]),Hr(t,sr(e,1),[])}),ep=Ol||function(){return An.Date.now()},np=Jr(function(t,e,n){var r=dt;if(n.length){var i=Y(n,go(np));r|=_t}return io(t,r,e,n,i)}),rp=Jr(function(t,e,n){var r=dt|vt;if(n.length){var i=Y(n,go(rp));r|=_t}return io(e,r,t,n,i)}),ip=Jr(function(t,e){return rr(t,1,e)}),op=Jr(function(t,e,n){return rr(t,bc(e)||0,n)});Tu.Cache=an;var ap=mf(function(t,e){e=1==e.length&&hp(e[0])?h(e[0],I(mo())):h(sr(e,1),I(mo()));var n=e.length;return Jr(function(r){for(var i=-1,a=Wl(r.length,n);++i<a;)r[i]=e[i].call(this,r[i]);return o(t,this,r)})}),up=Jr(function(t,e){var n=Y(e,go(up));return io(t,_t,nt,e,n)}),cp=Jr(function(t,e){var n=Y(e,go(cp));return io(t,bt,nt,e,n)}),sp=fo(function(t,e){return io(t,wt,nt,nt,nt,e)}),lp=to(gr),fp=to(function(t,e){return t>=e}),pp=Cr(function(){return arguments}())?Cr:function(t){return ec(t)&&pl.call(t,"callee")&&!El.call(t,"callee")},hp=Zs.isArray,dp=Ln?I(Ln):kr,vp=Ul||Us,gp=Un?I(Un):Er,mp=Fn?I(Fn):Sr,yp=jn?I(jn):Pr,_p=Bn?I(Bn):Or,bp=Vn?I(Vn):Ir,xp=to(Ur),wp=to(function(t,e){return t<=e}),Cp=Ui(function(t,e){if(Lo(e)||Wu(e))return void Ii(e,Lc(e),t);for(var n in e)pl.call(e,n)&&Wn(t,n,e[n])}),kp=Ui(function(t,e){Ii(e,Uc(e),t)}),Ep=Ui(function(t,e,n,r){Ii(e,Uc(e),t,r)}),Mp=Ui(function(t,e,n,r){Ii(e,Lc(e),t,r)}),Tp=fo(Zn),Sp=Jr(function(t,e){t=rl(t);var n=-1,r=e.length,i=r>2?e[2]:nt;for(i&&Po(e[0],e[1],i)&&(r=1);++n<r;)for(var o=e[n],a=Uc(o),u=-1,c=a.length;++u<c;){var s=a[u],l=t[s];(l===nt||Vu(l,sl[s])&&!pl.call(t,s))&&(t[s]=o[s])}return t}),Np=Jr(function(t){return t.push(nt,ao),o(Dp,nt,t)}),Ap=Gi(function(t,e,n){null!=e&&"function"!=typeof e.toString&&(e=vl.call(e)),t[e]=n},ks(Ms)),Pp=Gi(function(t,e,n){null!=e&&"function"!=typeof e.toString&&(e=vl.call(e)),pl.call(t,e)?t[e].push(n):t[e]=[n]},mo),Op=Jr(wr),Ip=Ui(function(t,e,n){Vr(t,e,n)}),Dp=Ui(function(t,e,n,r){Vr(t,e,n,r)}),Rp=fo(function(t,e){var n={};if(null==t)return n;var r=!1;e=h(e,function(e){return e=bi(e,t),r||(r=e.length>1),e}),Ii(t,ho(t),n),r&&(n=tr(n,st|lt|ft,uo));for(var i=e.length;i--;)pi(n,e[i]);return n}),Lp=fo(function(t,e){return null==t?{}:qr(t,e)}),Up=ro(Lc),Fp=ro(Uc),jp=Wi(function(t,e,n){return e=e.toLowerCase(),t+(n?ts(e):e)}),Bp=Wi(function(t,e,n){return t+(n?"-":"")+e.toLowerCase()}),Vp=Wi(function(t,e,n){return t+(n?" ":"")+e.toLowerCase()}),Wp=Vi("toLowerCase"),zp=Wi(function(t,e,n){return t+(n?"_":"")+e.toLowerCase()}),Hp=Wi(function(t,e,n){return t+(n?" ":"")+Yp(e)}),qp=Wi(function(t,e,n){return t+(n?" ":"")+e.toUpperCase()}),Yp=Vi("toUpperCase"),Kp=Jr(function(t,e){try{return o(t,nt,e)}catch(t){return $u(t)?t:new tl(t)}}),Gp=fo(function(t,e){return u(e,function(e){e=$o(e),Qn(t,e,np(t[e],t))}),t}),$p=Yi(),Xp=Yi(!0),Qp=Jr(function(t,e){return function(n){return wr(n,t,e)}}),Zp=Jr(function(t,e){return function(n){return wr(t,n,e)}}),Jp=Xi(h),th=Xi(s),eh=Xi(m),nh=Ji(),rh=Ji(!0),ih=$i(function(t,e){return t+e},0),oh=no("ceil"),ah=$i(function(t,e){return t/e},1),uh=no("floor"),ch=$i(function(t,e){return t*e},1),sh=no("round"),lh=$i(function(t,e){return t-e},0);return n.after=bu,n.ary=xu,n.assign=Cp,n.assignIn=kp,n.assignInWith=Ep,n.assignWith=Mp,n.at=Tp,n.before=wu,n.bind=np,n.bindAll=Gp,n.bindKey=rp,n.castArray=Ru,n.chain=Ya,n.chunk=Jo,n.compact=ta,n.concat=ea,n.cond=ws,n.conforms=Cs,n.constant=ks,n.countBy=Kf,n.create=kc,n.curry=Cu,n.curryRight=ku,n.debounce=Eu,n.defaults=Sp,n.defaultsDeep=Np,n.defer=ip,n.delay=op,n.difference=Nf,n.differenceBy=Af,n.differenceWith=Pf,n.drop=na,n.dropRight=ra,n.dropRightWhile=ia,n.dropWhile=oa,n.fill=aa,n.filter=ru,n.flatMap=iu,n.flatMapDeep=ou,n.flatMapDepth=au,n.flatten=sa,n.flattenDeep=la,n.flattenDepth=fa,n.flip=Mu,n.flow=$p,n.flowRight=Xp,n.fromPairs=pa,n.functions=Pc,n.functionsIn=Oc,n.groupBy=Xf,n.initial=va,n.intersection=Of,n.intersectionBy=If,n.intersectionWith=Df,n.invert=Ap,n.invertBy=Pp,n.invokeMap=Qf,n.iteratee=Ts,n.keyBy=Zf,n.keys=Lc,n.keysIn=Uc,n.map=lu,n.mapKeys=Fc,n.mapValues=jc,n.matches=Ss,n.matchesProperty=Ns,n.memoize=Tu,n.merge=Ip,n.mergeWith=Dp,n.method=Qp,n.methodOf=Zp,n.mixin=As,n.negate=Su,n.nthArg=Is,n.omit=Rp,n.omitBy=Bc,n.once=Nu,n.orderBy=fu,n.over=Jp,n.overArgs=ap,n.overEvery=th,n.overSome=eh,n.partial=up,n.partialRight=cp,n.partition=Jf,n.pick=Lp,n.pickBy=Vc,n.property=Ds,n.propertyOf=Rs,n.pull=Rf,n.pullAll=ba,n.pullAllBy=xa,n.pullAllWith=wa,n.pullAt=Lf,n.range=nh,n.rangeRight=rh,n.rearg=sp,n.reject=du,n.remove=Ca,n.rest=Au,n.reverse=ka,n.sampleSize=gu,n.set=zc,n.setWith=Hc,n.shuffle=mu,n.slice=Ea,n.sortBy=tp,n.sortedUniq=Oa,n.sortedUniqBy=Ia,n.split=fs,n.spread=Pu,n.tail=Da,n.take=Ra,n.takeRight=La,n.takeRightWhile=Ua,n.takeWhile=Fa,n.tap=Ka,n.throttle=Ou,n.thru=Ga,n.toArray=gc,n.toPairs=Up,n.toPairsIn=Fp,n.toPath=Ws,n.toPlainObject=xc,n.transform=qc,n.unary=Iu,n.union=Uf,n.unionBy=Ff,n.unionWith=jf,n.uniq=ja,n.uniqBy=Ba,n.uniqWith=Va,n.unset=Yc,n.unzip=Wa,n.unzipWith=za,n.update=Kc,n.updateWith=Gc,n.values=$c,n.valuesIn=Xc,n.without=Bf,n.words=xs,n.wrap=Du,n.xor=Vf,n.xorBy=Wf,n.xorWith=zf,n.zip=Hf,n.zipObject=Ha,n.zipObjectDeep=qa,n.zipWith=qf,n.entries=Up,n.entriesIn=Fp,n.extend=kp,n.extendWith=Ep,As(n,n),n.add=ih,n.attempt=Kp,n.camelCase=jp,n.capitalize=ts,n.ceil=oh,n.clamp=Qc,n.clone=Lu,n.cloneDeep=Fu,n.cloneDeepWith=ju,n.cloneWith=Uu,n.conformsTo=Bu,n.deburr=es,n.defaultTo=Es,n.divide=ah,n.endsWith=ns,n.eq=Vu,n.escape=rs,n.escapeRegExp=is,n.every=nu,n.find=Gf,n.findIndex=ua,n.findKey=Ec,n.findLast=$f,n.findLastIndex=ca,n.findLastKey=Mc,n.floor=uh,n.forEach=uu,n.forEachRight=cu,n.forIn=Tc,n.forInRight=Sc,n.forOwn=Nc,n.forOwnRight=Ac,n.get=Ic,n.gt=lp,n.gte=fp,n.has=Dc,n.hasIn=Rc,n.head=ha,n.identity=Ms,n.includes=su,n.indexOf=da,n.inRange=Zc,n.invoke=Op,n.isArguments=pp,n.isArray=hp,n.isArrayBuffer=dp,n.isArrayLike=Wu,n.isArrayLikeObject=zu,n.isBoolean=Hu,n.isBuffer=vp,n.isDate=gp,n.isElement=qu,n.isEmpty=Yu,n.isEqual=Ku,n.isEqualWith=Gu,n.isError=$u,n.isFinite=Xu,n.isFunction=Qu,n.isInteger=Zu,n.isLength=Ju,n.isMap=mp,n.isMatch=nc,n.isMatchWith=rc,n.isNaN=ic,n.isNative=oc,n.isNil=uc,n.isNull=ac,n.isNumber=cc,n.isObject=tc,n.isObjectLike=ec,n.isPlainObject=sc,n.isRegExp=yp,n.isSafeInteger=lc,n.isSet=_p,n.isString=fc,n.isSymbol=pc,n.isTypedArray=bp,n.isUndefined=hc,n.isWeakMap=dc,n.isWeakSet=vc,n.join=ga,n.kebabCase=Bp,n.last=ma,n.lastIndexOf=ya,n.lowerCase=Vp,n.lowerFirst=Wp,n.lt=xp,n.lte=wp,n.max=Hs,n.maxBy=qs,n.mean=Ys,n.meanBy=Ks,n.min=Gs,n.minBy=$s,n.stubArray=Ls,n.stubFalse=Us,n.stubObject=Fs,n.stubString=js,n.stubTrue=Bs,n.multiply=ch,n.nth=_a,n.noConflict=Ps,n.noop=Os,n.now=ep,n.pad=os,n.padEnd=as,n.padStart=us,n.parseInt=cs,n.random=Jc,n.reduce=pu,n.reduceRight=hu,n.repeat=ss,n.replace=ls,n.result=Wc,n.round=sh,n.runInContext=t,n.sample=vu,n.size=yu,n.snakeCase=zp,n.some=_u,n.sortedIndex=Ma,n.sortedIndexBy=Ta,n.sortedIndexOf=Sa,n.sortedLastIndex=Na,n.sortedLastIndexBy=Aa,n.sortedLastIndexOf=Pa,n.startCase=Hp,n.startsWith=ps,n.subtract=lh,n.sum=Xs,n.sumBy=Qs,n.template=hs,n.times=Vs,n.toFinite=mc,n.toInteger=yc,n.toLength=_c,n.toLower=ds,n.toNumber=bc,n.toSafeInteger=wc,n.toString=Cc,n.toUpper=vs,n.trim=gs,n.trimEnd=ms,n.trimStart=ys,n.truncate=_s,n.unescape=bs,n.uniqueId=zs,n.upperCase=qp,n.upperFirst=Yp,n.each=uu,n.eachRight=cu,n.first=ha,As(n,function(){var t={};return lr(n,function(e,r){pl.call(n.prototype,r)||(t[r]=e)}),t}(),{chain:!1}),n.VERSION="4.17.11",u(["bind","bindKey","curry","curryRight","partial","partialRight"],function(t){n[t].placeholder=n}),u(["drop","take"],function(t,e){y.prototype[t]=function(n){n=n===nt?1:Vl(yc(n),0);var r=this.__filtered__&&!e?new y(this):this.clone();return r.__filtered__?r.__takeCount__=Wl(n,r.__takeCount__):r.__views__.push({size:Wl(n,Dt),type:t+(r.__dir__<0?"Right":"")}),r},y.prototype[t+"Right"]=function(e){return this.reverse()[t](e).reverse()}}),u(["filter","map","takeWhile"],function(t,e){var n=e+1,r=n==St||3==n;y.prototype[t]=function(t){var e=this.clone();return e.__iteratees__.push({iteratee:mo(t,3),type:n}),e.__filtered__=e.__filtered__||r,e}}),u(["head","last"],function(t,e){var n="take"+(e?"Right":"");y.prototype[t]=function(){return this[n](1).value()[0]}}),u(["initial","tail"],function(t,e){var n="drop"+(e?"":"Right");y.prototype[t]=function(){return this.__filtered__?new y(this):this[n](1)}}),y.prototype.compact=function(){return this.filter(Ms)},y.prototype.find=function(t){return this.filter(t).head()},y.prototype.findLast=function(t){return this.reverse().find(t)},y.prototype.invokeMap=Jr(function(t,e){return"function"==typeof t?new y(this):this.map(function(n){return wr(n,t,e)})}),y.prototype.reject=function(t){return this.filter(Su(mo(t)))},y.prototype.slice=function(t,e){t=yc(t);var n=this;return n.__filtered__&&(t>0||e<0)?new y(n):(t<0?n=n.takeRight(-t):t&&(n=n.drop(t)),e!==nt&&(e=yc(e),n=e<0?n.dropRight(-e):n.take(e-t)),n)},y.prototype.takeRightWhile=function(t){return this.reverse().takeWhile(t).reverse()},y.prototype.toArray=function(){return this.take(Dt)},lr(y.prototype,function(t,e){var r=/^(?:filter|find|map|reject)|While$/.test(e),o=/^(?:head|last)$/.test(e),a=n[o?"take"+("last"==e?"Right":""):e],u=o||/^find/.test(e);a&&(n.prototype[e]=function(){var e=this.__wrapped__,c=o?[1]:arguments,s=e instanceof y,l=c[0],f=s||hp(e),p=function(t){var e=a.apply(n,d([t],c));return o&&h?e[0]:e};f&&r&&"function"==typeof l&&1!=l.length&&(s=f=!1);var h=this.__chain__,v=!!this.__actions__.length,g=u&&!h,m=s&&!v;if(!u&&f){e=m?e:new y(this);var _=t.apply(e,c);return _.__actions__.push({func:Ga,args:[p],thisArg:nt}),new i(_,h)}return g&&m?t.apply(this,c):(_=this.thru(p),g?o?_.value()[0]:_.value():_)})}),u(["pop","push","shift","sort","splice","unshift"],function(t){var e=ul[t],r=/^(?:push|sort|unshift)$/.test(t)?"tap":"thru",i=/^(?:pop|shift)$/.test(t);n.prototype[t]=function(){var t=arguments;if(i&&!this.__chain__){var n=this.value();return e.apply(hp(n)?n:[],t)}return this[r](function(n){return e.apply(hp(n)?n:[],t)})}}),lr(y.prototype,function(t,e){var r=n[e];if(r){var i=r.name+"";(tf[i]||(tf[i]=[])).push({name:e,func:r})}}),tf[Ki(nt,vt).name]=[{name:"wrapper",func:nt}],y.prototype.clone=T,y.prototype.reverse=$,y.prototype.value=J,n.prototype.at=Yf,n.prototype.chain=$a,n.prototype.commit=Xa,n.prototype.next=Qa,n.prototype.plant=Ja,n.prototype.reverse=tu,n.prototype.toJSON=n.prototype.valueOf=n.prototype.value=eu,n.prototype.first=n.prototype.head,Sl&&(n.prototype[Sl]=Za),n}();An._=Yn,(i=function(){return Yn}.call(e,n,e,r))!==nt&&(r.exports=i)}).call(this)}).call(e,n(98),n(99)(t))},function(t,e,n){"use strict";var r={remove:function(t){t._reactInternalInstance=void 0},get:function(t){return t._reactInternalInstance},has:function(t){return void 0!==t._reactInternalInstance},set:function(t,e){t._reactInternalInstance=e}};t.exports=r},function(t,e,n){"use strict";function r(t){for(var e=arguments.length-1,n="Minified React error #"+t+"; visit http://facebook.github.io/react/docs/error-decoder.html?invariant="+t,r=0;r<e;r++)n+="&args[]="+encodeURIComponent(arguments[r+1]);n+=" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.";var i=new Error(n);throw i.name="Invariant Violation",i.framesToPop=1,i}t.exports=r},function(t,e,n){"use strict";t.exports=n(26)},function(t,e,n){"use strict";var r=n(63);e.a=function(t){return t=n.i(r.a)(Math.abs(t)),t?t[1]:NaN}},function(t,e,n){"use strict";e.a=function(t,e){return t=+t,e-=t,function(n){return t+e*n}}},function(t,e,n){"use strict";function r(t,e){return(e-=t=+t)?function(n){return(n-t)/e}:n.i(h.a)(e)}function i(t){return function(e,n){var r=t(e=+e,n=+n);return function(t){return t<=e?0:t>=n?1:r(t)}}}function o(t){return function(e,n){var r=t(e=+e,n=+n);return function(t){return t<=0?e:t>=1?n:r(t)}}}function a(t,e,n,r){var i=t[0],o=t[1],a=e[0],u=e[1];return o<i?(i=n(o,i),a=r(u,a)):(i=n(i,o),a=r(a,u)),function(t){return a(i(t))}}function u(t,e,r,i){var o=Math.min(t.length,e.length)-1,a=new Array(o),u=new Array(o),c=-1;for(t[o]<t[0]&&(t=t.slice().reverse(),e=e.slice().reverse());++c<o;)a[c]=r(t[c],t[c+1]),u[c]=i(e[c],e[c+1]);return function(e){var r=n.i(l.bisect)(t,e,1,o)-1;return u[r](a[r](e))}}function c(t,e){return e.domain(t.domain()).range(t.range()).interpolate(t.interpolate()).clamp(t.clamp())}function s(t,e){function n(){return s=Math.min(g.length,m.length)>2?u:a,l=h=null,c}function c(e){return(l||(l=s(g,m,_?i(t):t,y)))(+e)}var s,l,h,g=v,m=v,y=f.b,_=!1;return c.invert=function(t){return(h||(h=s(m,g,r,_?o(e):e)))(+t)},c.domain=function(t){return arguments.length?(g=p.a.call(t,d.a),n()):g.slice()},c.range=function(t){return arguments.length?(m=p.b.call(t),n()):m.slice()},c.rangeRound=function(t){return m=p.b.call(t),y=f.c,n()},c.clamp=function(t){return arguments.length?(_=!!t,n()):_},c.interpolate=function(t){return arguments.length?(y=t,n()):y},n()}e.b=r,e.c=c,e.a=s;var l=n(7),f=n(30),p=n(16),h=n(67),d=n(126),v=[0,1]},function(t,e,n){"use strict";function r(t){return function(){var e=this.ownerDocument,n=this.namespaceURI;return n===a.b&&e.documentElement.namespaceURI===a.b?e.createElement(t):e.createElementNS(n,t)}}function i(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}var o=n(68),a=n(69);e.a=function(t){var e=n.i(o.a)(t);return(e.local?i:r)(e)}},function(t,e,n){"use strict";e.a=function(t,e){var n=t.ownerSVGElement||t;if(n.createSVGPoint){var r=n.createSVGPoint();return r.x=e.clientX,r.y=e.clientY,r=r.matrixTransform(t.getScreenCTM().inverse()),[r.x,r.y]}var i=t.getBoundingClientRect();return[e.clientX-i.left-t.clientLeft,e.clientY-i.top-t.clientTop]}},function(t,e,n){"use strict";function r(t,e,n){t._context.bezierCurveTo((2*t._x0+t._x1)/3,(2*t._y0+t._y1)/3,(t._x0+2*t._x1)/3,(t._y0+2*t._y1)/3,(t._x0+4*t._x1+e)/6,(t._y0+4*t._y1+n)/6)}function i(t){this._context=t}e.c=r,e.b=i,i.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){switch(this._point){case 3:r(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:r(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}},e.a=function(t){return new i(t)}},function(t,e,n){"use strict";function r(t,e,n){t._context.bezierCurveTo(t._x1+t._k*(t._x2-t._x0),t._y1+t._k*(t._y2-t._y0),t._x2+t._k*(t._x1-e),t._y2+t._k*(t._y1-n),t._x2,t._y2)}function i(t,e){this._context=t,this._k=(1-e)/6}e.c=r,e.b=i,i.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:r(this,this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2,this._x1=t,this._y1=e;break;case 2:this._point=3;default:r(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}},e.a=function t(e){function n(t){return new i(t,e)}return n.tension=function(e){return t(+e)},n}(0)},function(t,e,n){"use strict";function r(t){this._context=t}r.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:this._context.lineTo(t,e)}}},e.a=function(t){return new r(t)}},function(t,e,n){"use strict";e.a=function(){}},function(t,e,n){"use strict";var r={};t.exports=r},function(t,e,n){"use strict";function r(t){return"topMouseUp"===t||"topTouchEnd"===t||"topTouchCancel"===t}function i(t){return"topMouseMove"===t||"topTouchMove"===t}function o(t){return"topMouseDown"===t||"topTouchStart"===t}function a(t,e,n,r){var i=t.type||"unknown-event";t.currentTarget=m.getNodeFromInstance(r),e?v.invokeGuardedCallbackWithCatch(i,n,t):v.invokeGuardedCallback(i,n,t),t.currentTarget=null}function u(t,e){var n=t._dispatchListeners,r=t._dispatchInstances;if(Array.isArray(n))for(var i=0;i<n.length&&!t.isPropagationStopped();i++)a(t,e,n[i],r[i]);else n&&a(t,e,n,r);t._dispatchListeners=null,t._dispatchInstances=null}function c(t){var e=t._dispatchListeners,n=t._dispatchInstances;if(Array.isArray(e)){for(var r=0;r<e.length&&!t.isPropagationStopped();r++)if(e[r](t,n[r]))return n[r]}else if(e&&e(t,n))return n;return null}function s(t){var e=c(t);return t._dispatchInstances=null,t._dispatchListeners=null,e}function l(t){var e=t._dispatchListeners,n=t._dispatchInstances;Array.isArray(e)&&d("103"),t.currentTarget=e?m.getNodeFromInstance(n):null;var r=e?e(t):null;return t.currentTarget=null,t._dispatchListeners=null,t._dispatchInstances=null,r}function f(t){return!!t._dispatchListeners}var p,h,d=n(1),v=n(88),g=(n(0),n(2),{injectComponentTree:function(t){p=t},injectTreeTraversal:function(t){h=t}}),m={isEndish:r,isMoveish:i,isStartish:o,executeDirectDispatch:l,executeDispatchesInOrder:u,executeDispatchesInOrderStopAtTrue:s,hasDispatches:f,getInstanceFromNode:function(t){return p.getInstanceFromNode(t)},getNodeFromInstance:function(t){return p.getNodeFromInstance(t)},isAncestor:function(t,e){return h.isAncestor(t,e)},getLowestCommonAncestor:function(t,e){return h.getLowestCommonAncestor(t,e)},getParentInstance:function(t){return h.getParentInstance(t)},traverseTwoPhase:function(t,e,n){return h.traverseTwoPhase(t,e,n)},traverseEnterLeave:function(t,e,n,r,i){return h.traverseEnterLeave(t,e,n,r,i)},injection:g};t.exports=m},function(t,e,n){"use strict";function r(t){return Object.prototype.hasOwnProperty.call(t,v)||(t[v]=h++,f[t[v]]={}),f[t[v]]}var i,o=n(3),a=n(84),u=n(374),c=n(90),s=n(406),l=n(95),f={},p=!1,h=0,d={topAbort:"abort",topAnimationEnd:s("animationend")||"animationend",topAnimationIteration:s("animationiteration")||"animationiteration",topAnimationStart:s("animationstart")||"animationstart",topBlur:"blur",topCanPlay:"canplay",topCanPlayThrough:"canplaythrough",topChange:"change",topClick:"click",topCompositionEnd:"compositionend",topCompositionStart:"compositionstart",topCompositionUpdate:"compositionupdate",topContextMenu:"contextmenu",topCopy:"copy",topCut:"cut",topDoubleClick:"dblclick",topDrag:"drag",topDragEnd:"dragend",topDragEnter:"dragenter",topDragExit:"dragexit",topDragLeave:"dragleave",topDragOver:"dragover",topDragStart:"dragstart",topDrop:"drop",topDurationChange:"durationchange",topEmptied:"emptied",topEncrypted:"encrypted",topEnded:"ended",topError:"error",topFocus:"focus",topInput:"input",topKeyDown:"keydown",topKeyPress:"keypress",topKeyUp:"keyup",topLoadedData:"loadeddata",topLoadedMetadata:"loadedmetadata",topLoadStart:"loadstart",topMouseDown:"mousedown",topMouseMove:"mousemove",topMouseOut:"mouseout",topMouseOver:"mouseover",topMouseUp:"mouseup",topPaste:"paste",topPause:"pause",topPlay:"play",topPlaying:"playing",topProgress:"progress",topRateChange:"ratechange",topScroll:"scroll",topSeeked:"seeked",topSeeking:"seeking",topSelectionChange:"selectionchange",topStalled:"stalled",topSuspend:"suspend",topTextInput:"textInput",topTimeUpdate:"timeupdate",topTouchCancel:"touchcancel",topTouchEnd:"touchend",topTouchMove:"touchmove",topTouchStart:"touchstart",topTransitionEnd:s("transitionend")||"transitionend",topVolumeChange:"volumechange",topWaiting:"waiting",topWheel:"wheel"},v="_reactListenersID"+String(Math.random()).slice(2),g=o({},u,{ReactEventListener:null,injection:{injectReactEventListener:function(t){t.setHandleTopLevel(g.handleTopLevel),g.ReactEventListener=t}},setEnabled:function(t){g.ReactEventListener&&g.ReactEventListener.setEnabled(t)},isEnabled:function(){return!(!g.ReactEventListener||!g.ReactEventListener.isEnabled())},listenTo:function(t,e){for(var n=e,i=r(n),o=a.registrationNameDependencies[t],u=0;u<o.length;u++){var c=o[u];i.hasOwnProperty(c)&&i[c]||("topWheel"===c?l("wheel")?g.ReactEventListener.trapBubbledEvent("topWheel","wheel",n):l("mousewheel")?g.ReactEventListener.trapBubbledEvent("topWheel","mousewheel",n):g.ReactEventListener.trapBubbledEvent("topWheel","DOMMouseScroll",n):"topScroll"===c?l("scroll",!0)?g.ReactEventListener.trapCapturedEvent("topScroll","scroll",n):g.ReactEventListener.trapBubbledEvent("topScroll","scroll",g.ReactEventListener.WINDOW_HANDLE):"topFocus"===c||"topBlur"===c?(l("focus",!0)?(g.ReactEventListener.trapCapturedEvent("topFocus","focus",n),g.ReactEventListener.trapCapturedEvent("topBlur","blur",n)):l("focusin")&&(g.ReactEventListener.trapBubbledEvent("topFocus","focusin",n),g.ReactEventListener.trapBubbledEvent("topBlur","focusout",n)),i.topBlur=!0,i.topFocus=!0):d.hasOwnProperty(c)&&g.ReactEventListener.trapBubbledEvent(c,d[c],n),i[c]=!0)}},trapBubbledEvent:function(t,e,n){return g.ReactEventListener.trapBubbledEvent(t,e,n)},trapCapturedEvent:function(t,e,n){return g.ReactEventListener.trapCapturedEvent(t,e,n)},supportsEventPageXY:function(){if(!document.createEvent)return!1;var t=document.createEvent("MouseEvent");return null!=t&&"pageX"in t},ensureScrollValueMonitoring:function(){if(void 0===i&&(i=g.supportsEventPageXY()),!i&&!p){var t=c.refreshScrollValues;g.ReactEventListener.monitorScrollValue(t),p=!0}}});t.exports=g},function(t,e,n){"use strict";function r(t,e,n,r){return i.call(this,t,e,n,r)}var i=n(25),o=n(90),a=n(93),u={screenX:null,screenY:null,clientX:null,clientY:null,ctrlKey:null,shiftKey:null,altKey:null,metaKey:null,getModifierState:a,button:function(t){var e=t.button;return"which"in t?e:2===e?2:4===e?1:0},buttons:null,relatedTarget:function(t){return t.relatedTarget||(t.fromElement===t.srcElement?t.toElement:t.fromElement)},pageX:function(t){return"pageX"in t?t.pageX:t.clientX+o.currentScrollLeft},pageY:function(t){return"pageY"in t?t.pageY:t.clientY+o.currentScrollTop}};i.augmentClass(r,u),t.exports=r},function(t,e,n){"use strict";var r=n(1),i=(n(0),{}),o={reinitializeTransaction:function(){this.transactionWrappers=this.getTransactionWrappers(),this.wrapperInitData?this.wrapperInitData.length=0:this.wrapperInitData=[],this._isInTransaction=!1},_isInTransaction:!1,getTransactionWrappers:null,isInTransaction:function(){return!!this._isInTransaction},perform:function(t,e,n,i,o,a,u,c){this.isInTransaction()&&r("27");var s,l;try{this._isInTransaction=!0,s=!0,this.initializeAll(0),l=t.call(e,n,i,o,a,u,c),s=!1}finally{try{if(s)try{this.closeAll(0)}catch(t){}else this.closeAll(0)}finally{this._isInTransaction=!1}}return l},initializeAll:function(t){for(var e=this.transactionWrappers,n=t;n<e.length;n++){var r=e[n];try{this.wrapperInitData[n]=i,this.wrapperInitData[n]=r.initialize?r.initialize.call(this):null}finally{if(this.wrapperInitData[n]===i)try{this.initializeAll(n+1)}catch(t){}}}},closeAll:function(t){this.isInTransaction()||r("28");for(var e=this.transactionWrappers,n=t;n<e.length;n++){var o,a=e[n],u=this.wrapperInitData[n];try{o=!0,u!==i&&a.close&&a.close.call(this,u),o=!1}finally{if(o)try{this.closeAll(n+1)}catch(t){}}}this.wrapperInitData.length=0}};t.exports=o},function(t,e,n){"use strict";function r(t){var e=""+t,n=o.exec(e);if(!n)return e;var r,i="",a=0,u=0;for(a=n.index;a<e.length;a++){switch(e.charCodeAt(a)){case 34:r=""";break;case 38:r="&";break;case 39:r="'";break;case 60:r="<";break;case 62:r=">";break;default:continue}u!==a&&(i+=e.substring(u,a)),u=a+1,i+=r}return u!==a?i+e.substring(u,a):i}function i(t){return"boolean"==typeof t||"number"==typeof t?""+t:r(t)}var o=/["'&<>]/;t.exports=i},function(t,e,n){"use strict";var r,i=n(6),o=n(83),a=/^[ \r\n\t\f]/,u=/<(!--|link|noscript|meta|script|style)[ \r\n\t\f\/>]/,c=n(91),s=c(function(t,e){if(t.namespaceURI!==o.svg||"innerHTML"in t)t.innerHTML=e;else{r=r||document.createElement("div"),r.innerHTML="<svg>"+e+"</svg>";for(var n=r.firstChild;n.firstChild;)t.appendChild(n.firstChild)}});if(i.canUseDOM){var l=document.createElement("div");l.innerHTML=" ",""===l.innerHTML&&(s=function(t,e){if(t.parentNode&&t.parentNode.replaceChild(t,t),a.test(e)||"<"===e[0]&&u.test(e)){t.innerHTML=String.fromCharCode(65279)+e;var n=t.firstChild;1===n.data.length?t.removeChild(n):n.deleteData(0,1)}else t.innerHTML=e}),l=null}t.exports=s},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default={colors:{RdBu:["rgb(255, 13, 87)","rgb(30, 136, 229)"],GnPR:["rgb(24, 196, 93)","rgb(124, 82, 255)"],CyPU:["#0099C6","#990099"],PkYg:["#DD4477","#66AA00"],DrDb:["#B82E2E","#316395"],LpLb:["#994499","#22AA99"],YlDp:["#AAAA11","#6633CC"],OrId:["#E67300","#3E0099"]},gray:"#777"}},function(t,e,n){"use strict";var r=n(28);e.a=function(t,e,n){if(null==n&&(n=r.a),i=t.length){if((e=+e)<=0||i<2)return+n(t[0],0,t);if(e>=1)return+n(t[i-1],i-1,t);var i,o=(i-1)*e,a=Math.floor(o),u=+n(t[a],a,t);return u+(+n(t[a+1],a+1,t)-u)*(o-a)}}},function(t,e,n){"use strict";function r(){}function i(t,e){var n=new r;if(t instanceof r)t.each(function(t,e){n.set(e,t)});else if(Array.isArray(t)){var i,o=-1,a=t.length;if(null==e)for(;++o<a;)n.set(o,t[o]);else for(;++o<a;)n.set(e(i=t[o],o,t),i)}else if(t)for(var u in t)n.set(u,t[u]);return n}n.d(e,"b",function(){return o});var o="$";r.prototype=i.prototype={constructor:r,has:function(t){return o+t in this},get:function(t){return this[o+t]},set:function(t,e){return this[o+t]=e,this},remove:function(t){var e=o+t;return e in this&&delete this[e]},clear:function(){for(var t in this)t[0]===o&&delete this[t]},keys:function(){var t=[];for(var e in this)e[0]===o&&t.push(e.slice(1));return t},values:function(){var t=[];for(var e in this)e[0]===o&&t.push(this[e]);return t},entries:function(){var t=[];for(var e in this)e[0]===o&&t.push({key:e.slice(1),value:this[e]});return t},size:function(){var t=0;for(var e in this)e[0]===o&&++t;return t},empty:function(){for(var t in this)if(t[0]===o)return!1;return!0},each:function(t){for(var e in this)e[0]===o&&t(this[e],e.slice(1),this)}},e.a=i},function(t,e,n){"use strict";function r(){}function i(t){var e;return t=(t+"").trim().toLowerCase(),(e=x.exec(t))?(e=parseInt(e[1],16),new s(e>>8&15|e>>4&240,e>>4&15|240&e,(15&e)<<4|15&e,1)):(e=w.exec(t))?o(parseInt(e[1],16)):(e=C.exec(t))?new s(e[1],e[2],e[3],1):(e=k.exec(t))?new s(255*e[1]/100,255*e[2]/100,255*e[3]/100,1):(e=E.exec(t))?a(e[1],e[2],e[3],e[4]):(e=M.exec(t))?a(255*e[1]/100,255*e[2]/100,255*e[3]/100,e[4]):(e=T.exec(t))?l(e[1],e[2]/100,e[3]/100,1):(e=S.exec(t))?l(e[1],e[2]/100,e[3]/100,e[4]):N.hasOwnProperty(t)?o(N[t]):"transparent"===t?new s(NaN,NaN,NaN,0):null}function o(t){return new s(t>>16&255,t>>8&255,255&t,1)}function a(t,e,n,r){return r<=0&&(t=e=n=NaN),new s(t,e,n,r)}function u(t){return t instanceof r||(t=i(t)),t?(t=t.rgb(),new s(t.r,t.g,t.b,t.opacity)):new s}function c(t,e,n,r){return 1===arguments.length?u(t):new s(t,e,n,null==r?1:r)}function s(t,e,n,r){this.r=+t,this.g=+e,this.b=+n,this.opacity=+r}function l(t,e,n,r){return r<=0?t=e=n=NaN:n<=0||n>=1?t=e=NaN:e<=0&&(t=NaN),new h(t,e,n,r)}function f(t){if(t instanceof h)return new h(t.h,t.s,t.l,t.opacity);if(t instanceof r||(t=i(t)),!t)return new h;if(t instanceof h)return t;t=t.rgb();var e=t.r/255,n=t.g/255,o=t.b/255,a=Math.min(e,n,o),u=Math.max(e,n,o),c=NaN,s=u-a,l=(u+a)/2;return s?(c=e===u?(n-o)/s+6*(n<o):n===u?(o-e)/s+2:(e-n)/s+4,s/=l<.5?u+a:2-u-a,c*=60):s=l>0&&l<1?0:c,new h(c,s,l,t.opacity)}function p(t,e,n,r){return 1===arguments.length?f(t):new h(t,e,n,null==r?1:r)}function h(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}function d(t,e,n){return 255*(t<60?e+(n-e)*t/60:t<180?n:t<240?e+(n-e)*(240-t)/60:e)}e.f=r,n.d(e,"h",function(){return g}),n.d(e,"g",function(){return m}),e.a=i,e.e=u,e.b=c,e.d=s,e.c=p;var v=n(62),g=.7,m=1/g,y="\\s*([+-]?\\d+)\\s*",_="\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)\\s*",b="\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)%\\s*",x=/^#([0-9a-f]{3})$/,w=/^#([0-9a-f]{6})$/,C=new RegExp("^rgb\\("+[y,y,y]+"\\)$"),k=new RegExp("^rgb\\("+[b,b,b]+"\\)$"),E=new RegExp("^rgba\\("+[y,y,y,_]+"\\)$"),M=new RegExp("^rgba\\("+[b,b,b,_]+"\\)$"),T=new RegExp("^hsl\\("+[_,b,b]+"\\)$"),S=new RegExp("^hsla\\("+[_,b,b,_]+"\\)$"),N={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};n.i(v.a)(r,i,{displayable:function(){return this.rgb().displayable()},toString:function(){return this.rgb()+""}}),n.i(v.a)(s,c,n.i(v.b)(r,{brighter:function(t){return t=null==t?m:Math.pow(m,t),new s(this.r*t,this.g*t,this.b*t,this.opacity)},darker:function(t){return t=null==t?g:Math.pow(g,t),new s(this.r*t,this.g*t,this.b*t,this.opacity)},rgb:function(){return this},displayable:function(){return 0<=this.r&&this.r<=255&&0<=this.g&&this.g<=255&&0<=this.b&&this.b<=255&&0<=this.opacity&&this.opacity<=1},toString:function(){var t=this.opacity;return t=isNaN(t)?1:Math.max(0,Math.min(1,t)),(1===t?"rgb(":"rgba(")+Math.max(0,Math.min(255,Math.round(this.r)||0))+", "+Math.max(0,Math.min(255,Math.round(this.g)||0))+", "+Math.max(0,Math.min(255,Math.round(this.b)||0))+(1===t?")":", "+t+")")}})),n.i(v.a)(h,p,n.i(v.b)(r,{brighter:function(t){return t=null==t?m:Math.pow(m,t),new h(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=null==t?g:Math.pow(g,t),new h(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=this.h%360+360*(this.h<0),e=isNaN(t)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*e,i=2*n-r;return new s(d(t>=240?t-240:t+120,i,r),d(t,i,r),d(t<120?t+240:t-120,i,r),this.opacity)},displayable:function(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1}}))},function(t,e,n){"use strict";function r(t,e){var n=Object.create(t.prototype);for(var r in e)n[r]=e[r];return n}e.b=r,e.a=function(t,e,n){t.prototype=e.prototype=n,n.constructor=t}},function(t,e,n){"use strict";e.a=function(t,e){if((n=(t=e?t.toExponential(e-1):t.toExponential()).indexOf("e"))<0)return null;var n,r=t.slice(0,n);return[r.length>1?r[0]+r.slice(2):r,+t.slice(n+1)]}},function(t,e,n){"use strict";function r(t,e,n,r,i){var o=t*t,a=o*t;return((1-3*t+3*o-a)*e+(4-6*o+3*a)*n+(1+3*t+3*o-3*a)*r+a*i)/6}e.b=r,e.a=function(t){var e=t.length-1;return function(n){var i=n<=0?n=0:n>=1?(n=1,e-1):Math.floor(n*e),o=t[i],a=t[i+1],u=i>0?t[i-1]:2*o-a,c=i<e-1?t[i+2]:2*a-o;return r((n-i/e)*e,u,o,a,c)}}},function(t,e,n){"use strict";var r=n(10),i=n(123),o=n(118),a=n(121),u=n(43),c=n(122),s=n(124),l=n(120);e.a=function(t,e){var f,p=typeof e;return null==e||"boolean"===p?n.i(l.a)(e):("number"===p?u.a:"string"===p?(f=n.i(r.color)(e))?(e=f,i.a):s.a:e instanceof r.color?i.a:e instanceof Date?a.a:Array.isArray(e)?o.a:"function"!=typeof e.valueOf&&"function"!=typeof e.toString||isNaN(e)?c.a:u.a)(t,e)}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(239);n.d(e,"scaleBand",function(){return r.a}),n.d(e,"scalePoint",function(){return r.b});var i=n(245);n.d(e,"scaleIdentity",function(){return i.a});var o=n(34);n.d(e,"scaleLinear",function(){return o.a});var a=n(246);n.d(e,"scaleLog",function(){return a.a});var u=n(127);n.d(e,"scaleOrdinal",function(){return u.a}),n.d(e,"scaleImplicit",function(){return u.b});var c=n(247);n.d(e,"scalePow",function(){return c.a}),n.d(e,"scaleSqrt",function(){return c.b});var s=n(248);n.d(e,"scaleQuantile",function(){return s.a});var l=n(249);n.d(e,"scaleQuantize",function(){return l.a});var f=n(252);n.d(e,"scaleThreshold",function(){return f.a});var p=n(128);n.d(e,"scaleTime",function(){return p.a});var h=n(254);n.d(e,"scaleUtc",function(){return h.a});var d=n(240);n.d(e,"schemeCategory10",function(){return d.a});var v=n(242);n.d(e,"schemeCategory20b",function(){return v.a});var g=n(243);n.d(e,"schemeCategory20c",function(){return g.a});var m=n(241);n.d(e,"schemeCategory20",function(){return m.a});var y=n(244);n.d(e,"interpolateCubehelixDefault",function(){return y.a});var _=n(250);n.d(e,"interpolateRainbow",function(){return _.a}),n.d(e,"interpolateWarm",function(){return _.b}),n.d(e,"interpolateCool",function(){return _.c});var b=n(255);n.d(e,"interpolateViridis",function(){return b.a}),n.d(e,"interpolateMagma",function(){return b.b}),n.d(e,"interpolateInferno",function(){return b.c}),n.d(e,"interpolatePlasma",function(){return b.d});var x=n(251);n.d(e,"scaleSequential",function(){return x.a})},function(t,e,n){"use strict";e.a=function(t){return function(){return t}}},function(t,e,n){"use strict";var r=n(69);e.a=function(t){var e=t+="",n=e.indexOf(":");return n>=0&&"xmlns"!==(e=t.slice(0,n))&&(t=t.slice(n+1)),r.a.hasOwnProperty(e)?{space:r.a[e],local:t}:t}},function(t,e,n){"use strict";n.d(e,"b",function(){return r});var r="http://www.w3.org/1999/xhtml";e.a={svg:"http://www.w3.org/2000/svg",xhtml:r,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"}},function(t,e,n){"use strict";function r(t,e,n){return t=i(t,e,n),function(e){var n=e.relatedTarget;n&&(n===this||8&n.compareDocumentPosition(this))||t.call(this,e)}}function i(t,e,n){return function(r){var i=l;l=r;try{t.call(this,this.__data__,e,n)}finally{l=i}}}function o(t){return t.trim().split(/^|\s+/).map(function(t){var e="",n=t.indexOf(".");return n>=0&&(e=t.slice(n+1),t=t.slice(0,n)),{type:t,name:e}})}function a(t){return function(){var e=this.__on;if(e){for(var n,r=0,i=-1,o=e.length;r<o;++r)n=e[r],t.type&&n.type!==t.type||n.name!==t.name?e[++i]=n:this.removeEventListener(n.type,n.listener,n.capture);++i?e.length=i:delete this.__on}}}function u(t,e,n){var o=s.hasOwnProperty(t.type)?r:i;return function(r,i,a){var u,c=this.__on,s=o(e,i,a);if(c)for(var l=0,f=c.length;l<f;++l)if((u=c[l]).type===t.type&&u.name===t.name)return this.removeEventListener(u.type,u.listener,u.capture),this.addEventListener(u.type,u.listener=s,u.capture=n),void(u.value=e);this.addEventListener(t.type,s,n),u={type:t.type,name:t.name,value:e,listener:s,capture:n},c?c.push(u):this.__on=[u]}}function c(t,e,n,r){var i=l;t.sourceEvent=l,l=t;try{return e.apply(n,r)}finally{l=i}}n.d(e,"a",function(){return l}),e.b=c;var s={},l=null;if("undefined"!=typeof document){"onmouseenter"in document.documentElement||(s={mouseenter:"mouseover",mouseleave:"mouseout"})}e.c=function(t,e,n){var r,i,c=o(t+""),s=c.length;{if(!(arguments.length<2)){for(l=e?u:a,null==n&&(n=!1),r=0;r<s;++r)this.each(l(c[r],e,n));return this}var l=this.node().__on;if(l)for(var f,p=0,h=l.length;p<h;++p)for(r=0,f=l[p];r<s;++r)if((i=c[r]).type===f.type&&i.name===f.name)return f.value}}},function(t,e,n){"use strict";function r(){}e.a=function(t){return null==t?r:function(){return this.querySelector(t)}}},function(t,e,n){"use strict";var r=n(70);e.a=function(){for(var t,e=r.a;t=e.sourceEvent;)e=t;return e}},function(t,e,n){"use strict";e.a=function(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView}},function(t,e,n){"use strict";function r(t,e,n){var r=t._x1,i=t._y1,a=t._x2,u=t._y2;if(t._l01_a>o.a){var c=2*t._l01_2a+3*t._l01_a*t._l12_a+t._l12_2a,s=3*t._l01_a*(t._l01_a+t._l12_a);r=(r*c-t._x0*t._l12_2a+t._x2*t._l01_2a)/s,i=(i*c-t._y0*t._l12_2a+t._y2*t._l01_2a)/s}if(t._l23_a>o.a){var l=2*t._l23_2a+3*t._l23_a*t._l12_a+t._l12_2a,f=3*t._l23_a*(t._l23_a+t._l12_a);a=(a*l+t._x1*t._l23_2a-e*t._l12_2a)/f,u=(u*l+t._y1*t._l23_2a-n*t._l12_2a)/f}t._context.bezierCurveTo(r,i,a,u,t._x2,t._y2)}function i(t,e){this._context=t,this._alpha=e}e.b=r;var o=n(35),a=n(48);i.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:this.point(this._x2,this._y2)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){if(t=+t,e=+e,this._point){var n=this._x2-t,i=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(n*n+i*i,this._alpha))}switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3;default:r(this,t,e)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}},e.a=function t(e){function n(t){return e?new i(t,e):new a.b(t,0)}return n.alpha=function(e){return t(+e)},n}(.5)},function(t,e,n){"use strict";var r=n(32),i=n(17),o=n(49),a=n(77);e.a=function(){function t(t){var i,o,a,p=t.length,h=!1;for(null==s&&(f=l(a=n.i(r.a)())),i=0;i<=p;++i)!(i<p&&c(o=t[i],i,t))===h&&((h=!h)?f.lineStart():f.lineEnd()),h&&f.point(+e(o,i,t),+u(o,i,t));if(a)return f=null,a+""||null}var e=a.a,u=a.b,c=n.i(i.a)(!0),s=null,l=o.a,f=null;return t.x=function(r){return arguments.length?(e="function"==typeof r?r:n.i(i.a)(+r),t):e},t.y=function(e){return arguments.length?(u="function"==typeof e?e:n.i(i.a)(+e),t):u},t.defined=function(e){return arguments.length?(c="function"==typeof e?e:n.i(i.a)(!!e),t):c},t.curve=function(e){return arguments.length?(l=e,null!=s&&(f=l(s)),t):l},t.context=function(e){return arguments.length?(null==e?s=f=null:f=l(s=e),t):s},t}},function(t,e,n){"use strict";function r(t){for(var e,n=0,r=-1,i=t.length;++r<i;)(e=+t[r][1])&&(n+=e);return n}e.b=r;var i=n(37);e.a=function(t){var e=t.map(r);return n.i(i.a)(t).sort(function(t,n){return e[t]-e[n]})}},function(t,e,n){"use strict";function r(t){return t[0]}function i(t){return t[1]}e.a=r,e.b=i},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(79);n.d(e,"timeFormatDefaultLocale",function(){return r.a}),n.d(e,"timeFormat",function(){return r.b}),n.d(e,"timeParse",function(){return r.c}),n.d(e,"utcFormat",function(){return r.d}),n.d(e,"utcParse",function(){return r.e});var i=n(152);n.d(e,"timeFormatLocale",function(){return i.a});var o=n(151);n.d(e,"isoFormat",function(){return o.a});var a=n(314);n.d(e,"isoParse",function(){return a.a})},function(t,e,n){"use strict";function r(t){return i=n.i(s.a)(t),o=i.format,a=i.parse,u=i.utcFormat,c=i.utcParse,i}n.d(e,"b",function(){return o}),n.d(e,"c",function(){return a}),n.d(e,"d",function(){return u}),n.d(e,"e",function(){return c}),e.a=r;var i,o,a,u,c,s=n(152);r({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]})},function(t,e,n){"use strict";var r=(n(5),n(317));n.d(e,"v",function(){return r.a}),n.d(e,"p",function(){return r.a});var i=n(320);n.d(e,"u",function(){return i.a}),n.d(e,"o",function(){return i.a});var o=n(318);n.d(e,"t",function(){return o.a});var a=n(316);n.d(e,"s",function(){return a.a});var u=n(315);n.d(e,"d",function(){return u.a});var c=n(327);n.d(e,"r",function(){return c.a}),n.d(e,"f",function(){return c.a}),n.d(e,"c",function(){return c.b}),n.d(e,"g",function(){return c.c});var s=n(319);n.d(e,"q",function(){return s.a});var l=n(328);n.d(e,"e",function(){return l.a});var f=n(323);n.d(e,"n",function(){return f.a});var p=n(322);n.d(e,"m",function(){return p.a});var h=n(321);n.d(e,"b",function(){return h.a});var d=n(325);n.d(e,"l",function(){return d.a}),n.d(e,"i",function(){return d.a}),n.d(e,"a",function(){return d.b}),n.d(e,"j",function(){return d.c});var v=n(324);n.d(e,"k",function(){return v.a});var g=n(326);n.d(e,"h",function(){return g.a})},function(t,e,n){"use strict";function r(t,e){return t===e?0!==t||0!==e||1/t==1/e:t!==t&&e!==e}function i(t,e){if(r(t,e))return!0;if("object"!=typeof t||null===t||"object"!=typeof e||null===e)return!1;var n=Object.keys(t),i=Object.keys(e);if(n.length!==i.length)return!1;for(var a=0;a<n.length;a++)if(!o.call(e,n[a])||!r(t[n[a]],e[n[a]]))return!1;return!0}var o=Object.prototype.hasOwnProperty;t.exports=i},function(t,e,n){"use strict";function r(t,e){return Array.isArray(e)&&(e=e[1]),e?e.nextSibling:t.firstChild}function i(t,e,n){l.insertTreeBefore(t,e,n)}function o(t,e,n){Array.isArray(e)?u(t,e[0],e[1],n):v(t,e,n)}function a(t,e){if(Array.isArray(e)){var n=e[1];e=e[0],c(t,e,n),t.removeChild(n)}t.removeChild(e)}function u(t,e,n,r){for(var i=e;;){var o=i.nextSibling;if(v(t,i,r),i===n)break;i=o}}function c(t,e,n){for(;;){var r=e.nextSibling;if(r===n)break;t.removeChild(r)}}function s(t,e,n){var r=t.parentNode,i=t.nextSibling;i===e?n&&v(r,document.createTextNode(n),i):n?(d(i,n),c(r,i,e)):c(r,t,e)}var l=n(20),f=n(350),p=(n(4),n(9),n(91)),h=n(57),d=n(176),v=p(function(t,e,n){t.insertBefore(e,n)}),g=f.dangerouslyReplaceNodeWithMarkup,m={dangerouslyReplaceNodeWithMarkup:g,replaceDelimitedText:s,processUpdates:function(t,e){for(var n=0;n<e.length;n++){var u=e[n];switch(u.type){case"INSERT_MARKUP":i(t,u.content,r(t,u.afterNode));break;case"MOVE_EXISTING":o(t,u.fromNode,r(t,u.afterNode));break;case"SET_MARKUP":h(t,u.content);break;case"TEXT_CONTENT":d(t,u.content);break;case"REMOVE_NODE":a(t,u.fromNode)}}}};t.exports=m},function(t,e,n){"use strict";var r={html:"http://www.w3.org/1999/xhtml",mathml:"http://www.w3.org/1998/Math/MathML",svg:"http://www.w3.org/2000/svg"};t.exports=r},function(t,e,n){"use strict";function r(){if(u)for(var t in c){var e=c[t],n=u.indexOf(t);if(n>-1||a("96",t),!s.plugins[n]){e.extractEvents||a("97",t),s.plugins[n]=e;var r=e.eventTypes;for(var o in r)i(r[o],e,o)||a("98",o,t)}}}function i(t,e,n){s.eventNameDispatchConfigs.hasOwnProperty(n)&&a("99",n),s.eventNameDispatchConfigs[n]=t;var r=t.phasedRegistrationNames;if(r){for(var i in r)if(r.hasOwnProperty(i)){var u=r[i];o(u,e,n)}return!0}return!!t.registrationName&&(o(t.registrationName,e,n),!0)}function o(t,e,n){s.registrationNameModules[t]&&a("100",t),s.registrationNameModules[t]=e,s.registrationNameDependencies[t]=e.eventTypes[n].dependencies}var a=n(1),u=(n(0),null),c={},s={plugins:[],eventNameDispatchConfigs:{},registrationNameModules:{},registrationNameDependencies:{},possibleRegistrationNames:null,injectEventPluginOrder:function(t){u&&a("101"),u=Array.prototype.slice.call(t),r()},injectEventPluginsByName:function(t){var e=!1;for(var n in t)if(t.hasOwnProperty(n)){var i=t[n];c.hasOwnProperty(n)&&c[n]===i||(c[n]&&a("102",n),c[n]=i,e=!0)}e&&r()},getPluginModuleForEvent:function(t){var e=t.dispatchConfig;if(e.registrationName)return s.registrationNameModules[e.registrationName]||null;if(void 0!==e.phasedRegistrationNames){var n=e.phasedRegistrationNames;for(var r in n)if(n.hasOwnProperty(r)){var i=s.registrationNameModules[n[r]];if(i)return i}}return null},_resetEventPlugins:function(){u=null;for(var t in c)c.hasOwnProperty(t)&&delete c[t];s.plugins.length=0;var e=s.eventNameDispatchConfigs;for(var n in e)e.hasOwnProperty(n)&&delete e[n];var r=s.registrationNameModules;for(var i in r)r.hasOwnProperty(i)&&delete r[i]}};t.exports=s},function(t,e,n){"use strict";function r(t){var e={"=":"=0",":":"=2"};return"$"+(""+t).replace(/[=:]/g,function(t){return e[t]})}function i(t){var e=/(=0|=2)/g,n={"=0":"=","=2":":"};return(""+("."===t[0]&&"$"===t[1]?t.substring(2):t.substring(1))).replace(e,function(t){return n[t]})}var o={escape:r,unescape:i};t.exports=o},function(t,e,n){"use strict";function r(t){null!=t.checkedLink&&null!=t.valueLink&&u("87")}function i(t){r(t),(null!=t.value||null!=t.onChange)&&u("88")}function o(t){r(t),(null!=t.checked||null!=t.onChange)&&u("89")}function a(t){if(t){var e=t.getName();if(e)return" Check the render method of `"+e+"`."}return""}var u=n(1),c=n(380),s=n(157),l=n(26),f=s(l.isValidElement),p=(n(0),n(2),{button:!0,checkbox:!0,image:!0,hidden:!0,radio:!0,reset:!0,submit:!0}),h={value:function(t,e,n){return!t[e]||p[t.type]||t.onChange||t.readOnly||t.disabled?null:new Error("You provided a `value` prop to a form field without an `onChange` handler. This will render a read-only field. If the field should be mutable use `defaultValue`. Otherwise, set either `onChange` or `readOnly`.")},checked:function(t,e,n){return!t[e]||t.onChange||t.readOnly||t.disabled?null:new Error("You provided a `checked` prop to a form field without an `onChange` handler. This will render a read-only field. If the field should be mutable use `defaultChecked`. Otherwise, set either `onChange` or `readOnly`.")},onChange:f.func},d={},v={checkPropTypes:function(t,e,n){for(var r in h){if(h.hasOwnProperty(r))var i=h[r](e,r,t,"prop",null,c);if(i instanceof Error&&!(i.message in d)){d[i.message]=!0;a(n)}}},getValue:function(t){return t.valueLink?(i(t),t.valueLink.value):t.value},getChecked:function(t){return t.checkedLink?(o(t),t.checkedLink.value):t.checked},executeOnChange:function(t,e){return t.valueLink?(i(t),t.valueLink.requestChange(e.target.value)):t.checkedLink?(o(t),t.checkedLink.requestChange(e.target.checked)):t.onChange?t.onChange.call(void 0,e):void 0}};t.exports=v},function(t,e,n){"use strict";var r=n(1),i=(n(0),!1),o={replaceNodeWithMarkup:null,processChildrenUpdates:null,injection:{injectEnvironment:function(t){i&&r("104"),o.replaceNodeWithMarkup=t.replaceNodeWithMarkup,o.processChildrenUpdates=t.processChildrenUpdates,i=!0}}};t.exports=o},function(t,e,n){"use strict";function r(t,e,n){try{e(n)}catch(t){null===i&&(i=t)}}var i=null,o={invokeGuardedCallback:r,invokeGuardedCallbackWithCatch:r,rethrowCaughtError:function(){if(i){var t=i;throw i=null,t}}};t.exports=o},function(t,e,n){"use strict";function r(t){c.enqueueUpdate(t)}function i(t){var e=typeof t;if("object"!==e)return e;var n=t.constructor&&t.constructor.name||e,r=Object.keys(t);return r.length>0&&r.length<20?n+" (keys: "+r.join(", ")+")":n}function o(t,e){var n=u.get(t);if(!n){return null}return n}var a=n(1),u=(n(15),n(39)),c=(n(9),n(12)),s=(n(0),n(2),{isMounted:function(t){var e=u.get(t);return!!e&&!!e._renderedComponent},enqueueCallback:function(t,e,n){s.validateCallback(e,n);var i=o(t);if(!i)return null;i._pendingCallbacks?i._pendingCallbacks.push(e):i._pendingCallbacks=[e],r(i)},enqueueCallbackInternal:function(t,e){t._pendingCallbacks?t._pendingCallbacks.push(e):t._pendingCallbacks=[e],r(t)},enqueueForceUpdate:function(t){var e=o(t,"forceUpdate");e&&(e._pendingForceUpdate=!0,r(e))},enqueueReplaceState:function(t,e,n){var i=o(t,"replaceState");i&&(i._pendingStateQueue=[e],i._pendingReplaceState=!0,void 0!==n&&null!==n&&(s.validateCallback(n,"replaceState"),i._pendingCallbacks?i._pendingCallbacks.push(n):i._pendingCallbacks=[n]),r(i))},enqueueSetState:function(t,e){var n=o(t,"setState");if(n){(n._pendingStateQueue||(n._pendingStateQueue=[])).push(e),r(n)}},enqueueElementInternal:function(t,e,n){t._pendingElement=e,t._context=n,r(t)},validateCallback:function(t,e){t&&"function"!=typeof t&&a("122",e,i(t))}});t.exports=s},function(t,e,n){"use strict";var r={currentScrollLeft:0,currentScrollTop:0,refreshScrollValues:function(t){r.currentScrollLeft=t.x,r.currentScrollTop=t.y}};t.exports=r},function(t,e,n){"use strict";var r=function(t){return"undefined"!=typeof MSApp&&MSApp.execUnsafeLocalFunction?function(e,n,r,i){MSApp.execUnsafeLocalFunction(function(){return t(e,n,r,i)})}:t};t.exports=r},function(t,e,n){"use strict";function r(t){var e,n=t.keyCode;return"charCode"in t?0===(e=t.charCode)&&13===n&&(e=13):e=n,e>=32||13===e?e:0}t.exports=r},function(t,e,n){"use strict";function r(t){var e=this,n=e.nativeEvent;if(n.getModifierState)return n.getModifierState(t);var r=o[t];return!!r&&!!n[r]}function i(t){return r}var o={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};t.exports=i},function(t,e,n){"use strict";function r(t){var e=t.target||t.srcElement||window;return e.correspondingUseElement&&(e=e.correspondingUseElement),3===e.nodeType?e.parentNode:e}t.exports=r},function(t,e,n){"use strict";/**
* Checks if an event is supported in the current execution environment.
*
* NOTE: This will not work correctly for non-generic events such as `change`,
* `reset`, `load`, `error`, and `select`.
*
* Borrows from Modernizr.
*
* @param {string} eventNameSuffix Event name, e.g. "click".
* @param {?boolean} capture Check if the capture phase is supported.
* @return {boolean} True if the event is supported.
* @internal
* @license Modernizr 3.0.0pre (Custom Build) | MIT
*/
function r(t,e){if(!o.canUseDOM||e&&!("addEventListener"in document))return!1;var n="on"+t,r=n in document;if(!r){var a=document.createElement("div");a.setAttribute(n,"return;"),r="function"==typeof a[n]}return!r&&i&&"wheel"===t&&(r=document.implementation.hasFeature("Events.wheel","3.0")),r}var i,o=n(6);o.canUseDOM&&(i=document.implementation&&document.implementation.hasFeature&&!0!==document.implementation.hasFeature("","")),t.exports=r},function(t,e,n){"use strict";function r(t,e){var n=null===t||!1===t,r=null===e||!1===e;if(n||r)return n===r;var i=typeof t,o=typeof e;return"string"===i||"number"===i?"string"===o||"number"===o:"object"===o&&t.type===e.type&&t.key===e.key}t.exports=r},function(t,e,n){"use strict";var r=(n(3),n(11)),i=(n(2),r);t.exports=i},function(t,e){var n;n=function(){return this}();try{n=n||Function("return this")()||(0,eval)("this")}catch(t){"object"==typeof window&&(n=window)}t.exports=n},function(t,e){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children||(t.children=[]),Object.defineProperty(t,"loaded",{enumerable:!0,get:function(){return t.l}}),Object.defineProperty(t,"id",{enumerable:!0,get:function(){return t.i}}),t.webpackPolyfill=1),t}},function(t,e,n){"use strict";n.d(e,"b",function(){return i}),n.d(e,"a",function(){return o});var r=Array.prototype,i=r.slice,o=r.map},function(t,e,n){"use strict";n.d(e,"b",function(){return a}),n.d(e,"c",function(){return u});var r=n(19),i=n(102),o=n.i(i.a)(r.a),a=o.right,u=o.left;e.a=a},function(t,e,n){"use strict";function r(t){return function(e,r){return n.i(i.a)(t(e),r)}}var i=n(19);e.a=function(t){return 1===t.length&&(t=r(t)),{left:function(e,n,r,i){for(null==r&&(r=0),null==i&&(i=e.length);r<i;){var o=r+i>>>1;t(e[o],n)<0?r=o+1:i=o}return r},right:function(e,n,r,i){for(null==r&&(r=0),null==i&&(i=e.length);r<i;){var o=r+i>>>1;t(e[o],n)>0?i=o:r=o+1}return r}}}},function(t,e,n){"use strict";var r=n(111);e.a=function(t,e){var i=n.i(r.a)(t,e);return i?Math.sqrt(i):i}},function(t,e,n){"use strict";e.a=function(t,e){var n,r,i,o=t.length,a=-1;if(null==e){for(;++a<o;)if(null!=(n=t[a])&&n>=n)for(r=i=n;++a<o;)null!=(n=t[a])&&(r>n&&(r=n),i<n&&(i=n))}else for(;++a<o;)if(null!=(n=e(t[a],a,t))&&n>=n)for(r=i=n;++a<o;)null!=(n=e(t[a],a,t))&&(r>n&&(r=n),i<n&&(i=n));return[r,i]}},function(t,e,n){"use strict";e.a=function(t,e){var n,r,i=t.length,o=-1;if(null==e){for(;++o<i;)if(null!=(n=t[o])&&n>=n)for(r=n;++o<i;)null!=(n=t[o])&&r>n&&(r=n)}else for(;++o<i;)if(null!=(n=e(t[o],o,t))&&n>=n)for(r=n;++o<i;)null!=(n=e(t[o],o,t))&&r>n&&(r=n);return r}},function(t,e,n){"use strict";function r(t,e){return[t,e]}e.b=r,e.a=function(t,e){null==e&&(e=r);for(var n=0,i=t.length-1,o=t[0],a=new Array(i<0?0:i);n<i;)a[n]=e(o,o=t[++n]);return a}},function(t,e,n){"use strict";e.a=function(t,e,n){t=+t,e=+e,n=(i=arguments.length)<2?(e=t,t=0,1):i<3?1:+n;for(var r=-1,i=0|Math.max(0,Math.ceil((e-t)/n)),o=new Array(i);++r<i;)o[r]=t+r*n;return o}},function(t,e,n){"use strict";e.a=function(t){return Math.ceil(Math.log(t.length)/Math.LN2)+1}},function(t,e,n){"use strict";function r(t,e,n){var r=(e-t)/Math.max(0,n),i=Math.floor(Math.log(r)/Math.LN10),c=r/Math.pow(10,i);return i>=0?(c>=o?10:c>=a?5:c>=u?2:1)*Math.pow(10,i):-Math.pow(10,-i)/(c>=o?10:c>=a?5:c>=u?2:1)}function i(t,e,n){var r=Math.abs(e-t)/Math.max(0,n),i=Math.pow(10,Math.floor(Math.log(r)/Math.LN10)),c=r/i;return c>=o?i*=10:c>=a?i*=5:c>=u&&(i*=2),e<t?-i:i}e.b=r,e.c=i;var o=Math.sqrt(50),a=Math.sqrt(10),u=Math.sqrt(2);e.a=function(t,e,n){var i,o,a,u,c=-1;if(e=+e,t=+t,n=+n,t===e&&n>0)return[t];if((i=e<t)&&(o=t,t=e,e=o),0===(u=r(t,e,n))||!isFinite(u))return[];if(u>0)for(t=Math.ceil(t/u),e=Math.floor(e/u),a=new Array(o=Math.ceil(e-t+1));++c<o;)a[c]=(t+c)*u;else for(t=Math.floor(t*u),e=Math.ceil(e*u),a=new Array(o=Math.ceil(t-e+1));++c<o;)a[c]=(t-c)/u;return i&&a.reverse(),a}},function(t,e,n){"use strict";function r(t){return t.length}var i=n(105);e.a=function(t){if(!(u=t.length))return[];for(var e=-1,o=n.i(i.a)(t,r),a=new Array(o);++e<o;)for(var u,c=-1,s=a[e]=new Array(u);++c<u;)s[c]=t[c][e];return a}},function(t,e,n){"use strict";var r=n(28);e.a=function(t,e){var i,o,a=t.length,u=0,c=-1,s=0,l=0;if(null==e)for(;++c<a;)isNaN(i=n.i(r.a)(t[c]))||(o=i-s,s+=o/++u,l+=o*(i-s));else for(;++c<a;)isNaN(i=n.i(r.a)(e(t[c],c,t)))||(o=i-s,s+=o/++u,l+=o*(i-s));if(u>1)return l/(u-1)}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(209);n.d(e,"axisTop",function(){return r.a}),n.d(e,"axisRight",function(){return r.b}),n.d(e,"axisBottom",function(){return r.c}),n.d(e,"axisLeft",function(){return r.d})},function(t,e,n){"use strict";n.d(e,"b",function(){return r}),n.d(e,"a",function(){return i});var r=Math.PI/180,i=180/Math.PI},function(t,e,n){"use strict";n.d(e,"b",function(){return r});var r,i=n(63);e.a=function(t,e){var o=n.i(i.a)(t,e);if(!o)return t+"";var a=o[0],u=o[1],c=u-(r=3*Math.max(-8,Math.min(8,Math.floor(u/3))))+1,s=a.length;return c===s?a:c>s?a+new Array(c-s+1).join("0"):c>0?a.slice(0,c)+"."+a.slice(c):"0."+new Array(1-c).join("0")+n.i(i.a)(t,Math.max(0,e+c-1))[0]}},function(t,e,n){"use strict";function r(t){return new i(t)}function i(t){if(!(e=a.exec(t)))throw new Error("invalid format: "+t);var e,n=e[1]||" ",r=e[2]||">",i=e[3]||"-",u=e[4]||"",c=!!e[5],s=e[6]&&+e[6],l=!!e[7],f=e[8]&&+e[8].slice(1),p=e[9]||"";"n"===p?(l=!0,p="g"):o.a[p]||(p=""),(c||"0"===n&&"="===r)&&(c=!0,n="0",r="="),this.fill=n,this.align=r,this.sign=i,this.symbol=u,this.zero=c,this.width=s,this.comma=l,this.precision=f,this.type=p}e.a=r;var o=n(116),a=/^(?:(.)?([<>=^]))?([+\-\( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?([a-z%])?$/i;r.prototype=i.prototype,i.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(null==this.width?"":Math.max(1,0|this.width))+(this.comma?",":"")+(null==this.precision?"":"."+Math.max(0,0|this.precision))+this.type}},function(t,e,n){"use strict";var r=n(220),i=n(114),o=n(223);e.a={"":r.a,"%":function(t,e){return(100*t).toFixed(e)},b:function(t){return Math.round(t).toString(2)},c:function(t){return t+""},d:function(t){return Math.round(t).toString(10)},e:function(t,e){return t.toExponential(e)},f:function(t,e){return t.toFixed(e)},g:function(t,e){return t.toPrecision(e)},o:function(t){return Math.round(t).toString(8)},p:function(t,e){return n.i(o.a)(100*t,e)},r:o.a,s:i.a,X:function(t){return Math.round(t).toString(16).toUpperCase()},x:function(t){return Math.round(t).toString(16)}}},function(t,e,n){"use strict";var r=n(42),i=n(221),o=n(222),a=n(115),u=n(116),c=n(114),s=n(224),l=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];e.a=function(t){function e(t){function e(t){var e,n,a,u=x,s=w;if("c"===b)s=C(t)+s,t="";else{t=+t;var h=t<0;if(t=C(Math.abs(t),_),h&&0==+t&&(h=!1),u=(h?"("===o?o:"-":"-"===o||"("===o?"":o)+u,s=("s"===b?l[8+c.b/3]:"")+s+(h&&"("===o?")":""),k)for(e=-1,n=t.length;++e<n;)if(48>(a=t.charCodeAt(e))||a>57){s=(46===a?d+t.slice(e+1):t.slice(e))+s,t=t.slice(0,e);break}}y&&!f&&(t=p(t,1/0));var g=u.length+t.length+s.length,E=g<m?new Array(m-g+1).join(r):"";switch(y&&f&&(t=p(E+t,E.length?m-s.length:1/0),E=""),i){case"<":t=u+t+s+E;break;case"=":t=u+E+t+s;break;case"^":t=E.slice(0,g=E.length>>1)+u+t+s+E.slice(g);break;default:t=E+u+t+s}return v(t)}t=n.i(a.a)(t);var r=t.fill,i=t.align,o=t.sign,s=t.symbol,f=t.zero,m=t.width,y=t.comma,_=t.precision,b=t.type,x="$"===s?h[0]:"#"===s&&/[boxX]/.test(b)?"0"+b.toLowerCase():"",w="$"===s?h[1]:/[%p]/.test(b)?g:"",C=u.a[b],k=!b||/[defgprs%]/.test(b);return _=null==_?b?6:12:/[gprs]/.test(b)?Math.max(1,Math.min(21,_)):Math.max(0,Math.min(20,_)),e.toString=function(){return t+""},e}function f(t,i){var o=e((t=n.i(a.a)(t),t.type="f",t)),u=3*Math.max(-8,Math.min(8,Math.floor(n.i(r.a)(i)/3))),c=Math.pow(10,-u),s=l[8+u/3];return function(t){return o(c*t)+s}}var p=t.grouping&&t.thousands?n.i(i.a)(t.grouping,t.thousands):s.a,h=t.currency,d=t.decimal,v=t.numerals?n.i(o.a)(t.numerals):s.a,g=t.percent||"%";return{format:e,formatPrefix:f}}},function(t,e,n){"use strict";var r=n(65);e.a=function(t,e){var i,o=e?e.length:0,a=t?Math.min(o,t.length):0,u=new Array(a),c=new Array(o);for(i=0;i<a;++i)u[i]=n.i(r.a)(t[i],e[i]);for(;i<o;++i)c[i]=e[i];return function(t){for(i=0;i<a;++i)c[i]=u[i](t);return c}}},function(t,e,n){"use strict";var r=n(64);e.a=function(t){var e=t.length;return function(i){var o=Math.floor(((i%=1)<0?++i:i)*e),a=t[(o+e-1)%e],u=t[o%e],c=t[(o+1)%e],s=t[(o+2)%e];return n.i(r.b)((i-o/e)*e,a,u,c,s)}}},function(t,e,n){"use strict";e.a=function(t){return function(){return t}}},function(t,e,n){"use strict";e.a=function(t,e){var n=new Date;return t=+t,e-=t,function(r){return n.setTime(t+e*r),n}}},function(t,e,n){"use strict";var r=n(65);e.a=function(t,e){var i,o={},a={};null!==t&&"object"==typeof t||(t={}),null!==e&&"object"==typeof e||(e={});for(i in e)i in t?o[i]=n.i(r.a)(t[i],e[i]):a[i]=e[i];return function(t){for(i in o)a[i]=o[i](t);return a}}},function(t,e,n){"use strict";function r(t){return function(e){var r,o,a=e.length,u=new Array(a),c=new Array(a),s=new Array(a);for(r=0;r<a;++r)o=n.i(i.rgb)(e[r]),u[r]=o.r||0,c[r]=o.g||0,s[r]=o.b||0;return u=t(u),c=t(c),s=t(s),o.opacity=1,function(t){return o.r=u(t),o.g=c(t),o.b=s(t),o+""}}}var i=n(10),o=n(64),a=n(119),u=n(31);e.a=function t(e){function r(t,e){var r=o((t=n.i(i.rgb)(t)).r,(e=n.i(i.rgb)(e)).r),a=o(t.g,e.g),c=o(t.b,e.b),s=n.i(u.a)(t.opacity,e.opacity);return function(e){return t.r=r(e),t.g=a(e),t.b=c(e),t.opacity=s(e),t+""}}var o=n.i(u.c)(e);return r.gamma=t,r}(1);r(o.a),r(a.a)},function(t,e,n){"use strict";function r(t){return function(){return t}}function i(t){return function(e){return t(e)+""}}var o=n(43),a=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,u=new RegExp(a.source,"g");e.a=function(t,e){var c,s,l,f=a.lastIndex=u.lastIndex=0,p=-1,h=[],d=[];for(t+="",e+="";(c=a.exec(t))&&(s=u.exec(e));)(l=s.index)>f&&(l=e.slice(f,l),h[p]?h[p]+=l:h[++p]=l),(c=c[0])===(s=s[0])?h[p]?h[p]+=s:h[++p]=s:(h[++p]=null,d.push({i:p,x:n.i(o.a)(c,s)})),f=u.lastIndex;return f<e.length&&(l=e.slice(f),h[p]?h[p]+=l:h[++p]=l),h.length<2?d[0]?i(d[0].x):r(e):(e=d.length,function(t){for(var n,r=0;r<e;++r)h[(n=d[r]).i]=n.x(t);return h.join("")})}},function(t,e,n){"use strict";e.a=function(t,e){t=t.slice();var n,r=0,i=t.length-1,o=t[r],a=t[i];return a<o&&(n=r,r=i,i=n,n=o,o=a,a=n),t[r]=e.floor(o),t[i]=e.ceil(a),t}},function(t,e,n){"use strict";e.a=function(t){return+t}},function(t,e,n){"use strict";function r(t){function e(e){var n=e+"",r=u.get(n);if(!r){if(s!==a)return s;u.set(n,r=c.push(e))}return t[(r-1)%t.length]}var u=n.i(i.a)(),c=[],s=a;return t=null==t?[]:o.b.call(t),e.domain=function(t){if(!arguments.length)return c.slice();c=[],u=n.i(i.a)();for(var r,o,a=-1,s=t.length;++a<s;)u.has(o=(r=t[a])+"")||u.set(o,c.push(r));return e},e.range=function(n){return arguments.length?(t=o.b.call(n),e):t.slice()},e.unknown=function(t){return arguments.length?(s=t,e):s},e.copy=function(){return r().domain(c).range(t).unknown(s)},e}n.d(e,"b",function(){return a}),e.a=r;var i=n(211),o=n(16),a={name:"implicit"}},function(t,e,n){"use strict";function r(t){return new Date(t)}function i(t){return t instanceof Date?+t:+new Date(+t)}function o(t,e,c,s,b,x,w,C,k){function E(n){return(w(n)<n?A:x(n)<n?P:b(n)<n?O:s(n)<n?I:e(n)<n?c(n)<n?D:R:t(n)<n?L:U)(n)}function M(e,r,i,o){if(null==e&&(e=10),"number"==typeof e){var u=Math.abs(i-r)/e,c=n.i(a.bisector)(function(t){return t[2]}).right(F,u);c===F.length?(o=n.i(a.tickStep)(r/_,i/_,e),e=t):c?(c=F[u/F[c-1][2]<F[c][2]/u?c-1:c],o=c[1],e=c[0]):(o=Math.max(n.i(a.tickStep)(r,i,e),1),e=C)}return null==o?e:e.every(o)}var T=n.i(f.a)(f.b,u.a),S=T.invert,N=T.domain,A=k(".%L"),P=k(":%S"),O=k("%I:%M"),I=k("%I %p"),D=k("%a %d"),R=k("%b %d"),L=k("%B"),U=k("%Y"),F=[[w,1,h],[w,5,5*h],[w,15,15*h],[w,30,30*h],[x,1,d],[x,5,5*d],[x,15,15*d],[x,30,30*d],[b,1,v],[b,3,3*v],[b,6,6*v],[b,12,12*v],[s,1,g],[s,2,2*g],[c,1,m],[e,1,y],[e,3,3*y],[t,1,_]];return T.invert=function(t){return new Date(S(t))},T.domain=function(t){return arguments.length?N(l.a.call(t,i)):N().map(r)},T.ticks=function(t,e){var n,r=N(),i=r[0],o=r[r.length-1],a=o<i;return a&&(n=i,i=o,o=n),n=M(t,i,o,e),n=n?n.range(i,o+1):[],a?n.reverse():n},T.tickFormat=function(t,e){return null==e?E:k(e)},T.nice=function(t,e){var r=N();return(t=M(t,r[0],r[r.length-1],e))?N(n.i(p.a)(r,t)):T},T.copy=function(){return n.i(f.c)(T,o(t,e,c,s,b,x,w,C,k))},T}e.b=o;var a=n(7),u=n(30),c=n(80),s=n(78),l=n(16),f=n(44),p=n(125),h=1e3,d=60*h,v=60*d,g=24*v,m=7*g,y=30*g,_=365*g;e.a=function(){return o(c.e,c.q,c.r,c.d,c.s,c.t,c.u,c.v,s.timeFormat).domain([new Date(2e3,0,1),new Date(2e3,0,2)])}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(257);n.d(e,"create",function(){return r.a});var i=n(45);n.d(e,"creator",function(){return i.a});var o=n(258);n.d(e,"local",function(){return o.a});var a=n(130);n.d(e,"matcher",function(){return a.a});var u=n(259);n.d(e,"mouse",function(){return u.a});var c=n(68);n.d(e,"namespace",function(){return c.a});var s=n(69);n.d(e,"namespaces",function(){return s.a});var l=n(46);n.d(e,"clientPoint",function(){return l.a});var f=n(131);n.d(e,"select",function(){return f.a});var p=n(260);n.d(e,"selectAll",function(){return p.a});var h=n(8);n.d(e,"selection",function(){return h.a});var d=n(71);n.d(e,"selector",function(){return d.a});var v=n(135);n.d(e,"selectorAll",function(){return v.a});var g=n(134);n.d(e,"style",function(){return g.a});var m=n(288);n.d(e,"touch",function(){return m.a});var y=n(289);n.d(e,"touches",function(){return y.a});var _=n(73);n.d(e,"window",function(){return _.a});var b=n(70);n.d(e,"event",function(){return b.a}),n.d(e,"customEvent",function(){return b.b})},function(t,e,n){"use strict";var r=function(t){return function(){return this.matches(t)}};if("undefined"!=typeof document){var i=document.documentElement;if(!i.matches){var o=i.webkitMatchesSelector||i.msMatchesSelector||i.mozMatchesSelector||i.oMatchesSelector;r=function(t){return function(){return o.call(this,t)}}}}e.a=r},function(t,e,n){"use strict";var r=n(8);e.a=function(t){return"string"==typeof t?new r.b([[document.querySelector(t)]],[document.documentElement]):new r.b([[t]],r.c)}},function(t,e,n){"use strict";function r(t,e){this.ownerDocument=t.ownerDocument,this.namespaceURI=t.namespaceURI,this._next=null,this._parent=t,this.__data__=e}e.b=r;var i=n(133),o=n(8);e.a=function(){return new o.b(this._enter||this._groups.map(i.a),this._parents)},r.prototype={constructor:r,appendChild:function(t){return this._parent.insertBefore(t,this._next)},insertBefore:function(t,e){return this._parent.insertBefore(t,e)},querySelector:function(t){return this._parent.querySelector(t)},querySelectorAll:function(t){return this._parent.querySelectorAll(t)}}},function(t,e,n){"use strict";e.a=function(t){return new Array(t.length)}},function(t,e,n){"use strict";function r(t){return function(){this.style.removeProperty(t)}}function i(t,e,n){return function(){this.style.setProperty(t,e,n)}}function o(t,e,n){return function(){var r=e.apply(this,arguments);null==r?this.style.removeProperty(t):this.style.setProperty(t,r,n)}}function a(t,e){return t.style.getPropertyValue(e)||n.i(u.a)(t).getComputedStyle(t,null).getPropertyValue(e)}e.a=a;var u=n(73);e.b=function(t,e,n){return arguments.length>1?this.each((null==e?r:"function"==typeof e?o:i)(t,e,null==n?"":n)):a(this.node(),t)}},function(t,e,n){"use strict";function r(){return[]}e.a=function(t){return null==t?r:function(){return this.querySelectorAll(t)}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(290);n.d(e,"arc",function(){return r.a});var i=n(137);n.d(e,"area",function(){return i.a});var o=n(75);n.d(e,"line",function(){return o.a});var a=n(311);n.d(e,"pie",function(){return a.a});var u=n(291);n.d(e,"areaRadial",function(){return u.a}),n.d(e,"radialArea",function(){return u.a});var c=n(142);n.d(e,"lineRadial",function(){return c.a}),n.d(e,"radialLine",function(){return c.a});var s=n(143);n.d(e,"pointRadial",function(){return s.a});var l=n(303);n.d(e,"linkHorizontal",function(){return l.a}),n.d(e,"linkVertical",function(){return l.b}),n.d(e,"linkRadial",function(){return l.c});var f=n(313);n.d(e,"symbol",function(){return f.a}),n.d(e,"symbols",function(){return f.b});var p=n(144);n.d(e,"symbolCircle",function(){return p.a});var h=n(145);n.d(e,"symbolCross",function(){return h.a});var d=n(146);n.d(e,"symbolDiamond",function(){return d.a});var v=n(147);n.d(e,"symbolSquare",function(){return v.a});var g=n(148);n.d(e,"symbolStar",function(){return g.a});var m=n(149);n.d(e,"symbolTriangle",function(){return m.a});var y=n(150);n.d(e,"symbolWye",function(){return y.a});var _=n(292);n.d(e,"curveBasisClosed",function(){return _.a});var b=n(293);n.d(e,"curveBasisOpen",function(){return b.a});var x=n(47);n.d(e,"curveBasis",function(){return x.a});var w=n(294);n.d(e,"curveBundle",function(){return w.a});var C=n(139);n.d(e,"curveCardinalClosed",function(){return C.a});var k=n(140);n.d(e,"curveCardinalOpen",function(){return k.a});var E=n(48);n.d(e,"curveCardinal",function(){return E.a});var M=n(295);n.d(e,"curveCatmullRomClosed",function(){return M.a});var T=n(296);n.d(e,"curveCatmullRomOpen",function(){return T.a});var S=n(74);n.d(e,"curveCatmullRom",function(){return S.a});var N=n(297);n.d(e,"curveLinearClosed",function(){return N.a});var A=n(49);n.d(e,"curveLinear",function(){return A.a});var P=n(298);n.d(e,"curveMonotoneX",function(){return P.a}),n.d(e,"curveMonotoneY",function(){return P.b});var O=n(299);n.d(e,"curveNatural",function(){return O.a});var I=n(300);n.d(e,"curveStep",function(){return I.a}),n.d(e,"curveStepAfter",function(){return I.b}),n.d(e,"curveStepBefore",function(){return I.c});var D=n(312);n.d(e,"stack",function(){return D.a});var R=n(305);n.d(e,"stackOffsetExpand",function(){return R.a});var L=n(304);n.d(e,"stackOffsetDiverging",function(){return L.a});var U=n(36);n.d(e,"stackOffsetNone",function(){return U.a});var F=n(306);n.d(e,"stackOffsetSilhouette",function(){return F.a});var j=n(307);n.d(e,"stackOffsetWiggle",function(){return j.a});var B=n(76);n.d(e,"stackOrderAscending",function(){return B.a});var V=n(308);n.d(e,"stackOrderDescending",function(){return V.a});var W=n(309);n.d(e,"stackOrderInsideOut",function(){return W.a});var z=n(37);n.d(e,"stackOrderNone",function(){return z.a});var H=n(310);n.d(e,"stackOrderReverse",function(){return H.a})},function(t,e,n){"use strict";var r=n(32),i=n(17),o=n(49),a=n(75),u=n(77);e.a=function(){function t(t){var e,i,o,a,u,g=t.length,m=!1,y=new Array(g),_=new Array(g);for(null==h&&(v=d(u=n.i(r.a)())),e=0;e<=g;++e){if(!(e<g&&p(a=t[e],e,t))===m)if(m=!m)i=e,v.areaStart(),v.lineStart();else{for(v.lineEnd(),v.lineStart(),o=e-1;o>=i;--o)v.point(y[o],_[o]);v.lineEnd(),v.areaEnd()}m&&(y[e]=+c(a,e,t),_[e]=+l(a,e,t),v.point(s?+s(a,e,t):y[e],f?+f(a,e,t):_[e]))}if(u)return v=null,u+""||null}function e(){return n.i(a.a)().defined(p).curve(d).context(h)}var c=u.a,s=null,l=n.i(i.a)(0),f=u.b,p=n.i(i.a)(!0),h=null,d=o.a,v=null;return t.x=function(e){return arguments.length?(c="function"==typeof e?e:n.i(i.a)(+e),s=null,t):c},t.x0=function(e){return arguments.length?(c="function"==typeof e?e:n.i(i.a)(+e),t):c},t.x1=function(e){return arguments.length?(s=null==e?null:"function"==typeof e?e:n.i(i.a)(+e),t):s},t.y=function(e){return arguments.length?(l="function"==typeof e?e:n.i(i.a)(+e),f=null,t):l},t.y0=function(e){return arguments.length?(l="function"==typeof e?e:n.i(i.a)(+e),t):l},t.y1=function(e){return arguments.length?(f=null==e?null:"function"==typeof e?e:n.i(i.a)(+e),t):f},t.lineX0=t.lineY0=function(){return e().x(c).y(l)},t.lineY1=function(){return e().x(c).y(f)},t.lineX1=function(){return e().x(s).y(l)},t.defined=function(e){return arguments.length?(p="function"==typeof e?e:n.i(i.a)(!!e),t):p},t.curve=function(e){return arguments.length?(d=e,null!=h&&(v=d(h)),t):d},t.context=function(e){return arguments.length?(null==e?h=v=null:v=d(h=e),t):h},t}},function(t,e,n){"use strict";n.d(e,"a",function(){return r});var r=Array.prototype.slice},function(t,e,n){"use strict";function r(t,e){this._context=t,this._k=(1-e)/6}e.b=r;var i=n(50),o=n(48);r.prototype={areaStart:i.a,areaEnd:i.a,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._x3=t,this._y3=e;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=e);break;case 2:this._point=3,this._x5=t,this._y5=e;break;default:n.i(o.c)(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}},e.a=function t(e){function n(t){return new r(t,e)}return n.tension=function(e){return t(+e)},n}(0)},function(t,e,n){"use strict";function r(t,e){this._context=t,this._k=(1-e)/6}e.b=r;var i=n(48);r.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:n.i(i.c)(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}},e.a=function t(e){function n(t){return new r(t,e)}return n.tension=function(e){return t(+e)},n}(0)},function(t,e,n){"use strict";function r(t){this._curve=t}function i(t){function e(e){return new r(t(e))}return e._curve=t,e}n.d(e,"b",function(){return a}),e.a=i;var o=n(49),a=i(o.a);r.prototype={areaStart:function(){this._curve.areaStart()},areaEnd:function(){this._curve.areaEnd()},lineStart:function(){this._curve.lineStart()},lineEnd:function(){this._curve.lineEnd()},point:function(t,e){this._curve.point(e*Math.sin(t),e*-Math.cos(t))}}},function(t,e,n){"use strict";function r(t){var e=t.curve;return t.angle=t.x,delete t.x,t.radius=t.y,delete t.y,t.curve=function(t){return arguments.length?e(n.i(i.a)(t)):e()._curve},t}e.b=r;var i=n(141),o=n(75);e.a=function(){return r(n.i(o.a)().curve(i.b))}},function(t,e,n){"use strict";e.a=function(t,e){return[(e=+e)*Math.cos(t-=Math.PI/2),e*Math.sin(t)]}},function(t,e,n){"use strict";var r=n(35);e.a={draw:function(t,e){var n=Math.sqrt(e/r.b);t.moveTo(n,0),t.arc(0,0,n,0,r.c)}}},function(t,e,n){"use strict";e.a={draw:function(t,e){var n=Math.sqrt(e/5)/2;t.moveTo(-3*n,-n),t.lineTo(-n,-n),t.lineTo(-n,-3*n),t.lineTo(n,-3*n),t.lineTo(n,-n),t.lineTo(3*n,-n),t.lineTo(3*n,n),t.lineTo(n,n),t.lineTo(n,3*n),t.lineTo(-n,3*n),t.lineTo(-n,n),t.lineTo(-3*n,n),t.closePath()}}},function(t,e,n){"use strict";var r=Math.sqrt(1/3),i=2*r;e.a={draw:function(t,e){var n=Math.sqrt(e/i),o=n*r;t.moveTo(0,-n),t.lineTo(o,0),t.lineTo(0,n),t.lineTo(-o,0),t.closePath()}}},function(t,e,n){"use strict";e.a={draw:function(t,e){var n=Math.sqrt(e),r=-n/2;t.rect(r,r,n,n)}}},function(t,e,n){"use strict";var r=n(35),i=Math.sin(r.b/10)/Math.sin(7*r.b/10),o=Math.sin(r.c/10)*i,a=-Math.cos(r.c/10)*i;e.a={draw:function(t,e){var n=Math.sqrt(.8908130915292852*e),i=o*n,u=a*n;t.moveTo(0,-n),t.lineTo(i,u);for(var c=1;c<5;++c){var s=r.c*c/5,l=Math.cos(s),f=Math.sin(s);t.lineTo(f*n,-l*n),t.lineTo(l*i-f*u,f*i+l*u)}t.closePath()}}},function(t,e,n){"use strict";var r=Math.sqrt(3);e.a={draw:function(t,e){var n=-Math.sqrt(e/(3*r));t.moveTo(0,2*n),t.lineTo(-r*n,-n),t.lineTo(r*n,-n),t.closePath()}}},function(t,e,n){"use strict";var r=-.5,i=Math.sqrt(3)/2,o=1/Math.sqrt(12),a=3*(o/2+1);e.a={draw:function(t,e){var n=Math.sqrt(e/a),u=n/2,c=n*o,s=u,l=n*o+n,f=-s,p=l;t.moveTo(u,c),t.lineTo(s,l),t.lineTo(f,p),t.lineTo(r*u-i*c,i*u+r*c),t.lineTo(r*s-i*l,i*s+r*l),t.lineTo(r*f-i*p,i*f+r*p),t.lineTo(r*u+i*c,r*c-i*u),t.lineTo(r*s+i*l,r*l-i*s),t.lineTo(r*f+i*p,r*p-i*f),t.closePath()}}},function(t,e,n){"use strict";function r(t){return t.toISOString()}n.d(e,"b",function(){return o});var i=n(79),o="%Y-%m-%dT%H:%M:%S.%LZ",a=Date.prototype.toISOString?r:n.i(i.d)(o);e.a=a},function(t,e,n){"use strict";function r(t){if(0<=t.y&&t.y<100){var e=new Date(-1,t.m,t.d,t.H,t.M,t.S,t.L);return e.setFullYear(t.y),e}return new Date(t.y,t.m,t.d,t.H,t.M,t.S,t.L)}function i(t){if(0<=t.y&&t.y<100){var e=new Date(Date.UTC(-1,t.m,t.d,t.H,t.M,t.S,t.L));return e.setUTCFullYear(t.y),e}return new Date(Date.UTC(t.y,t.m,t.d,t.H,t.M,t.S,t.L))}function o(t){return{y:t,m:0,d:1,H:0,M:0,S:0,L:0}}function a(t){function e(t,e){return function(n){var r,i,o,a=[],u=-1,c=0,s=t.length;for(n instanceof Date||(n=new Date(+n));++u<s;)37===t.charCodeAt(u)&&(a.push(t.slice(c,u)),null!=(i=dt[r=t.charAt(++u)])?r=t.charAt(++u):i="e"===r?" ":"0",(o=e[r])&&(r=o(n,i)),a.push(r),c=u+1);return a.push(t.slice(c,u)),a.join("")}}function a(t,e){return function(r){var a,c,s=o(1900),l=u(s,t,r+="",0);if(l!=r.length)return null;if("Q"in s)return new Date(s.Q);if("p"in s&&(s.H=s.H%12+12*s.p),"V"in s){if(s.V<1||s.V>53)return null;"w"in s||(s.w=1),"Z"in s?(a=i(o(s.y)),c=a.getUTCDay(),a=c>4||0===c?ht.a.ceil(a):n.i(ht.a)(a),a=ht.b.offset(a,7*(s.V-1)),s.y=a.getUTCFullYear(),s.m=a.getUTCMonth(),s.d=a.getUTCDate()+(s.w+6)%7):(a=e(o(s.y)),c=a.getDay(),a=c>4||0===c?ht.c.ceil(a):n.i(ht.c)(a),a=ht.d.offset(a,7*(s.V-1)),s.y=a.getFullYear(),s.m=a.getMonth(),s.d=a.getDate()+(s.w+6)%7)}else("W"in s||"U"in s)&&("w"in s||(s.w="u"in s?s.u%7:"W"in s?1:0),c="Z"in s?i(o(s.y)).getUTCDay():e(o(s.y)).getDay(),s.m=0,s.d="W"in s?(s.w+6)%7+7*s.W-(c+5)%7:s.w+7*s.U-(c+6)%7);return"Z"in s?(s.H+=s.Z/100|0,s.M+=s.Z%100,i(s)):e(s)}}function u(t,e,n,r){for(var i,o,a=0,u=e.length,c=n.length;a<u;){if(r>=c)return-1;if(37===(i=e.charCodeAt(a++))){if(i=e.charAt(a++),!(o=Zt[i in dt?e.charAt(a++):i])||(r=o(t,n,r))<0)return-1}else if(i!=n.charCodeAt(r++))return-1}return r}function c(t,e,n){var r=Bt.exec(e.slice(n));return r?(t.p=Vt[r[0].toLowerCase()],n+r[0].length):-1}function vt(t,e,n){var r=Ht.exec(e.slice(n));return r?(t.w=qt[r[0].toLowerCase()],n+r[0].length):-1}function gt(t,e,n){var r=Wt.exec(e.slice(n));return r?(t.w=zt[r[0].toLowerCase()],n+r[0].length):-1}function mt(t,e,n){var r=Gt.exec(e.slice(n));return r?(t.m=$t[r[0].toLowerCase()],n+r[0].length):-1}function yt(t,e,n){var r=Yt.exec(e.slice(n));return r?(t.m=Kt[r[0].toLowerCase()],n+r[0].length):-1}function _t(t,e,n){return u(t,Ot,e,n)}function bt(t,e,n){return u(t,It,e,n)}function xt(t,e,n){return u(t,Dt,e,n)}function wt(t){return Ut[t.getDay()]}function Ct(t){return Lt[t.getDay()]}function kt(t){return jt[t.getMonth()]}function Et(t){return Ft[t.getMonth()]}function Mt(t){return Rt[+(t.getHours()>=12)]}function Tt(t){return Ut[t.getUTCDay()]}function St(t){return Lt[t.getUTCDay()]}function Nt(t){return jt[t.getUTCMonth()]}function At(t){return Ft[t.getUTCMonth()]}function Pt(t){return Rt[+(t.getUTCHours()>=12)]}var Ot=t.dateTime,It=t.date,Dt=t.time,Rt=t.periods,Lt=t.days,Ut=t.shortDays,Ft=t.months,jt=t.shortMonths,Bt=s(Rt),Vt=l(Rt),Wt=s(Lt),zt=l(Lt),Ht=s(Ut),qt=l(Ut),Yt=s(Ft),Kt=l(Ft),Gt=s(jt),$t=l(jt),Xt={a:wt,A:Ct,b:kt,B:Et,c:null,d:A,e:A,f:R,H:P,I:O,j:I,L:D,m:L,M:U,p:Mt,Q:ft,s:pt,S:F,u:j,U:B,V:V,w:W,W:z,x:null,X:null,y:H,Y:q,Z:Y,"%":lt},Qt={a:Tt,A:St,b:Nt,B:At,c:null,d:K,e:K,f:Z,H:G,I:$,j:X,L:Q,m:J,M:tt,p:Pt,Q:ft,s:pt,S:et,u:nt,U:rt,V:it,w:ot,W:at,x:null,X:null,y:ut,Y:ct,Z:st,"%":lt},Zt={a:vt,A:gt,b:mt,B:yt,c:_t,d:b,e:b,f:M,H:w,I:w,j:x,L:E,m:_,M:C,p:c,Q:S,s:N,S:k,u:p,U:h,V:d,w:f,W:v,x:bt,X:xt,y:m,Y:g,Z:y,"%":T};return Xt.x=e(It,Xt),Xt.X=e(Dt,Xt),Xt.c=e(Ot,Xt),Qt.x=e(It,Qt),Qt.X=e(Dt,Qt),Qt.c=e(Ot,Qt),{format:function(t){var n=e(t+="",Xt);return n.toString=function(){return t},n},parse:function(t){var e=a(t+="",r);return e.toString=function(){return t},e},utcFormat:function(t){var n=e(t+="",Qt);return n.toString=function(){return t},n},utcParse:function(t){var e=a(t,i);return e.toString=function(){return t},e}}}function u(t,e,n){var r=t<0?"-":"",i=(r?-t:t)+"",o=i.length;return r+(o<n?new Array(n-o+1).join(e)+i:i)}function c(t){return t.replace(mt,"\\$&")}function s(t){return new RegExp("^(?:"+t.map(c).join("|")+")","i")}function l(t){for(var e={},n=-1,r=t.length;++n<r;)e[t[n].toLowerCase()]=n;return e}function f(t,e,n){var r=vt.exec(e.slice(n,n+1));return r?(t.w=+r[0],n+r[0].length):-1}function p(t,e,n){var r=vt.exec(e.slice(n,n+1));return r?(t.u=+r[0],n+r[0].length):-1}function h(t,e,n){var r=vt.exec(e.slice(n,n+2));return r?(t.U=+r[0],n+r[0].length):-1}function d(t,e,n){var r=vt.exec(e.slice(n,n+2));return r?(t.V=+r[0],n+r[0].length):-1}function v(t,e,n){var r=vt.exec(e.slice(n,n+2));return r?(t.W=+r[0],n+r[0].length):-1}function g(t,e,n){var r=vt.exec(e.slice(n,n+4));return r?(t.y=+r[0],n+r[0].length):-1}function m(t,e,n){var r=vt.exec(e.slice(n,n+2));return r?(t.y=+r[0]+(+r[0]>68?1900:2e3),n+r[0].length):-1}function y(t,e,n){var r=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(e.slice(n,n+6));return r?(t.Z=r[1]?0:-(r[2]+(r[3]||"00")),n+r[0].length):-1}function _(t,e,n){var r=vt.exec(e.slice(n,n+2));return r?(t.m=r[0]-1,n+r[0].length):-1}function b(t,e,n){var r=vt.exec(e.slice(n,n+2));return r?(t.d=+r[0],n+r[0].length):-1}function x(t,e,n){var r=vt.exec(e.slice(n,n+3));return r?(t.m=0,t.d=+r[0],n+r[0].length):-1}function w(t,e,n){var r=vt.exec(e.slice(n,n+2));return r?(t.H=+r[0],n+r[0].length):-1}function C(t,e,n){var r=vt.exec(e.slice(n,n+2));return r?(t.M=+r[0],n+r[0].length):-1}function k(t,e,n){var r=vt.exec(e.slice(n,n+2));return r?(t.S=+r[0],n+r[0].length):-1}function E(t,e,n){var r=vt.exec(e.slice(n,n+3));return r?(t.L=+r[0],n+r[0].length):-1}function M(t,e,n){var r=vt.exec(e.slice(n,n+6));return r?(t.L=Math.floor(r[0]/1e3),n+r[0].length):-1}function T(t,e,n){var r=gt.exec(e.slice(n,n+1));return r?n+r[0].length:-1}function S(t,e,n){var r=vt.exec(e.slice(n));return r?(t.Q=+r[0],n+r[0].length):-1}function N(t,e,n){var r=vt.exec(e.slice(n));return r?(t.Q=1e3*+r[0],n+r[0].length):-1}function A(t,e){return u(t.getDate(),e,2)}function P(t,e){return u(t.getHours(),e,2)}function O(t,e){return u(t.getHours()%12||12,e,2)}function I(t,e){return u(1+ht.d.count(n.i(ht.e)(t),t),e,3)}function D(t,e){return u(t.getMilliseconds(),e,3)}function R(t,e){return D(t,e)+"000"}function L(t,e){return u(t.getMonth()+1,e,2)}function U(t,e){return u(t.getMinutes(),e,2)}function F(t,e){return u(t.getSeconds(),e,2)}function j(t){var e=t.getDay();return 0===e?7:e}function B(t,e){return u(ht.f.count(n.i(ht.e)(t),t),e,2)}function V(t,e){var r=t.getDay();return t=r>=4||0===r?n.i(ht.g)(t):ht.g.ceil(t),u(ht.g.count(n.i(ht.e)(t),t)+(4===n.i(ht.e)(t).getDay()),e,2)}function W(t){return t.getDay()}function z(t,e){return u(ht.c.count(n.i(ht.e)(t),t),e,2)}function H(t,e){return u(t.getFullYear()%100,e,2)}function q(t,e){return u(t.getFullYear()%1e4,e,4)}function Y(t){var e=t.getTimezoneOffset();return(e>0?"-":(e*=-1,"+"))+u(e/60|0,"0",2)+u(e%60,"0",2)}function K(t,e){return u(t.getUTCDate(),e,2)}function G(t,e){return u(t.getUTCHours(),e,2)}function $(t,e){return u(t.getUTCHours()%12||12,e,2)}function X(t,e){return u(1+ht.b.count(n.i(ht.h)(t),t),e,3)}function Q(t,e){return u(t.getUTCMilliseconds(),e,3)}function Z(t,e){return Q(t,e)+"000"}function J(t,e){return u(t.getUTCMonth()+1,e,2)}function tt(t,e){return u(t.getUTCMinutes(),e,2)}function et(t,e){return u(t.getUTCSeconds(),e,2)}function nt(t){var e=t.getUTCDay();return 0===e?7:e}function rt(t,e){return u(ht.i.count(n.i(ht.h)(t),t),e,2)}function it(t,e){var r=t.getUTCDay();return t=r>=4||0===r?n.i(ht.j)(t):ht.j.ceil(t),u(ht.j.count(n.i(ht.h)(t),t)+(4===n.i(ht.h)(t).getUTCDay()),e,2)}function ot(t){return t.getUTCDay()}function at(t,e){return u(ht.a.count(n.i(ht.h)(t),t),e,2)}function ut(t,e){return u(t.getUTCFullYear()%100,e,2)}function ct(t,e){return u(t.getUTCFullYear()%1e4,e,4)}function st(){return"+0000"}function lt(){return"%"}function ft(t){return+t}function pt(t){return Math.floor(+t/1e3)}e.a=a;var ht=n(80),dt={"-":"",_:" ",0:"0"},vt=/^\s*\d+/,gt=/^%/,mt=/[\\^$*+?|[\]().{}]/g},function(t,e,n){"use strict";var r=n(11),i={listen:function(t,e,n){return t.addEventListener?(t.addEventListener(e,n,!1),{remove:function(){t.removeEventListener(e,n,!1)}}):t.attachEvent?(t.attachEvent("on"+e,n),{remove:function(){t.detachEvent("on"+e,n)}}):void 0},capture:function(t,e,n){return t.addEventListener?(t.addEventListener(e,n,!0),{remove:function(){t.removeEventListener(e,n,!0)}}):{remove:r}},registerDefault:function(){}};t.exports=i},function(t,e,n){"use strict";function r(t){try{t.focus()}catch(t){}}t.exports=r},function(t,e,n){"use strict";function r(t){if(void 0===(t=t||("undefined"!=typeof document?document:void 0)))return null;try{return t.activeElement||t.body}catch(e){return t.body}}t.exports=r},function(t,e){function n(){throw new Error("setTimeout has not been defined")}function r(){throw new Error("clearTimeout has not been defined")}function i(t){if(l===setTimeout)return setTimeout(t,0);if((l===n||!l)&&setTimeout)return l=setTimeout,setTimeout(t,0);try{return l(t,0)}catch(e){try{return l.call(null,t,0)}catch(e){return l.call(this,t,0)}}}function o(t){if(f===clearTimeout)return clearTimeout(t);if((f===r||!f)&&clearTimeout)return f=clearTimeout,clearTimeout(t);try{return f(t)}catch(e){try{return f.call(null,t)}catch(e){return f.call(this,t)}}}function a(){v&&h&&(v=!1,h.length?d=h.concat(d):g=-1,d.length&&u())}function u(){if(!v){var t=i(a);v=!0;for(var e=d.length;e;){for(h=d,d=[];++g<e;)h&&h[g].run();g=-1,e=d.length}h=null,v=!1,o(t)}}function c(t,e){this.fun=t,this.array=e}function s(){}var l,f,p=t.exports={};!function(){try{l="function"==typeof setTimeout?setTimeout:n}catch(t){l=n}try{f="function"==typeof clearTimeout?clearTimeout:r}catch(t){f=r}}();var h,d=[],v=!1,g=-1;p.nextTick=function(t){var e=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)e[n-1]=arguments[n];d.push(new c(t,e)),1!==d.length||v||i(u)},c.prototype.run=function(){this.fun.apply(null,this.array)},p.title="browser",p.browser=!0,p.env={},p.argv=[],p.version="",p.versions={},p.on=s,p.addListener=s,p.once=s,p.off=s,p.removeListener=s,p.removeAllListeners=s,p.emit=s,p.prependListener=s,p.prependOnceListener=s,p.listeners=function(t){return[]},p.binding=function(t){throw new Error("process.binding is not supported")},p.cwd=function(){return"/"},p.chdir=function(t){throw new Error("process.chdir is not supported")},p.umask=function(){return 0}},function(t,e,n){"use strict";var r=n(343);t.exports=function(t){return r(t,!1)}},function(t,e,n){"use strict";function r(t,e){return t+e.charAt(0).toUpperCase()+e.substring(1)}var i={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},o=["Webkit","ms","Moz","O"];Object.keys(i).forEach(function(t){o.forEach(function(e){i[r(e,t)]=i[t]})});var a={background:{backgroundAttachment:!0,backgroundColor:!0,backgroundImage:!0,backgroundPositionX:!0,backgroundPositionY:!0,backgroundRepeat:!0},backgroundPosition:{backgroundPositionX:!0,backgroundPositionY:!0},border:{borderWidth:!0,borderStyle:!0,borderColor:!0},borderBottom:{borderBottomWidth:!0,borderBottomStyle:!0,borderBottomColor:!0},borderLeft:{borderLeftWidth:!0,borderLeftStyle:!0,borderLeftColor:!0},borderRight:{borderRightWidth:!0,borderRightStyle:!0,borderRightColor:!0},borderTop:{borderTopWidth:!0,borderTopStyle:!0,borderTopColor:!0},font:{fontStyle:!0,fontVariant:!0,fontWeight:!0,fontSize:!0,lineHeight:!0,fontFamily:!0},outline:{outlineWidth:!0,outlineStyle:!0,outlineColor:!0}},u={isUnitlessNumber:i,shorthandPropertyExpansions:a};t.exports=u},function(t,e,n){"use strict";function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var i=n(1),o=n(18),a=(n(0),function(){function t(e){r(this,t),this._callbacks=null,this._contexts=null,this._arg=e}return t.prototype.enqueue=function(t,e){this._callbacks=this._callbacks||[],this._callbacks.push(t),this._contexts=this._contexts||[],this._contexts.push(e)},t.prototype.notifyAll=function(){var t=this._callbacks,e=this._contexts,n=this._arg;if(t&&e){t.length!==e.length&&i("24"),this._callbacks=null,this._contexts=null;for(var r=0;r<t.length;r++)t[r].call(e[r],n);t.length=0,e.length=0}},t.prototype.checkpoint=function(){return this._callbacks?this._callbacks.length:0},t.prototype.rollback=function(t){this._callbacks&&this._contexts&&(this._callbacks.length=t,this._contexts.length=t)},t.prototype.reset=function(){this._callbacks=null,this._contexts=null},t.prototype.destructor=function(){this.reset()},t}());t.exports=o.addPoolingTo(a)},function(t,e,n){"use strict";function r(t){return!!s.hasOwnProperty(t)||!c.hasOwnProperty(t)&&(u.test(t)?(s[t]=!0,!0):(c[t]=!0,!1))}function i(t,e){return null==e||t.hasBooleanValue&&!e||t.hasNumericValue&&isNaN(e)||t.hasPositiveNumericValue&&e<1||t.hasOverloadedBooleanValue&&!1===e}var o=n(21),a=(n(4),n(9),n(407)),u=(n(2),new RegExp("^["+o.ATTRIBUTE_NAME_START_CHAR+"]["+o.ATTRIBUTE_NAME_CHAR+"]*$")),c={},s={},l={createMarkupForID:function(t){return o.ID_ATTRIBUTE_NAME+"="+a(t)},setAttributeForID:function(t,e){t.setAttribute(o.ID_ATTRIBUTE_NAME,e)},createMarkupForRoot:function(){return o.ROOT_ATTRIBUTE_NAME+'=""'},setAttributeForRoot:function(t){t.setAttribute(o.ROOT_ATTRIBUTE_NAME,"")},createMarkupForProperty:function(t,e){var n=o.properties.hasOwnProperty(t)?o.properties[t]:null;if(n){if(i(n,e))return"";var r=n.attributeName;return n.hasBooleanValue||n.hasOverloadedBooleanValue&&!0===e?r+'=""':r+"="+a(e)}return o.isCustomAttribute(t)?null==e?"":t+"="+a(e):null},createMarkupForCustomAttribute:function(t,e){return r(t)&&null!=e?t+"="+a(e):""},setValueForProperty:function(t,e,n){var r=o.properties.hasOwnProperty(e)?o.properties[e]:null;if(r){var a=r.mutationMethod;if(a)a(t,n);else{if(i(r,n))return void this.deleteValueForProperty(t,e);if(r.mustUseProperty)t[r.propertyName]=n;else{var u=r.attributeName,c=r.attributeNamespace;c?t.setAttributeNS(c,u,""+n):r.hasBooleanValue||r.hasOverloadedBooleanValue&&!0===n?t.setAttribute(u,""):t.setAttribute(u,""+n)}}}else if(o.isCustomAttribute(e))return void l.setValueForAttribute(t,e,n)},setValueForAttribute:function(t,e,n){if(r(e)){null==n?t.removeAttribute(e):t.setAttribute(e,""+n)}},deleteValueForAttribute:function(t,e){t.removeAttribute(e)},deleteValueForProperty:function(t,e){var n=o.properties.hasOwnProperty(e)?o.properties[e]:null;if(n){var r=n.mutationMethod;if(r)r(t,void 0);else if(n.mustUseProperty){var i=n.propertyName;n.hasBooleanValue?t[i]=!1:t[i]=""}else t.removeAttribute(n.attributeName)}else o.isCustomAttribute(e)&&t.removeAttribute(e)}};t.exports=l},function(t,e,n){"use strict";var r={hasCachedChildNodes:1};t.exports=r},function(t,e,n){"use strict";function r(){if(this._rootNodeID&&this._wrapperState.pendingUpdate){this._wrapperState.pendingUpdate=!1;var t=this._currentElement.props,e=u.getValue(t);null!=e&&i(this,Boolean(t.multiple),e)}}function i(t,e,n){var r,i,o=c.getNodeFromInstance(t).options;if(e){for(r={},i=0;i<n.length;i++)r[""+n[i]]=!0;for(i=0;i<o.length;i++){var a=r.hasOwnProperty(o[i].value);o[i].selected!==a&&(o[i].selected=a)}}else{for(r=""+n,i=0;i<o.length;i++)if(o[i].value===r)return void(o[i].selected=!0);o.length&&(o[0].selected=!0)}}function o(t){var e=this._currentElement.props,n=u.executeOnChange(e,t);return this._rootNodeID&&(this._wrapperState.pendingUpdate=!0),s.asap(r,this),n}var a=n(3),u=n(86),c=n(4),s=n(12),l=(n(2),!1),f={getHostProps:function(t,e){return a({},e,{onChange:t._wrapperState.onChange,value:void 0})},mountWrapper:function(t,e){var n=u.getValue(e);t._wrapperState={pendingUpdate:!1,initialValue:null!=n?n:e.defaultValue,listeners:null,onChange:o.bind(t),wasMultiple:Boolean(e.multiple)},void 0===e.value||void 0===e.defaultValue||l||(l=!0)},getSelectValueContext:function(t){return t._wrapperState.initialValue},postUpdateWrapper:function(t){var e=t._currentElement.props;t._wrapperState.initialValue=void 0;var n=t._wrapperState.wasMultiple;t._wrapperState.wasMultiple=Boolean(e.multiple);var r=u.getValue(e);null!=r?(t._wrapperState.pendingUpdate=!1,i(t,Boolean(e.multiple),r)):n!==Boolean(e.multiple)&&(null!=e.defaultValue?i(t,Boolean(e.multiple),e.defaultValue):i(t,Boolean(e.multiple),e.multiple?[]:""))}};t.exports=f},function(t,e,n){"use strict";var r,i={injectEmptyComponentFactory:function(t){r=t}},o={create:function(t){return r(t)}};o.injection=i,t.exports=o},function(t,e,n){"use strict";var r={logTopLevelRenders:!1};t.exports=r},function(t,e,n){"use strict";function r(t){return u||a("111",t.type),new u(t)}function i(t){return new c(t)}function o(t){return t instanceof c}var a=n(1),u=(n(0),null),c=null,s={injectGenericComponentClass:function(t){u=t},injectTextComponentClass:function(t){c=t}},l={createInternalComponent:r,createInstanceForText:i,isTextComponent:o,injection:s};t.exports=l},function(t,e,n){"use strict";function r(t){return o(document.documentElement,t)}var i=n(367),o=n(331),a=n(154),u=n(155),c={hasSelectionCapabilities:function(t){var e=t&&t.nodeName&&t.nodeName.toLowerCase();return e&&("input"===e&&"text"===t.type||"textarea"===e||"true"===t.contentEditable)},getSelectionInformation:function(){var t=u();return{focusedElem:t,selectionRange:c.hasSelectionCapabilities(t)?c.getSelection(t):null}},restoreSelection:function(t){var e=u(),n=t.focusedElem,i=t.selectionRange;e!==n&&r(n)&&(c.hasSelectionCapabilities(n)&&c.setSelection(n,i),a(n))},getSelection:function(t){var e;if("selectionStart"in t)e={start:t.selectionStart,end:t.selectionEnd};else if(document.selection&&t.nodeName&&"input"===t.nodeName.toLowerCase()){var n=document.selection.createRange();n.parentElement()===t&&(e={start:-n.moveStart("character",-t.value.length),end:-n.moveEnd("character",-t.value.length)})}else e=i.getOffsets(t);return e||{start:0,end:0}},setSelection:function(t,e){var n=e.start,r=e.end;if(void 0===r&&(r=n),"selectionStart"in t)t.selectionStart=n,t.selectionEnd=Math.min(r,t.value.length);else if(document.selection&&t.nodeName&&"input"===t.nodeName.toLowerCase()){var o=t.createTextRange();o.collapse(!0),o.moveStart("character",n),o.moveEnd("character",r-n),o.select()}else i.setOffsets(t,e)}};t.exports=c},function(t,e,n){"use strict";function r(t,e){for(var n=Math.min(t.length,e.length),r=0;r<n;r++)if(t.charAt(r)!==e.charAt(r))return r;return t.length===e.length?-1:n}function i(t){return t?t.nodeType===D?t.documentElement:t.firstChild:null}function o(t){return t.getAttribute&&t.getAttribute(P)||""}function a(t,e,n,r,i){var o;if(x.logTopLevelRenders){var a=t._currentElement.props.child,u=a.type;o="React mount: "+("string"==typeof u?u:u.displayName||u.name),console.time(o)}var c=k.mountComponent(t,n,null,_(t,e),i,0);o&&console.timeEnd(o),t._renderedComponent._topLevelWrapper=t,j._mountImageIntoNode(c,e,t,r,n)}function u(t,e,n,r){var i=M.ReactReconcileTransaction.getPooled(!n&&b.useCreateElement);i.perform(a,null,t,e,i,n,r),M.ReactReconcileTransaction.release(i)}function c(t,e,n){for(k.unmountComponent(t,n),e.nodeType===D&&(e=e.documentElement);e.lastChild;)e.removeChild(e.lastChild)}function s(t){var e=i(t);if(e){var n=y.getInstanceFromNode(e);return!(!n||!n._hostParent)}}function l(t){return!(!t||t.nodeType!==I&&t.nodeType!==D&&t.nodeType!==R)}function f(t){var e=i(t),n=e&&y.getInstanceFromNode(e);return n&&!n._hostParent?n:null}function p(t){var e=f(t);return e?e._hostContainerInfo._topLevelWrapper:null}var h=n(1),d=n(20),v=n(21),g=n(26),m=n(53),y=(n(15),n(4)),_=n(361),b=n(363),x=n(164),w=n(39),C=(n(9),n(377)),k=n(24),E=n(89),M=n(12),T=n(51),S=n(174),N=(n(0),n(57)),A=n(96),P=(n(2),v.ID_ATTRIBUTE_NAME),O=v.ROOT_ATTRIBUTE_NAME,I=1,D=9,R=11,L={},U=1,F=function(){this.rootID=U++};F.prototype.isReactComponent={},F.prototype.render=function(){return this.props.child},F.isReactTopLevelWrapper=!0;var j={TopLevelWrapper:F,_instancesByReactRootID:L,scrollMonitor:function(t,e){e()},_updateRootComponent:function(t,e,n,r,i){return j.scrollMonitor(r,function(){E.enqueueElementInternal(t,e,n),i&&E.enqueueCallbackInternal(t,i)}),t},_renderNewRootComponent:function(t,e,n,r){l(e)||h("37"),m.ensureScrollValueMonitoring();var i=S(t,!1);M.batchedUpdates(u,i,e,n,r);var o=i._instance.rootID;return L[o]=i,i},renderSubtreeIntoContainer:function(t,e,n,r){return null!=t&&w.has(t)||h("38"),j._renderSubtreeIntoContainer(t,e,n,r)},_renderSubtreeIntoContainer:function(t,e,n,r){E.validateCallback(r,"ReactDOM.render"),g.isValidElement(e)||h("39","string"==typeof e?" Instead of passing a string like 'div', pass React.createElement('div') or <div />.":"function"==typeof e?" Instead of passing a class like Foo, pass React.createElement(Foo) or <Foo />.":null!=e&&void 0!==e.props?" This may be caused by unintentionally loading two independent copies of React.":"");var a,u=g.createElement(F,{child:e});if(t){var c=w.get(t);a=c._processChildContext(c._context)}else a=T;var l=p(n);if(l){var f=l._currentElement,d=f.props.child;if(A(d,e)){var v=l._renderedComponent.getPublicInstance(),m=r&&function(){r.call(v)};return j._updateRootComponent(l,u,a,n,m),v}j.unmountComponentAtNode(n)}var y=i(n),_=y&&!!o(y),b=s(n),x=_&&!l&&!b,C=j._renderNewRootComponent(u,n,x,a)._renderedComponent.getPublicInstance();return r&&r.call(C),C},render:function(t,e,n){return j._renderSubtreeIntoContainer(null,t,e,n)},unmountComponentAtNode:function(t){l(t)||h("40");var e=p(t);if(!e){s(t),1===t.nodeType&&t.hasAttribute(O);return!1}return delete L[e._instance.rootID],M.batchedUpdates(c,e,t,!1),!0},_mountImageIntoNode:function(t,e,n,o,a){if(l(e)||h("41"),o){var u=i(e);if(C.canReuseMarkup(t,u))return void y.precacheNode(n,u);var c=u.getAttribute(C.CHECKSUM_ATTR_NAME);u.removeAttribute(C.CHECKSUM_ATTR_NAME);var s=u.outerHTML;u.setAttribute(C.CHECKSUM_ATTR_NAME,c);var f=t,p=r(f,s),v=" (client) "+f.substring(p-20,p+20)+"\n (server) "+s.substring(p-20,p+20);e.nodeType===D&&h("42",v)}if(e.nodeType===D&&h("43"),a.useCreateElement){for(;e.lastChild;)e.removeChild(e.lastChild);d.insertTreeBefore(e,t,null)}else N(e,t),y.precacheNode(n,e.firstChild)}};t.exports=j},function(t,e,n){"use strict";var r=n(1),i=n(26),o=(n(0),{HOST:0,COMPOSITE:1,EMPTY:2,getType:function(t){return null===t||!1===t?o.EMPTY:i.isValidElement(t)?"function"==typeof t.type?o.COMPOSITE:o.HOST:void r("26",t)}});t.exports=o},function(t,e,n){"use strict";function r(t,e){return null==e&&i("30"),null==t?e:Array.isArray(t)?Array.isArray(e)?(t.push.apply(t,e),t):(t.push(e),t):Array.isArray(e)?[t].concat(e):[t,e]}var i=n(1);n(0);t.exports=r},function(t,e,n){"use strict";function r(t,e,n){Array.isArray(t)?t.forEach(e,n):t&&e.call(n,t)}t.exports=r},function(t,e,n){"use strict";function r(t){for(var e;(e=t._renderedNodeType)===i.COMPOSITE;)t=t._renderedComponent;return e===i.HOST?t._renderedComponent:e===i.EMPTY?null:void 0}var i=n(168);t.exports=r},function(t,e,n){"use strict";function r(){return!o&&i.canUseDOM&&(o="textContent"in document.documentElement?"textContent":"innerText"),o}var i=n(6),o=null;t.exports=r},function(t,e,n){"use strict";function r(t){var e=t.type,n=t.nodeName;return n&&"input"===n.toLowerCase()&&("checkbox"===e||"radio"===e)}function i(t){return t._wrapperState.valueTracker}function o(t,e){t._wrapperState.valueTracker=e}function a(t){t._wrapperState.valueTracker=null}function u(t){var e;return t&&(e=r(t)?""+t.checked:t.value),e}var c=n(4),s={_getTrackerFromNode:function(t){return i(c.getInstanceFromNode(t))},track:function(t){if(!i(t)){var e=c.getNodeFromInstance(t),n=r(e)?"checked":"value",u=Object.getOwnPropertyDescriptor(e.constructor.prototype,n),s=""+e[n];e.hasOwnProperty(n)||"function"!=typeof u.get||"function"!=typeof u.set||(Object.defineProperty(e,n,{enumerable:u.enumerable,configurable:!0,get:function(){return u.get.call(this)},set:function(t){s=""+t,u.set.call(this,t)}}),o(t,{getValue:function(){return s},setValue:function(t){s=""+t},stopTracking:function(){a(t),delete e[n]}}))}},updateValueIfChanged:function(t){if(!t)return!1;var e=i(t);if(!e)return s.track(t),!0;var n=e.getValue(),r=u(c.getNodeFromInstance(t));return r!==n&&(e.setValue(r),!0)},stopTracking:function(t){var e=i(t);e&&e.stopTracking()}};t.exports=s},function(t,e,n){"use strict";function r(t){if(t){var e=t.getName();if(e)return" Check the render method of `"+e+"`."}return""}function i(t){return"function"==typeof t&&void 0!==t.prototype&&"function"==typeof t.prototype.mountComponent&&"function"==typeof t.prototype.receiveComponent}function o(t,e){var n;if(null===t||!1===t)n=s.create(o);else if("object"==typeof t){var u=t,c=u.type;if("function"!=typeof c&&"string"!=typeof c){var p="";p+=r(u._owner),a("130",null==c?c:typeof c,p)}"string"==typeof u.type?n=l.createInternalComponent(u):i(u.type)?(n=new u.type(u),n.getHostNode||(n.getHostNode=n.getNativeNode)):n=new f(u)}else"string"==typeof t||"number"==typeof t?n=l.createInstanceForText(t):a("131",typeof t);return n._mountIndex=0,n._mountImage=null,n}var a=n(1),u=n(3),c=n(358),s=n(163),l=n(165),f=(n(420),n(0),n(2),function(t){this.construct(t)});u(f.prototype,c,{_instantiateReactComponent:o}),t.exports=o},function(t,e,n){"use strict";function r(t){var e=t&&t.nodeName&&t.nodeName.toLowerCase();return"input"===e?!!i[t.type]:"textarea"===e}var i={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};t.exports=r},function(t,e,n){"use strict";var r=n(6),i=n(56),o=n(57),a=function(t,e){if(e){var n=t.firstChild;if(n&&n===t.lastChild&&3===n.nodeType)return void(n.nodeValue=e)}t.textContent=e};r.canUseDOM&&("textContent"in document.documentElement||(a=function(t,e){if(3===t.nodeType)return void(t.nodeValue=e);o(t,i(e))})),t.exports=a},function(t,e,n){"use strict";function r(t,e){return t&&"object"==typeof t&&null!=t.key?s.escape(t.key):e.toString(36)}function i(t,e,n,o){var p=typeof t;if("undefined"!==p&&"boolean"!==p||(t=null),null===t||"string"===p||"number"===p||"object"===p&&t.$$typeof===u)return n(o,t,""===e?l+r(t,0):e),1;var h,d,v=0,g=""===e?l:e+f;if(Array.isArray(t))for(var m=0;m<t.length;m++)h=t[m],d=g+r(h,m),v+=i(h,d,n,o);else{var y=c(t);if(y){var _,b=y.call(t);if(y!==t.entries)for(var x=0;!(_=b.next()).done;)h=_.value,d=g+r(h,x++),v+=i(h,d,n,o);else for(;!(_=b.next()).done;){var w=_.value;w&&(h=w[1],d=g+s.escape(w[0])+f+r(h,0),v+=i(h,d,n,o))}}else if("object"===p){var C="",k=String(t);a("31","[object Object]"===k?"object with keys {"+Object.keys(t).join(", ")+"}":k,C)}}return v}function o(t,e,n){return null==t?0:i(t,"",e,n)}var a=n(1),u=(n(15),n(373)),c=n(404),s=(n(0),n(85)),l=(n(2),"."),f=":";t.exports=o},function(t,e,n){"use strict";function r(t,e,n){this.props=t,this.context=e,this.refs=s,this.updater=n||c}function i(t,e,n){this.props=t,this.context=e,this.refs=s,this.updater=n||c}function o(){}var a=n(40),u=n(3),c=n(181),s=(n(182),n(51));n(0),n(421);r.prototype.isReactComponent={},r.prototype.setState=function(t,e){"object"!=typeof t&&"function"!=typeof t&&null!=t&&a("85"),this.updater.enqueueSetState(this,t),e&&this.updater.enqueueCallback(this,e,"setState")},r.prototype.forceUpdate=function(t){this.updater.enqueueForceUpdate(this),t&&this.updater.enqueueCallback(this,t,"forceUpdate")};o.prototype=r.prototype,i.prototype=new o,i.prototype.constructor=i,u(i.prototype,r.prototype),i.prototype.isPureReactComponent=!0,t.exports={Component:r,PureComponent:i}},function(t,e,n){"use strict";function r(t){var e=Function.prototype.toString,n=Object.prototype.hasOwnProperty,r=RegExp("^"+e.call(n).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");try{var i=e.call(t);return r.test(i)}catch(t){return!1}}function i(t){var e=s(t);if(e){var n=e.childIDs;l(t),n.forEach(i)}}function o(t,e,n){return"\n in "+(t||"Unknown")+(e?" (at "+e.fileName.replace(/^.*[\\\/]/,"")+":"+e.lineNumber+")":n?" (created by "+n+")":"")}function a(t){return null==t?"#empty":"string"==typeof t||"number"==typeof t?"#text":"string"==typeof t.type?t.type:t.type.displayName||t.type.name||"Unknown"}function u(t){var e,n=E.getDisplayName(t),r=E.getElement(t),i=E.getOwnerID(t);return i&&(e=E.getDisplayName(i)),o(n,r&&r._source,e)}var c,s,l,f,p,h,d,v=n(40),g=n(15),m=(n(0),n(2),"function"==typeof Array.from&&"function"==typeof Map&&r(Map)&&null!=Map.prototype&&"function"==typeof Map.prototype.keys&&r(Map.prototype.keys)&&"function"==typeof Set&&r(Set)&&null!=Set.prototype&&"function"==typeof Set.prototype.keys&&r(Set.prototype.keys));if(m){var y=new Map,_=new Set;c=function(t,e){y.set(t,e)},s=function(t){return y.get(t)},l=function(t){y.delete(t)},f=function(){return Array.from(y.keys())},p=function(t){_.add(t)},h=function(t){_.delete(t)},d=function(){return Array.from(_.keys())}}else{var b={},x={},w=function(t){return"."+t},C=function(t){return parseInt(t.substr(1),10)};c=function(t,e){var n=w(t);b[n]=e},s=function(t){var e=w(t);return b[e]},l=function(t){var e=w(t);delete b[e]},f=function(){return Object.keys(b).map(C)},p=function(t){var e=w(t);x[e]=!0},h=function(t){var e=w(t);delete x[e]},d=function(){return Object.keys(x).map(C)}}var k=[],E={onSetChildren:function(t,e){var n=s(t);n||v("144"),n.childIDs=e;for(var r=0;r<e.length;r++){var i=e[r],o=s(i);o||v("140"),null==o.childIDs&&"object"==typeof o.element&&null!=o.element&&v("141"),o.isMounted||v("71"),null==o.parentID&&(o.parentID=t),o.parentID!==t&&v("142",i,o.parentID,t)}},onBeforeMountComponent:function(t,e,n){c(t,{element:e,parentID:n,text:null,childIDs:[],isMounted:!1,updateCount:0})},onBeforeUpdateComponent:function(t,e){var n=s(t);n&&n.isMounted&&(n.element=e)},onMountComponent:function(t){var e=s(t);e||v("144"),e.isMounted=!0,0===e.parentID&&p(t)},onUpdateComponent:function(t){var e=s(t);e&&e.isMounted&&e.updateCount++},onUnmountComponent:function(t){var e=s(t);if(e){e.isMounted=!1;0===e.parentID&&h(t)}k.push(t)},purgeUnmountedComponents:function(){if(!E._preventPurging){for(var t=0;t<k.length;t++){i(k[t])}k.length=0}},isMounted:function(t){var e=s(t);return!!e&&e.isMounted},getCurrentStackAddendum:function(t){var e="";if(t){var n=a(t),r=t._owner;e+=o(n,t._source,r&&r.getName())}var i=g.current,u=i&&i._debugID;return e+=E.getStackAddendumByID(u)},getStackAddendumByID:function(t){for(var e="";t;)e+=u(t),t=E.getParentID(t);return e},getChildIDs:function(t){var e=s(t);return e?e.childIDs:[]},getDisplayName:function(t){var e=E.getElement(t);return e?a(e):null},getElement:function(t){var e=s(t);return e?e.element:null},getOwnerID:function(t){var e=E.getElement(t);return e&&e._owner?e._owner._debugID:null},getParentID:function(t){var e=s(t);return e?e.parentID:null},getSource:function(t){var e=s(t),n=e?e.element:null;return null!=n?n._source:null},getText:function(t){var e=E.getElement(t);return"string"==typeof e?e:"number"==typeof e?""+e:null},getUpdateCount:function(t){var e=s(t);return e?e.updateCount:0},getRootIDs:d,getRegisteredIDs:f,pushNonStandardWarningStack:function(t,e){if("function"==typeof console.reactStack){var n=[],r=g.current,i=r&&r._debugID;try{for(t&&n.push({name:i?E.getDisplayName(i):null,fileName:e?e.fileName:null,lineNumber:e?e.lineNumber:null});i;){var o=E.getElement(i),a=E.getParentID(i),u=E.getOwnerID(i),c=u?E.getDisplayName(u):null,s=o&&o._source;n.push({name:c,fileName:s?s.fileName:null,lineNumber:s?s.lineNumber:null}),i=a}}catch(t){}console.reactStack(n)}},popNonStandardWarningStack:function(){"function"==typeof console.reactStackEnd&&console.reactStackEnd()}};t.exports=E},function(t,e,n){"use strict";var r="function"==typeof Symbol&&Symbol.for&&Symbol.for("react.element")||60103;t.exports=r},function(t,e,n){"use strict";var r=(n(2),{isMounted:function(t){return!1},enqueueCallback:function(t,e){},enqueueForceUpdate:function(t){},enqueueReplaceState:function(t,e){},enqueueSetState:function(t,e){}});t.exports=r},function(t,e,n){"use strict";var r=!1;t.exports=r},,function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function a(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var u="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},c=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),s=n(41),l=r(s),f=n(129),p=n(66),h=(n(7),n(29)),d=n(78),v=n(112),g=n(136),m=n(10),y=n(38),_=n(58),b=r(_),x=function(t){function e(){i(this,e);var t=o(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));return window.lastAdditiveForceArrayVisualizer=t,t.topOffset=28,t.leftOffset=80,t.height=350,t.effectFormat=(0,h.format)(".2"),t.redraw=(0,y.debounce)(function(){return t.draw()},200),t}return a(e,t),c(e,[{key:"componentDidMount",value:function(){var t=this;this.mainGroup=this.svg.append("g"),this.onTopGroup=this.svg.append("g"),this.xaxisElement=this.onTopGroup.append("g").attr("transform","translate(0,35)").attr("class","force-bar-array-xaxis"),this.yaxisElement=this.onTopGroup.append("g").attr("transform","translate(0,35)").attr("class","force-bar-array-yaxis"),this.hoverGroup1=this.svg.append("g"),this.hoverGroup2=this.svg.append("g"),this.baseValueTitle=this.svg.append("text"),this.hoverLine=this.svg.append("line"),this.hoverxOutline=this.svg.append("text").attr("text-anchor","middle").attr("font-weight","bold").attr("fill","#fff").attr("stroke","#fff").attr("stroke-width","6").attr("font-size","12px"),this.hoverx=this.svg.append("text").attr("text-anchor","middle").attr("font-weight","bold").attr("fill","#000").attr("font-size","12px"),this.hoverxTitle=this.svg.append("text").attr("text-anchor","middle").attr("opacity",.6).attr("font-size","12px"),this.hoveryOutline=this.svg.append("text").attr("text-anchor","end").attr("font-weight","bold").attr("fill","#fff").attr("stroke","#fff").attr("stroke-width","6").attr("font-size","12px"),this.hovery=this.svg.append("text").attr("text-anchor","end").attr("font-weight","bold").attr("fill","#000").attr("font-size","12px"),this.xlabel=this.wrapper.select(".additive-force-array-xlabel"),this.ylabel=this.wrapper.select(".additive-force-array-ylabel");var e=void 0;"string"==typeof this.props.plot_cmap?this.props.plot_cmap in b.default.colors?e=b.default.colors[this.props.plot_cmap]:(console.log("Invalid color map name, reverting to default."),e=b.default.colors.RdBu):Array.isArray(this.props.plot_cmap)&&(e=this.props.plot_cmap),this.colors=e.map(function(t){return(0,m.hsl)(t)}),this.brighterColors=[1.45,1.6].map(function(e,n){return t.colors[n].brighter(e)});var n=(0,h.format)(",.4");if(null!=this.props.ordering_keys&&null!=this.props.ordering_keys_time_format){var r=function(t){return"object"==(void 0===t?"undefined":u(t))?this.formatTime(t):n(t)};this.parseTime=(0,d.timeParse)(this.props.ordering_keys_time_format),this.formatTime=(0,d.timeFormat)(this.props.ordering_keys_time_format),this.xtickFormat=r}else this.parseTime=null,this.formatTime=null,this.xtickFormat=n;this.xscale=(0,p.scaleLinear)(),this.xaxis=(0,v.axisBottom)().scale(this.xscale).tickSizeInner(4).tickSizeOuter(0).tickFormat(function(e){return t.xtickFormat(e)}).tickPadding(-18),this.ytickFormat=n,this.yscale=(0,p.scaleLinear)(),this.yaxis=(0,v.axisLeft)().scale(this.yscale).tickSizeInner(4).tickSizeOuter(0).tickFormat(function(e){return t.ytickFormat(t.invLinkFunction(e))}).tickPadding(2),this.xlabel.node().onchange=function(){return t.internalDraw()},this.ylabel.node().onchange=function(){return t.internalDraw()},this.svg.on("mousemove",function(e){return t.mouseMoved(e)}),this.svg.on("click",function(e){return alert("This original index of the sample you clicked is "+t.nearestExpIndex)}),this.svg.on("mouseout",function(e){return t.mouseOut(e)}),window.addEventListener("resize",this.redraw),window.setTimeout(this.redraw,50)}},{key:"componentDidUpdate",value:function(){this.draw()}},{key:"mouseOut",value:function(){this.hoverLine.attr("display","none"),this.hoverx.attr("display","none"),this.hoverxOutline.attr("display","none"),this.hoverxTitle.attr("display","none"),this.hovery.attr("display","none"),this.hoveryOutline.attr("display","none"),this.hoverGroup1.attr("display","none"),this.hoverGroup2.attr("display","none")}},{key:"mouseMoved",value:function(t){var e=this,n=void 0,r=void 0;this.hoverLine.attr("display",""),this.hoverx.attr("display",""),this.hoverxOutline.attr("display",""),this.hoverxTitle.attr("display",""),this.hovery.attr("display",""),this.hoveryOutline.attr("display",""),this.hoverGroup1.attr("display",""),this.hoverGroup2.attr("display","");var i=(0,f.mouse)(this.svg.node())[0];if(this.props.explanations){for(n=0;n<this.props.explanations.length;++n)(!r||Math.abs(r.xmapScaled-i)>Math.abs(this.props.explanations[n].xmapScaled-i))&&(r=this.props.explanations[n],this.nearestExpIndex=n);this.hoverLine.attr("x1",r.xmapScaled).attr("x2",r.xmapScaled).attr("y1",0+this.topOffset).attr("y2",this.height),this.hoverx.attr("x",r.xmapScaled).attr("y",this.topOffset-5).text(this.xtickFormat(r.xmap)),this.hoverxOutline.attr("x",r.xmapScaled).attr("y",this.topOffset-5).text(this.xtickFormat(r.xmap)),this.hoverxTitle.attr("x",r.xmapScaled).attr("y",this.topOffset-18).text(r.count>1?r.count+" averaged samples":""),this.hovery.attr("x",this.leftOffset-6).attr("y",r.joinPointy).text(this.ytickFormat(this.invLinkFunction(r.joinPoint))),this.hoveryOutline.attr("x",this.leftOffset-6).attr("y",r.joinPointy).text(this.ytickFormat(this.invLinkFunction(r.joinPoint)));for(var o=(this.props.featureNames.length,[]),a=void 0,u=void 0,c=this.currPosOrderedFeatures.length-1;c>=0;--c){var s=this.currPosOrderedFeatures[c],l=r.features[s];u=5+(l.posyTop+l.posyBottom)/2,(!a||u-a>=15)&&l.posyTop-l.posyBottom>=6&&(o.push(l),a=u)}var p=[];a=void 0;var h=!0,d=!1,v=void 0;try{for(var g,m=this.currNegOrderedFeatures[Symbol.iterator]();!(h=(g=m.next()).done);h=!0){var y=g.value,_=r.features[y];u=5+(_.negyTop+_.negyBottom)/2,(!a||a-u>=15)&&_.negyTop-_.negyBottom>=6&&(p.push(_),a=u)}}catch(t){d=!0,v=t}finally{try{!h&&m.return&&m.return()}finally{if(d)throw v}}var b=function(t){var n="";return null!==t.value&&void 0!==t.value&&(n=" = "+(isNaN(t.value)?t.value:e.ytickFormat(t.value))),r.count>1?"mean("+e.props.featureNames[t.ind]+")"+n:e.props.featureNames[t.ind]+n},x=this.hoverGroup1.selectAll(".pos-values").data(o);x.enter().append("text").attr("class","pos-values").merge(x).attr("x",r.xmapScaled+5).attr("y",function(t){return 4+(t.posyTop+t.posyBottom)/2}).attr("text-anchor","start").attr("font-size",12).attr("stroke","#fff").attr("fill","#fff").attr("stroke-width","4").attr("stroke-linejoin","round").attr("opacity",1).text(b),x.exit().remove();var w=this.hoverGroup2.selectAll(".pos-values").data(o);w.enter().append("text").attr("class","pos-values").merge(w).attr("x",r.xmapScaled+5).attr("y",function(t){return 4+(t.posyTop+t.posyBottom)/2}).attr("text-anchor","start").attr("font-size",12).attr("fill",this.colors[0]).text(b),w.exit().remove();var C=this.hoverGroup1.selectAll(".neg-values").data(p);C.enter().append("text").attr("class","neg-values").merge(C).attr("x",r.xmapScaled+5).attr("y",function(t){return 4+(t.negyTop+t.negyBottom)/2}).attr("text-anchor","start").attr("font-size",12).attr("stroke","#fff").attr("fill","#fff").attr("stroke-width","4").attr("stroke-linejoin","round").attr("opacity",1).text(b),C.exit().remove();var k=this.hoverGroup2.selectAll(".neg-values").data(p);k.enter().append("text").attr("class","neg-values").merge(k).attr("x",r.xmapScaled+5).attr("y",function(t){return 4+(t.negyTop+t.negyBottom)/2}).attr("text-anchor","start").attr("font-size",12).attr("fill",this.colors[1]).text(b),k.exit().remove()}}},{key:"draw",value:function(){var t=this;if(this.props.explanations&&0!==this.props.explanations.length){(0,y.each)(this.props.explanations,function(t,e){return t.origInd=e});var e={},n={},r={},i=!0,o=!1,a=void 0;try{for(var u,c=this.props.explanations[Symbol.iterator]();!(i=(u=c.next()).done);i=!0){var s=u.value;for(var l in s.features)void 0===e[l]&&(e[l]=0,n[l]=0,r[l]=0),s.features[l].effect>0?e[l]+=s.features[l].effect:n[l]-=s.features[l].effect,null!==s.features[l].value&&void 0!==s.features[l].value&&(r[l]+=1)}}catch(t){o=!0,a=t}finally{try{!i&&c.return&&c.return()}finally{if(o)throw a}}this.usedFeatures=(0,y.sortBy)((0,y.keys)(e),function(t){return-(e[t]+n[t])}),console.log("found ",this.usedFeatures.length," used features"),this.posOrderedFeatures=(0,y.sortBy)(this.usedFeatures,function(t){return e[t]}),this.negOrderedFeatures=(0,y.sortBy)(this.usedFeatures,function(t){return-n[t]}),this.singleValueFeatures=(0,y.filter)(this.usedFeatures,function(t){return r[t]>0});var f=["sample order by similarity","sample order by output value","original sample ordering"].concat(this.singleValueFeatures.map(function(e){return t.props.featureNames[e]}));null!=this.props.ordering_keys&&f.unshift("sample order by key");var p=this.xlabel.selectAll("option").data(f);p.enter().append("option").merge(p).attr("value",function(t){return t}).text(function(t){return t}),p.exit().remove();var h=this.props.outNames[0]?this.props.outNames[0]:"model output value";f=(0,y.map)(this.usedFeatures,function(e){return[t.props.featureNames[e],t.props.featureNames[e]+" effects"]}),f.unshift(["model output value",h]);var d=this.ylabel.selectAll("option").data(f);d.enter().append("option").merge(d).attr("value",function(t){return t[0]}).text(function(t){return t[1]}),d.exit().remove(),this.ylabel.style("top",(this.height-10-this.topOffset)/2+this.topOffset+"px").style("left",10-this.ylabel.node().offsetWidth/2+"px"),this.internalDraw()}}},{key:"internalDraw",value:function(){var t=this,e=!0,n=!1,r=void 0;try{for(var i,o=this.props.explanations[Symbol.iterator]();!(e=(i=o.next()).done);e=!0){var a=i.value,u=!0,c=!1,s=void 0;try{for(var l,f=this.usedFeatures[Symbol.iterator]();!(u=(l=f.next()).done);u=!0){var h=l.value;a.features.hasOwnProperty(h)||(a.features[h]={effect:0,value:0}),a.features[h].ind=h}}catch(t){c=!0,s=t}finally{try{!u&&f.return&&f.return()}finally{if(c)throw s}}}}catch(t){n=!0,r=t}finally{try{!e&&o.return&&o.return()}finally{if(n)throw r}}var d=void 0,v=this.xlabel.node().value,m="sample order by key"===v&&null!=this.props.ordering_keys_time_format;if(this.xscale=m?(0,p.scaleTime)():(0,p.scaleLinear)(),this.xaxis.scale(this.xscale),"sample order by similarity"===v)d=(0,y.sortBy)(this.props.explanations,function(t){return t.simIndex}),(0,y.each)(d,function(t,e){return t.xmap=e});else if("sample order by output value"===v)d=(0,y.sortBy)(this.props.explanations,function(t){return-t.outValue}),(0,y.each)(d,function(t,e){return t.xmap=e});else if("original sample ordering"===v)d=(0,y.sortBy)(this.props.explanations,function(t){return t.origInd}),(0,y.each)(d,function(t,e){return t.xmap=e});else if("sample order by key"===v)d=this.props.explanations,m?(0,y.each)(d,function(e,n){return e.xmap=t.parseTime(t.props.ordering_keys[n])}):(0,y.each)(d,function(e,n){return e.xmap=t.props.ordering_keys[n]}),d=(0,y.sortBy)(d,function(t){return t.xmap});else{var _=(0,y.findKey)(this.props.featureNames,function(t){return t===v});(0,y.each)(this.props.explanations,function(t,e){return t.xmap=t.features[_].value});var b=(0,y.sortBy)(this.props.explanations,function(t){return t.xmap}),x=(0,y.map)(b,function(t){return t.xmap});if("string"==typeof x[0])return void alert("Ordering by category names is not yet supported.");var w=(0,y.min)(x),C=(0,y.max)(x),k=(C-w)/100;d=[];for(var E=void 0,M=void 0,T=0;T<b.length;++T){var S=b[T];if(E&&!M&&S.xmap-E.xmap<=k||M&&S.xmap-M.xmap<=k){M||(M=(0,y.cloneDeep)(E),M.count=1);var N=!0,A=!1,P=void 0;try{for(var O,I=this.usedFeatures[Symbol.iterator]();!(N=(O=I.next()).done);N=!0){var D=O.value;M.features[D].effect+=S.features[D].effect,M.features[D].value+=S.features[D].value}}catch(t){A=!0,P=t}finally{try{!N&&I.return&&I.return()}finally{if(A)throw P}}M.count+=1}else if(E)if(M){var R=!0,L=!1,U=void 0;try{for(var F,j=this.usedFeatures[Symbol.iterator]();!(R=(F=j.next()).done);R=!0){var B=F.value;M.features[B].effect/=M.count,M.features[B].value/=M.count}}catch(t){L=!0,U=t}finally{try{!R&&j.return&&j.return()}finally{if(L)throw U}}d.push(M),M=void 0}else d.push(E);E=S}E.xmap-d[d.length-1].xmap>k&&d.push(E)}this.currUsedFeatures=this.usedFeatures,this.currPosOrderedFeatures=this.posOrderedFeatures,this.currNegOrderedFeatures=this.negOrderedFeatures;var V=this.ylabel.node().value;if("model output value"!==V){d=(0,y.cloneDeep)(d);for(var W=(0,y.findKey)(this.props.featureNames,function(t){return t===V}),z=0;z<d.length;++z){var H=d[z].features[W];d[z].features={},d[z].features[W]=H}this.currUsedFeatures=[W],this.currPosOrderedFeatures=[W],this.currNegOrderedFeatures=[W]}this.currExplanations=d,"identity"===this.props.link?this.invLinkFunction=function(e){return t.props.baseValue+e}:"logit"===this.props.link?this.invLinkFunction=function(e){return 1/(1+Math.exp(-(t.props.baseValue+e)))}:console.log("ERROR: Unrecognized link function: ",this.props.link),this.predValues=(0,y.map)(d,function(t){return(0,y.sum)((0,y.map)(t.features,function(t){return t.effect}))});var q=this.wrapper.node().offsetWidth;if(0==q)return setTimeout(function(){return t.draw(d)},500);this.svg.style("height",this.height+"px"),this.svg.style("width",q+"px");var Y=(0,y.map)(d,function(t){return t.xmap});this.xscale.domain([(0,y.min)(Y),(0,y.max)(Y)]).range([this.leftOffset,q]).clamp(!0),this.xaxisElement.attr("transform","translate(0,"+this.topOffset+")").call(this.xaxis);for(var K=0;K<this.currExplanations.length;++K)this.currExplanations[K].xmapScaled=this.xscale(this.currExplanations[K].xmap);for(var G=d.length,$=0,X=0;X<G;++X){var Q=d[X].features,Z=(0,y.sum)((0,y.map)((0,y.filter)(Q,function(t){return t.effect>0}),function(t){return t.effect}))||0,J=(0,y.sum)((0,y.map)((0,y.filter)(Q,function(t){return t.effect<0}),function(t){return-t.effect}))||0;$=Math.max($,2.2*Math.max(Z,J))}this.yscale.domain([-$/2,$/2]).range([this.height-10,this.topOffset]),this.yaxisElement.attr("transform","translate("+this.leftOffset+",0)").call(this.yaxis);for(var tt=0;tt<G;++tt){var et=d[tt].features,nt=((0,y.sum)((0,y.map)(et,function(t){return Math.abs(t.effect)})),(0,y.sum)((0,y.map)((0,y.filter)(et,function(t){return t.effect<0}),function(t){return-t.effect}))||0),rt=-nt,it=void 0,ot=!0,at=!1,ut=void 0;try{for(var ct,st=this.currPosOrderedFeatures[Symbol.iterator]();!(ot=(ct=st.next()).done);ot=!0)it=ct.value,et[it].posyTop=this.yscale(rt),et[it].effect>0&&(rt+=et[it].effect),et[it].posyBottom=this.yscale(rt),et[it].ind=it}catch(t){at=!0,ut=t}finally{try{!ot&&st.return&&st.return()}finally{if(at)throw ut}}var lt=rt,ft=!0,pt=!1,ht=void 0;try{for(var dt,vt=this.currNegOrderedFeatures[Symbol.iterator]();!(ft=(dt=vt.next()).done);ft=!0)it=dt.value,et[it].negyTop=this.yscale(rt),et[it].effect<0&&(rt-=et[it].effect),et[it].negyBottom=this.yscale(rt)}catch(t){pt=!0,ht=t}finally{try{!ft&&vt.return&&vt.return()}finally{if(pt)throw ht}}d[tt].joinPoint=lt,d[tt].joinPointy=this.yscale(lt)}var gt=(0,g.line)().x(function(t){return t[0]}).y(function(t){return t[1]}),mt=this.mainGroup.selectAll(".force-bar-array-area-pos").data(this.currUsedFeatures);mt.enter().append("path").attr("class","force-bar-array-area-pos").merge(mt).attr("d",function(t){var e=(0,y.map)((0,y.range)(G),function(e){return[d[e].xmapScaled,d[e].features[t].posyTop]}),n=(0,y.map)((0,y.rangeRight)(G),function(e){return[d[e].xmapScaled,d[e].features[t].posyBottom]});return gt(e.concat(n))}).attr("fill",this.colors[0]),mt.exit().remove();var yt=this.mainGroup.selectAll(".force-bar-array-area-neg").data(this.currUsedFeatures);yt.enter().append("path").attr("class","force-bar-array-area-neg").merge(yt).attr("d",function(t){var e=(0,y.map)((0,y.range)(G),function(e){return[d[e].xmapScaled,d[e].features[t].negyTop]}),n=(0,y.map)((0,y.rangeRight)(G),function(e){return[d[e].xmapScaled,d[e].features[t].negyBottom]});return gt(e.concat(n))}).attr("fill",this.colors[1]),yt.exit().remove();var _t=this.mainGroup.selectAll(".force-bar-array-divider-pos").data(this.currUsedFeatures);_t.enter().append("path").attr("class","force-bar-array-divider-pos").merge(_t).attr("d",function(t){var e=(0,y.map)((0,y.range)(G),function(e){return[d[e].xmapScaled,d[e].features[t].posyBottom]});return gt(e)}).attr("fill","none").attr("stroke-width",1).attr("stroke",function(e){return t.colors[0].brighter(1.2)}),_t.exit().remove();var bt=this.mainGroup.selectAll(".force-bar-array-divider-neg").data(this.currUsedFeatures);bt.enter().append("path").attr("class","force-bar-array-divider-neg").merge(bt).attr("d",function(t){var e=(0,y.map)((0,y.range)(G),function(e){return[d[e].xmapScaled,d[e].features[t].negyTop]});return gt(e)}).attr("fill","none").attr("stroke-width",1).attr("stroke",function(e){return t.colors[1].brighter(1.5)}),bt.exit().remove();for(var xt=function(t,e,n,r,i){var o=void 0,a=void 0;"pos"===i?(o=t[n].features[e].posyBottom,a=t[n].features[e].posyTop):(o=t[n].features[e].negyBottom,a=t[n].features[e].negyTop);for(var u=void 0,c=void 0,s=n+1;s<=r;++s)"pos"===i?(u=t[s].features[e].posyBottom,c=t[s].features[e].posyTop):(u=t[s].features[e].negyBottom,c=t[s].features[e].negyTop),u>o&&(o=u),c<a&&(a=c);return{top:o,bottom:a}},wt=[],Ct=["pos","neg"],kt=0;kt<Ct.length;kt++){var Et=Ct[kt],Mt=!0,Tt=!1,St=void 0;try{for(var Nt,At=this.currUsedFeatures[Symbol.iterator]();!(Mt=(Nt=At.next()).done);Mt=!0)for(var Pt=Nt.value,Ot=0,It=0,Dt=0,Rt={top:0,bottom:0},Lt=void 0;It<G-1;){for(;Dt<100&&It<G-1;)++It,Dt=d[It].xmapScaled-d[Ot].xmapScaled;for(Rt=xt(d,Pt,Ot,It,Et);Rt.bottom-Rt.top<20&&Ot<It;)++Ot,Rt=xt(d,Pt,Ot,It,Et);if(Dt=d[It].xmapScaled-d[Ot].xmapScaled,Rt.bottom-Rt.top>=20&&Dt>=100){for(;It<G-1;){if(++It,Lt=xt(d,Pt,Ot,It,Et),!(Lt.bottom-Lt.top>20)){--It;break}Rt=Lt}Dt=d[It].xmapScaled-d[Ot].xmapScaled,wt.push([(d[It].xmapScaled+d[Ot].xmapScaled)/2,(Rt.top+Rt.bottom)/2,this.props.featureNames[Pt]]);var Ut=d[It].xmapScaled;for(Ot=It;Ut+100>d[Ot].xmapScaled&&Ot<G-1;)++Ot;It=Ot}}}catch(t){Tt=!0,St=t}finally{try{!Mt&&At.return&&At.return()}finally{if(Tt)throw St}}}var Ft=this.onTopGroup.selectAll(".force-bar-array-flabels").data(wt);Ft.enter().append("text").attr("class","force-bar-array-flabels").merge(Ft).attr("x",function(t){return t[0]}).attr("y",function(t){return t[1]+4}).text(function(t){return t[2]}),Ft.exit().remove()}},{key:"componentWillUnmount",value:function(){window.removeEventListener("resize",this.redraw)}},{key:"render",value:function(){var t=this;return l.default.createElement("div",{ref:function(e){return t.wrapper=(0,f.select)(e)},style:{textAlign:"center"}},l.default.createElement("style",{dangerouslySetInnerHTML:{__html:"\n .force-bar-array-wrapper {\n text-align: center;\n }\n .force-bar-array-xaxis path {\n fill: none;\n opacity: 0.4;\n }\n .force-bar-array-xaxis .domain {\n opacity: 0;\n }\n .force-bar-array-xaxis paths {\n display: none;\n }\n .force-bar-array-yaxis path {\n fill: none;\n opacity: 0.4;\n }\n .force-bar-array-yaxis paths {\n display: none;\n }\n .tick line {\n stroke: #000;\n stroke-width: 1px;\n opacity: 0.4;\n }\n .tick text {\n fill: #000;\n opacity: 0.5;\n font-size: 12px;\n padding: 0px;\n }\n .force-bar-array-flabels {\n font-size: 12px;\n fill: #fff;\n text-anchor: middle;\n }\n .additive-force-array-xlabel {\n background: none;\n border: 1px solid #ccc;\n opacity: 0.5;\n margin-bottom: 0px;\n font-size: 12px;\n font-family: arial;\n margin-left: 80px;\n max-width: 300px;\n }\n .additive-force-array-xlabel:focus {\n outline: none;\n }\n .additive-force-array-ylabel {\n position: relative;\n top: 0px;\n left: 0px;\n transform: rotate(-90deg);\n background: none;\n border: 1px solid #ccc;\n opacity: 0.5;\n margin-bottom: 0px;\n font-size: 12px;\n font-family: arial;\n max-width: 150px;\n }\n .additive-force-array-ylabel:focus {\n outline: none;\n }\n .additive-force-array-hoverLine {\n stroke-width: 1px;\n stroke: #fff;\n opacity: 1;\n }"}}),l.default.createElement("select",{className:"additive-force-array-xlabel"}),l.default.createElement("div",{style:{height:"0px",textAlign:"left"}},l.default.createElement("select",{className:"additive-force-array-ylabel"})),l.default.createElement("svg",{ref:function(e){return t.svg=(0,f.select)(e)},style:{userSelect:"none",display:"block",fontFamily:"arial",sansSerif:!0}}))}}]),e}(l.default.Component);x.defaultProps={plot_cmap:"RdBu",ordering_keys:null,ordering_keys_time_format:null},e.default=x},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function a(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var u=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),c=n(41),s=r(c),l=n(129),f=n(66),p=(n(7),n(29)),h=n(112),d=n(136),v=n(10),g=n(38),m=n(58),y=r(m),b=function(t){function e(){i(this,e);var t=o(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));return window.lastAdditiveForceVisualizer=t,t.effectFormat=(0,p.format)(".2"),t.redraw=(0,g.debounce)(function(){return t.draw()},200),t}return a(e,t),u(e,[{key:"componentDidMount",value:function(){var t=this;this.mainGroup=this.svg.append("g"),this.axisElement=this.mainGroup.append("g").attr("transform","translate(0,35)").attr("class","force-bar-axis"),this.onTopGroup=this.svg.append("g"),this.baseValueTitle=this.svg.append("text"),this.joinPointLine=this.svg.append("line"),this.joinPointLabelOutline=this.svg.append("text"),this.joinPointLabel=this.svg.append("text"),this.joinPointTitleLeft=this.svg.append("text"),this.joinPointTitleLeftArrow=this.svg.append("text"),this.joinPointTitle=this.svg.append("text"),this.joinPointTitleRightArrow=this.svg.append("text"),this.joinPointTitleRight=this.svg.append("text"),this.hoverLabelBacking=this.svg.append("text").attr("x",10).attr("y",20).attr("text-anchor","middle").attr("font-size",12).attr("stroke","#fff").attr("fill","#fff").attr("stroke-width","4").attr("stroke-linejoin","round").text("").on("mouseover",function(e){t.hoverLabel.attr("opacity",1),t.hoverLabelBacking.attr("opacity",1)}).on("mouseout",function(e){t.hoverLabel.attr("opacity",0),t.hoverLabelBacking.attr("opacity",0)}),this.hoverLabel=this.svg.append("text").attr("x",10).attr("y",20).attr("text-anchor","middle").attr("font-size",12).attr("fill","#0f0").text("").on("mouseover",function(e){t.hoverLabel.attr("opacity",1),t.hoverLabelBacking.attr("opacity",1)}).on("mouseout",function(e){t.hoverLabel.attr("opacity",0),t.hoverLabelBacking.attr("opacity",0)});var e=void 0;"string"==typeof this.props.plot_cmap?this.props.plot_cmap in y.default.colors?e=y.default.colors[this.props.plot_cmap]:(console.log("Invalid color map name, reverting to default."),e=y.default.colors.RdBu):Array.isArray(this.props.plot_cmap)&&(e=this.props.plot_cmap),this.colors=e.map(function(t){return(0,v.hsl)(t)}),this.brighterColors=[1.45,1.6].map(function(e,n){return t.colors[n].brighter(e)}),this.colors.map(function(e,n){var r=t.svg.append("linearGradient").attr("id","linear-grad-"+n).attr("x1","0%").attr("y1","0%").attr("x2","0%").attr("y2","100%");r.append("stop").attr("offset","0%").attr("stop-color",e).attr("stop-opacity",.6),r.append("stop").attr("offset","100%").attr("stop-color",e).attr("stop-opacity",0);var i=t.svg.append("linearGradient").attr("id","linear-backgrad-"+n).attr("x1","0%").attr("y1","0%").attr("x2","0%").attr("y2","100%");i.append("stop").attr("offset","0%").attr("stop-color",e).attr("stop-opacity",.5),i.append("stop").attr("offset","100%").attr("stop-color",e).attr("stop-opacity",0)}),this.tickFormat=(0,p.format)(",.4"),this.scaleCentered=(0,f.scaleLinear)(),this.axis=(0,h.axisBottom)().scale(this.scaleCentered).tickSizeInner(4).tickSizeOuter(0).tickFormat(function(e){return t.tickFormat(t.invLinkFunction(e))}).tickPadding(-18),window.addEventListener("resize",this.redraw),window.setTimeout(this.redraw,50)}},{key:"componentDidUpdate",value:function(){this.draw()}},{key:"draw",value:function(){var t=this;(0,g.each)(this.props.featureNames,function(e,n){t.props.features[n]&&(t.props.features[n].name=e)}),"identity"===this.props.link?this.invLinkFunction=function(e){return t.props.baseValue+e}:"logit"===this.props.link?this.invLinkFunction=function(e){return 1/(1+Math.exp(-(t.props.baseValue+e)))}:console.log("ERROR: Unrecognized link function: ",this.props.link);var e=this.svg.node().parentNode.offsetWidth;if(0==e)return setTimeout(function(){return t.draw(t.props)},500);this.svg.style("height","150px"),this.svg.style("width",e+"px");var n=(0,g.sortBy)(this.props.features,function(t){return-1/(t.effect+1e-10)}),r=(0,g.sum)((0,g.map)(n,function(t){return Math.abs(t.effect)})),i=(0,g.sum)((0,g.map)((0,g.filter)(n,function(t){return t.effect>0}),function(t){return t.effect}))||0,o=(0,g.sum)((0,g.map)((0,g.filter)(n,function(t){return t.effect<0}),function(t){return-t.effect}))||0;this.domainSize=3*Math.max(i,o);var a=(0,f.scaleLinear)().domain([0,this.domainSize]).range([0,e]),u=e/2-a(o);this.scaleCentered.domain([-this.domainSize/2,this.domainSize/2]).range([0,e]).clamp(!0),this.axisElement.attr("transform","translate(0,50)").call(this.axis);var c=0,s=void 0,l=void 0,h=void 0;for(s=0;s<n.length;++s)n[s].x=c,n[s].effect<0&&void 0===l&&(l=c,h=s),c+=Math.abs(n[s].effect);void 0===l&&(l=c,h=s);var v=(0,d.line)().x(function(t){return t[0]}).y(function(t){return t[1]}),m=function(e){return void 0!==e.value&&null!==e.value&&""!==e.value?e.name+" = "+(isNaN(e.value)?e.value:t.tickFormat(e.value)):e.name};n=this.props.hideBars?[]:n;var y=this.mainGroup.selectAll(".force-bar-blocks").data(n);y.enter().append("path").attr("class","force-bar-blocks").merge(y).attr("d",function(t,e){var n=a(t.x)+u,r=a(Math.abs(t.effect)),i=t.effect<0?-4:4,o=i;return e===h&&(i=0),e===h-1&&(o=0),v([[n,56],[n+r,56],[n+r+o,64.5],[n+r,73],[n,73],[n+i,64.5]])}).attr("fill",function(e){return e.effect>0?t.colors[0]:t.colors[1]}).on("mouseover",function(e){if(a(Math.abs(e.effect))<a(r)/50||a(Math.abs(e.effect))<10){var n=a(e.x)+u,i=a(Math.abs(e.effect));t.hoverLabel.attr("opacity",1).attr("x",n+i/2).attr("y",50.5).attr("fill",e.effect>0?t.colors[0]:t.colors[1]).text(m(e)),t.hoverLabelBacking.attr("opacity",1).attr("x",n+i/2).attr("y",50.5).text(m(e))}}).on("mouseout",function(e){t.hoverLabel.attr("opacity",0),t.hoverLabelBacking.attr("opacity",0)}),y.exit().remove();var b=_.filter(n,function(t){return a(Math.abs(t.effect))>a(r)/50&&a(Math.abs(t.effect))>10}),x=this.onTopGroup.selectAll(".force-bar-labels").data(b);if(x.exit().remove(),x=x.enter().append("text").attr("class","force-bar-labels").attr("font-size","12px").attr("y",function(t){return 98}).merge(x).text(function(e){return void 0!==e.value&&null!==e.value&&""!==e.value?e.name+" = "+(isNaN(e.value)?e.value:t.tickFormat(e.value)):e.name}).attr("fill",function(e){return e.effect>0?t.colors[0]:t.colors[1]}).attr("stroke",function(t,e){return t.textWidth=Math.max(this.getComputedTextLength(),a(Math.abs(t.effect))-10),t.innerTextWidth=this.getComputedTextLength(),"none"}),this.filteredData=b,n.length>0){c=l+a.invert(5);for(var w=h;w<n.length;++w)n[w].textx=c,c+=a.invert(n[w].textWidth+10);c=l-a.invert(5);for(var C=h-1;C>=0;--C)n[C].textx=c,c-=a.invert(n[C].textWidth+10)}x.attr("x",function(t){return a(t.textx)+u+(t.effect>0?-t.textWidth/2:t.textWidth/2)}).attr("text-anchor","middle"),b=(0,g.filter)(b,function(n){return a(n.textx)+u>t.props.labelMargin&&a(n.textx)+u<e-t.props.labelMargin}),this.filteredData2=b;var k=b.slice(),E=(0,g.findIndex)(n,b[0])-1;E>=0&&k.unshift(n[E]);var M=this.mainGroup.selectAll(".force-bar-labelBacking").data(b);M.enter().append("path").attr("class","force-bar-labelBacking").attr("stroke","none").attr("opacity",.2).merge(M).attr("d",function(t){return v([[a(t.x)+a(Math.abs(t.effect))+u,73],[(t.effect>0?a(t.textx):a(t.textx)+t.textWidth)+u+5,83],[(t.effect>0?a(t.textx):a(t.textx)+t.textWidth)+u+5,104],[(t.effect>0?a(t.textx)-t.textWidth:a(t.textx))+u-5,104],[(t.effect>0?a(t.textx)-t.textWidth:a(t.textx))+u-5,83],[a(t.x)+u,73]])}).attr("fill",function(t){return"url(#linear-backgrad-"+(t.effect>0?0:1)+")"}),M.exit().remove();var T=this.mainGroup.selectAll(".force-bar-labelDividers").data(b.slice(0,-1));T.enter().append("rect").attr("class","force-bar-labelDividers").attr("height","21px").attr("width","1px").attr("y",83).merge(T).attr("x",function(t){return(t.effect>0?a(t.textx):a(t.textx)+t.textWidth)+u+4.5}).attr("fill",function(t){return"url(#linear-grad-"+(t.effect>0?0:1)+")"}),T.exit().remove();var S=this.mainGroup.selectAll(".force-bar-labelLinks").data(b.slice(0,-1));S.enter().append("line").attr("class","force-bar-labelLinks").attr("y1",73).attr("y2",83).attr("stroke-opacity",.5).attr("stroke-width",1).merge(S).attr("x1",function(t){return a(t.x)+a(Math.abs(t.effect))+u}).attr("x2",function(t){return(t.effect>0?a(t.textx):a(t.textx)+t.textWidth)+u+5}).attr("stroke",function(e){return e.effect>0?t.colors[0]:t.colors[1]}),S.exit().remove();var N=this.mainGroup.selectAll(".force-bar-blockDividers").data(n.slice(0,-1));N.enter().append("path").attr("class","force-bar-blockDividers").attr("stroke-width",2).attr("fill","none").merge(N).attr("d",function(t){var e=a(t.x)+a(Math.abs(t.effect))+u;return v([[e,56],[e+(t.effect<0?-4:4),64.5],[e,73]])}).attr("stroke",function(e,n){return h===n+1||Math.abs(e.effect)<1e-8?"#rgba(0,0,0,0)":e.effect>0?t.brighterColors[0]:t.brighterColors[1]}),N.exit().remove(),this.joinPointLine.attr("x1",a(l)+u).attr("x2",a(l)+u).attr("y1",50).attr("y2",56).attr("stroke","#F2F2F2").attr("stroke-width",1).attr("opacity",1),this.joinPointLabelOutline.attr("x",a(l)+u).attr("y",45).attr("color","#fff").attr("text-anchor","middle").attr("font-weight","bold").attr("stroke","#fff").attr("stroke-width",6).text((0,p.format)(",.2f")(this.invLinkFunction(l-o))).attr("opacity",1),console.log("joinPoint",l,u,50,o),this.joinPointLabel.attr("x",a(l)+u).attr("y",45).attr("text-anchor","middle").attr("font-weight","bold").attr("fill","#000").text((0,p.format)(",.2f")(this.invLinkFunction(l-o))).attr("opacity",1),this.joinPointTitle.attr("x",a(l)+u).attr("y",28).attr("text-anchor","middle").attr("font-size","12").attr("fill","#000").text(this.props.outNames[0]).attr("opacity",.5),this.props.hideBars||(this.joinPointTitleLeft.attr("x",a(l)+u-16).attr("y",12).attr("text-anchor","end").attr("font-size","13").attr("fill",this.colors[0]).text("higher").attr("opacity",1),this.joinPointTitleRight.attr("x",a(l)+u+16).attr("y",12).attr("text-anchor","start").attr("font-size","13").attr("fill",this.colors[1]).text("lower").attr("opacity",1),this.joinPointTitleLeftArrow.attr("x",a(l)+u+7).attr("y",8).attr("text-anchor","end").attr("font-size","13").attr("fill",this.colors[0]).text("→").attr("opacity",1),this.joinPointTitleRightArrow.attr("x",a(l)+u-7).attr("y",14).attr("text-anchor","start").attr("font-size","13").attr("fill",this.colors[1]).text("←").attr("opacity",1)),this.props.hideBaseValueLabel||this.baseValueTitle.attr("x",this.scaleCentered(0)).attr("y",28).attr("text-anchor","middle").attr("font-size","12").attr("fill","#000").text("base value").attr("opacity",.5)}},{key:"componentWillUnmount",value:function(){window.removeEventListener("resize",this.redraw)}},{key:"render",value:function(){var t=this;return s.default.createElement("svg",{ref:function(e){return t.svg=(0,l.select)(e)},style:{userSelect:"none",display:"block",fontFamily:"arial",sansSerif:!0}},s.default.createElement("style",{dangerouslySetInnerHTML:{__html:"\n .force-bar-axis path {\n fill: none;\n opacity: 0.4;\n }\n .force-bar-axis paths {\n display: none;\n }\n .tick line {\n stroke: #000;\n stroke-width: 1px;\n opacity: 0.4;\n }\n .tick text {\n fill: #000;\n opacity: 0.5;\n font-size: 12px;\n padding: 0px;\n }"}}))}}]),e}(s.default.Component);b.defaultProps={plot_cmap:"RdBu"},e.default=b},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function a(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var u=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),c=n(41),s=r(c),l=n(66),f=(n(7),n(29)),p=n(38),h=n(58),d=r(h),v=function(t){function e(){i(this,e);var t=o(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));return t.width=100,window.lastSimpleListInstance=t,t.effectFormat=(0,f.format)(".2"),t}return a(e,t),u(e,[{key:"render",value:function(){var t=this,e=void 0;"string"==typeof this.props.plot_cmap?this.props.plot_cmap in d.default.colors?e=d.default.colors[this.props.plot_cmap]:(console.log("Invalid color map name, reverting to default."),e=d.default.colors.RdBu):Array.isArray(this.props.plot_cmap)&&(e=this.props.plot_cmap),console.log(this.props.features,this.props.features),this.scale=(0,l.scaleLinear)().domain([0,(0,p.max)((0,p.map)(this.props.features,function(t){return Math.abs(t.effect)}))]).range([0,this.width]);var n=(0,p.reverse)((0,p.sortBy)(Object.keys(this.props.features),function(e){return Math.abs(t.props.features[e].effect)})),r=n.map(function(n){var r=t.props.features[n],i=t.props.featureNames[n],o={width:t.scale(Math.abs(r.effect)),height:"20px",background:r.effect<0?e[0]:e[1],display:"inline-block"},a=void 0,u=void 0,c={lineHeight:"20px",display:"inline-block",width:t.width+40,verticalAlign:"top",marginRight:"5px",textAlign:"right"},l={lineHeight:"20px",display:"inline-block",width:t.width+40,verticalAlign:"top",marginLeft:"5px"};return r.effect<0?(u=s.default.createElement("span",{style:l},i),c.width=40+t.width-t.scale(Math.abs(r.effect)),c.textAlign="right",c.color="#999",c.fontSize="13px",a=s.default.createElement("span",{style:c},t.effectFormat(r.effect))):(c.textAlign="right",a=s.default.createElement("span",{style:c},i),l.width=40,l.textAlign="left",l.color="#999",l.fontSize="13px",u=s.default.createElement("span",{style:l},t.effectFormat(r.effect))),s.default.createElement("div",{key:n,style:{marginTop:"2px"}},a,s.default.createElement("div",{style:o}),u)});return s.default.createElement("span",null,r)}}]),e}(s.default.Component);v.defaultProps={plot_cmap:"RdBu"},e.default=v},function(t,e,n){"use strict";t.exports=n(359)},function(t,e,n){var r=(n(0),n(411)),i=!1;t.exports=function(t){t=t||{};var e=t.shouldRejectClick||r;i=!0,n(22).injection.injectEventPluginsByName({TapEventPlugin:n(409)(e)})}},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}var i=n(41),o=r(i),a=n(187),u=r(a),c=n(188),s=r(c),l=n(186),f=r(l),p=n(185),h=r(p),d=n(184),v=r(d);(0,s.default)(),window.SHAP={SimpleListVisualizer:f.default,AdditiveForceVisualizer:h.default,AdditiveForceArrayVisualizer:v.default,React:o.default,ReactDom:u.default}},,function(t,e,n){"use strict";function r(t){return t}function i(t,e,n){function i(t,e){var n=y.hasOwnProperty(e)?y[e]:null;C.hasOwnProperty(e)&&u("OVERRIDE_BASE"===n,"ReactClassInterface: You are attempting to override `%s` from your class specification. Ensure that your method names do not overlap with React methods.",e),t&&u("DEFINE_MANY"===n||"DEFINE_MANY_MERGED"===n,"ReactClassInterface: You are attempting to define `%s` on your component more than once. This conflict may be due to a mixin.",e)}function s(t,n){if(n){u("function"!=typeof n,"ReactClass: You're attempting to use a component class or function as a mixin. Instead, just use a regular object."),u(!e(n),"ReactClass: You're attempting to use a component as a mixin. Instead, just use a regular object.");var r=t.prototype,o=r.__reactAutoBindPairs;n.hasOwnProperty(c)&&b.mixins(t,n.mixins);for(var a in n)if(n.hasOwnProperty(a)&&a!==c){var s=n[a],l=r.hasOwnProperty(a);if(i(l,a),b.hasOwnProperty(a))b[a](t,s);else{var f=y.hasOwnProperty(a),d="function"==typeof s,v=d&&!f&&!l&&!1!==n.autobind;if(v)o.push(a,s),r[a]=s;else if(l){var g=y[a];u(f&&("DEFINE_MANY_MERGED"===g||"DEFINE_MANY"===g),"ReactClass: Unexpected spec policy %s for key %s when mixing in component specs.",g,a),"DEFINE_MANY_MERGED"===g?r[a]=p(r[a],s):"DEFINE_MANY"===g&&(r[a]=h(r[a],s))}else r[a]=s}}}else;}function l(t,e){if(e)for(var n in e){var r=e[n];if(e.hasOwnProperty(n)){var i=n in b;u(!i,'ReactClass: You are attempting to define a reserved property, `%s`, that shouldn\'t be on the "statics" key. Define it as an instance property instead; it will still be accessible on the constructor.',n);var o=n in t;if(o){var a=_.hasOwnProperty(n)?_[n]:null;return u("DEFINE_MANY_MERGED"===a,"ReactClass: You are attempting to define `%s` on your component more than once. This conflict may be due to a mixin.",n),void(t[n]=p(t[n],r))}t[n]=r}}}function f(t,e){u(t&&e&&"object"==typeof t&&"object"==typeof e,"mergeIntoWithNoDuplicateKeys(): Cannot merge non-objects.");for(var n in e)e.hasOwnProperty(n)&&(u(void 0===t[n],"mergeIntoWithNoDuplicateKeys(): Tried to merge two objects with the same key: `%s`. This conflict may be due to a mixin; in particular, this may be caused by two getInitialState() or getDefaultProps() methods returning objects with clashing keys.",n),t[n]=e[n]);return t}function p(t,e){return function(){var n=t.apply(this,arguments),r=e.apply(this,arguments);if(null==n)return r;if(null==r)return n;var i={};return f(i,n),f(i,r),i}}function h(t,e){return function(){t.apply(this,arguments),e.apply(this,arguments)}}function d(t,e){var n=e.bind(t);return n}function v(t){for(var e=t.__reactAutoBindPairs,n=0;n<e.length;n+=2){var r=e[n],i=e[n+1];t[r]=d(t,i)}}function g(t){var e=r(function(t,r,i){this.__reactAutoBindPairs.length&&v(this),this.props=t,this.context=r,this.refs=a,this.updater=i||n,this.state=null;var o=this.getInitialState?this.getInitialState():null;u("object"==typeof o&&!Array.isArray(o),"%s.getInitialState(): must return an object or null",e.displayName||"ReactCompositeComponent"),this.state=o});e.prototype=new k,e.prototype.constructor=e,e.prototype.__reactAutoBindPairs=[],m.forEach(s.bind(null,e)),s(e,x),s(e,t),s(e,w),e.getDefaultProps&&(e.defaultProps=e.getDefaultProps()),u(e.prototype.render,"createClass(...): Class specification must implement a `render` method.");for(var i in y)e.prototype[i]||(e.prototype[i]=null);return e}var m=[],y={mixins:"DEFINE_MANY",statics:"DEFINE_MANY",propTypes:"DEFINE_MANY",contextTypes:"DEFINE_MANY",childContextTypes:"DEFINE_MANY",getDefaultProps:"DEFINE_MANY_MERGED",getInitialState:"DEFINE_MANY_MERGED",getChildContext:"DEFINE_MANY_MERGED",render:"DEFINE_ONCE",componentWillMount:"DEFINE_MANY",componentDidMount:"DEFINE_MANY",componentWillReceiveProps:"DEFINE_MANY",shouldComponentUpdate:"DEFINE_ONCE",componentWillUpdate:"DEFINE_MANY",componentDidUpdate:"DEFINE_MANY",componentWillUnmount:"DEFINE_MANY",UNSAFE_componentWillMount:"DEFINE_MANY",UNSAFE_componentWillReceiveProps:"DEFINE_MANY",UNSAFE_componentWillUpdate:"DEFINE_MANY",updateComponent:"OVERRIDE_BASE"},_={getDerivedStateFromProps:"DEFINE_MANY_MERGED"},b={displayName:function(t,e){t.displayName=e},mixins:function(t,e){if(e)for(var n=0;n<e.length;n++)s(t,e[n])},childContextTypes:function(t,e){t.childContextTypes=o({},t.childContextTypes,e)},contextTypes:function(t,e){t.contextTypes=o({},t.contextTypes,e)},getDefaultProps:function(t,e){t.getDefaultProps?t.getDefaultProps=p(t.getDefaultProps,e):t.getDefaultProps=e},propTypes:function(t,e){t.propTypes=o({},t.propTypes,e)},statics:function(t,e){l(t,e)},autobind:function(){}},x={componentDidMount:function(){this.__isMounted=!0}},w={componentWillUnmount:function(){this.__isMounted=!1}},C={replaceState:function(t,e){this.updater.enqueueReplaceState(this,t,e)},isMounted:function(){return!!this.__isMounted}},k=function(){};return o(k.prototype,t.prototype,C),g}var o=n(3),a=n(51),u=n(0),c="mixins";t.exports=i},function(t,e,n){"use strict";e.a=function(t){return function(){return t}}},function(t,e,n){"use strict";var r=n(106);e.a=function(t,e,n){var i,o,a,u,c=t.length,s=e.length,l=new Array(c*s);for(null==n&&(n=r.b),i=a=0;i<c;++i)for(u=t[i],o=0;o<s;++o,++a)l[a]=n(u,e[o]);return l}},function(t,e,n){"use strict";e.a=function(t,e){return e<t?-1:e>t?1:e>=t?0:NaN}},function(t,e,n){"use strict";var r=n(100),i=n(101),o=n(192),a=n(104),u=n(196),c=n(107),s=n(109),l=n(108);e.a=function(){function t(t){var r,o,a=t.length,u=new Array(a);for(r=0;r<a;++r)u[r]=e(t[r],r,t);var l=f(u),h=l[0],d=l[1],v=p(u,h,d);Array.isArray(v)||(v=n.i(s.c)(h,d,v),v=n.i(c.a)(Math.ceil(h/v)*v,Math.floor(d/v)*v,v));for(var g=v.length;v[0]<=h;)v.shift(),--g;for(;v[g-1]>d;)v.pop(),--g;var m,y=new Array(g+1);for(r=0;r<=g;++r)m=y[r]=[],m.x0=r>0?v[r-1]:h,m.x1=r<g?v[r]:d;for(r=0;r<a;++r)o=u[r],h<=o&&o<=d&&y[n.i(i.a)(v,o,0,g)].push(t[r]);return y}var e=u.a,f=a.a,p=l.a;return t.value=function(r){return arguments.length?(e="function"==typeof r?r:n.i(o.a)(r),t):e},t.domain=function(e){return arguments.length?(f="function"==typeof e?e:n.i(o.a)([e[0],e[1]]),t):f},t.thresholds=function(e){return arguments.length?(p="function"==typeof e?e:Array.isArray(e)?n.i(o.a)(r.b.call(e)):n.i(o.a)(e),t):p},t}},function(t,e,n){"use strict";e.a=function(t){return t}},function(t,e,n){"use strict";e.a=function(t,e){var n,r,i=t.length,o=-1;if(null==e){for(;++o<i;)if(null!=(n=t[o])&&n>=n)for(r=n;++o<i;)null!=(n=t[o])&&n>r&&(r=n)}else for(;++o<i;)if(null!=(n=e(t[o],o,t))&&n>=n)for(r=n;++o<i;)null!=(n=e(t[o],o,t))&&n>r&&(r=n);return r}},function(t,e,n){"use strict";var r=n(28);e.a=function(t,e){var i,o=t.length,a=o,u=-1,c=0;if(null==e)for(;++u<o;)isNaN(i=n.i(r.a)(t[u]))?--a:c+=i;else for(;++u<o;)isNaN(i=n.i(r.a)(e(t[u],u,t)))?--a:c+=i;if(a)return c/a}},function(t,e,n){"use strict";var r=n(19),i=n(28),o=n(59);e.a=function(t,e){var a,u=t.length,c=-1,s=[];if(null==e)for(;++c<u;)isNaN(a=n.i(i.a)(t[c]))||s.push(a);else for(;++c<u;)isNaN(a=n.i(i.a)(e(t[c],c,t)))||s.push(a);return n.i(o.a)(s.sort(r.a),.5)}},function(t,e,n){"use strict";e.a=function(t){for(var e,n,r,i=t.length,o=-1,a=0;++o<i;)a+=t[o].length;for(n=new Array(a);--i>=0;)for(r=t[i],e=r.length;--e>=0;)n[--a]=r[e];return n}},function(t,e,n){"use strict";e.a=function(t,e){for(var n=e.length,r=new Array(n);n--;)r[n]=t[e[n]];return r}},function(t,e,n){"use strict";var r=n(19);e.a=function(t,e){if(n=t.length){var n,i,o=0,a=0,u=t[a];for(null==e&&(e=r.a);++o<n;)(e(i=t[o],u)<0||0!==e(u,u))&&(u=i,a=o);return 0===e(u,u)?a:void 0}}},function(t,e,n){"use strict";e.a=function(t,e,n){for(var r,i,o=(null==n?t.length:n)-(e=null==e?0:+e);o;)i=Math.random()*o--|0,r=t[o+e],t[o+e]=t[i+e],t[i+e]=r;return t}},function(t,e,n){"use strict";e.a=function(t,e){var n,r=t.length,i=-1,o=0;if(null==e)for(;++i<r;)(n=+t[i])&&(o+=n);else for(;++i<r;)(n=+e(t[i],i,t))&&(o+=n);return o}},function(t,e,n){"use strict";var r=n(100),i=n(19),o=n(28),a=n(59);e.a=function(t,e,u){return t=r.a.call(t,o.a).sort(i.a),Math.ceil((u-e)/(2*(n.i(a.a)(t,.75)-n.i(a.a)(t,.25))*Math.pow(t.length,-1/3)))}},function(t,e,n){"use strict";var r=n(103);e.a=function(t,e,i){return Math.ceil((i-e)/(3.5*n.i(r.a)(t)*Math.pow(t.length,-1/3)))}},function(t,e,n){"use strict";var r=n(110);e.a=function(){return n.i(r.a)(arguments)}},function(t,e,n){"use strict";n.d(e,"a",function(){return r});var r=Array.prototype.slice},function(t,e,n){"use strict";function r(t){return"translate("+(t+.5)+",0)"}function i(t){return"translate(0,"+(t+.5)+")"}function o(t){return function(e){return+t(e)}}function a(t){var e=Math.max(0,t.bandwidth()-1)/2;return t.round()&&(e=Math.round(e)),function(n){return+t(n)+e}}function u(){return!this.__axis}function c(t,e){function n(n){var r=null==s?e.ticks?e.ticks.apply(e,c):e.domain():s,i=null==l?e.tickFormat?e.tickFormat.apply(e,c):d.a:l,h=Math.max(f,0)+b,k=e.range(),E=+k[0]+.5,M=+k[k.length-1]+.5,T=(e.bandwidth?a:o)(e.copy()),S=n.selection?n.selection():n,N=S.selectAll(".domain").data([null]),A=S.selectAll(".tick").data(r,e).order(),P=A.exit(),O=A.enter().append("g").attr("class","tick"),I=A.select("line"),D=A.select("text");N=N.merge(N.enter().insert("path",".tick").attr("class","domain").attr("stroke","#000")),A=A.merge(O),I=I.merge(O.append("line").attr("stroke","#000").attr(w+"2",x*f)),D=D.merge(O.append("text").attr("fill","#000").attr(w,x*h).attr("dy",t===v?"0em":t===m?"0.71em":"0.32em")),n!==S&&(N=N.transition(n),A=A.transition(n),I=I.transition(n),D=D.transition(n),P=P.transition(n).attr("opacity",_).attr("transform",function(t){return isFinite(t=T(t))?C(t):this.getAttribute("transform")}),O.attr("opacity",_).attr("transform",function(t){var e=this.parentNode.__axis;return C(e&&isFinite(e=e(t))?e:T(t))})),P.remove(),N.attr("d",t===y||t==g?"M"+x*p+","+E+"H0.5V"+M+"H"+x*p:"M"+E+","+x*p+"V0.5H"+M+"V"+x*p),A.attr("opacity",1).attr("transform",function(t){return C(T(t))}),I.attr(w+"2",x*f),D.attr(w,x*h).text(i),S.filter(u).attr("fill","none").attr("font-size",10).attr("font-family","sans-serif").attr("text-anchor",t===g?"start":t===y?"end":"middle"),S.each(function(){this.__axis=T})}var c=[],s=null,l=null,f=6,p=6,b=3,x=t===v||t===y?-1:1,w=t===y||t===g?"x":"y",C=t===v||t===m?r:i;return n.scale=function(t){return arguments.length?(e=t,n):e},n.ticks=function(){return c=h.a.call(arguments),n},n.tickArguments=function(t){return arguments.length?(c=null==t?[]:h.a.call(t),n):c.slice()},n.tickValues=function(t){return arguments.length?(s=null==t?null:h.a.call(t),n):s&&s.slice()},n.tickFormat=function(t){return arguments.length?(l=t,n):l},n.tickSize=function(t){return arguments.length?(f=p=+t,n):f},n.tickSizeInner=function(t){return arguments.length?(f=+t,n):f},n.tickSizeOuter=function(t){return arguments.length?(p=+t,n):p},n.tickPadding=function(t){return arguments.length?(b=+t,n):b},n}function s(t){return c(v,t)}function l(t){return c(g,t)}function f(t){return c(m,t)}function p(t){return c(y,t)}e.a=s,e.b=l,e.c=f,e.d=p;var h=n(208),d=n(210),v=1,g=2,m=3,y=4,_=1e-6},function(t,e,n){"use strict";e.a=function(t){return t}},function(t,e,n){"use strict";var r=(n(214),n(215),n(60));n.d(e,"a",function(){return r.a});n(213),n(216),n(212)},function(t,e,n){"use strict"},function(t,e,n){"use strict"},function(t,e,n){"use strict";n(60)},function(t,e,n){"use strict";function r(){}function i(t,e){var n=new r;if(t instanceof r)t.each(function(t){n.add(t)});else if(t){var i=-1,o=t.length;if(null==e)for(;++i<o;)n.add(t[i]);else for(;++i<o;)n.add(e(t[i],i,t))}return n}var o=n(60),a=o.a.prototype;r.prototype=i.prototype={constructor:r,has:a.has,add:function(t){return t+="",this[o.b+t]=t,this},remove:a.remove,clear:a.clear,values:a.keys,size:a.size,empty:a.empty,each:a.each}},function(t,e,n){"use strict"},function(t,e,n){"use strict";function r(t){if(t instanceof o)return new o(t.h,t.s,t.l,t.opacity);t instanceof u.d||(t=n.i(u.e)(t));var e=t.r/255,r=t.g/255,i=t.b/255,a=(g*i+d*e-v*r)/(g+d-v),s=i-a,l=(h*(r-a)-f*s)/p,m=Math.sqrt(l*l+s*s)/(h*a*(1-a)),y=m?Math.atan2(l,s)*c.a-120:NaN;return new o(y<0?y+360:y,m,a,t.opacity)}function i(t,e,n,i){return 1===arguments.length?r(t):new o(t,e,n,null==i?1:i)}function o(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}e.a=i;var a=n(62),u=n(61),c=n(113),s=-.14861,l=1.78277,f=-.29227,p=-.90649,h=1.97294,d=h*p,v=h*l,g=l*f-p*s;n.i(a.a)(o,i,n.i(a.b)(u.f,{brighter:function(t){return t=null==t?u.g:Math.pow(u.g,t),new o(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=null==t?u.h:Math.pow(u.h,t),new o(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=isNaN(this.h)?0:(this.h+120)*c.b,e=+this.l,n=isNaN(this.s)?0:this.s*e*(1-e),r=Math.cos(t),i=Math.sin(t);return new u.d(255*(e+n*(s*r+l*i)),255*(e+n*(f*r+p*i)),255*(e+n*(h*r)),this.opacity)}}))},function(t,e,n){"use strict";function r(t){if(t instanceof o)return new o(t.l,t.a,t.b,t.opacity);if(t instanceof p){var e=t.h*v.b;return new o(t.l,Math.cos(e)*t.c,Math.sin(e)*t.c,t.opacity)}t instanceof d.d||(t=n.i(d.e)(t));var r=s(t.r),i=s(t.g),u=s(t.b),c=a((.4124564*r+.3575761*i+.1804375*u)/g),l=a((.2126729*r+.7151522*i+.072175*u)/m);return new o(116*l-16,500*(c-l),200*(l-a((.0193339*r+.119192*i+.9503041*u)/y)),t.opacity)}function i(t,e,n,i){return 1===arguments.length?r(t):new o(t,e,n,null==i?1:i)}function o(t,e,n,r){this.l=+t,this.a=+e,this.b=+n,this.opacity=+r}function a(t){return t>w?Math.pow(t,1/3):t/x+_}function u(t){return t>b?t*t*t:x*(t-_)}function c(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function s(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function l(t){if(t instanceof p)return new p(t.h,t.c,t.l,t.opacity);t instanceof o||(t=r(t));var e=Math.atan2(t.b,t.a)*v.a;return new p(e<0?e+360:e,Math.sqrt(t.a*t.a+t.b*t.b),t.l,t.opacity)}function f(t,e,n,r){return 1===arguments.length?l(t):new p(t,e,n,null==r?1:r)}function p(t,e,n,r){this.h=+t,this.c=+e,this.l=+n,this.opacity=+r}e.a=i,e.b=f;var h=n(62),d=n(61),v=n(113),g=.95047,m=1,y=1.08883,_=4/29,b=6/29,x=3*b*b,w=b*b*b;n.i(h.a)(o,i,n.i(h.b)(d.f,{brighter:function(t){return new o(this.l+18*(null==t?1:t),this.a,this.b,this.opacity)},darker:function(t){return new o(this.l-18*(null==t?1:t),this.a,this.b,this.opacity)},rgb:function(){var t=(this.l+16)/116,e=isNaN(this.a)?t:t+this.a/500,n=isNaN(this.b)?t:t-this.b/200;return t=m*u(t),e=g*u(e),n=y*u(n),new d.d(c(3.2404542*e-1.5371385*t-.4985314*n),c(-.969266*e+1.8760108*t+.041556*n),c(.0556434*e-.2040259*t+1.0572252*n),this.opacity)}})),n.i(h.a)(p,f,n.i(h.b)(d.f,{brighter:function(t){return new p(this.h,this.c,this.l+18*(null==t?1:t),this.opacity)},darker:function(t){return new p(this.h,this.c,this.l-18*(null==t?1:t),this.opacity)},rgb:function(){return r(this).rgb()}}))},function(t,e,n){"use strict";function r(t){return i=n.i(u.a)(t),o=i.format,a=i.formatPrefix,i}n.d(e,"b",function(){return o}),n.d(e,"c",function(){return a}),e.a=r;var i,o,a,u=n(117);r({decimal:".",thousands:",",grouping:[3],currency:["$",""]})},function(t,e,n){"use strict";e.a=function(t,e){t=t.toPrecision(e);t:for(var n,r=t.length,i=1,o=-1;i<r;++i)switch(t[i]){case".":o=n=i;break;case"0":0===o&&(o=i),n=i;break;case"e":break t;default:o>0&&(o=0)}return o>0?t.slice(0,o)+t.slice(n+1):t}},function(t,e,n){"use strict";e.a=function(t,e){return function(n,r){for(var i=n.length,o=[],a=0,u=t[0],c=0;i>0&&u>0&&(c+u+1>r&&(u=Math.max(1,r-c)),o.push(n.substring(i-=u,i+u)),!((c+=u+1)>r));)u=t[a=(a+1)%t.length];return o.reverse().join(e)}}},function(t,e,n){"use strict";e.a=function(t){return function(e){return e.replace(/[0-9]/g,function(e){return t[+e]})}}},function(t,e,n){"use strict";var r=n(63);e.a=function(t,e){var i=n.i(r.a)(t,e);if(!i)return t+"";var o=i[0],a=i[1];return a<0?"0."+new Array(-a).join("0")+o:o.length>a+1?o.slice(0,a+1)+"."+o.slice(a+1):o+new Array(a-o.length+2).join("0")}},function(t,e,n){"use strict";e.a=function(t){return t}},function(t,e,n){"use strict";var r=n(42);e.a=function(t){return Math.max(0,-n.i(r.a)(Math.abs(t)))}},function(t,e,n){"use strict";var r=n(42);e.a=function(t,e){return Math.max(0,3*Math.max(-8,Math.min(8,Math.floor(n.i(r.a)(e)/3)))-n.i(r.a)(Math.abs(t)))}},function(t,e,n){"use strict";var r=n(42);e.a=function(t,e){return t=Math.abs(t),e=Math.abs(e)-t,Math.max(0,n.i(r.a)(e)-n.i(r.a)(t))+1}},function(t,e,n){"use strict";function r(t){return function e(r){function a(e,a){var u=t((e=n.i(i.cubehelix)(e)).h,(a=n.i(i.cubehelix)(a)).h),c=n.i(o.a)(e.s,a.s),s=n.i(o.a)(e.l,a.l),l=n.i(o.a)(e.opacity,a.opacity);return function(t){return e.h=u(t),e.s=c(t),e.l=s(Math.pow(t,r)),e.opacity=l(t),e+""}}return r=+r,a.gamma=e,a}(1)}n.d(e,"a",function(){return a});var i=n(10),o=n(31),a=(r(o.b),r(o.a))},function(t,e,n){"use strict";function r(t){return function(e,r){var a=t((e=n.i(i.hcl)(e)).h,(r=n.i(i.hcl)(r)).h),u=n.i(o.a)(e.c,r.c),c=n.i(o.a)(e.l,r.l),s=n.i(o.a)(e.opacity,r.opacity);return function(t){return e.h=a(t),e.c=u(t),e.l=c(t),e.opacity=s(t),e+""}}}var i=n(10),o=n(31);r(o.b),r(o.a)},function(t,e,n){"use strict";function r(t){return function(e,r){var a=t((e=n.i(i.hsl)(e)).h,(r=n.i(i.hsl)(r)).h),u=n.i(o.a)(e.s,r.s),c=n.i(o.a)(e.l,r.l),s=n.i(o.a)(e.opacity,r.opacity);return function(t){return e.h=a(t),e.s=u(t),e.l=c(t),e.opacity=s(t),e+""}}}var i=n(10),o=n(31);r(o.b),r(o.a)},function(t,e,n){"use strict";n(10),n(31)},function(t,e,n){"use strict"},function(t,e,n){"use strict";e.a=function(t,e){return t=+t,e-=t,function(n){return Math.round(t+e*n)}}},function(t,e,n){"use strict";n.d(e,"a",function(){return i});var r=180/Math.PI,i={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};e.b=function(t,e,n,i,o,a){var u,c,s;return(u=Math.sqrt(t*t+e*e))&&(t/=u,e/=u),(s=t*n+e*i)&&(n-=t*s,i-=e*s),(c=Math.sqrt(n*n+i*i))&&(n/=c,i/=c,s/=c),t*i<e*n&&(t=-t,e=-e,s=-s,u=-u),{translateX:o,translateY:a,rotate:Math.atan2(e,t)*r,skewX:Math.atan(s)*r,scaleX:u,scaleY:c}}},function(t,e,n){"use strict";function r(t,e,r,o){function a(t){return t.length?t.pop()+" ":""}function u(t,o,a,u,c,s){if(t!==a||o!==u){var l=c.push("translate(",null,e,null,r);s.push({i:l-4,x:n.i(i.a)(t,a)},{i:l-2,x:n.i(i.a)(o,u)})}else(a||u)&&c.push("translate("+a+e+u+r)}function c(t,e,r,u){t!==e?(t-e>180?e+=360:e-t>180&&(t+=360),u.push({i:r.push(a(r)+"rotate(",null,o)-2,x:n.i(i.a)(t,e)})):e&&r.push(a(r)+"rotate("+e+o)}function s(t,e,r,u){t!==e?u.push({i:r.push(a(r)+"skewX(",null,o)-2,x:n.i(i.a)(t,e)}):e&&r.push(a(r)+"skewX("+e+o)}function l(t,e,r,o,u,c){if(t!==r||e!==o){var s=u.push(a(u)+"scale(",null,",",null,")");c.push({i:s-4,x:n.i(i.a)(t,r)},{i:s-2,x:n.i(i.a)(e,o)})}else 1===r&&1===o||u.push(a(u)+"scale("+r+","+o+")")}return function(e,n){var r=[],i=[];return e=t(e),n=t(n),u(e.translateX,e.translateY,n.translateX,n.translateY,r,i),c(e.rotate,n.rotate,r,i),s(e.skewX,n.skewX,r,i),l(e.scaleX,e.scaleY,n.scaleX,n.scaleY,r,i),e=n=null,function(t){for(var e,n=-1,o=i.length;++n<o;)r[(e=i[n]).i]=e.x(t);return r.join("")}}}var i=n(43),o=n(236);r(o.a,"px, ","px)","deg)"),r(o.b,", ",")",")")},function(t,e,n){"use strict";function r(t){return"none"===t?s.a:(o||(o=document.createElement("DIV"),a=document.documentElement,u=document.defaultView),o.style.transform=t,t=u.getComputedStyle(a.appendChild(o),null).getPropertyValue("transform"),a.removeChild(o),t=t.slice(7,-1).split(","),n.i(s.b)(+t[0],+t[1],+t[2],+t[3],+t[4],+t[5]))}function i(t){return null==t?s.a:(c||(c=document.createElementNS("http://www.w3.org/2000/svg","g")),c.setAttribute("transform",t),(t=c.transform.baseVal.consolidate())?(t=t.matrix,n.i(s.b)(t.a,t.b,t.c,t.d,t.e,t.f)):s.a)}e.a=r,e.b=i;var o,a,u,c,s=n(234)},function(t,e,n){"use strict";Math.SQRT2},function(t,e,n){"use strict";function r(){this._x0=this._y0=this._x1=this._y1=null,this._=""}function i(){return new r}var o=Math.PI,a=2*o,u=a-1e-6;r.prototype=i.prototype={constructor:r,moveTo:function(t,e){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+e)},closePath:function(){null!==this._x1&&(this._x1=this._x0,this._y1=this._y0,this._+="Z")},lineTo:function(t,e){this._+="L"+(this._x1=+t)+","+(this._y1=+e)},quadraticCurveTo:function(t,e,n,r){this._+="Q"+ +t+","+ +e+","+(this._x1=+n)+","+(this._y1=+r)},bezierCurveTo:function(t,e,n,r,i,o){this._+="C"+ +t+","+ +e+","+ +n+","+ +r+","+(this._x1=+i)+","+(this._y1=+o)},arcTo:function(t,e,n,r,i){t=+t,e=+e,n=+n,r=+r,i=+i;var a=this._x1,u=this._y1,c=n-t,s=r-e,l=a-t,f=u-e,p=l*l+f*f;if(i<0)throw new Error("negative radius: "+i);if(null===this._x1)this._+="M"+(this._x1=t)+","+(this._y1=e);else if(p>1e-6)if(Math.abs(f*c-s*l)>1e-6&&i){var h=n-a,d=r-u,v=c*c+s*s,g=h*h+d*d,m=Math.sqrt(v),y=Math.sqrt(p),_=i*Math.tan((o-Math.acos((v+p-g)/(2*m*y)))/2),b=_/y,x=_/m;Math.abs(b-1)>1e-6&&(this._+="L"+(t+b*l)+","+(e+b*f)),this._+="A"+i+","+i+",0,0,"+ +(f*h>l*d)+","+(this._x1=t+x*c)+","+(this._y1=e+x*s)}else this._+="L"+(this._x1=t)+","+(this._y1=e);else;},arc:function(t,e,n,r,i,c){t=+t,e=+e,n=+n;var s=n*Math.cos(r),l=n*Math.sin(r),f=t+s,p=e+l,h=1^c,d=c?r-i:i-r;if(n<0)throw new Error("negative radius: "+n);null===this._x1?this._+="M"+f+","+p:(Math.abs(this._x1-f)>1e-6||Math.abs(this._y1-p)>1e-6)&&(this._+="L"+f+","+p),n&&(d<0&&(d=d%a+a),d>u?this._+="A"+n+","+n+",0,1,"+h+","+(t-s)+","+(e-l)+"A"+n+","+n+",0,1,"+h+","+(this._x1=f)+","+(this._y1=p):d>1e-6&&(this._+="A"+n+","+n+",0,"+ +(d>=o)+","+h+","+(this._x1=t+n*Math.cos(i))+","+(this._y1=e+n*Math.sin(i))))},rect:function(t,e,n,r){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+e)+"h"+ +n+"v"+ +r+"h"+-n+"Z"},toString:function(){return this._}},e.a=i},function(t,e,n){"use strict";function r(){function t(){var t=c().length,r=l[1]<l[0],o=l[r-0],u=l[1-r];e=(u-o)/Math.max(1,t-p+2*h),f&&(e=Math.floor(e)),o+=(u-o-e*(t-p))*d,i=e*(1-p),f&&(o=Math.round(o),i=Math.round(i));var v=n.i(a.range)(t).map(function(t){return o+e*t});return s(r?v.reverse():v)}var e,i,o=n.i(u.a)().unknown(void 0),c=o.domain,s=o.range,l=[0,1],f=!1,p=0,h=0,d=.5;return delete o.unknown,o.domain=function(e){return arguments.length?(c(e),t()):c()},o.range=function(e){return arguments.length?(l=[+e[0],+e[1]],t()):l.slice()},o.rangeRound=function(e){return l=[+e[0],+e[1]],f=!0,t()},o.bandwidth=function(){return i},o.step=function(){return e},o.round=function(e){return arguments.length?(f=!!e,t()):f},o.padding=function(e){return arguments.length?(p=h=Math.max(0,Math.min(1,e)),t()):p},o.paddingInner=function(e){return arguments.length?(p=Math.max(0,Math.min(1,e)),t()):p},o.paddingOuter=function(e){return arguments.length?(h=Math.max(0,Math.min(1,e)),t()):h},o.align=function(e){return arguments.length?(d=Math.max(0,Math.min(1,e)),t()):d},o.copy=function(){return r().domain(c()).range(l).round(f).paddingInner(p).paddingOuter(h).align(d)},t()}function i(t){var e=t.copy;return t.padding=t.paddingOuter,delete t.paddingInner,delete t.paddingOuter,t.copy=function(){return i(e())},t}function o(){return i(r().paddingInner(1))}e.a=r,e.b=o;var a=n(7),u=n(127)},function(t,e,n){"use strict";var r=n(33);e.a=n.i(r.a)("1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf")},function(t,e,n){"use strict";var r=n(33);e.a=n.i(r.a)("1f77b4aec7e8ff7f0effbb782ca02c98df8ad62728ff98969467bdc5b0d58c564bc49c94e377c2f7b6d27f7f7fc7c7c7bcbd22dbdb8d17becf9edae5")},function(t,e,n){"use strict";var r=n(33);e.a=n.i(r.a)("393b795254a36b6ecf9c9ede6379398ca252b5cf6bcedb9c8c6d31bd9e39e7ba52e7cb94843c39ad494ad6616be7969c7b4173a55194ce6dbdde9ed6")},function(t,e,n){"use strict";var r=n(33);e.a=n.i(r.a)("3182bd6baed69ecae1c6dbefe6550dfd8d3cfdae6bfdd0a231a35474c476a1d99bc7e9c0756bb19e9ac8bcbddcdadaeb636363969696bdbdbdd9d9d9")},function(t,e,n){"use strict";var r=n(10),i=n(30);e.a=n.i(i.d)(n.i(r.cubehelix)(300,.5,0),n.i(r.cubehelix)(-240,.5,1))},function(t,e,n){"use strict";function r(){function t(t){return+t}var e=[0,1];return t.invert=t,t.domain=t.range=function(n){return arguments.length?(e=i.a.call(n,a.a),t):e.slice()},t.copy=function(){return r().domain(e)},n.i(o.b)(t)}e.a=r;var i=n(16),o=n(34),a=n(126)},function(t,e,n){"use strict";function r(t,e){return(e=Math.log(e/t))?function(n){return Math.log(n/t)/e}:n.i(p.a)(e)}function i(t,e){return t<0?function(n){return-Math.pow(-e,n)*Math.pow(-t,1-n)}:function(n){return Math.pow(e,n)*Math.pow(t,1-n)}}function o(t){return isFinite(t)?+("1e"+t):t<0?0:t}function a(t){return 10===t?o:t===Math.E?Math.exp:function(e){return Math.pow(t,e)}}function u(t){return t===Math.E?Math.log:10===t&&Math.log10||2===t&&Math.log2||(t=Math.log(t),function(e){return Math.log(e)/t})}function c(t){return function(e){return-t(-e)}}function s(){function t(){return v=u(p),g=a(p),o()[0]<0&&(v=c(v),g=c(g)),e}var e=n.i(d.a)(r,i).domain([1,10]),o=e.domain,p=10,v=u(10),g=a(10);return e.base=function(e){return arguments.length?(p=+e,t()):p},e.domain=function(e){return arguments.length?(o(e),t()):o()},e.ticks=function(t){var e,r=o(),i=r[0],a=r[r.length-1];(e=a<i)&&(f=i,i=a,a=f);var u,c,s,f=v(i),h=v(a),d=null==t?10:+t,m=[];if(!(p%1)&&h-f<d){if(f=Math.round(f)-1,h=Math.round(h)+1,i>0){for(;f<h;++f)for(c=1,u=g(f);c<p;++c)if(!((s=u*c)<i)){if(s>a)break;m.push(s)}}else for(;f<h;++f)for(c=p-1,u=g(f);c>=1;--c)if(!((s=u*c)<i)){if(s>a)break;m.push(s)}}else m=n.i(l.ticks)(f,h,Math.min(h-f,d)).map(g);return e?m.reverse():m},e.tickFormat=function(t,r){if(null==r&&(r=10===p?".0e":","),"function"!=typeof r&&(r=n.i(f.format)(r)),t===1/0)return r;null==t&&(t=10);var i=Math.max(1,p*t/e.ticks().length);return function(t){var e=t/g(Math.round(v(t)));return e*p<p-.5&&(e*=p),e<=i?r(t):""}},e.nice=function(){return o(n.i(h.a)(o(),{floor:function(t){return g(Math.floor(v(t)))},ceil:function(t){return g(Math.ceil(v(t)))}}))},e.copy=function(){return n.i(d.c)(e,s().base(p))},e}e.a=s;var l=n(7),f=n(29),p=n(67),h=n(125),d=n(44)},function(t,e,n){"use strict";function r(t,e){return t<0?-Math.pow(-t,e):Math.pow(t,e)}function i(){function t(t,e){return(e=r(e,o)-(t=r(t,o)))?function(n){return(r(n,o)-t)/e}:n.i(a.a)(e)}function e(t,e){return e=r(e,o)-(t=r(t,o)),function(n){return r(t+e*n,1/o)}}var o=1,s=n.i(c.a)(t,e),l=s.domain;return s.exponent=function(t){return arguments.length?(o=+t,l(l())):o},s.copy=function(){return n.i(c.c)(s,i().exponent(o))},n.i(u.b)(s)}function o(){return i().exponent(.5)}e.a=i,e.b=o;var a=n(67),u=n(34),c=n(44)},function(t,e,n){"use strict";function r(){function t(){var t=0,r=Math.max(1,u.length);for(c=new Array(r-1);++t<r;)c[t-1]=n.i(i.quantile)(a,t/r);return e}function e(t){if(!isNaN(t=+t))return u[n.i(i.bisect)(c,t)]}var a=[],u=[],c=[];return e.invertExtent=function(t){var e=u.indexOf(t);return e<0?[NaN,NaN]:[e>0?c[e-1]:a[0],e<c.length?c[e]:a[a.length-1]]},e.domain=function(e){if(!arguments.length)return a.slice();a=[];for(var n,r=0,o=e.length;r<o;++r)null==(n=e[r])||isNaN(n=+n)||a.push(n);return a.sort(i.ascending),t()},e.range=function(e){return arguments.length?(u=o.b.call(e),t()):u.slice()},e.quantiles=function(){return c.slice()},e.copy=function(){return r().domain(a).range(u)},e}e.a=r;var i=n(7),o=n(16)},function(t,e,n){"use strict";function r(){function t(t){if(t<=t)return f[n.i(i.bisect)(l,t,0,s)]}function e(){var e=-1;for(l=new Array(s);++e<s;)l[e]=((e+1)*c-(e-s)*u)/(s+1);return t}var u=0,c=1,s=1,l=[.5],f=[0,1];return t.domain=function(t){return arguments.length?(u=+t[0],c=+t[1],e()):[u,c]},t.range=function(t){return arguments.length?(s=(f=o.b.call(t)).length-1,e()):f.slice()},t.invertExtent=function(t){var e=f.indexOf(t);return e<0?[NaN,NaN]:e<1?[u,l[0]]:e>=s?[l[s-1],c]:[l[e-1],l[e]]},t.copy=function(){return r().domain([u,c]).range(f)},n.i(a.b)(t)}e.a=r;var i=n(7),o=n(16),a=n(34)},function(t,e,n){"use strict";n.d(e,"b",function(){return o}),n.d(e,"c",function(){return a});var r=n(10),i=n(30),o=n.i(i.d)(n.i(r.cubehelix)(-100,.75,.35),n.i(r.cubehelix)(80,1.5,.8)),a=n.i(i.d)(n.i(r.cubehelix)(260,.75,.35),n.i(r.cubehelix)(80,1.5,.8)),u=n.i(r.cubehelix)();e.a=function(t){(t<0||t>1)&&(t-=Math.floor(t));var e=Math.abs(t-.5);return u.h=360*t-100,u.s=1.5-1.5*e,u.l=.8-.9*e,u+""}},function(t,e,n){"use strict";function r(t){function e(e){var n=(e-o)/(a-o);return t(u?Math.max(0,Math.min(1,n)):n)}var o=0,a=1,u=!1;return e.domain=function(t){return arguments.length?(o=+t[0],a=+t[1],e):[o,a]},e.clamp=function(t){return arguments.length?(u=!!t,e):u},e.interpolator=function(n){return arguments.length?(t=n,e):t},e.copy=function(){return r(t).domain([o,a]).clamp(u)},n.i(i.b)(e)}e.a=r;var i=n(34)},function(t,e,n){"use strict";function r(){function t(t){if(t<=t)return a[n.i(i.bisect)(e,t,0,u)]}var e=[.5],a=[0,1],u=1;return t.domain=function(n){return arguments.length?(e=o.b.call(n),u=Math.min(e.length,a.length-1),t):e.slice()},t.range=function(n){return arguments.length?(a=o.b.call(n),u=Math.min(e.length,a.length-1),t):a.slice()},t.invertExtent=function(t){var n=a.indexOf(t);return[e[n-1],e[n]]},t.copy=function(){return r().domain(e).range(a)},t}e.a=r;var i=n(7),o=n(16)},function(t,e,n){"use strict";var r=n(7),i=n(29);e.a=function(t,e,o){var a,u=t[0],c=t[t.length-1],s=n.i(r.tickStep)(u,c,null==e?10:e);switch(o=n.i(i.formatSpecifier)(null==o?",f":o),o.type){case"s":var l=Math.max(Math.abs(u),Math.abs(c));return null!=o.precision||isNaN(a=n.i(i.precisionPrefix)(s,l))||(o.precision=a),n.i(i.formatPrefix)(o,l);case"":case"e":case"g":case"p":case"r":null!=o.precision||isNaN(a=n.i(i.precisionRound)(s,Math.max(Math.abs(u),Math.abs(c))))||(o.precision=a-("e"===o.type));break;case"f":case"%":null!=o.precision||isNaN(a=n.i(i.precisionFixed)(s))||(o.precision=a-2*("%"===o.type))}return n.i(i.format)(o)}},function(t,e,n){"use strict";var r=n(128),i=n(78),o=n(80);e.a=function(){return n.i(r.b)(o.h,o.k,o.l,o.b,o.m,o.n,o.o,o.p,i.utcFormat).domain([Date.UTC(2e3,0,1),Date.UTC(2e3,0,2)])}},function(t,e,n){"use strict";function r(t){var e=t.length;return function(n){return t[Math.max(0,Math.min(e-1,Math.floor(n*e)))]}}n.d(e,"b",function(){return o}),n.d(e,"c",function(){return a}),n.d(e,"d",function(){return u});var i=n(33);e.a=r(n.i(i.a)("44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548146748166848176948186a481a6c481b6d481c6e481d6f481f70482071482173482374482475482576482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581453781453882443983443a83443b84433d84433e85423f854240864241864142874144874045884046883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a548c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad8128ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773aba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c56954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece5870cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21ad8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8e621fbe723fde725"));var o=r(n.i(i.a)("00000401000501010601010802010902020b02020d03030f03031204041405041606051806051a07061c08071e0907200a08220b09240c09260d0a290e0b2b100b2d110c2f120d31130d34140e36150e38160f3b180f3d19103f1a10421c10441d11471e114920114b21114e22115024125325125527125829115a2a115c2c115f2d11612f116331116533106734106936106b38106c390f6e3b0f703d0f713f0f72400f74420f75440f764510774710784910784a10794c117a4e117b4f127b51127c52137c54137d56147d57157e59157e5a167e5c167f5d177f5f187f601880621980641a80651a80671b80681c816a1c816b1d816d1d816e1e81701f81721f817320817521817621817822817922827b23827c23827e24828025828125818326818426818627818827818928818b29818c29818e2a81902a81912b81932b80942c80962c80982d80992d809b2e7f9c2e7f9e2f7fa02f7fa1307ea3307ea5317ea6317da8327daa337dab337cad347cae347bb0357bb2357bb3367ab5367ab73779b83779ba3878bc3978bd3977bf3a77c03a76c23b75c43c75c53c74c73d73c83e73ca3e72cc3f71cd4071cf4070d0416fd2426fd3436ed5446dd6456cd8456cd9466bdb476adc4869de4968df4a68e04c67e24d66e34e65e44f64e55064e75263e85362e95462ea5661eb5760ec5860ed5a5fee5b5eef5d5ef05f5ef1605df2625df2645cf3655cf4675cf4695cf56b5cf66c5cf66e5cf7705cf7725cf8745cf8765cf9785df9795df97b5dfa7d5efa7f5efa815ffb835ffb8560fb8761fc8961fc8a62fc8c63fc8e64fc9065fd9266fd9467fd9668fd9869fd9a6afd9b6bfe9d6cfe9f6dfea16efea36ffea571fea772fea973feaa74feac76feae77feb078feb27afeb47bfeb67cfeb77efeb97ffebb81febd82febf84fec185fec287fec488fec68afec88cfeca8dfecc8ffecd90fecf92fed194fed395fed597fed799fed89afdda9cfddc9efddea0fde0a1fde2a3fde3a5fde5a7fde7a9fde9aafdebacfcecaefceeb0fcf0b2fcf2b4fcf4b6fcf6b8fcf7b9fcf9bbfcfbbdfcfdbf")),a=r(n.i(i.a)("00000401000501010601010802010a02020c02020e03021004031204031405041706041907051b08051d09061f0a07220b07240c08260d08290e092b10092d110a30120a32140b34150b37160b39180c3c190c3e1b0c411c0c431e0c451f0c48210c4a230c4c240c4f260c51280b53290b552b0b572d0b592f0a5b310a5c320a5e340a5f3609613809623909633b09643d09653e0966400a67420a68440a68450a69470b6a490b6a4a0c6b4c0c6b4d0d6c4f0d6c510e6c520e6d540f6d550f6d57106e59106e5a116e5c126e5d126e5f136e61136e62146e64156e65156e67166e69166e6a176e6c186e6d186e6f196e71196e721a6e741a6e751b6e771c6d781c6d7a1d6d7c1d6d7d1e6d7f1e6c801f6c82206c84206b85216b87216b88226a8a226a8c23698d23698f24699025689225689326679526679727669827669a28659b29649d29649f2a63a02a63a22b62a32c61a52c60a62d60a82e5fa92e5eab2f5ead305dae305cb0315bb1325ab3325ab43359b63458b73557b93556ba3655bc3754bd3853bf3952c03a51c13a50c33b4fc43c4ec63d4dc73e4cc83f4bca404acb4149cc4248ce4347cf4446d04545d24644d34743d44842d54a41d74b3fd84c3ed94d3dda4e3cdb503bdd513ade5238df5337e05536e15635e25734e35933e45a31e55c30e65d2fe75e2ee8602de9612bea632aeb6429eb6628ec6726ed6925ee6a24ef6c23ef6e21f06f20f1711ff1731df2741cf3761bf37819f47918f57b17f57d15f67e14f68013f78212f78410f8850ff8870ef8890cf98b0bf98c0af98e09fa9008fa9207fa9407fb9606fb9706fb9906fb9b06fb9d07fc9f07fca108fca309fca50afca60cfca80dfcaa0ffcac11fcae12fcb014fcb216fcb418fbb61afbb81dfbba1ffbbc21fbbe23fac026fac228fac42afac62df9c72ff9c932f9cb35f8cd37f8cf3af7d13df7d340f6d543f6d746f5d949f5db4cf4dd4ff4df53f4e156f3e35af3e55df2e661f2e865f2ea69f1ec6df1ed71f1ef75f1f179f2f27df2f482f3f586f3f68af4f88ef5f992f6fa96f8fb9af9fc9dfafda1fcffa4")),u=r(n.i(i.a)("0d088710078813078916078a19068c1b068d1d068e20068f2206902406912605912805922a05932c05942e05952f059631059733059735049837049938049a3a049a3c049b3e049c3f049c41049d43039e44039e46039f48039f4903a04b03a14c02a14e02a25002a25102a35302a35502a45601a45801a45901a55b01a55c01a65e01a66001a66100a76300a76400a76600a76700a86900a86a00a86c00a86e00a86f00a87100a87201a87401a87501a87701a87801a87a02a87b02a87d03a87e03a88004a88104a78305a78405a78606a68707a68808a68a09a58b0aa58d0ba58e0ca48f0da4910ea3920fa39410a29511a19613a19814a099159f9a169f9c179e9d189d9e199da01a9ca11b9ba21d9aa31e9aa51f99a62098a72197a82296aa2395ab2494ac2694ad2793ae2892b02991b12a90b22b8fb32c8eb42e8db52f8cb6308bb7318ab83289ba3388bb3488bc3587bd3786be3885bf3984c03a83c13b82c23c81c33d80c43e7fc5407ec6417dc7427cc8437bc9447aca457acb4679cc4778cc4977cd4a76ce4b75cf4c74d04d73d14e72d24f71d35171d45270d5536fd5546ed6556dd7566cd8576bd9586ada5a6ada5b69db5c68dc5d67dd5e66de5f65de6164df6263e06363e16462e26561e26660e3685fe4695ee56a5de56b5de66c5ce76e5be76f5ae87059e97158e97257ea7457eb7556eb7655ec7754ed7953ed7a52ee7b51ef7c51ef7e50f07f4ff0804ef1814df1834cf2844bf3854bf3874af48849f48948f58b47f58c46f68d45f68f44f79044f79143f79342f89441f89540f9973ff9983ef99a3efa9b3dfa9c3cfa9e3bfb9f3afba139fba238fca338fca537fca636fca835fca934fdab33fdac33fdae32fdaf31fdb130fdb22ffdb42ffdb52efeb72dfeb82cfeba2cfebb2bfebd2afebe2afec029fdc229fdc328fdc527fdc627fdc827fdca26fdcb26fccd25fcce25fcd025fcd225fbd324fbd524fbd724fad824fada24f9dc24f9dd25f8df25f8e125f7e225f7e425f6e626f6e826f5e926f5eb27f4ed27f3ee27f3f027f2f227f1f426f1f525f0f724f0f921"))},function(t,e,n){"use strict";e.a=function(t){return function(){return t}}},function(t,e,n){"use strict";var r=n(45),i=n(131);e.a=function(t){return n.i(i.a)(n.i(r.a)(t).call(document.documentElement))}},function(t,e,n){"use strict";function r(){return new i}function i(){this._="@"+(++o).toString(36)}e.a=r;var o=0;i.prototype=r.prototype={constructor:i,get:function(t){for(var e=this._;!(e in t);)if(!(t=t.parentNode))return;return t[e]},set:function(t,e){return t[this._]=e},remove:function(t){return this._ in t&&delete t[this._]},toString:function(){return this._}}},function(t,e,n){"use strict";var r=n(72),i=n(46);e.a=function(t){var e=n.i(r.a)();return e.changedTouches&&(e=e.changedTouches[0]),n.i(i.a)(t,e)}},function(t,e,n){"use strict";var r=n(8);e.a=function(t){return"string"==typeof t?new r.b([document.querySelectorAll(t)],[document.documentElement]):new r.b([null==t?[]:t],r.c)}},function(t,e,n){"use strict";var r=n(45);e.a=function(t){var e="function"==typeof t?t:n.i(r.a)(t);return this.select(function(){return this.appendChild(e.apply(this,arguments))})}},function(t,e,n){"use strict";function r(t){return function(){this.removeAttribute(t)}}function i(t){return function(){this.removeAttributeNS(t.space,t.local)}}function o(t,e){return function(){this.setAttribute(t,e)}}function a(t,e){return function(){this.setAttributeNS(t.space,t.local,e)}}function u(t,e){return function(){var n=e.apply(this,arguments);null==n?this.removeAttribute(t):this.setAttribute(t,n)}}function c(t,e){return function(){var n=e.apply(this,arguments);null==n?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,n)}}var s=n(68);e.a=function(t,e){var l=n.i(s.a)(t);if(arguments.length<2){var f=this.node();return l.local?f.getAttributeNS(l.space,l.local):f.getAttribute(l)}return this.each((null==e?l.local?i:r:"function"==typeof e?l.local?c:u:l.local?a:o)(l,e))}},function(t,e,n){"use strict";e.a=function(){var t=arguments[0];return arguments[0]=this,t.apply(null,arguments),this}},function(t,e,n){"use strict";function r(t){return t.trim().split(/^|\s+/)}function i(t){return t.classList||new o(t)}function o(t){this._node=t,this._names=r(t.getAttribute("class")||"")}function a(t,e){for(var n=i(t),r=-1,o=e.length;++r<o;)n.add(e[r])}function u(t,e){for(var n=i(t),r=-1,o=e.length;++r<o;)n.remove(e[r])}function c(t){return function(){a(this,t)}}function s(t){return function(){u(this,t)}}function l(t,e){return function(){(e.apply(this,arguments)?a:u)(this,t)}}o.prototype={add:function(t){this._names.indexOf(t)<0&&(this._names.push(t),this._node.setAttribute("class",this._names.join(" ")))},remove:function(t){var e=this._names.indexOf(t);e>=0&&(this._names.splice(e,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}},e.a=function(t,e){var n=r(t+"");if(arguments.length<2){for(var o=i(this.node()),a=-1,u=n.length;++a<u;)if(!o.contains(n[a]))return!1;return!0}return this.each(("function"==typeof e?l:e?c:s)(n,e))}},function(t,e,n){"use strict";function r(){return this.parentNode.insertBefore(this.cloneNode(!1),this.nextSibling)}function i(){return this.parentNode.insertBefore(this.cloneNode(!0),this.nextSibling)}e.a=function(t){return this.select(t?i:r)}},function(t,e,n){"use strict";function r(t,e,n,r,i,o){for(var u,c=0,s=e.length,l=o.length;c<l;++c)(u=e[c])?(u.__data__=o[c],r[c]=u):n[c]=new a.b(t,o[c]);for(;c<s;++c)(u=e[c])&&(i[c]=u)}function i(t,e,n,r,i,o,u){var s,l,f,p={},h=e.length,d=o.length,v=new Array(h);for(s=0;s<h;++s)(l=e[s])&&(v[s]=f=c+u.call(l,l.__data__,s,e),f in p?i[s]=l:p[f]=l);for(s=0;s<d;++s)f=c+u.call(t,o[s],s,o),(l=p[f])?(r[s]=l,l.__data__=o[s],p[f]=null):n[s]=new a.b(t,o[s]);for(s=0;s<h;++s)(l=e[s])&&p[v[s]]===l&&(i[s]=l)}var o=n(8),a=n(132),u=n(256),c="$";e.a=function(t,e){if(!t)return y=new Array(this.size()),d=-1,this.each(function(t){y[++d]=t}),y;var a=e?i:r,c=this._parents,s=this._groups;"function"!=typeof t&&(t=n.i(u.a)(t));for(var l=s.length,f=new Array(l),p=new Array(l),h=new Array(l),d=0;d<l;++d){var v=c[d],g=s[d],m=g.length,y=t.call(v,v&&v.__data__,d,c),_=y.length,b=p[d]=new Array(_),x=f[d]=new Array(_);a(v,g,b,x,h[d]=new Array(m),y,e);for(var w,C,k=0,E=0;k<_;++k)if(w=b[k]){for(k>=E&&(E=k+1);!(C=x[E])&&++E<_;);w._next=C||null}}return f=new o.b(f,c),f._enter=p,f._exit=h,f}},function(t,e,n){"use strict";e.a=function(t){return arguments.length?this.property("__data__",t):this.node().__data__}},function(t,e,n){"use strict";function r(t,e,r){var i=n.i(a.a)(t),o=i.CustomEvent;"function"==typeof o?o=new o(e,r):(o=i.document.createEvent("Event"),r?(o.initEvent(e,r.bubbles,r.cancelable),o.detail=r.detail):o.initEvent(e,!1,!1)),t.dispatchEvent(o)}function i(t,e){return function(){return r(this,t,e)}}function o(t,e){return function(){return r(this,t,e.apply(this,arguments))}}var a=n(73);e.a=function(t,e){return this.each(("function"==typeof e?o:i)(t,e))}},function(t,e,n){"use strict";e.a=function(t){for(var e=this._groups,n=0,r=e.length;n<r;++n)for(var i,o=e[n],a=0,u=o.length;a<u;++a)(i=o[a])&&t.call(i,i.__data__,a,o);return this}},function(t,e,n){"use strict";e.a=function(){return!this.node()}},function(t,e,n){"use strict";var r=n(133),i=n(8);e.a=function(){return new i.b(this._exit||this._groups.map(r.a),this._parents)}},function(t,e,n){"use strict";var r=n(8),i=n(130);e.a=function(t){"function"!=typeof t&&(t=n.i(i.a)(t));for(var e=this._groups,o=e.length,a=new Array(o),u=0;u<o;++u)for(var c,s=e[u],l=s.length,f=a[u]=[],p=0;p<l;++p)(c=s[p])&&t.call(c,c.__data__,p,s)&&f.push(c);return new r.b(a,this._parents)}},function(t,e,n){"use strict";function r(){this.innerHTML=""}function i(t){return function(){this.innerHTML=t}}function o(t){return function(){var e=t.apply(this,arguments);this.innerHTML=null==e?"":e}}e.a=function(t){return arguments.length?this.each(null==t?r:("function"==typeof t?o:i)(t)):this.node().innerHTML}},function(t,e,n){"use strict";function r(){return null}var i=n(45),o=n(71);e.a=function(t,e){var a="function"==typeof t?t:n.i(i.a)(t),u=null==e?r:"function"==typeof e?e:n.i(o.a)(e);return this.select(function(){return this.insertBefore(a.apply(this,arguments),u.apply(this,arguments)||null)})}},function(t,e,n){"use strict";function r(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}e.a=function(){return this.each(r)}},function(t,e,n){"use strict";var r=n(8);e.a=function(t){for(var e=this._groups,n=t._groups,i=e.length,o=n.length,a=Math.min(i,o),u=new Array(i),c=0;c<a;++c)for(var s,l=e[c],f=n[c],p=l.length,h=u[c]=new Array(p),d=0;d<p;++d)(s=l[d]||f[d])&&(h[d]=s);for(;c<i;++c)u[c]=e[c];return new r.b(u,this._parents)}},function(t,e,n){"use strict";e.a=function(){for(var t=this._groups,e=0,n=t.length;e<n;++e)for(var r=t[e],i=0,o=r.length;i<o;++i){var a=r[i];if(a)return a}return null}},function(t,e,n){"use strict";e.a=function(){var t=new Array(this.size()),e=-1;return this.each(function(){t[++e]=this}),t}},function(t,e,n){"use strict";e.a=function(){for(var t=this._groups,e=-1,n=t.length;++e<n;)for(var r,i=t[e],o=i.length-1,a=i[o];--o>=0;)(r=i[o])&&(a&&a!==r.nextSibling&&a.parentNode.insertBefore(r,a),a=r);return this}},function(t,e,n){"use strict";function r(t){return function(){delete this[t]}}function i(t,e){return function(){this[t]=e}}function o(t,e){return function(){var n=e.apply(this,arguments);null==n?delete this[t]:this[t]=n}}e.a=function(t,e){return arguments.length>1?this.each((null==e?r:"function"==typeof e?o:i)(t,e)):this.node()[t]}},function(t,e,n){"use strict";function r(){this.nextSibling&&this.parentNode.appendChild(this)}e.a=function(){return this.each(r)}},function(t,e,n){"use strict";function r(){var t=this.parentNode;t&&t.removeChild(this)}e.a=function(){return this.each(r)}},function(t,e,n){"use strict";var r=n(8),i=n(71);e.a=function(t){"function"!=typeof t&&(t=n.i(i.a)(t));for(var e=this._groups,o=e.length,a=new Array(o),u=0;u<o;++u)for(var c,s,l=e[u],f=l.length,p=a[u]=new Array(f),h=0;h<f;++h)(c=l[h])&&(s=t.call(c,c.__data__,h,l))&&("__data__"in c&&(s.__data__=c.__data__),p[h]=s);return new r.b(a,this._parents)}},function(t,e,n){"use strict";var r=n(8),i=n(135);e.a=function(t){"function"!=typeof t&&(t=n.i(i.a)(t));for(var e=this._groups,o=e.length,a=[],u=[],c=0;c<o;++c)for(var s,l=e[c],f=l.length,p=0;p<f;++p)(s=l[p])&&(a.push(t.call(s,s.__data__,p,l)),u.push(s));return new r.b(a,u)}},function(t,e,n){"use strict";e.a=function(){var t=0;return this.each(function(){++t}),t}},function(t,e,n){"use strict";function r(t,e){return t<e?-1:t>e?1:t>=e?0:NaN}var i=n(8);e.a=function(t){function e(e,n){return e&&n?t(e.__data__,n.__data__):!e-!n}t||(t=r);for(var n=this._groups,o=n.length,a=new Array(o),u=0;u<o;++u){for(var c,s=n[u],l=s.length,f=a[u]=new Array(l),p=0;p<l;++p)(c=s[p])&&(f[p]=c);f.sort(e)}return new i.b(a,this._parents).order()}},function(t,e,n){"use strict";function r(){this.textContent=""}function i(t){return function(){this.textContent=t}}function o(t){return function(){var e=t.apply(this,arguments);this.textContent=null==e?"":e}}e.a=function(t){return arguments.length?this.each(null==t?r:("function"==typeof t?o:i)(t)):this.node().textContent}},function(t,e,n){"use strict";var r=n(72),i=n(46);e.a=function(t,e,o){arguments.length<3&&(o=e,e=n.i(r.a)().changedTouches);for(var a,u=0,c=e?e.length:0;u<c;++u)if((a=e[u]).identifier===o)return n.i(i.a)(t,a);return null}},function(t,e,n){"use strict";var r=n(72),i=n(46);e.a=function(t,e){null==e&&(e=n.i(r.a)().touches);for(var o=0,a=e?e.length:0,u=new Array(a);o<a;++o)u[o]=n.i(i.a)(t,e[o]);return u}},function(t,e,n){"use strict";function r(t){return t.innerRadius}function i(t){return t.outerRadius}function o(t){return t.startAngle}function a(t){return t.endAngle}function u(t){return t&&t.padAngle}function c(t,e,n,r,i,o,a,u){var c=n-t,s=r-e,l=a-i,f=u-o,p=(l*(e-o)-f*(t-i))/(f*c-l*s);return[t+p*c,e+p*s]}function s(t,e,r,i,o,a,u){var c=t-r,s=e-i,l=(u?a:-a)/n.i(p.d)(c*c+s*s),f=l*s,h=-l*c,d=t+f,v=e+h,g=r+f,m=i+h,y=(d+g)/2,_=(v+m)/2,b=g-d,x=m-v,w=b*b+x*x,C=o-a,k=d*m-g*v,E=(x<0?-1:1)*n.i(p.d)(n.i(p.e)(0,C*C*w-k*k)),M=(k*x-b*E)/w,T=(-k*b-x*E)/w,S=(k*x+b*E)/w,N=(-k*b+x*E)/w,A=M-y,P=T-_,O=S-y,I=N-_;return A*A+P*P>O*O+I*I&&(M=S,T=N),{cx:M,cy:T,x01:-f,y01:-h,x11:M*(o/C-1),y11:T*(o/C-1)}}var l=n(32),f=n(17),p=n(35);e.a=function(){function t(){var t,r,i=+e.apply(this,arguments),o=+h.apply(this,arguments),a=g.apply(this,arguments)-p.f,u=m.apply(this,arguments)-p.f,f=n.i(p.g)(u-a),b=u>a;if(_||(_=t=n.i(l.a)()),o<i&&(r=o,o=i,i=r),o>p.a)if(f>p.c-p.a)_.moveTo(o*n.i(p.h)(a),o*n.i(p.i)(a)),_.arc(0,0,o,a,u,!b),i>p.a&&(_.moveTo(i*n.i(p.h)(u),i*n.i(p.i)(u)),_.arc(0,0,i,u,a,b));else{var x,w,C=a,k=u,E=a,M=u,T=f,S=f,N=y.apply(this,arguments)/2,A=N>p.a&&(v?+v.apply(this,arguments):n.i(p.d)(i*i+o*o)),P=n.i(p.j)(n.i(p.g)(o-i)/2,+d.apply(this,arguments)),O=P,I=P;if(A>p.a){var D=n.i(p.k)(A/i*n.i(p.i)(N)),R=n.i(p.k)(A/o*n.i(p.i)(N));(T-=2*D)>p.a?(D*=b?1:-1,E+=D,M-=D):(T=0,E=M=(a+u)/2),(S-=2*R)>p.a?(R*=b?1:-1,C+=R,k-=R):(S=0,C=k=(a+u)/2)}var L=o*n.i(p.h)(C),U=o*n.i(p.i)(C),F=i*n.i(p.h)(M),j=i*n.i(p.i)(M);if(P>p.a){var B=o*n.i(p.h)(k),V=o*n.i(p.i)(k),W=i*n.i(p.h)(E),z=i*n.i(p.i)(E);if(f<p.b){var H=T>p.a?c(L,U,W,z,B,V,F,j):[F,j],q=L-H[0],Y=U-H[1],K=B-H[0],G=V-H[1],$=1/n.i(p.i)(n.i(p.l)((q*K+Y*G)/(n.i(p.d)(q*q+Y*Y)*n.i(p.d)(K*K+G*G)))/2),X=n.i(p.d)(H[0]*H[0]+H[1]*H[1]);O=n.i(p.j)(P,(i-X)/($-1)),I=n.i(p.j)(P,(o-X)/($+1))}}S>p.a?I>p.a?(x=s(W,z,L,U,o,I,b),w=s(B,V,F,j,o,I,b),_.moveTo(x.cx+x.x01,x.cy+x.y01),I<P?_.arc(x.cx,x.cy,I,n.i(p.m)(x.y01,x.x01),n.i(p.m)(w.y01,w.x01),!b):(_.arc(x.cx,x.cy,I,n.i(p.m)(x.y01,x.x01),n.i(p.m)(x.y11,x.x11),!b),_.arc(0,0,o,n.i(p.m)(x.cy+x.y11,x.cx+x.x11),n.i(p.m)(w.cy+w.y11,w.cx+w.x11),!b),_.arc(w.cx,w.cy,I,n.i(p.m)(w.y11,w.x11),n.i(p.m)(w.y01,w.x01),!b))):(_.moveTo(L,U),_.arc(0,0,o,C,k,!b)):_.moveTo(L,U),i>p.a&&T>p.a?O>p.a?(x=s(F,j,B,V,i,-O,b),w=s(L,U,W,z,i,-O,b),_.lineTo(x.cx+x.x01,x.cy+x.y01),O<P?_.arc(x.cx,x.cy,O,n.i(p.m)(x.y01,x.x01),n.i(p.m)(w.y01,w.x01),!b):(_.arc(x.cx,x.cy,O,n.i(p.m)(x.y01,x.x01),n.i(p.m)(x.y11,x.x11),!b),_.arc(0,0,i,n.i(p.m)(x.cy+x.y11,x.cx+x.x11),n.i(p.m)(w.cy+w.y11,w.cx+w.x11),b),_.arc(w.cx,w.cy,O,n.i(p.m)(w.y11,w.x11),n.i(p.m)(w.y01,w.x01),!b))):_.arc(0,0,i,M,E,b):_.lineTo(F,j)}else _.moveTo(0,0);if(_.closePath(),t)return _=null,t+""||null}var e=r,h=i,d=n.i(f.a)(0),v=null,g=o,m=a,y=u,_=null;return t.centroid=function(){var t=(+e.apply(this,arguments)+ +h.apply(this,arguments))/2,r=(+g.apply(this,arguments)+ +m.apply(this,arguments))/2-p.b/2;return[n.i(p.h)(r)*t,n.i(p.i)(r)*t]},t.innerRadius=function(r){return arguments.length?(e="function"==typeof r?r:n.i(f.a)(+r),t):e},t.outerRadius=function(e){return arguments.length?(h="function"==typeof e?e:n.i(f.a)(+e),t):h},t.cornerRadius=function(e){return arguments.length?(d="function"==typeof e?e:n.i(f.a)(+e),t):d},t.padRadius=function(e){return arguments.length?(v=null==e?null:"function"==typeof e?e:n.i(f.a)(+e),t):v},t.startAngle=function(e){return arguments.length?(g="function"==typeof e?e:n.i(f.a)(+e),t):g},t.endAngle=function(e){return arguments.length?(m="function"==typeof e?e:n.i(f.a)(+e),t):m},t.padAngle=function(e){return arguments.length?(y="function"==typeof e?e:n.i(f.a)(+e),t):y},t.context=function(e){return arguments.length?(_=null==e?null:e,t):_},t}},function(t,e,n){"use strict";var r=n(141),i=n(137),o=n(142);e.a=function(){var t=n.i(i.a)().curve(r.b),e=t.curve,a=t.lineX0,u=t.lineX1,c=t.lineY0,s=t.lineY1;return t.angle=t.x,delete t.x,t.startAngle=t.x0,delete t.x0,t.endAngle=t.x1,delete t.x1,t.radius=t.y,delete t.y,t.innerRadius=t.y0,delete t.y0,t.outerRadius=t.y1,delete t.y1,t.lineStartAngle=function(){return n.i(o.b)(a())},delete t.lineX0,t.lineEndAngle=function(){return n.i(o.b)(u())},delete t.lineX1,t.lineInnerRadius=function(){return n.i(o.b)(c())},delete t.lineY0,t.lineOuterRadius=function(){return n.i(o.b)(s())},delete t.lineY1,t.curve=function(t){return arguments.length?e(n.i(r.a)(t)):e()._curve},t}},function(t,e,n){"use strict";function r(t){this._context=t}var i=n(50),o=n(47);r.prototype={areaStart:i.a,areaEnd:i.a,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x2,this._y2),this._context.closePath();break;case 2:this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break;case 3:this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4)}},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._x2=t,this._y2=e;break;case 1:this._point=2,this._x3=t,this._y3=e;break;case 2:this._point=3,this._x4=t,this._y4=e,this._context.moveTo((this._x0+4*this._x1+t)/6,(this._y0+4*this._y1+e)/6);break;default:n.i(o.c)(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}},e.a=function(t){return new r(t)}},function(t,e,n){"use strict";function r(t){this._context=t}var i=n(47);r.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var r=(this._x0+4*this._x1+t)/6,o=(this._y0+4*this._y1+e)/6;this._line?this._context.lineTo(r,o):this._context.moveTo(r,o);break;case 3:this._point=4;default:n.i(i.c)(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}},e.a=function(t){return new r(t)}},function(t,e,n){"use strict";function r(t,e){this._basis=new i.b(t),this._beta=e}var i=n(47);r.prototype={lineStart:function(){this._x=[],this._y=[],this._basis.lineStart()},lineEnd:function(){var t=this._x,e=this._y,n=t.length-1;if(n>0)for(var r,i=t[0],o=e[0],a=t[n]-i,u=e[n]-o,c=-1;++c<=n;)r=c/n,this._basis.point(this._beta*t[c]+(1-this._beta)*(i+r*a),this._beta*e[c]+(1-this._beta)*(o+r*u));this._x=this._y=null,this._basis.lineEnd()},point:function(t,e){this._x.push(+t),this._y.push(+e)}},e.a=function t(e){function n(t){return 1===e?new i.b(t):new r(t,e)}return n.beta=function(e){return t(+e)},n}(.85)},function(t,e,n){"use strict";function r(t,e){this._context=t,this._alpha=e}var i=n(139),o=n(50),a=n(74);r.prototype={areaStart:o.a,areaEnd:o.a,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,e){if(t=+t,e=+e,this._point){var r=this._x2-t,i=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+i*i,this._alpha))}switch(this._point){case 0:this._point=1,this._x3=t,this._y3=e;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=e);break;case 2:this._point=3,this._x5=t,this._y5=e;break;default:n.i(a.b)(this,t,e)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}},e.a=function t(e){function n(t){return e?new r(t,e):new i.b(t,0)}return n.alpha=function(e){return t(+e)},n}(.5)},function(t,e,n){"use strict";function r(t,e){this._context=t,this._alpha=e}var i=n(140),o=n(74);r.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){if(t=+t,e=+e,this._point){var r=this._x2-t,i=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+i*i,this._alpha))}switch(this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:n.i(o.b)(this,t,e)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}},e.a=function t(e){function n(t){return e?new r(t,e):new i.b(t,0)}return n.alpha=function(e){return t(+e)},n}(.5)},function(t,e,n){"use strict";function r(t){this._context=t}var i=n(50);r.prototype={areaStart:i.a,areaEnd:i.a,lineStart:function(){this._point=0},lineEnd:function(){this._point&&this._context.closePath()},point:function(t,e){t=+t,e=+e,this._point?this._context.lineTo(t,e):(this._point=1,this._context.moveTo(t,e))}},e.a=function(t){return new r(t)}},function(t,e,n){"use strict";function r(t){return t<0?-1:1}function i(t,e,n){var i=t._x1-t._x0,o=e-t._x1,a=(t._y1-t._y0)/(i||o<0&&-0),u=(n-t._y1)/(o||i<0&&-0),c=(a*o+u*i)/(i+o);return(r(a)+r(u))*Math.min(Math.abs(a),Math.abs(u),.5*Math.abs(c))||0}function o(t,e){var n=t._x1-t._x0;return n?(3*(t._y1-t._y0)/n-e)/2:e}function a(t,e,n){var r=t._x0,i=t._y0,o=t._x1,a=t._y1,u=(o-r)/3;t._context.bezierCurveTo(r+u,i+u*e,o-u,a-u*n,o,a)}function u(t){this._context=t}function c(t){this._context=new s(t)}function s(t){this._context=t}function l(t){return new u(t)}function f(t){return new c(t)}e.a=l,e.b=f,u.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=this._t0=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x1,this._y1);break;case 3:a(this,this._t0,o(this,this._t0))}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){var n=NaN;if(t=+t,e=+e,t!==this._x1||e!==this._y1){switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3,a(this,o(this,n=i(this,t,e)),n);break;default:a(this,this._t0,n=i(this,t,e))}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e,this._t0=n}}},(c.prototype=Object.create(u.prototype)).point=function(t,e){u.prototype.point.call(this,e,t)},s.prototype={moveTo:function(t,e){this._context.moveTo(e,t)},closePath:function(){this._context.closePath()},lineTo:function(t,e){this._context.lineTo(e,t)},bezierCurveTo:function(t,e,n,r,i,o){this._context.bezierCurveTo(e,t,r,n,o,i)}}},function(t,e,n){"use strict";function r(t){this._context=t}function i(t){var e,n,r=t.length-1,i=new Array(r),o=new Array(r),a=new Array(r);for(i[0]=0,o[0]=2,a[0]=t[0]+2*t[1],e=1;e<r-1;++e)i[e]=1,o[e]=4,a[e]=4*t[e]+2*t[e+1];for(i[r-1]=2,o[r-1]=7,a[r-1]=8*t[r-1]+t[r],e=1;e<r;++e)n=i[e]/o[e-1],o[e]-=n,a[e]-=n*a[e-1];for(i[r-1]=a[r-1]/o[r-1],e=r-2;e>=0;--e)i[e]=(a[e]-i[e+1])/o[e];for(o[r-1]=(t[r]+i[r-1])/2,e=0;e<r-1;++e)o[e]=2*t[e+1]-i[e+1];return[i,o]}r.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=[],this._y=[]},lineEnd:function(){var t=this._x,e=this._y,n=t.length;if(n)if(this._line?this._context.lineTo(t[0],e[0]):this._context.moveTo(t[0],e[0]),2===n)this._context.lineTo(t[1],e[1]);else for(var r=i(t),o=i(e),a=0,u=1;u<n;++a,++u)this._context.bezierCurveTo(r[0][a],o[0][a],r[1][a],o[1][a],t[u],e[u]);(this._line||0!==this._line&&1===n)&&this._context.closePath(),this._line=1-this._line,this._x=this._y=null},point:function(t,e){this._x.push(+t),this._y.push(+e)}},e.a=function(t){return new r(t)}},function(t,e,n){"use strict";function r(t,e){this._context=t,this._t=e}function i(t){return new r(t,0)}function o(t){return new r(t,1)}e.c=i,e.b=o,r.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=this._y=NaN,this._point=0},lineEnd:function(){0<this._t&&this._t<1&&2===this._point&&this._context.lineTo(this._x,this._y),(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line>=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:if(this._t<=0)this._context.lineTo(this._x,e),this._context.lineTo(t,e);else{var n=this._x*(1-this._t)+t*this._t;this._context.lineTo(n,this._y),this._context.lineTo(n,e)}}this._x=t,this._y=e}},e.a=function(t){return new r(t,.5)}},function(t,e,n){"use strict";e.a=function(t,e){return e<t?-1:e>t?1:e>=t?0:NaN}},function(t,e,n){"use strict";e.a=function(t){return t}},function(t,e,n){"use strict";function r(t){return t.source}function i(t){return t.target}function o(t){function e(){var e,r=h.a.call(arguments),i=o.apply(this,r),l=a.apply(this,r);if(s||(s=e=n.i(p.a)()),t(s,+u.apply(this,(r[0]=i,r)),+c.apply(this,r),+u.apply(this,(r[0]=l,r)),+c.apply(this,r)),e)return s=null,e+""||null}var o=r,a=i,u=v.a,c=v.b,s=null;return e.source=function(t){return arguments.length?(o=t,e):o},e.target=function(t){return arguments.length?(a=t,e):a},e.x=function(t){return arguments.length?(u="function"==typeof t?t:n.i(d.a)(+t),e):u},e.y=function(t){return arguments.length?(c="function"==typeof t?t:n.i(d.a)(+t),e):c},e.context=function(t){return arguments.length?(s=null==t?null:t,e):s},e}function a(t,e,n,r,i){t.moveTo(e,n),t.bezierCurveTo(e=(e+r)/2,n,e,i,r,i)}function u(t,e,n,r,i){t.moveTo(e,n),t.bezierCurveTo(e,n=(n+i)/2,r,n,r,i)}function c(t,e,r,i,o){var a=n.i(g.a)(e,r),u=n.i(g.a)(e,r=(r+o)/2),c=n.i(g.a)(i,r),s=n.i(g.a)(i,o);t.moveTo(a[0],a[1]),t.bezierCurveTo(u[0],u[1],c[0],c[1],s[0],s[1])}function s(){return o(a)}function l(){return o(u)}function f(){var t=o(c);return t.angle=t.x,delete t.x,t.radius=t.y,delete t.y,t}e.a=s,e.b=l,e.c=f;var p=n(32),h=n(138),d=n(17),v=n(77),g=n(143)},function(t,e,n){"use strict";e.a=function(t,e){if((u=t.length)>1)for(var n,r,i,o,a,u,c=0,s=t[e[0]].length;c<s;++c)for(o=a=0,n=0;n<u;++n)(i=(r=t[e[n]][c])[1]-r[0])>=0?(r[0]=o,r[1]=o+=i):i<0?(r[1]=a,r[0]=a+=i):r[0]=o}},function(t,e,n){"use strict";var r=n(36);e.a=function(t,e){if((o=t.length)>0){for(var i,o,a,u=0,c=t[0].length;u<c;++u){for(a=i=0;i<o;++i)a+=t[i][u][1]||0;if(a)for(i=0;i<o;++i)t[i][u][1]/=a}n.i(r.a)(t,e)}}},function(t,e,n){"use strict";var r=n(36);e.a=function(t,e){if((i=t.length)>0){for(var i,o=0,a=t[e[0]],u=a.length;o<u;++o){for(var c=0,s=0;c<i;++c)s+=t[c][o][1]||0;a[o][1]+=a[o][0]=-s/2}n.i(r.a)(t,e)}}},function(t,e,n){"use strict";var r=n(36);e.a=function(t,e){if((a=t.length)>0&&(o=(i=t[e[0]]).length)>0){for(var i,o,a,u=0,c=1;c<o;++c){for(var s=0,l=0,f=0;s<a;++s){for(var p=t[e[s]],h=p[c][1]||0,d=p[c-1][1]||0,v=(h-d)/2,g=0;g<s;++g){var m=t[e[g]];v+=(m[c][1]||0)-(m[c-1][1]||0)}l+=h,f+=v*h}i[c-1][1]+=i[c-1][0]=u,l&&(u-=f/l)}i[c-1][1]+=i[c-1][0]=u,n.i(r.a)(t,e)}}},function(t,e,n){"use strict";var r=n(76);e.a=function(t){return n.i(r.a)(t).reverse()}},function(t,e,n){"use strict";var r=n(37),i=n(76);e.a=function(t){var e,o,a=t.length,u=t.map(i.b),c=n.i(r.a)(t).sort(function(t,e){return u[e]-u[t]}),s=0,l=0,f=[],p=[];for(e=0;e<a;++e)o=c[e],s<l?(s+=u[o],f.push(o)):(l+=u[o],p.push(o));return p.reverse().concat(f)}},function(t,e,n){"use strict";var r=n(37);e.a=function(t){return n.i(r.a)(t).reverse()}},function(t,e,n){"use strict";var r=n(17),i=n(301),o=n(302),a=n(35);e.a=function(){function t(t){var n,r,i,o,p,h=t.length,d=0,v=new Array(h),g=new Array(h),m=+s.apply(this,arguments),y=Math.min(a.c,Math.max(-a.c,l.apply(this,arguments)-m)),_=Math.min(Math.abs(y)/h,f.apply(this,arguments)),b=_*(y<0?-1:1);for(n=0;n<h;++n)(p=g[v[n]=n]=+e(t[n],n,t))>0&&(d+=p);for(null!=u?v.sort(function(t,e){return u(g[t],g[e])}):null!=c&&v.sort(function(e,n){return c(t[e],t[n])}),n=0,i=d?(y-h*b)/d:0;n<h;++n,m=o)r=v[n],p=g[r],o=m+(p>0?p*i:0)+b,g[r]={data:t[r],index:n,value:p,startAngle:m,endAngle:o,padAngle:_};return g}var e=o.a,u=i.a,c=null,s=n.i(r.a)(0),l=n.i(r.a)(a.c),f=n.i(r.a)(0);return t.value=function(i){return arguments.length?(e="function"==typeof i?i:n.i(r.a)(+i),t):e},t.sortValues=function(e){return arguments.length?(u=e,c=null,t):u},t.sort=function(e){return arguments.length?(c=e,u=null,t):c},t.startAngle=function(e){return arguments.length?(s="function"==typeof e?e:n.i(r.a)(+e),t):s},t.endAngle=function(e){return arguments.length?(l="function"==typeof e?e:n.i(r.a)(+e),t):l},t.padAngle=function(e){return arguments.length?(f="function"==typeof e?e:n.i(r.a)(+e),t):f},t}},function(t,e,n){"use strict";function r(t,e){return t[e]}var i=n(138),o=n(17),a=n(36),u=n(37);e.a=function(){function t(t){var n,r,i=e.apply(this,arguments),o=t.length,a=i.length,u=new Array(a);for(n=0;n<a;++n){for(var f,p=i[n],h=u[n]=new Array(o),d=0;d<o;++d)h[d]=f=[0,+l(t[d],p,d,t)],f.data=t[d];h.key=p}for(n=0,r=c(u);n<a;++n)u[r[n]].index=n;return s(u,r),u}var e=n.i(o.a)([]),c=u.a,s=a.a,l=r;return t.keys=function(r){return arguments.length?(e="function"==typeof r?r:n.i(o.a)(i.a.call(r)),t):e},t.value=function(e){return arguments.length?(l="function"==typeof e?e:n.i(o.a)(+e),t):l},t.order=function(e){return arguments.length?(c=null==e?u.a:"function"==typeof e?e:n.i(o.a)(i.a.call(e)),t):c},t.offset=function(e){return arguments.length?(s=null==e?a.a:e,t):s},t}},function(t,e,n){"use strict";n.d(e,"b",function(){return p});var r=n(32),i=n(144),o=n(145),a=n(146),u=n(148),c=n(147),s=n(149),l=n(150),f=n(17),p=[i.a,o.a,a.a,c.a,u.a,s.a,l.a];e.a=function(){function t(){var t;if(a||(a=t=n.i(r.a)()),e.apply(this,arguments).draw(a,+o.apply(this,arguments)),t)return a=null,t+""||null}var e=n.i(f.a)(i.a),o=n.i(f.a)(64),a=null;return t.type=function(r){return arguments.length?(e="function"==typeof r?r:n.i(f.a)(r),t):e},t.size=function(e){return arguments.length?(o="function"==typeof e?e:n.i(f.a)(+e),t):o},t.context=function(e){return arguments.length?(a=null==e?null:e,t):a},t}},function(t,e,n){"use strict";function r(t){var e=new Date(t);return isNaN(e)?null:e}var i=n(151),o=n(79),a=+new Date("2000-01-01T00:00:00.000Z")?r:n.i(o.e)(i.b);e.a=a},function(t,e,n){"use strict";var r=n(5),i=n(13),o=n.i(r.a)(function(t){t.setHours(0,0,0,0)},function(t,e){t.setDate(t.getDate()+e)},function(t,e){return(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*i.d)/i.b},function(t){return t.getDate()-1});e.a=o;o.range},function(t,e,n){"use strict";var r=n(5),i=n(13),o=n.i(r.a)(function(t){var e=t.getTimezoneOffset()*i.d%i.c;e<0&&(e+=i.c),t.setTime(Math.floor((+t-e)/i.c)*i.c+e)},function(t,e){t.setTime(+t+e*i.c)},function(t,e){return(e-t)/i.c},function(t){return t.getHours()});e.a=o;o.range},function(t,e,n){"use strict";var r=n(5),i=n.i(r.a)(function(){},function(t,e){t.setTime(+t+e)},function(t,e){return e-t});i.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?n.i(r.a)(function(e){e.setTime(Math.floor(e/t)*t)},function(e,n){e.setTime(+e+n*t)},function(e,n){return(n-e)/t}):i:null},e.a=i;i.range},function(t,e,n){"use strict";var r=n(5),i=n(13),o=n.i(r.a)(function(t){t.setTime(Math.floor(t/i.d)*i.d)},function(t,e){t.setTime(+t+e*i.d)},function(t,e){return(e-t)/i.d},function(t){return t.getMinutes()});e.a=o;o.range},function(t,e,n){"use strict";var r=n(5),i=n.i(r.a)(function(t){t.setDate(1),t.setHours(0,0,0,0)},function(t,e){t.setMonth(t.getMonth()+e)},function(t,e){return e.getMonth()-t.getMonth()+12*(e.getFullYear()-t.getFullYear())},function(t){return t.getMonth()});e.a=i;i.range},function(t,e,n){"use strict";var r=n(5),i=n(13),o=n.i(r.a)(function(t){t.setTime(Math.floor(t/i.e)*i.e)},function(t,e){t.setTime(+t+e*i.e)},function(t,e){return(e-t)/i.e},function(t){return t.getUTCSeconds()});e.a=o;o.range},function(t,e,n){"use strict";var r=n(5),i=n(13),o=n.i(r.a)(function(t){t.setUTCHours(0,0,0,0)},function(t,e){t.setUTCDate(t.getUTCDate()+e)},function(t,e){return(e-t)/i.b},function(t){return t.getUTCDate()-1});e.a=o;o.range},function(t,e,n){"use strict";var r=n(5),i=n(13),o=n.i(r.a)(function(t){t.setUTCMinutes(0,0,0)},function(t,e){t.setTime(+t+e*i.c)},function(t,e){return(e-t)/i.c},function(t){return t.getUTCHours()});e.a=o;o.range},function(t,e,n){"use strict";var r=n(5),i=n(13),o=n.i(r.a)(function(t){t.setUTCSeconds(0,0)},function(t,e){t.setTime(+t+e*i.d)},function(t,e){return(e-t)/i.d},function(t){return t.getUTCMinutes()});e.a=o;o.range},function(t,e,n){"use strict";var r=n(5),i=n.i(r.a)(function(t){t.setUTCDate(1),t.setUTCHours(0,0,0,0)},function(t,e){t.setUTCMonth(t.getUTCMonth()+e)},function(t,e){return e.getUTCMonth()-t.getUTCMonth()+12*(e.getUTCFullYear()-t.getUTCFullYear())},function(t){return t.getUTCMonth()});e.a=i;i.range},function(t,e,n){"use strict";function r(t){return n.i(i.a)(function(e){e.setUTCDate(e.getUTCDate()-(e.getUTCDay()+7-t)%7),e.setUTCHours(0,0,0,0)},function(t,e){t.setUTCDate(t.getUTCDate()+7*e)},function(t,e){return(e-t)/o.a})}n.d(e,"a",function(){return a}),n.d(e,"b",function(){return u}),n.d(e,"c",function(){return l});var i=n(5),o=n(13),a=r(0),u=r(1),c=r(2),s=r(3),l=r(4),f=r(5),p=r(6);a.range,u.range,c.range,s.range,l.range,f.range,p.range},function(t,e,n){"use strict";var r=n(5),i=n.i(r.a)(function(t){t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},function(t,e){t.setUTCFullYear(t.getUTCFullYear()+e)},function(t,e){return e.getUTCFullYear()-t.getUTCFullYear()},function(t){return t.getUTCFullYear()});i.every=function(t){return isFinite(t=Math.floor(t))&&t>0?n.i(r.a)(function(e){e.setUTCFullYear(Math.floor(e.getUTCFullYear()/t)*t),e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},function(e,n){e.setUTCFullYear(e.getUTCFullYear()+n*t)}):null},e.a=i;i.range},function(t,e,n){"use strict";function r(t){return n.i(i.a)(function(e){e.setDate(e.getDate()-(e.getDay()+7-t)%7),e.setHours(0,0,0,0)},function(t,e){t.setDate(t.getDate()+7*e)},function(t,e){return(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*o.d)/o.a})}n.d(e,"a",function(){return a}),n.d(e,"b",function(){return u}),n.d(e,"c",function(){return l});var i=n(5),o=n(13),a=r(0),u=r(1),c=r(2),s=r(3),l=r(4),f=r(5),p=r(6);a.range,u.range,c.range,s.range,l.range,f.range,p.range},function(t,e,n){"use strict";var r=n(5),i=n.i(r.a)(function(t){t.setMonth(0,1),t.setHours(0,0,0,0)},function(t,e){t.setFullYear(t.getFullYear()+e)},function(t,e){return e.getFullYear()-t.getFullYear()},function(t){return t.getFullYear()});i.every=function(t){return isFinite(t=Math.floor(t))&&t>0?n.i(r.a)(function(e){e.setFullYear(Math.floor(e.getFullYear()/t)*t),e.setMonth(0,1),e.setHours(0,0,0,0)},function(e,n){e.setFullYear(e.getFullYear()+n*t)}):null},e.a=i;i.range},function(t,e,n){"use strict";function r(t){return t.replace(i,function(t,e){return e.toUpperCase()})}var i=/-(.)/g;t.exports=r},function(t,e,n){"use strict";function r(t){return i(t.replace(o,"ms-"))}var i=n(329),o=/^-ms-/;t.exports=r},function(t,e,n){"use strict";function r(t,e){return!(!t||!e)&&(t===e||!i(t)&&(i(e)?r(t,e.parentNode):"contains"in t?t.contains(e):!!t.compareDocumentPosition&&!!(16&t.compareDocumentPosition(e))))}var i=n(339);t.exports=r},function(t,e,n){"use strict";function r(t){var e=t.length;if((Array.isArray(t)||"object"!=typeof t&&"function"!=typeof t)&&a(!1),"number"!=typeof e&&a(!1),0===e||e-1 in t||a(!1),"function"==typeof t.callee&&a(!1),t.hasOwnProperty)try{return Array.prototype.slice.call(t)}catch(t){}for(var n=Array(e),r=0;r<e;r++)n[r]=t[r];return n}function i(t){return!!t&&("object"==typeof t||"function"==typeof t)&&"length"in t&&!("setInterval"in t)&&"number"!=typeof t.nodeType&&(Array.isArray(t)||"callee"in t||"item"in t)}function o(t){return i(t)?Array.isArray(t)?t.slice():r(t):[t]}var a=n(0);t.exports=o},function(t,e,n){"use strict";function r(t){var e=t.match(l);return e&&e[1].toLowerCase()}function i(t,e){var n=s;s||c(!1);var i=r(t),o=i&&u(i);if(o){n.innerHTML=o[1]+t+o[2];for(var l=o[0];l--;)n=n.lastChild}else n.innerHTML=t;var f=n.getElementsByTagName("script");f.length&&(e||c(!1),a(f).forEach(e));for(var p=Array.from(n.childNodes);n.lastChild;)n.removeChild(n.lastChild);return p}var o=n(6),a=n(332),u=n(334),c=n(0),s=o.canUseDOM?document.createElement("div"):null,l=/^\s*<(\w+)/;t.exports=i},function(t,e,n){"use strict";function r(t){return a||o(!1),p.hasOwnProperty(t)||(t="*"),u.hasOwnProperty(t)||(a.innerHTML="*"===t?"<link />":"<"+t+"></"+t+">",u[t]=!a.firstChild),u[t]?p[t]:null}var i=n(6),o=n(0),a=i.canUseDOM?document.createElement("div"):null,u={},c=[1,'<select multiple="true">',"</select>"],s=[1,"<table>","</table>"],l=[3,"<table><tbody><tr>","</tr></tbody></table>"],f=[1,'<svg xmlns="http://www.w3.org/2000/svg">',"</svg>"],p={"*":[1,"?<div>","</div>"],area:[1,"<map>","</map>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],legend:[1,"<fieldset>","</fieldset>"],param:[1,"<object>","</object>"],tr:[2,"<table><tbody>","</tbody></table>"],optgroup:c,option:c,caption:s,colgroup:s,tbody:s,tfoot:s,thead:s,td:l,th:l};["circle","clipPath","defs","ellipse","g","image","line","linearGradient","mask","path","pattern","polygon","polyline","radialGradient","rect","stop","text","tspan"].forEach(function(t){p[t]=f,u[t]=!0}),t.exports=r},function(t,e,n){"use strict";function r(t){return t.Window&&t instanceof t.Window?{x:t.pageXOffset||t.document.documentElement.scrollLeft,y:t.pageYOffset||t.document.documentElement.scrollTop}:{x:t.scrollLeft,y:t.scrollTop}}t.exports=r},function(t,e,n){"use strict";function r(t){return t.replace(i,"-$1").toLowerCase()}var i=/([A-Z])/g;t.exports=r},function(t,e,n){"use strict";function r(t){return i(t).replace(o,"-ms-")}var i=n(336),o=/^ms-/;t.exports=r},function(t,e,n){"use strict";function r(t){var e=t?t.ownerDocument||t:document,n=e.defaultView||window;return!(!t||!("function"==typeof n.Node?t instanceof n.Node:"object"==typeof t&&"number"==typeof t.nodeType&&"string"==typeof t.nodeName))}t.exports=r},function(t,e,n){"use strict";function r(t){return i(t)&&3==t.nodeType}var i=n(338);t.exports=r},function(t,e,n){"use strict";var r=function(t){var e;for(e in t)if(t.hasOwnProperty(e))return e;return null};t.exports=r},function(t,e,n){"use strict";function r(t){var e={};return function(n){return e.hasOwnProperty(n)||(e[n]=t.call(this,n)),e[n]}}t.exports=r},function(t,e,n){"use strict";function r(t,e,n,r,i){}t.exports=r},function(t,e,n){"use strict";function r(){return null}var i=n(3),o=n(344),a=n(342),u=function(){};t.exports=function(t,e){function n(t){var e=t&&(E&&t[E]||t[M]);if("function"==typeof e)return e}function c(t,e){return t===e?0!==t||1/t==1/e:t!==t&&e!==e}function s(t){this.message=t,this.stack=""}function l(t){function n(n,r,i,a,u,c,l){if(a=a||T,c=c||i,l!==o){if(e){var f=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use `PropTypes.checkPropTypes()` to call them. Read more at http://fb.me/use-check-prop-types");throw f.name="Invariant Violation",f}}return null==r[i]?n?new s(null===r[i]?"The "+u+" `"+c+"` is marked as required in `"+a+"`, but its value is `null`.":"The "+u+" `"+c+"` is marked as required in `"+a+"`, but its value is `undefined`."):null:t(r,i,a,u,c)}var r=n.bind(null,!1);return r.isRequired=n.bind(null,!0),r}function f(t){function e(e,n,r,i,o,a){var u=e[n];if(x(u)!==t)return new s("Invalid "+i+" `"+o+"` of type `"+w(u)+"` supplied to `"+r+"`, expected `"+t+"`.");return null}return l(e)}function p(t){function e(e,n,r,i,a){if("function"!=typeof t)return new s("Property `"+a+"` of component `"+r+"` has invalid PropType notation inside arrayOf.");var u=e[n];if(!Array.isArray(u)){return new s("Invalid "+i+" `"+a+"` of type `"+x(u)+"` supplied to `"+r+"`, expected an array.")}for(var c=0;c<u.length;c++){var l=t(u,c,r,i,a+"["+c+"]",o);if(l instanceof Error)return l}return null}return l(e)}function h(t){function e(e,n,r,i,o){if(!(e[n]instanceof t)){var a=t.name||T;return new s("Invalid "+i+" `"+o+"` of type `"+k(e[n])+"` supplied to `"+r+"`, expected instance of `"+a+"`.")}return null}return l(e)}function d(t){function e(e,n,r,i,o){for(var a=e[n],u=0;u<t.length;u++)if(c(a,t[u]))return null;return new s("Invalid "+i+" `"+o+"` of value `"+a+"` supplied to `"+r+"`, expected one of "+JSON.stringify(t)+".")}return Array.isArray(t)?l(e):r}function v(t){function e(e,n,r,i,a){if("function"!=typeof t)return new s("Property `"+a+"` of component `"+r+"` has invalid PropType notation inside objectOf.");var u=e[n],c=x(u);if("object"!==c)return new s("Invalid "+i+" `"+a+"` of type `"+c+"` supplied to `"+r+"`, expected an object.");for(var l in u)if(u.hasOwnProperty(l)){var f=t(u,l,r,i,a+"."+l,o);if(f instanceof Error)return f}return null}return l(e)}function g(t){function e(e,n,r,i,a){for(var u=0;u<t.length;u++){if(null==(0,t[u])(e,n,r,i,a,o))return null}return new s("Invalid "+i+" `"+a+"` supplied to `"+r+"`.")}if(!Array.isArray(t))return r;for(var n=0;n<t.length;n++){var i=t[n];if("function"!=typeof i)return u("Invalid argument supplied to oneOfType. Expected an array of check functions, but received "+C(i)+" at index "+n+"."),r}return l(e)}function m(t){function e(e,n,r,i,a){var u=e[n],c=x(u);if("object"!==c)return new s("Invalid "+i+" `"+a+"` of type `"+c+"` supplied to `"+r+"`, expected `object`.");for(var l in t){var f=t[l];if(f){var p=f(u,l,r,i,a+"."+l,o);if(p)return p}}return null}return l(e)}function y(t){function e(e,n,r,a,u){var c=e[n],l=x(c);if("object"!==l)return new s("Invalid "+a+" `"+u+"` of type `"+l+"` supplied to `"+r+"`, expected `object`.");var f=i({},e[n],t);for(var p in f){var h=t[p];if(!h)return new s("Invalid "+a+" `"+u+"` key `"+p+"` supplied to `"+r+"`.\nBad object: "+JSON.stringify(e[n],null," ")+"\nValid keys: "+JSON.stringify(Object.keys(t),null," "));var d=h(c,p,r,a,u+"."+p,o);if(d)return d}return null}return l(e)}function _(e){switch(typeof e){case"number":case"string":case"undefined":return!0;case"boolean":return!e;case"object":if(Array.isArray(e))return e.every(_);if(null===e||t(e))return!0;var r=n(e);if(!r)return!1;var i,o=r.call(e);if(r!==e.entries){for(;!(i=o.next()).done;)if(!_(i.value))return!1}else for(;!(i=o.next()).done;){var a=i.value;if(a&&!_(a[1]))return!1}return!0;default:return!1}}function b(t,e){return"symbol"===t||("Symbol"===e["@@toStringTag"]||"function"==typeof Symbol&&e instanceof Symbol)}function x(t){var e=typeof t;return Array.isArray(t)?"array":t instanceof RegExp?"object":b(e,t)?"symbol":e}function w(t){if(void 0===t||null===t)return""+t;var e=x(t);if("object"===e){if(t instanceof Date)return"date";if(t instanceof RegExp)return"regexp"}return e}function C(t){var e=w(t);switch(e){case"array":case"object":return"an "+e;case"boolean":case"date":case"regexp":return"a "+e;default:return e}}function k(t){return t.constructor&&t.constructor.name?t.constructor.name:T}var E="function"==typeof Symbol&&Symbol.iterator,M="@@iterator",T="<<anonymous>>",S={array:f("array"),bool:f("boolean"),func:f("function"),number:f("number"),object:f("object"),string:f("string"),symbol:f("symbol"),any:function(){return l(r)}(),arrayOf:p,element:function(){function e(e,n,r,i,o){var a=e[n];if(!t(a)){return new s("Invalid "+i+" `"+o+"` of type `"+x(a)+"` supplied to `"+r+"`, expected a single ReactElement.")}return null}return l(e)}(),instanceOf:h,node:function(){function t(t,e,n,r,i){return _(t[e])?null:new s("Invalid "+r+" `"+i+"` supplied to `"+n+"`, expected a ReactNode.")}return l(t)}(),objectOf:v,oneOf:d,oneOfType:g,shape:m,exact:y};return s.prototype=Error.prototype,S.checkPropTypes=a,S.PropTypes=S,S}},function(t,e,n){"use strict";t.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},function(t,e,n){"use strict";var r={Properties:{"aria-current":0,"aria-details":0,"aria-disabled":0,"aria-hidden":0,"aria-invalid":0,"aria-keyshortcuts":0,"aria-label":0,"aria-roledescription":0,"aria-autocomplete":0,"aria-checked":0,"aria-expanded":0,"aria-haspopup":0,"aria-level":0,"aria-modal":0,"aria-multiline":0,"aria-multiselectable":0,"aria-orientation":0,"aria-placeholder":0,"aria-pressed":0,"aria-readonly":0,"aria-required":0,"aria-selected":0,"aria-sort":0,"aria-valuemax":0,"aria-valuemin":0,"aria-valuenow":0,"aria-valuetext":0,"aria-atomic":0,"aria-busy":0,"aria-live":0,"aria-relevant":0,"aria-dropeffect":0,"aria-grabbed":0,"aria-activedescendant":0,"aria-colcount":0,"aria-colindex":0,"aria-colspan":0,"aria-controls":0,"aria-describedby":0,"aria-errormessage":0,"aria-flowto":0,"aria-labelledby":0,"aria-owns":0,"aria-posinset":0,"aria-rowcount":0,"aria-rowindex":0,"aria-rowspan":0,"aria-setsize":0},DOMAttributeNames:{},DOMPropertyNames:{}};t.exports=r},function(t,e,n){"use strict";var r=n(4),i=n(154),o={focusDOMComponent:function(){i(r.getNodeFromInstance(this))}};t.exports=o},function(t,e,n){"use strict";function r(t){return(t.ctrlKey||t.altKey||t.metaKey)&&!(t.ctrlKey&&t.altKey)}function i(t){switch(t){case"topCompositionStart":return E.compositionStart;case"topCompositionEnd":return E.compositionEnd;case"topCompositionUpdate":return E.compositionUpdate}}function o(t,e){return"topKeyDown"===t&&e.keyCode===y}function a(t,e){switch(t){case"topKeyUp":return-1!==m.indexOf(e.keyCode);case"topKeyDown":return e.keyCode!==y;case"topKeyPress":case"topMouseDown":case"topBlur":return!0;default:return!1}}function u(t){var e=t.detail;return"object"==typeof e&&"data"in e?e.data:null}function c(t,e,n,r){var c,s;if(_?c=i(t):T?a(t,n)&&(c=E.compositionEnd):o(t,n)&&(c=E.compositionStart),!c)return null;w&&(T||c!==E.compositionStart?c===E.compositionEnd&&T&&(s=T.getData()):T=d.getPooled(r));var l=v.getPooled(c,e,n,r);if(s)l.data=s;else{var f=u(n);null!==f&&(l.data=f)}return p.accumulateTwoPhaseDispatches(l),l}function s(t,e){switch(t){case"topCompositionEnd":return u(e);case"topKeyPress":return e.which!==C?null:(M=!0,k);case"topTextInput":var n=e.data;return n===k&&M?null:n;default:return null}}function l(t,e){if(T){if("topCompositionEnd"===t||!_&&a(t,e)){var n=T.getData();return d.release(T),T=null,n}return null}switch(t){case"topPaste":return null;case"topKeyPress":return e.which&&!r(e)?String.fromCharCode(e.which):null;case"topCompositionEnd":return w?null:e.data;default:return null}}function f(t,e,n,r){var i;if(!(i=x?s(t,n):l(t,n)))return null;var o=g.getPooled(E.beforeInput,e,n,r);return o.data=i,p.accumulateTwoPhaseDispatches(o),o}var p=n(23),h=n(6),d=n(354),v=n(391),g=n(394),m=[9,13,27,32],y=229,_=h.canUseDOM&&"CompositionEvent"in window,b=null;h.canUseDOM&&"documentMode"in document&&(b=document.documentMode);var x=h.canUseDOM&&"TextEvent"in window&&!b&&!function(){var t=window.opera;return"object"==typeof t&&"function"==typeof t.version&&parseInt(t.version(),10)<=12}(),w=h.canUseDOM&&(!_||b&&b>8&&b<=11),C=32,k=String.fromCharCode(C),E={beforeInput:{phasedRegistrationNames:{bubbled:"onBeforeInput",captured:"onBeforeInputCapture"},dependencies:["topCompositionEnd","topKeyPress","topTextInput","topPaste"]},compositionEnd:{phasedRegistrationNames:{bubbled:"onCompositionEnd",captured:"onCompositionEndCapture"},dependencies:["topBlur","topCompositionEnd","topKeyDown","topKeyPress","topKeyUp","topMouseDown"]},compositionStart:{phasedRegistrationNames:{bubbled:"onCompositionStart",captured:"onCompositionStartCapture"},dependencies:["topBlur","topCompositionStart","topKeyDown","topKeyPress","topKeyUp","topMouseDown"]},compositionUpdate:{phasedRegistrationNames:{bubbled:"onCompositionUpdate",captured:"onCompositionUpdateCapture"},dependencies:["topBlur","topCompositionUpdate","topKeyDown","topKeyPress","topKeyUp","topMouseDown"]}},M=!1,T=null,S={eventTypes:E,extractEvents:function(t,e,n,r){return[c(t,e,n,r),f(t,e,n,r)]}};t.exports=S},function(t,e,n){"use strict";var r=n(158),i=n(6),o=(n(9),n(330),n(400)),a=n(337),u=n(341),c=(n(2),u(function(t){return a(t)})),s=!1,l="cssFloat";if(i.canUseDOM){var f=document.createElement("div").style;try{f.font=""}catch(t){s=!0}void 0===document.documentElement.style.cssFloat&&(l="styleFloat")}var p={createMarkupForStyles:function(t,e){var n="";for(var r in t)if(t.hasOwnProperty(r)){var i=0===r.indexOf("--"),a=t[r];null!=a&&(n+=c(r)+":",n+=o(r,a,e,i)+";")}return n||null},setValueForStyles:function(t,e,n){var i=t.style;for(var a in e)if(e.hasOwnProperty(a)){var u=0===a.indexOf("--"),c=o(a,e[a],n,u);if("float"!==a&&"cssFloat"!==a||(a=l),u)i.setProperty(a,c);else if(c)i[a]=c;else{var f=s&&r.shorthandPropertyExpansions[a];if(f)for(var p in f)i[p]="";else i[a]=""}}}};t.exports=p},function(t,e,n){"use strict";function r(t,e,n){var r=M.getPooled(P.change,t,e,n);return r.type="change",w.accumulateTwoPhaseDispatches(r),r}function i(t){var e=t.nodeName&&t.nodeName.toLowerCase();return"select"===e||"input"===e&&"file"===t.type}function o(t){var e=r(I,t,S(t));E.batchedUpdates(a,e)}function a(t){x.enqueueEvents(t),x.processEventQueue(!1)}function u(t,e){O=t,I=e,O.attachEvent("onchange",o)}function c(){O&&(O.detachEvent("onchange",o),O=null,I=null)}function s(t,e){var n=T.updateValueIfChanged(t),r=!0===e.simulated&&L._allowSimulatedPassThrough;if(n||r)return t}function l(t,e){if("topChange"===t)return e}function f(t,e,n){"topFocus"===t?(c(),u(e,n)):"topBlur"===t&&c()}function p(t,e){O=t,I=e,O.attachEvent("onpropertychange",d)}function h(){O&&(O.detachEvent("onpropertychange",d),O=null,I=null)}function d(t){"value"===t.propertyName&&s(I,t)&&o(t)}function v(t,e,n){"topFocus"===t?(h(),p(e,n)):"topBlur"===t&&h()}function g(t,e,n){if("topSelectionChange"===t||"topKeyUp"===t||"topKeyDown"===t)return s(I,n)}function m(t){var e=t.nodeName;return e&&"input"===e.toLowerCase()&&("checkbox"===t.type||"radio"===t.type)}function y(t,e,n){if("topClick"===t)return s(e,n)}function _(t,e,n){if("topInput"===t||"topChange"===t)return s(e,n)}function b(t,e){if(null!=t){var n=t._wrapperState||e._wrapperState;if(n&&n.controlled&&"number"===e.type){var r=""+e.value;e.getAttribute("value")!==r&&e.setAttribute("value",r)}}}var x=n(22),w=n(23),C=n(6),k=n(4),E=n(12),M=n(14),T=n(173),S=n(94),N=n(95),A=n(175),P={change:{phasedRegistrationNames:{bubbled:"onChange",captured:"onChangeCapture"},dependencies:["topBlur","topChange","topClick","topFocus","topInput","topKeyDown","topKeyUp","topSelectionChange"]}},O=null,I=null,D=!1;C.canUseDOM&&(D=N("change")&&(!document.documentMode||document.documentMode>8));var R=!1;C.canUseDOM&&(R=N("input")&&(!document.documentMode||document.documentMode>9));var L={eventTypes:P,_allowSimulatedPassThrough:!0,_isInputEventSupported:R,extractEvents:function(t,e,n,o){var a,u,c=e?k.getNodeFromInstance(e):window;if(i(c)?D?a=l:u=f:A(c)?R?a=_:(a=g,u=v):m(c)&&(a=y),a){var s=a(t,e,n);if(s){return r(s,n,o)}}u&&u(t,c,e),"topBlur"===t&&b(e,c)}};t.exports=L},function(t,e,n){"use strict";var r=n(1),i=n(20),o=n(6),a=n(333),u=n(11),c=(n(0),{dangerouslyReplaceNodeWithMarkup:function(t,e){if(o.canUseDOM||r("56"),e||r("57"),"HTML"===t.nodeName&&r("58"),"string"==typeof e){var n=a(e,u)[0];t.parentNode.replaceChild(n,t)}else i.replaceChildWithTree(t,e)}});t.exports=c},function(t,e,n){"use strict";var r=["ResponderEventPlugin","SimpleEventPlugin","TapEventPlugin","EnterLeaveEventPlugin","ChangeEventPlugin","SelectEventPlugin","BeforeInputEventPlugin"];t.exports=r},function(t,e,n){"use strict";var r=n(23),i=n(4),o=n(54),a={mouseEnter:{registrationName:"onMouseEnter",dependencies:["topMouseOut","topMouseOver"]},mouseLeave:{registrationName:"onMouseLeave",dependencies:["topMouseOut","topMouseOver"]}},u={eventTypes:a,extractEvents:function(t,e,n,u){if("topMouseOver"===t&&(n.relatedTarget||n.fromElement))return null;if("topMouseOut"!==t&&"topMouseOver"!==t)return null;var c;if(u.window===u)c=u;else{var s=u.ownerDocument;c=s?s.defaultView||s.parentWindow:window}var l,f;if("topMouseOut"===t){l=e;var p=n.relatedTarget||n.toElement;f=p?i.getClosestInstanceFromNode(p):null}else l=null,f=e;if(l===f)return null;var h=null==l?c:i.getNodeFromInstance(l),d=null==f?c:i.getNodeFromInstance(f),v=o.getPooled(a.mouseLeave,l,n,u);v.type="mouseleave",v.target=h,v.relatedTarget=d;var g=o.getPooled(a.mouseEnter,f,n,u);return g.type="mouseenter",g.target=d,g.relatedTarget=h,r.accumulateEnterLeaveDispatches(v,g,l,f),[v,g]}};t.exports=u},function(t,e,n){"use strict";var r={topAbort:null,topAnimationEnd:null,topAnimationIteration:null,topAnimationStart:null,topBlur:null,topCanPlay:null,topCanPlayThrough:null,topChange:null,topClick:null,topCompositionEnd:null,topCompositionStart:null,topCompositionUpdate:null,topContextMenu:null,topCopy:null,topCut:null,topDoubleClick:null,topDrag:null,topDragEnd:null,topDragEnter:null,topDragExit:null,topDragLeave:null,topDragOver:null,topDragStart:null,topDrop:null,topDurationChange:null,topEmptied:null,topEncrypted:null,topEnded:null,topError:null,topFocus:null,topInput:null,topInvalid:null,topKeyDown:null,topKeyPress:null,topKeyUp:null,topLoad:null,topLoadedData:null,topLoadedMetadata:null,topLoadStart:null,topMouseDown:null,topMouseMove:null,topMouseOut:null,topMouseOver:null,topMouseUp:null,topPaste:null,topPause:null,topPlay:null,topPlaying:null,topProgress:null,topRateChange:null,topReset:null,topScroll:null,topSeeked:null,topSeeking:null,topSelectionChange:null,topStalled:null,topSubmit:null,topSuspend:null,topTextInput:null,topTimeUpdate:null,topTouchCancel:null,topTouchEnd:null,topTouchMove:null,topTouchStart:null,topTransitionEnd:null,topVolumeChange:null,topWaiting:null,topWheel:null},i={topLevelTypes:r};t.exports=i},function(t,e,n){"use strict";function r(t){this._root=t,this._startText=this.getText(),this._fallbackText=null}var i=n(3),o=n(18),a=n(172);i(r.prototype,{destructor:function(){this._root=null,this._startText=null,this._fallbackText=null},getText:function(){return"value"in this._root?this._root.value:this._root[a()]},getData:function(){if(this._fallbackText)return this._fallbackText;var t,e,n=this._startText,r=n.length,i=this.getText(),o=i.length;for(t=0;t<r&&n[t]===i[t];t++);var a=r-t;for(e=1;e<=a&&n[r-e]===i[o-e];e++);var u=e>1?1-e:void 0;return this._fallbackText=i.slice(t,u),this._fallbackText}}),o.addPoolingTo(r),t.exports=r},function(t,e,n){"use strict";var r=n(21),i=r.injection.MUST_USE_PROPERTY,o=r.injection.HAS_BOOLEAN_VALUE,a=r.injection.HAS_NUMERIC_VALUE,u=r.injection.HAS_POSITIVE_NUMERIC_VALUE,c=r.injection.HAS_OVERLOADED_BOOLEAN_VALUE,s={isCustomAttribute:RegExp.prototype.test.bind(new RegExp("^(data|aria)-["+r.ATTRIBUTE_NAME_CHAR+"]*$")),Properties:{accept:0,acceptCharset:0,accessKey:0,action:0,allowFullScreen:o,allowTransparency:0,alt:0,as:0,async:o,autoComplete:0,autoPlay:o,capture:o,cellPadding:0,cellSpacing:0,charSet:0,challenge:0,checked:i|o,cite:0,classID:0,className:0,cols:u,colSpan:0,content:0,contentEditable:0,contextMenu:0,controls:o,controlsList:0,coords:0,crossOrigin:0,data:0,dateTime:0,default:o,defer:o,dir:0,disabled:o,download:c,draggable:0,encType:0,form:0,formAction:0,formEncType:0,formMethod:0,formNoValidate:o,formTarget:0,frameBorder:0,headers:0,height:0,hidden:o,high:0,href:0,hrefLang:0,htmlFor:0,httpEquiv:0,icon:0,id:0,inputMode:0,integrity:0,is:0,keyParams:0,keyType:0,kind:0,label:0,lang:0,list:0,loop:o,low:0,manifest:0,marginHeight:0,marginWidth:0,max:0,maxLength:0,media:0,mediaGroup:0,method:0,min:0,minLength:0,multiple:i|o,muted:i|o,name:0,nonce:0,noValidate:o,open:o,optimum:0,pattern:0,placeholder:0,playsInline:o,poster:0,preload:0,profile:0,radioGroup:0,readOnly:o,referrerPolicy:0,rel:0,required:o,reversed:o,role:0,rows:u,rowSpan:a,sandbox:0,scope:0,scoped:o,scrolling:0,seamless:o,selected:i|o,shape:0,size:u,sizes:0,span:u,spellCheck:0,src:0,srcDoc:0,srcLang:0,srcSet:0,start:a,step:0,style:0,summary:0,tabIndex:0,target:0,title:0,type:0,useMap:0,value:0,width:0,wmode:0,wrap:0,about:0,datatype:0,inlist:0,prefix:0,property:0,resource:0,typeof:0,vocab:0,autoCapitalize:0,autoCorrect:0,autoSave:0,color:0,itemProp:0,itemScope:o,itemType:0,itemID:0,itemRef:0,results:0,security:0,unselectable:0},DOMAttributeNames:{acceptCharset:"accept-charset",className:"class",htmlFor:"for",httpEquiv:"http-equiv"},DOMPropertyNames:{},DOMMutationMethods:{value:function(t,e){if(null==e)return t.removeAttribute("value");"number"!==t.type||!1===t.hasAttribute("value")?t.setAttribute("value",""+e):t.validity&&!t.validity.badInput&&t.ownerDocument.activeElement!==t&&t.setAttribute("value",""+e)}}};t.exports=s},function(t,e,n){"use strict";(function(e){function r(t,e,n,r){var i=void 0===t[n];null!=e&&i&&(t[n]=o(e,!0))}var i=n(24),o=n(174),a=(n(85),n(96)),u=n(177);n(2);void 0!==e&&e.env;var c={instantiateChildren:function(t,e,n,i){if(null==t)return null;var o={};return u(t,r,o),o},updateChildren:function(t,e,n,r,u,c,s,l,f){if(e||t){var p,h;for(p in e)if(e.hasOwnProperty(p)){h=t&&t[p];var d=h&&h._currentElement,v=e[p];if(null!=h&&a(d,v))i.receiveComponent(h,v,u,l),e[p]=h;else{h&&(r[p]=i.getHostNode(h),i.unmountComponent(h,!1));var g=o(v,!0);e[p]=g;var m=i.mountComponent(g,u,c,s,l,f);n.push(m)}}for(p in t)!t.hasOwnProperty(p)||e&&e.hasOwnProperty(p)||(h=t[p],r[p]=i.getHostNode(h),i.unmountComponent(h,!1))}},unmountChildren:function(t,e){for(var n in t)if(t.hasOwnProperty(n)){var r=t[n];i.unmountComponent(r,e)}}};t.exports=c}).call(e,n(156))},function(t,e,n){"use strict";var r=n(82),i=n(364),o={processChildrenUpdates:i.dangerouslyProcessChildrenUpdates,replaceNodeWithMarkup:r.dangerouslyReplaceNodeWithMarkup};t.exports=o},function(t,e,n){"use strict";function r(t){}function i(t){return!(!t.prototype||!t.prototype.isReactComponent)}function o(t){return!(!t.prototype||!t.prototype.isPureReactComponent)}var a=n(1),u=n(3),c=n(26),s=n(87),l=n(15),f=n(88),p=n(39),h=(n(9),n(168)),d=n(24),v=n(51),g=(n(0),n(81)),m=n(96),y=(n(2),{ImpureClass:0,PureClass:1,StatelessFunctional:2});r.prototype.render=function(){var t=p.get(this)._currentElement.type,e=t(this.props,this.context,this.updater);return e};var _=1,b={construct:function(t){this._currentElement=t,this._rootNodeID=0,this._compositeType=null,this._instance=null,this._hostParent=null,this._hostContainerInfo=null,this._updateBatchNumber=null,this._pendingElement=null,this._pendingStateQueue=null,this._pendingReplaceState=!1,this._pendingForceUpdate=!1,this._renderedNodeType=null,this._renderedComponent=null,this._context=null,this._mountOrder=0,this._topLevelWrapper=null,this._pendingCallbacks=null,this._calledComponentWillUnmount=!1},mountComponent:function(t,e,n,u){this._context=u,this._mountOrder=_++,this._hostParent=e,this._hostContainerInfo=n;var s,l=this._currentElement.props,f=this._processContext(u),h=this._currentElement.type,d=t.getUpdateQueue(),g=i(h),m=this._constructComponent(g,l,f,d);g||null!=m&&null!=m.render?o(h)?this._compositeType=y.PureClass:this._compositeType=y.ImpureClass:(s=m,null===m||!1===m||c.isValidElement(m)||a("105",h.displayName||h.name||"Component"),m=new r(h),this._compositeType=y.StatelessFunctional);m.props=l,m.context=f,m.refs=v,m.updater=d,this._instance=m,p.set(m,this);var b=m.state;void 0===b&&(m.state=b=null),("object"!=typeof b||Array.isArray(b))&&a("106",this.getName()||"ReactCompositeComponent"),this._pendingStateQueue=null,this._pendingReplaceState=!1,this._pendingForceUpdate=!1;var x;return x=m.unstable_handleError?this.performInitialMountWithErrorHandling(s,e,n,t,u):this.performInitialMount(s,e,n,t,u),m.componentDidMount&&t.getReactMountReady().enqueue(m.componentDidMount,m),x},_constructComponent:function(t,e,n,r){return this._constructComponentWithoutOwner(t,e,n,r)},_constructComponentWithoutOwner:function(t,e,n,r){var i=this._currentElement.type;return t?new i(e,n,r):i(e,n,r)},performInitialMountWithErrorHandling:function(t,e,n,r,i){var o,a=r.checkpoint();try{o=this.performInitialMount(t,e,n,r,i)}catch(u){r.rollback(a),this._instance.unstable_handleError(u),this._pendingStateQueue&&(this._instance.state=this._processPendingState(this._instance.props,this._instance.context)),a=r.checkpoint(),this._renderedComponent.unmountComponent(!0),r.rollback(a),o=this.performInitialMount(t,e,n,r,i)}return o},performInitialMount:function(t,e,n,r,i){var o=this._instance,a=0;o.componentWillMount&&(o.componentWillMount(),this._pendingStateQueue&&(o.state=this._processPendingState(o.props,o.context))),void 0===t&&(t=this._renderValidatedComponent());var u=h.getType(t);this._renderedNodeType=u;var c=this._instantiateReactComponent(t,u!==h.EMPTY);this._renderedComponent=c;var s=d.mountComponent(c,r,e,n,this._processChildContext(i),a);return s},getHostNode:function(){return d.getHostNode(this._renderedComponent)},unmountComponent:function(t){if(this._renderedComponent){var e=this._instance;if(e.componentWillUnmount&&!e._calledComponentWillUnmount)if(e._calledComponentWillUnmount=!0,t){var n=this.getName()+".componentWillUnmount()";f.invokeGuardedCallback(n,e.componentWillUnmount.bind(e))}else e.componentWillUnmount();this._renderedComponent&&(d.unmountComponent(this._renderedComponent,t),this._renderedNodeType=null,this._renderedComponent=null,this._instance=null),this._pendingStateQueue=null,this._pendingReplaceState=!1,this._pendingForceUpdate=!1,this._pendingCallbacks=null,this._pendingElement=null,this._context=null,this._rootNodeID=0,this._topLevelWrapper=null,p.remove(e)}},_maskContext:function(t){var e=this._currentElement.type,n=e.contextTypes;if(!n)return v;var r={};for(var i in n)r[i]=t[i];return r},_processContext:function(t){var e=this._maskContext(t);return e},_processChildContext:function(t){var e,n=this._currentElement.type,r=this._instance;if(r.getChildContext&&(e=r.getChildContext()),e){"object"!=typeof n.childContextTypes&&a("107",this.getName()||"ReactCompositeComponent");for(var i in e)i in n.childContextTypes||a("108",this.getName()||"ReactCompositeComponent",i);return u({},t,e)}return t},_checkContextTypes:function(t,e,n){},receiveComponent:function(t,e,n){var r=this._currentElement,i=this._context;this._pendingElement=null,this.updateComponent(e,r,t,i,n)},performUpdateIfNecessary:function(t){null!=this._pendingElement?d.receiveComponent(this,this._pendingElement,t,this._context):null!==this._pendingStateQueue||this._pendingForceUpdate?this.updateComponent(t,this._currentElement,this._currentElement,this._context,this._context):this._updateBatchNumber=null},updateComponent:function(t,e,n,r,i){var o=this._instance;null==o&&a("136",this.getName()||"ReactCompositeComponent");var u,c=!1;this._context===i?u=o.context:(u=this._processContext(i),c=!0);var s=e.props,l=n.props;e!==n&&(c=!0),c&&o.componentWillReceiveProps&&o.componentWillReceiveProps(l,u);var f=this._processPendingState(l,u),p=!0;this._pendingForceUpdate||(o.shouldComponentUpdate?p=o.shouldComponentUpdate(l,f,u):this._compositeType===y.PureClass&&(p=!g(s,l)||!g(o.state,f))),this._updateBatchNumber=null,p?(this._pendingForceUpdate=!1,this._performComponentUpdate(n,l,f,u,t,i)):(this._currentElement=n,this._context=i,o.props=l,o.state=f,o.context=u)},_processPendingState:function(t,e){var n=this._instance,r=this._pendingStateQueue,i=this._pendingReplaceState;if(this._pendingReplaceState=!1,this._pendingStateQueue=null,!r)return n.state;if(i&&1===r.length)return r[0];for(var o=u({},i?r[0]:n.state),a=i?1:0;a<r.length;a++){var c=r[a];u(o,"function"==typeof c?c.call(n,o,t,e):c)}return o},_performComponentUpdate:function(t,e,n,r,i,o){var a,u,c,s=this._instance,l=Boolean(s.componentDidUpdate);l&&(a=s.props,u=s.state,c=s.context),s.componentWillUpdate&&s.componentWillUpdate(e,n,r),this._currentElement=t,this._context=o,s.props=e,s.state=n,s.context=r,this._updateRenderedComponent(i,o),l&&i.getReactMountReady().enqueue(s.componentDidUpdate.bind(s,a,u,c),s)},_updateRenderedComponent:function(t,e){var n=this._renderedComponent,r=n._currentElement,i=this._renderValidatedComponent(),o=0;if(m(r,i))d.receiveComponent(n,i,t,this._processChildContext(e));else{var a=d.getHostNode(n);d.unmountComponent(n,!1);var u=h.getType(i);this._renderedNodeType=u;var c=this._instantiateReactComponent(i,u!==h.EMPTY);this._renderedComponent=c;var s=d.mountComponent(c,t,this._hostParent,this._hostContainerInfo,this._processChildContext(e),o);this._replaceNodeWithMarkup(a,s,n)}},_replaceNodeWithMarkup:function(t,e,n){s.replaceNodeWithMarkup(t,e,n)},_renderValidatedComponentWithoutOwnerOrContext:function(){var t=this._instance;return t.render()},_renderValidatedComponent:function(){var t;if(this._compositeType!==y.StatelessFunctional){l.current=this;try{t=this._renderValidatedComponentWithoutOwnerOrContext()}finally{l.current=null}}else t=this._renderValidatedComponentWithoutOwnerOrContext();return null===t||!1===t||c.isValidElement(t)||a("109",this.getName()||"ReactCompositeComponent"),t},attachRef:function(t,e){var n=this.getPublicInstance();null==n&&a("110");var r=e.getPublicInstance();(n.refs===v?n.refs={}:n.refs)[t]=r},detachRef:function(t){delete this.getPublicInstance().refs[t]},getName:function(){var t=this._currentElement.type,e=this._instance&&this._instance.constructor;return t.displayName||e&&e.displayName||t.name||e&&e.name||null},getPublicInstance:function(){var t=this._instance;return this._compositeType===y.StatelessFunctional?null:t},_instantiateReactComponent:null};t.exports=b},function(t,e,n){"use strict";var r=n(4),i=n(372),o=n(167),a=n(24),u=n(12),c=n(385),s=n(401),l=n(171),f=n(408);n(2);i.inject();var p={findDOMNode:s,render:o.render,unmountComponentAtNode:o.unmountComponentAtNode,version:c,unstable_batchedUpdates:u.batchedUpdates,unstable_renderSubtreeIntoContainer:f};"undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.inject&&__REACT_DEVTOOLS_GLOBAL_HOOK__.inject({ComponentTree:{getClosestInstanceFromNode:r.getClosestInstanceFromNode,getNodeFromInstance:function(t){return t._renderedComponent&&(t=l(t)),t?r.getNodeFromInstance(t):null}},Mount:o,Reconciler:a});t.exports=p},function(t,e,n){"use strict";function r(t){if(t){var e=t._currentElement._owner||null;if(e){var n=e.getName();if(n)return" This DOM node was rendered by `"+n+"`."}}return""}function i(t,e){e&&($[t._tag]&&(null!=e.children||null!=e.dangerouslySetInnerHTML)&&g("137",t._tag,t._currentElement._owner?" Check the render method of "+t._currentElement._owner.getName()+".":""),null!=e.dangerouslySetInnerHTML&&(null!=e.children&&g("60"),"object"==typeof e.dangerouslySetInnerHTML&&z in e.dangerouslySetInnerHTML||g("61")),null!=e.style&&"object"!=typeof e.style&&g("62",r(t)))}function o(t,e,n,r){if(!(r instanceof D)){var i=t._hostContainerInfo,o=i._node&&i._node.nodeType===q,u=o?i._node:i._ownerDocument;B(e,u),r.getReactMountReady().enqueue(a,{inst:t,registrationName:e,listener:n})}}function a(){var t=this;k.putListener(t.inst,t.registrationName,t.listener)}function u(){var t=this;N.postMountWrapper(t)}function c(){var t=this;O.postMountWrapper(t)}function s(){var t=this;A.postMountWrapper(t)}function l(){L.track(this)}function f(){var t=this;t._rootNodeID||g("63");var e=j(t);switch(e||g("64"),t._tag){case"iframe":case"object":t._wrapperState.listeners=[M.trapBubbledEvent("topLoad","load",e)];break;case"video":case"audio":t._wrapperState.listeners=[];for(var n in Y)Y.hasOwnProperty(n)&&t._wrapperState.listeners.push(M.trapBubbledEvent(n,Y[n],e));break;case"source":t._wrapperState.listeners=[M.trapBubbledEvent("topError","error",e)];break;case"img":t._wrapperState.listeners=[M.trapBubbledEvent("topError","error",e),M.trapBubbledEvent("topLoad","load",e)];break;case"form":t._wrapperState.listeners=[M.trapBubbledEvent("topReset","reset",e),M.trapBubbledEvent("topSubmit","submit",e)];break;case"input":case"select":case"textarea":t._wrapperState.listeners=[M.trapBubbledEvent("topInvalid","invalid",e)]}}function p(){P.postUpdateWrapper(this)}function h(t){Z.call(Q,t)||(X.test(t)||g("65",t),Q[t]=!0)}function d(t,e){return t.indexOf("-")>=0||null!=e.is}function v(t){var e=t.type;h(e),this._currentElement=t,this._tag=e.toLowerCase(),this._namespaceURI=null,this._renderedChildren=null,this._previousStyle=null,this._previousStyleCopy=null,this._hostNode=null,this._hostParent=null,this._rootNodeID=0,this._domID=0,this._hostContainerInfo=null,this._wrapperState=null,this._topLevelWrapper=null,this._flags=0}var g=n(1),m=n(3),y=n(346),_=n(348),b=n(20),x=n(83),w=n(21),C=n(160),k=n(22),E=n(84),M=n(53),T=n(161),S=n(4),N=n(365),A=n(366),P=n(162),O=n(369),I=(n(9),n(378)),D=n(383),R=(n(11),n(56)),L=(n(0),n(95),n(81),n(173)),U=(n(97),n(2),T),F=k.deleteListener,j=S.getNodeFromInstance,B=M.listenTo,V=E.registrationNameModules,W={string:!0,number:!0},z="__html",H={children:null,dangerouslySetInnerHTML:null,suppressContentEditableWarning:null},q=11,Y={topAbort:"abort",topCanPlay:"canplay",topCanPlayThrough:"canplaythrough",topDurationChange:"durationchange",topEmptied:"emptied",topEncrypted:"encrypted",topEnded:"ended",topError:"error",topLoadedData:"loadeddata",topLoadedMetadata:"loadedmetadata",topLoadStart:"loadstart",topPause:"pause",topPlay:"play",topPlaying:"playing",topProgress:"progress",topRateChange:"ratechange",topSeeked:"seeked",topSeeking:"seeking",topStalled:"stalled",topSuspend:"suspend",topTimeUpdate:"timeupdate",topVolumeChange:"volumechange",topWaiting:"waiting"},K={area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0},G={listing:!0,pre:!0,textarea:!0},$=m({menuitem:!0},K),X=/^[a-zA-Z][a-zA-Z:_\.\-\d]*$/,Q={},Z={}.hasOwnProperty,J=1;v.displayName="ReactDOMComponent",v.Mixin={mountComponent:function(t,e,n,r){this._rootNodeID=J++,this._domID=n._idCounter++,this._hostParent=e,this._hostContainerInfo=n;var o=this._currentElement.props;switch(this._tag){case"audio":case"form":case"iframe":case"img":case"link":case"object":case"source":case"video":this._wrapperState={listeners:null},t.getReactMountReady().enqueue(f,this);break;case"input":N.mountWrapper(this,o,e),o=N.getHostProps(this,o),t.getReactMountReady().enqueue(l,this),t.getReactMountReady().enqueue(f,this);break;case"option":A.mountWrapper(this,o,e),o=A.getHostProps(this,o);break;case"select":P.mountWrapper(this,o,e),o=P.getHostProps(this,o),t.getReactMountReady().enqueue(f,this);break;case"textarea":O.mountWrapper(this,o,e),o=O.getHostProps(this,o),t.getReactMountReady().enqueue(l,this),t.getReactMountReady().enqueue(f,this)}i(this,o);var a,p;null!=e?(a=e._namespaceURI,p=e._tag):n._tag&&(a=n._namespaceURI,p=n._tag),(null==a||a===x.svg&&"foreignobject"===p)&&(a=x.html),a===x.html&&("svg"===this._tag?a=x.svg:"math"===this._tag&&(a=x.mathml)),this._namespaceURI=a;var h;if(t.useCreateElement){var d,v=n._ownerDocument;if(a===x.html)if("script"===this._tag){var g=v.createElement("div"),m=this._currentElement.type;g.innerHTML="<"+m+"></"+m+">",d=g.removeChild(g.firstChild)}else d=o.is?v.createElement(this._currentElement.type,o.is):v.createElement(this._currentElement.type);else d=v.createElementNS(a,this._currentElement.type);S.precacheNode(this,d),this._flags|=U.hasCachedChildNodes,this._hostParent||C.setAttributeForRoot(d),this._updateDOMProperties(null,o,t);var _=b(d);this._createInitialChildren(t,o,r,_),h=_}else{var w=this._createOpenTagMarkupAndPutListeners(t,o),k=this._createContentMarkup(t,o,r);h=!k&&K[this._tag]?w+"/>":w+">"+k+"</"+this._currentElement.type+">"}switch(this._tag){case"input":t.getReactMountReady().enqueue(u,this),o.autoFocus&&t.getReactMountReady().enqueue(y.focusDOMComponent,this);break;case"textarea":t.getReactMountReady().enqueue(c,this),o.autoFocus&&t.getReactMountReady().enqueue(y.focusDOMComponent,this);break;case"select":case"button":o.autoFocus&&t.getReactMountReady().enqueue(y.focusDOMComponent,this);break;case"option":t.getReactMountReady().enqueue(s,this)}return h},_createOpenTagMarkupAndPutListeners:function(t,e){var n="<"+this._currentElement.type;for(var r in e)if(e.hasOwnProperty(r)){var i=e[r];if(null!=i)if(V.hasOwnProperty(r))i&&o(this,r,i,t);else{"style"===r&&(i&&(i=this._previousStyleCopy=m({},e.style)),i=_.createMarkupForStyles(i,this));var a=null;null!=this._tag&&d(this._tag,e)?H.hasOwnProperty(r)||(a=C.createMarkupForCustomAttribute(r,i)):a=C.createMarkupForProperty(r,i),a&&(n+=" "+a)}}return t.renderToStaticMarkup?n:(this._hostParent||(n+=" "+C.createMarkupForRoot()),n+=" "+C.createMarkupForID(this._domID))},_createContentMarkup:function(t,e,n){var r="",i=e.dangerouslySetInnerHTML;if(null!=i)null!=i.__html&&(r=i.__html);else{var o=W[typeof e.children]?e.children:null,a=null!=o?null:e.children;if(null!=o)r=R(o);else if(null!=a){var u=this.mountChildren(a,t,n);r=u.join("")}}return G[this._tag]&&"\n"===r.charAt(0)?"\n"+r:r},_createInitialChildren:function(t,e,n,r){var i=e.dangerouslySetInnerHTML;if(null!=i)null!=i.__html&&b.queueHTML(r,i.__html);else{var o=W[typeof e.children]?e.children:null,a=null!=o?null:e.children;if(null!=o)""!==o&&b.queueText(r,o);else if(null!=a)for(var u=this.mountChildren(a,t,n),c=0;c<u.length;c++)b.queueChild(r,u[c])}},receiveComponent:function(t,e,n){var r=this._currentElement;this._currentElement=t,this.updateComponent(e,r,t,n)},updateComponent:function(t,e,n,r){var o=e.props,a=this._currentElement.props;switch(this._tag){case"input":o=N.getHostProps(this,o),a=N.getHostProps(this,a);break;case"option":o=A.getHostProps(this,o),a=A.getHostProps(this,a);break;case"select":o=P.getHostProps(this,o),a=P.getHostProps(this,a);break;case"textarea":o=O.getHostProps(this,o),a=O.getHostProps(this,a)}switch(i(this,a),this._updateDOMProperties(o,a,t),this._updateDOMChildren(o,a,t,r),this._tag){case"input":N.updateWrapper(this),L.updateValueIfChanged(this);break;case"textarea":O.updateWrapper(this);break;case"select":t.getReactMountReady().enqueue(p,this)}},_updateDOMProperties:function(t,e,n){var r,i,a;for(r in t)if(!e.hasOwnProperty(r)&&t.hasOwnProperty(r)&&null!=t[r])if("style"===r){var u=this._previousStyleCopy;for(i in u)u.hasOwnProperty(i)&&(a=a||{},a[i]="");this._previousStyleCopy=null}else V.hasOwnProperty(r)?t[r]&&F(this,r):d(this._tag,t)?H.hasOwnProperty(r)||C.deleteValueForAttribute(j(this),r):(w.properties[r]||w.isCustomAttribute(r))&&C.deleteValueForProperty(j(this),r);for(r in e){var c=e[r],s="style"===r?this._previousStyleCopy:null!=t?t[r]:void 0;if(e.hasOwnProperty(r)&&c!==s&&(null!=c||null!=s))if("style"===r)if(c?c=this._previousStyleCopy=m({},c):this._previousStyleCopy=null,s){for(i in s)!s.hasOwnProperty(i)||c&&c.hasOwnProperty(i)||(a=a||{},a[i]="");for(i in c)c.hasOwnProperty(i)&&s[i]!==c[i]&&(a=a||{},a[i]=c[i])}else a=c;else if(V.hasOwnProperty(r))c?o(this,r,c,n):s&&F(this,r);else if(d(this._tag,e))H.hasOwnProperty(r)||C.setValueForAttribute(j(this),r,c);else if(w.properties[r]||w.isCustomAttribute(r)){var l=j(this);null!=c?C.setValueForProperty(l,r,c):C.deleteValueForProperty(l,r)}}a&&_.setValueForStyles(j(this),a,this)},_updateDOMChildren:function(t,e,n,r){var i=W[typeof t.children]?t.children:null,o=W[typeof e.children]?e.children:null,a=t.dangerouslySetInnerHTML&&t.dangerouslySetInnerHTML.__html,u=e.dangerouslySetInnerHTML&&e.dangerouslySetInnerHTML.__html,c=null!=i?null:t.children,s=null!=o?null:e.children,l=null!=i||null!=a,f=null!=o||null!=u;null!=c&&null==s?this.updateChildren(null,n,r):l&&!f&&this.updateTextContent(""),null!=o?i!==o&&this.updateTextContent(""+o):null!=u?a!==u&&this.updateMarkup(""+u):null!=s&&this.updateChildren(s,n,r)},getHostNode:function(){return j(this)},unmountComponent:function(t){switch(this._tag){case"audio":case"form":case"iframe":case"img":case"link":case"object":case"source":case"video":var e=this._wrapperState.listeners;if(e)for(var n=0;n<e.length;n++)e[n].remove();break;case"input":case"textarea":L.stopTracking(this);break;case"html":case"head":case"body":g("66",this._tag)}this.unmountChildren(t),S.uncacheNode(this),k.deleteAllListeners(this),this._rootNodeID=0,this._domID=0,this._wrapperState=null},getPublicInstance:function(){return j(this)}},m(v.prototype,v.Mixin,I.Mixin),t.exports=v},function(t,e,n){"use strict";function r(t,e){var n={_topLevelWrapper:t,_idCounter:1,_ownerDocument:e?e.nodeType===i?e:e.ownerDocument:null,_node:e,_tag:e?e.nodeName.toLowerCase():null,_namespaceURI:e?e.namespaceURI:null};return n}var i=(n(97),9);t.exports=r},function(t,e,n){"use strict";var r=n(3),i=n(20),o=n(4),a=function(t){this._currentElement=null,this._hostNode=null,this._hostParent=null,this._hostContainerInfo=null,this._domID=0};r(a.prototype,{mountComponent:function(t,e,n,r){var a=n._idCounter++;this._domID=a,this._hostParent=e,this._hostContainerInfo=n;var u=" react-empty: "+this._domID+" ";if(t.useCreateElement){var c=n._ownerDocument,s=c.createComment(u);return o.precacheNode(this,s),i(s)}return t.renderToStaticMarkup?"":"\x3c!--"+u+"--\x3e"},receiveComponent:function(){},getHostNode:function(){return o.getNodeFromInstance(this)},unmountComponent:function(){o.uncacheNode(this)}}),t.exports=a},function(t,e,n){"use strict";var r={useCreateElement:!0,useFiber:!1};t.exports=r},function(t,e,n){"use strict";var r=n(82),i=n(4),o={dangerouslyProcessChildrenUpdates:function(t,e){var n=i.getNodeFromInstance(t);r.processUpdates(n,e)}};t.exports=o},function(t,e,n){"use strict";function r(){this._rootNodeID&&p.updateWrapper(this)}function i(t){return"checkbox"===t.type||"radio"===t.type?null!=t.checked:null!=t.value}function o(t){var e=this._currentElement.props,n=s.executeOnChange(e,t);f.asap(r,this);var i=e.name;if("radio"===e.type&&null!=i){for(var o=l.getNodeFromInstance(this),u=o;u.parentNode;)u=u.parentNode;for(var c=u.querySelectorAll("input[name="+JSON.stringify(""+i)+'][type="radio"]'),p=0;p<c.length;p++){var h=c[p];if(h!==o&&h.form===o.form){var d=l.getInstanceFromNode(h);d||a("90"),f.asap(r,d)}}}return n}var a=n(1),u=n(3),c=n(160),s=n(86),l=n(4),f=n(12),p=(n(0),n(2),{getHostProps:function(t,e){var n=s.getValue(e),r=s.getChecked(e);return u({type:void 0,step:void 0,min:void 0,max:void 0},e,{defaultChecked:void 0,defaultValue:void 0,value:null!=n?n:t._wrapperState.initialValue,checked:null!=r?r:t._wrapperState.initialChecked,onChange:t._wrapperState.onChange})},mountWrapper:function(t,e){var n=e.defaultValue;t._wrapperState={initialChecked:null!=e.checked?e.checked:e.defaultChecked,initialValue:null!=e.value?e.value:n,listeners:null,onChange:o.bind(t),controlled:i(e)}},updateWrapper:function(t){var e=t._currentElement.props,n=e.checked;null!=n&&c.setValueForProperty(l.getNodeFromInstance(t),"checked",n||!1);var r=l.getNodeFromInstance(t),i=s.getValue(e);if(null!=i)if(0===i&&""===r.value)r.value="0";else if("number"===e.type){var o=parseFloat(r.value,10)||0;(i!=o||i==o&&r.value!=i)&&(r.value=""+i)}else r.value!==""+i&&(r.value=""+i);else null==e.value&&null!=e.defaultValue&&r.defaultValue!==""+e.defaultValue&&(r.defaultValue=""+e.defaultValue),null==e.checked&&null!=e.defaultChecked&&(r.defaultChecked=!!e.defaultChecked)},postMountWrapper:function(t){var e=t._currentElement.props,n=l.getNodeFromInstance(t);switch(e.type){case"submit":case"reset":break;case"color":case"date":case"datetime":case"datetime-local":case"month":case"time":case"week":n.value="",n.value=n.defaultValue;break;default:n.value=n.value}var r=n.name;""!==r&&(n.name=""),n.defaultChecked=!n.defaultChecked,n.defaultChecked=!n.defaultChecked,""!==r&&(n.name=r)}});t.exports=p},function(t,e,n){"use strict";function r(t){var e="";return o.Children.forEach(t,function(t){null!=t&&("string"==typeof t||"number"==typeof t?e+=t:c||(c=!0))}),e}var i=n(3),o=n(26),a=n(4),u=n(162),c=(n(2),!1),s={mountWrapper:function(t,e,n){var i=null;if(null!=n){var o=n;"optgroup"===o._tag&&(o=o._hostParent),null!=o&&"select"===o._tag&&(i=u.getSelectValueContext(o))}var a=null;if(null!=i){var c;if(c=null!=e.value?e.value+"":r(e.children),a=!1,Array.isArray(i)){for(var s=0;s<i.length;s++)if(""+i[s]===c){a=!0;break}}else a=""+i===c}t._wrapperState={selected:a}},postMountWrapper:function(t){var e=t._currentElement.props;if(null!=e.value){a.getNodeFromInstance(t).setAttribute("value",e.value)}},getHostProps:function(t,e){var n=i({selected:void 0,children:void 0},e);null!=t._wrapperState.selected&&(n.selected=t._wrapperState.selected);var o=r(e.children);return o&&(n.children=o),n}};t.exports=s},function(t,e,n){"use strict";function r(t,e,n,r){return t===n&&e===r}function i(t){var e=document.selection,n=e.createRange(),r=n.text.length,i=n.duplicate();i.moveToElementText(t),i.setEndPoint("EndToStart",n);var o=i.text.length;return{start:o,end:o+r}}function o(t){var e=window.getSelection&&window.getSelection();if(!e||0===e.rangeCount)return null;var n=e.anchorNode,i=e.anchorOffset,o=e.focusNode,a=e.focusOffset,u=e.getRangeAt(0);try{u.startContainer.nodeType,u.endContainer.nodeType}catch(t){return null}var c=r(e.anchorNode,e.anchorOffset,e.focusNode,e.focusOffset),s=c?0:u.toString().length,l=u.cloneRange();l.selectNodeContents(t),l.setEnd(u.startContainer,u.startOffset);var f=r(l.startContainer,l.startOffset,l.endContainer,l.endOffset),p=f?0:l.toString().length,h=p+s,d=document.createRange();d.setStart(n,i),d.setEnd(o,a);var v=d.collapsed;return{start:v?h:p,end:v?p:h}}function a(t,e){var n,r,i=document.selection.createRange().duplicate();void 0===e.end?(n=e.start,r=n):e.start>e.end?(n=e.end,r=e.start):(n=e.start,r=e.end),i.moveToElementText(t),i.moveStart("character",n),i.setEndPoint("EndToStart",i),i.moveEnd("character",r-n),i.select()}function u(t,e){if(window.getSelection){var n=window.getSelection(),r=t[l()].length,i=Math.min(e.start,r),o=void 0===e.end?i:Math.min(e.end,r);if(!n.extend&&i>o){var a=o;o=i,i=a}var u=s(t,i),c=s(t,o);if(u&&c){var f=document.createRange();f.setStart(u.node,u.offset),n.removeAllRanges(),i>o?(n.addRange(f),n.extend(c.node,c.offset)):(f.setEnd(c.node,c.offset),n.addRange(f))}}}var c=n(6),s=n(405),l=n(172),f=c.canUseDOM&&"selection"in document&&!("getSelection"in window),p={getOffsets:f?i:o,setOffsets:f?a:u};t.exports=p},function(t,e,n){"use strict";var r=n(1),i=n(3),o=n(82),a=n(20),u=n(4),c=n(56),s=(n(0),n(97),function(t){this._currentElement=t,this._stringText=""+t,this._hostNode=null,this._hostParent=null,this._domID=0,this._mountIndex=0,this._closingComment=null,this._commentNodes=null});i(s.prototype,{mountComponent:function(t,e,n,r){var i=n._idCounter++,o=" react-text: "+i+" ";if(this._domID=i,this._hostParent=e,t.useCreateElement){var s=n._ownerDocument,l=s.createComment(o),f=s.createComment(" /react-text "),p=a(s.createDocumentFragment());return a.queueChild(p,a(l)),this._stringText&&a.queueChild(p,a(s.createTextNode(this._stringText))),a.queueChild(p,a(f)),u.precacheNode(this,l),this._closingComment=f,p}var h=c(this._stringText);return t.renderToStaticMarkup?h:"\x3c!--"+o+"--\x3e"+h+"\x3c!-- /react-text --\x3e"},receiveComponent:function(t,e){if(t!==this._currentElement){this._currentElement=t;var n=""+t;if(n!==this._stringText){this._stringText=n;var r=this.getHostNode();o.replaceDelimitedText(r[0],r[1],n)}}},getHostNode:function(){var t=this._commentNodes;if(t)return t;if(!this._closingComment)for(var e=u.getNodeFromInstance(this),n=e.nextSibling;;){if(null==n&&r("67",this._domID),8===n.nodeType&&" /react-text "===n.nodeValue){this._closingComment=n;break}n=n.nextSibling}return t=[this._hostNode,this._closingComment],this._commentNodes=t,t},unmountComponent:function(){this._closingComment=null,this._commentNodes=null,u.uncacheNode(this)}}),t.exports=s},function(t,e,n){"use strict";function r(){this._rootNodeID&&l.updateWrapper(this)}function i(t){var e=this._currentElement.props,n=u.executeOnChange(e,t);return s.asap(r,this),n}var o=n(1),a=n(3),u=n(86),c=n(4),s=n(12),l=(n(0),n(2),{getHostProps:function(t,e){return null!=e.dangerouslySetInnerHTML&&o("91"),a({},e,{value:void 0,defaultValue:void 0,children:""+t._wrapperState.initialValue,onChange:t._wrapperState.onChange})},mountWrapper:function(t,e){var n=u.getValue(e),r=n;if(null==n){var a=e.defaultValue,c=e.children;null!=c&&(null!=a&&o("92"),Array.isArray(c)&&(c.length<=1||o("93"),c=c[0]),a=""+c),null==a&&(a=""),r=a}t._wrapperState={initialValue:""+r,listeners:null,onChange:i.bind(t)}},updateWrapper:function(t){var e=t._currentElement.props,n=c.getNodeFromInstance(t),r=u.getValue(e);if(null!=r){var i=""+r;i!==n.value&&(n.value=i),null==e.defaultValue&&(n.defaultValue=i)}null!=e.defaultValue&&(n.defaultValue=e.defaultValue)},postMountWrapper:function(t){var e=c.getNodeFromInstance(t),n=e.textContent;n===t._wrapperState.initialValue&&(e.value=n)}});t.exports=l},function(t,e,n){"use strict";function r(t,e){"_hostNode"in t||c("33"),"_hostNode"in e||c("33");for(var n=0,r=t;r;r=r._hostParent)n++;for(var i=0,o=e;o;o=o._hostParent)i++;for(;n-i>0;)t=t._hostParent,n--;for(;i-n>0;)e=e._hostParent,i--;for(var a=n;a--;){if(t===e)return t;t=t._hostParent,e=e._hostParent}return null}function i(t,e){"_hostNode"in t||c("35"),"_hostNode"in e||c("35");for(;e;){if(e===t)return!0;e=e._hostParent}return!1}function o(t){return"_hostNode"in t||c("36"),t._hostParent}function a(t,e,n){for(var r=[];t;)r.push(t),t=t._hostParent;var i;for(i=r.length;i-- >0;)e(r[i],"captured",n);for(i=0;i<r.length;i++)e(r[i],"bubbled",n)}function u(t,e,n,i,o){for(var a=t&&e?r(t,e):null,u=[];t&&t!==a;)u.push(t),t=t._hostParent;for(var c=[];e&&e!==a;)c.push(e),e=e._hostParent;var s;for(s=0;s<u.length;s++)n(u[s],"bubbled",i);for(s=c.length;s-- >0;)n(c[s],"captured",o)}var c=n(1);n(0);t.exports={isAncestor:i,getLowestCommonAncestor:r,getParentInstance:o,traverseTwoPhase:a,traverseEnterLeave:u}},function(t,e,n){"use strict";function r(){this.reinitializeTransaction()}var i=n(3),o=n(12),a=n(55),u=n(11),c={initialize:u,close:function(){p.isBatchingUpdates=!1}},s={initialize:u,close:o.flushBatchedUpdates.bind(o)},l=[s,c];i(r.prototype,a,{getTransactionWrappers:function(){return l}});var f=new r,p={isBatchingUpdates:!1,batchedUpdates:function(t,e,n,r,i,o){var a=p.isBatchingUpdates;return p.isBatchingUpdates=!0,a?t(e,n,r,i,o):f.perform(t,null,e,n,r,i,o)}};t.exports=p},function(t,e,n){"use strict";function r(){C||(C=!0,y.EventEmitter.injectReactEventListener(m),y.EventPluginHub.injectEventPluginOrder(u),y.EventPluginUtils.injectComponentTree(p),y.EventPluginUtils.injectTreeTraversal(d),y.EventPluginHub.injectEventPluginsByName({SimpleEventPlugin:w,EnterLeaveEventPlugin:c,ChangeEventPlugin:a,SelectEventPlugin:x,BeforeInputEventPlugin:o}),y.HostComponent.injectGenericComponentClass(f),y.HostComponent.injectTextComponentClass(v),y.DOMProperty.injectDOMPropertyConfig(i),y.DOMProperty.injectDOMPropertyConfig(s),y.DOMProperty.injectDOMPropertyConfig(b),y.EmptyComponent.injectEmptyComponentFactory(function(t){return new h(t)}),y.Updates.injectReconcileTransaction(_),y.Updates.injectBatchingStrategy(g),y.Component.injectEnvironment(l))}var i=n(345),o=n(347),a=n(349),u=n(351),c=n(352),s=n(355),l=n(357),f=n(360),p=n(4),h=n(362),d=n(370),v=n(368),g=n(371),m=n(375),y=n(376),_=n(381),b=n(386),x=n(387),w=n(388),C=!1;t.exports={inject:r}},function(t,e,n){"use strict";var r="function"==typeof Symbol&&Symbol.for&&Symbol.for("react.element")||60103;t.exports=r},function(t,e,n){"use strict";function r(t){i.enqueueEvents(t),i.processEventQueue(!1)}var i=n(22),o={handleTopLevel:function(t,e,n,o){r(i.extractEvents(t,e,n,o))}};t.exports=o},function(t,e,n){"use strict";function r(t){for(;t._hostParent;)t=t._hostParent;var e=f.getNodeFromInstance(t),n=e.parentNode;return f.getClosestInstanceFromNode(n)}function i(t,e){this.topLevelType=t,this.nativeEvent=e,this.ancestors=[]}function o(t){var e=h(t.nativeEvent),n=f.getClosestInstanceFromNode(e),i=n;do{t.ancestors.push(i),i=i&&r(i)}while(i);for(var o=0;o<t.ancestors.length;o++)n=t.ancestors[o],v._handleTopLevel(t.topLevelType,n,t.nativeEvent,h(t.nativeEvent))}function a(t){t(d(window))}var u=n(3),c=n(153),s=n(6),l=n(18),f=n(4),p=n(12),h=n(94),d=n(335);u(i.prototype,{destructor:function(){this.topLevelType=null,this.nativeEvent=null,this.ancestors.length=0}}),l.addPoolingTo(i,l.twoArgumentPooler);var v={_enabled:!0,_handleTopLevel:null,WINDOW_HANDLE:s.canUseDOM?window:null,setHandleTopLevel:function(t){v._handleTopLevel=t},setEnabled:function(t){v._enabled=!!t},isEnabled:function(){return v._enabled},trapBubbledEvent:function(t,e,n){return n?c.listen(n,e,v.dispatchEvent.bind(null,t)):null},trapCapturedEvent:function(t,e,n){return n?c.capture(n,e,v.dispatchEvent.bind(null,t)):null},monitorScrollValue:function(t){var e=a.bind(null,t);c.listen(window,"scroll",e)},dispatchEvent:function(t,e){if(v._enabled){var n=i.getPooled(t,e);try{p.batchedUpdates(o,n)}finally{i.release(n)}}}};t.exports=v},function(t,e,n){"use strict";var r=n(21),i=n(22),o=n(52),a=n(87),u=n(163),c=n(53),s=n(165),l=n(12),f={Component:a.injection,DOMProperty:r.injection,EmptyComponent:u.injection,EventPluginHub:i.injection,EventPluginUtils:o.injection,EventEmitter:c.injection,HostComponent:s.injection,Updates:l.injection};t.exports=f},function(t,e,n){"use strict";var r=n(399),i=/\/?>/,o=/^<\!\-\-/,a={CHECKSUM_ATTR_NAME:"data-react-checksum",addChecksumToMarkup:function(t){var e=r(t);return o.test(t)?t:t.replace(i," "+a.CHECKSUM_ATTR_NAME+'="'+e+'"$&')},canReuseMarkup:function(t,e){var n=e.getAttribute(a.CHECKSUM_ATTR_NAME);return n=n&&parseInt(n,10),r(t)===n}};t.exports=a},function(t,e,n){"use strict";function r(t,e,n){return{type:"INSERT_MARKUP",content:t,fromIndex:null,fromNode:null,toIndex:n,afterNode:e}}function i(t,e,n){return{type:"MOVE_EXISTING",content:null,fromIndex:t._mountIndex,fromNode:p.getHostNode(t),toIndex:n,afterNode:e}}function o(t,e){return{type:"REMOVE_NODE",content:null,fromIndex:t._mountIndex,fromNode:e,toIndex:null,afterNode:null}}function a(t){return{type:"SET_MARKUP",content:t,fromIndex:null,fromNode:null,toIndex:null,afterNode:null}}function u(t){return{type:"TEXT_CONTENT",content:t,fromIndex:null,fromNode:null,toIndex:null,afterNode:null}}function c(t,e){return e&&(t=t||[],t.push(e)),t}function s(t,e){f.processChildrenUpdates(t,e)}var l=n(1),f=n(87),p=(n(39),n(9),n(15),n(24)),h=n(356),d=(n(11),n(402)),v=(n(0),{Mixin:{_reconcilerInstantiateChildren:function(t,e,n){return h.instantiateChildren(t,e,n)},_reconcilerUpdateChildren:function(t,e,n,r,i,o){var a,u=0;return a=d(e,u),h.updateChildren(t,a,n,r,i,this,this._hostContainerInfo,o,u),a},mountChildren:function(t,e,n){var r=this._reconcilerInstantiateChildren(t,e,n);this._renderedChildren=r;var i=[],o=0;for(var a in r)if(r.hasOwnProperty(a)){var u=r[a],c=0,s=p.mountComponent(u,e,this,this._hostContainerInfo,n,c);u._mountIndex=o++,i.push(s)}return i},updateTextContent:function(t){var e=this._renderedChildren;h.unmountChildren(e,!1);for(var n in e)e.hasOwnProperty(n)&&l("118");s(this,[u(t)])},updateMarkup:function(t){var e=this._renderedChildren;h.unmountChildren(e,!1);for(var n in e)e.hasOwnProperty(n)&&l("118");s(this,[a(t)])},updateChildren:function(t,e,n){this._updateChildren(t,e,n)},_updateChildren:function(t,e,n){var r=this._renderedChildren,i={},o=[],a=this._reconcilerUpdateChildren(r,t,o,i,e,n);if(a||r){var u,l=null,f=0,h=0,d=0,v=null;for(u in a)if(a.hasOwnProperty(u)){var g=r&&r[u],m=a[u];g===m?(l=c(l,this.moveChild(g,v,f,h)),h=Math.max(g._mountIndex,h),g._mountIndex=f):(g&&(h=Math.max(g._mountIndex,h)),l=c(l,this._mountChildAtIndex(m,o[d],v,f,e,n)),d++),f++,v=p.getHostNode(m)}for(u in i)i.hasOwnProperty(u)&&(l=c(l,this._unmountChild(r[u],i[u])));l&&s(this,l),this._renderedChildren=a}},unmountChildren:function(t){var e=this._renderedChildren;h.unmountChildren(e,t),this._renderedChildren=null},moveChild:function(t,e,n,r){if(t._mountIndex<r)return i(t,e,n)},createChild:function(t,e,n){return r(n,e,t._mountIndex)},removeChild:function(t,e){return o(t,e)},_mountChildAtIndex:function(t,e,n,r,i,o){return t._mountIndex=r,this.createChild(t,n,e)},_unmountChild:function(t,e){var n=this.removeChild(t,e);return t._mountIndex=null,n}}});t.exports=v},function(t,e,n){"use strict";function r(t){return!(!t||"function"!=typeof t.attachRef||"function"!=typeof t.detachRef)}var i=n(1),o=(n(0),{addComponentAsRefTo:function(t,e,n){r(n)||i("119"),n.attachRef(e,t)},removeComponentAsRefFrom:function(t,e,n){r(n)||i("120");var o=n.getPublicInstance();o&&o.refs[e]===t.getPublicInstance()&&n.detachRef(e)}});t.exports=o},function(t,e,n){"use strict";t.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},function(t,e,n){"use strict";function r(t){this.reinitializeTransaction(),this.renderToStaticMarkup=!1,this.reactMountReady=o.getPooled(null),this.useCreateElement=t}var i=n(3),o=n(159),a=n(18),u=n(53),c=n(166),s=(n(9),n(55)),l=n(89),f={initialize:c.getSelectionInformation,close:c.restoreSelection},p={initialize:function(){var t=u.isEnabled();return u.setEnabled(!1),t},close:function(t){u.setEnabled(t)}},h={initialize:function(){this.reactMountReady.reset()},close:function(){this.reactMountReady.notifyAll()}},d=[f,p,h],v={getTransactionWrappers:function(){return d},getReactMountReady:function(){return this.reactMountReady},getUpdateQueue:function(){return l},checkpoint:function(){return this.reactMountReady.checkpoint()},rollback:function(t){this.reactMountReady.rollback(t)},destructor:function(){o.release(this.reactMountReady),this.reactMountReady=null}};i(r.prototype,s,v),a.addPoolingTo(r),t.exports=r},function(t,e,n){"use strict";function r(t,e,n){"function"==typeof t?t(e.getPublicInstance()):o.addComponentAsRefTo(e,t,n)}function i(t,e,n){"function"==typeof t?t(null):o.removeComponentAsRefFrom(e,t,n)}var o=n(379),a={};a.attachRefs=function(t,e){if(null!==e&&"object"==typeof e){var n=e.ref;null!=n&&r(n,t,e._owner)}},a.shouldUpdateRefs=function(t,e){var n=null,r=null;null!==t&&"object"==typeof t&&(n=t.ref,r=t._owner);var i=null,o=null;return null!==e&&"object"==typeof e&&(i=e.ref,o=e._owner),n!==i||"string"==typeof i&&o!==r},a.detachRefs=function(t,e){if(null!==e&&"object"==typeof e){var n=e.ref;null!=n&&i(n,t,e._owner)}},t.exports=a},function(t,e,n){"use strict";function r(t){this.reinitializeTransaction(),this.renderToStaticMarkup=t,this.useCreateElement=!1,this.updateQueue=new u(this)}var i=n(3),o=n(18),a=n(55),u=(n(9),n(384)),c=[],s={enqueue:function(){}},l={getTransactionWrappers:function(){return c},getReactMountReady:function(){return s},getUpdateQueue:function(){return this.updateQueue},destructor:function(){},checkpoint:function(){},rollback:function(){}};i(r.prototype,a,l),o.addPoolingTo(r),t.exports=r},function(t,e,n){"use strict";function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var i=n(89),o=(n(2),function(){function t(e){r(this,t),this.transaction=e}return t.prototype.isMounted=function(t){return!1},t.prototype.enqueueCallback=function(t,e,n){this.transaction.isInTransaction()&&i.enqueueCallback(t,e,n)},t.prototype.enqueueForceUpdate=function(t){this.transaction.isInTransaction()&&i.enqueueForceUpdate(t)},t.prototype.enqueueReplaceState=function(t,e){this.transaction.isInTransaction()&&i.enqueueReplaceState(t,e)},t.prototype.enqueueSetState=function(t,e){this.transaction.isInTransaction()&&i.enqueueSetState(t,e)},t}());t.exports=o},function(t,e,n){"use strict";t.exports="15.6.2"},function(t,e,n){"use strict";var r={xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace"},i={accentHeight:"accent-height",accumulate:0,additive:0,alignmentBaseline:"alignment-baseline",allowReorder:"allowReorder",alphabetic:0,amplitude:0,arabicForm:"arabic-form",ascent:0,attributeName:"attributeName",attributeType:"attributeType",autoReverse:"autoReverse",azimuth:0,baseFrequency:"baseFrequency",baseProfile:"baseProfile",baselineShift:"baseline-shift",bbox:0,begin:0,bias:0,by:0,calcMode:"calcMode",capHeight:"cap-height",clip:0,clipPath:"clip-path",clipRule:"clip-rule",clipPathUnits:"clipPathUnits",colorInterpolation:"color-interpolation",colorInterpolationFilters:"color-interpolation-filters",colorProfile:"color-profile",colorRendering:"color-rendering",contentScriptType:"contentScriptType",contentStyleType:"contentStyleType",cursor:0,cx:0,cy:0,d:0,decelerate:0,descent:0,diffuseConstant:"diffuseConstant",direction:0,display:0,divisor:0,dominantBaseline:"dominant-baseline",dur:0,dx:0,dy:0,edgeMode:"edgeMode",elevation:0,enableBackground:"enable-background",end:0,exponent:0,externalResourcesRequired:"externalResourcesRequired",fill:0,fillOpacity:"fill-opacity",fillRule:"fill-rule",filter:0,filterRes:"filterRes",filterUnits:"filterUnits",floodColor:"flood-color",floodOpacity:"flood-opacity",focusable:0,fontFamily:"font-family",fontSize:"font-size",fontSizeAdjust:"font-size-adjust",fontStretch:"font-stretch",fontStyle:"font-style",fontVariant:"font-variant",fontWeight:"font-weight",format:0,from:0,fx:0,fy:0,g1:0,g2:0,glyphName:"glyph-name",glyphOrientationHorizontal:"glyph-orientation-horizontal",glyphOrientationVertical:"glyph-orientation-vertical",glyphRef:"glyphRef",gradientTransform:"gradientTransform",gradientUnits:"gradientUnits",hanging:0,horizAdvX:"horiz-adv-x",horizOriginX:"horiz-origin-x",ideographic:0,imageRendering:"image-rendering",in:0,in2:0,intercept:0,k:0,k1:0,k2:0,k3:0,k4:0,kernelMatrix:"kernelMatrix",kernelUnitLength:"kernelUnitLength",kerning:0,keyPoints:"keyPoints",keySplines:"keySplines",keyTimes:"keyTimes",lengthAdjust:"lengthAdjust",letterSpacing:"letter-spacing",lightingColor:"lighting-color",limitingConeAngle:"limitingConeAngle",local:0,markerEnd:"marker-end",markerMid:"marker-mid",markerStart:"marker-start",markerHeight:"markerHeight",markerUnits:"markerUnits",markerWidth:"markerWidth",mask:0,maskContentUnits:"maskContentUnits",maskUnits:"maskUnits",mathematical:0,mode:0,numOctaves:"numOctaves",offset:0,opacity:0,operator:0,order:0,orient:0,orientation:0,origin:0,overflow:0,overlinePosition:"overline-position",overlineThickness:"overline-thickness",paintOrder:"paint-order",panose1:"panose-1",pathLength:"pathLength",patternContentUnits:"patternContentUnits",patternTransform:"patternTransform",patternUnits:"patternUnits",pointerEvents:"pointer-events",points:0,pointsAtX:"pointsAtX",pointsAtY:"pointsAtY",pointsAtZ:"pointsAtZ",preserveAlpha:"preserveAlpha",preserveAspectRatio:"preserveAspectRatio",primitiveUnits:"primitiveUnits",r:0,radius:0,refX:"refX",refY:"refY",renderingIntent:"rendering-intent",repeatCount:"repeatCount",repeatDur:"repeatDur",requiredExtensions:"requiredExtensions",requiredFeatures:"requiredFeatures",restart:0,result:0,rotate:0,rx:0,ry:0,scale:0,seed:0,shapeRendering:"shape-rendering",slope:0,spacing:0,specularConstant:"specularConstant",specularExponent:"specularExponent",speed:0,spreadMethod:"spreadMethod",startOffset:"startOffset",stdDeviation:"stdDeviation",stemh:0,stemv:0,stitchTiles:"stitchTiles",stopColor:"stop-color",stopOpacity:"stop-opacity",strikethroughPosition:"strikethrough-position",strikethroughThickness:"strikethrough-thickness",string:0,stroke:0,strokeDasharray:"stroke-dasharray",strokeDashoffset:"stroke-dashoffset",strokeLinecap:"stroke-linecap",strokeLinejoin:"stroke-linejoin",strokeMiterlimit:"stroke-miterlimit",strokeOpacity:"stroke-opacity",strokeWidth:"stroke-width",surfaceScale:"surfaceScale",systemLanguage:"systemLanguage",tableValues:"tableValues",targetX:"targetX",targetY:"targetY",textAnchor:"text-anchor",textDecoration:"text-decoration",textRendering:"text-rendering",textLength:"textLength",to:0,transform:0,u1:0,u2:0,underlinePosition:"underline-position",underlineThickness:"underline-thickness",unicode:0,unicodeBidi:"unicode-bidi",unicodeRange:"unicode-range",unitsPerEm:"units-per-em",vAlphabetic:"v-alphabetic",vHanging:"v-hanging",vIdeographic:"v-ideographic",vMathematical:"v-mathematical",values:0,vectorEffect:"vector-effect",version:0,vertAdvY:"vert-adv-y",vertOriginX:"vert-origin-x",vertOriginY:"vert-origin-y",viewBox:"viewBox",viewTarget:"viewTarget",visibility:0,widths:0,wordSpacing:"word-spacing",writingMode:"writing-mode",x:0,xHeight:"x-height",x1:0,x2:0,xChannelSelector:"xChannelSelector",xlinkActuate:"xlink:actuate",xlinkArcrole:"xlink:arcrole",xlinkHref:"xlink:href",xlinkRole:"xlink:role",xlinkShow:"xlink:show",xlinkTitle:"xlink:title",xlinkType:"xlink:type",xmlBase:"xml:base",xmlns:0,xmlnsXlink:"xmlns:xlink",xmlLang:"xml:lang",xmlSpace:"xml:space",y:0,y1:0,y2:0,yChannelSelector:"yChannelSelector",z:0,zoomAndPan:"zoomAndPan"},o={Properties:{},DOMAttributeNamespaces:{xlinkActuate:r.xlink,xlinkArcrole:r.xlink,xlinkHref:r.xlink,xlinkRole:r.xlink,xlinkShow:r.xlink,xlinkTitle:r.xlink,xlinkType:r.xlink,xmlBase:r.xml,xmlLang:r.xml,xmlSpace:r.xml},DOMAttributeNames:{}};Object.keys(i).forEach(function(t){o.Properties[t]=0,i[t]&&(o.DOMAttributeNames[t]=i[t])}),t.exports=o},function(t,e,n){"use strict";function r(t){if("selectionStart"in t&&c.hasSelectionCapabilities(t))return{start:t.selectionStart,end:t.selectionEnd};if(window.getSelection){var e=window.getSelection();return{anchorNode:e.anchorNode,anchorOffset:e.anchorOffset,focusNode:e.focusNode,focusOffset:e.focusOffset}}if(document.selection){var n=document.selection.createRange();return{parentElement:n.parentElement(),text:n.text,top:n.boundingTop,left:n.boundingLeft}}}function i(t,e){if(y||null==v||v!==l())return null;var n=r(v);if(!m||!p(m,n)){m=n;var i=s.getPooled(d.select,g,t,e);return i.type="select",i.target=v,o.accumulateTwoPhaseDispatches(i),i}return null}var o=n(23),a=n(6),u=n(4),c=n(166),s=n(14),l=n(155),f=n(175),p=n(81),h=a.canUseDOM&&"documentMode"in document&&document.documentMode<=11,d={select:{phasedRegistrationNames:{bubbled:"onSelect",captured:"onSelectCapture"},dependencies:["topBlur","topContextMenu","topFocus","topKeyDown","topKeyUp","topMouseDown","topMouseUp","topSelectionChange"]}},v=null,g=null,m=null,y=!1,_=!1,b={eventTypes:d,extractEvents:function(t,e,n,r){if(!_)return null;var o=e?u.getNodeFromInstance(e):window;switch(t){case"topFocus":(f(o)||"true"===o.contentEditable)&&(v=o,g=e,m=null);break;case"topBlur":v=null,g=null,m=null;break;case"topMouseDown":y=!0;break;case"topContextMenu":case"topMouseUp":return y=!1,i(n,r);case"topSelectionChange":if(h)break;case"topKeyDown":case"topKeyUp":return i(n,r)}return null},didPutListener:function(t,e,n){"onSelect"===e&&(_=!0)}};t.exports=b},function(t,e,n){"use strict";function r(t){return"."+t._rootNodeID}function i(t){return"button"===t||"input"===t||"select"===t||"textarea"===t}var o=n(1),a=n(153),u=n(23),c=n(4),s=n(389),l=n(390),f=n(14),p=n(393),h=n(395),d=n(54),v=n(392),g=n(396),m=n(397),y=n(25),_=n(398),b=n(11),x=n(92),w=(n(0),{}),C={};["abort","animationEnd","animationIteration","animationStart","blur","canPlay","canPlayThrough","click","contextMenu","copy","cut","doubleClick","drag","dragEnd","dragEnter","dragExit","dragLeave","dragOver","dragStart","drop","durationChange","emptied","encrypted","ended","error","focus","input","invalid","keyDown","keyPress","keyUp","load","loadedData","loadedMetadata","loadStart","mouseDown","mouseMove","mouseOut","mouseOver","mouseUp","paste","pause","play","playing","progress","rateChange","reset","scroll","seeked","seeking","stalled","submit","suspend","timeUpdate","touchCancel","touchEnd","touchMove","touchStart","transitionEnd","volumeChange","waiting","wheel"].forEach(function(t){var e=t[0].toUpperCase()+t.slice(1),n="on"+e,r="top"+e,i={phasedRegistrationNames:{bubbled:n,captured:n+"Capture"},dependencies:[r]};w[t]=i,C[r]=i});var k={},E={eventTypes:w,extractEvents:function(t,e,n,r){var i=C[t];if(!i)return null;var a;switch(t){case"topAbort":case"topCanPlay":case"topCanPlayThrough":case"topDurationChange":case"topEmptied":case"topEncrypted":case"topEnded":case"topError":case"topInput":case"topInvalid":case"topLoad":case"topLoadedData":case"topLoadedMetadata":case"topLoadStart":case"topPause":case"topPlay":case"topPlaying":case"topProgress":case"topRateChange":case"topReset":case"topSeeked":case"topSeeking":case"topStalled":case"topSubmit":case"topSuspend":case"topTimeUpdate":case"topVolumeChange":case"topWaiting":a=f;break;case"topKeyPress":if(0===x(n))return null;case"topKeyDown":case"topKeyUp":a=h;break;case"topBlur":case"topFocus":a=p;break;case"topClick":if(2===n.button)return null;case"topDoubleClick":case"topMouseDown":case"topMouseMove":case"topMouseUp":case"topMouseOut":case"topMouseOver":case"topContextMenu":a=d;break;case"topDrag":case"topDragEnd":case"topDragEnter":case"topDragExit":case"topDragLeave":case"topDragOver":case"topDragStart":case"topDrop":a=v;break;case"topTouchCancel":case"topTouchEnd":case"topTouchMove":case"topTouchStart":a=g;break;case"topAnimationEnd":case"topAnimationIteration":case"topAnimationStart":a=s;break;case"topTransitionEnd":a=m;break;case"topScroll":a=y;break;case"topWheel":a=_;break;case"topCopy":case"topCut":case"topPaste":a=l}a||o("86",t);var c=a.getPooled(i,e,n,r);return u.accumulateTwoPhaseDispatches(c),c},didPutListener:function(t,e,n){if("onClick"===e&&!i(t._tag)){var o=r(t),u=c.getNodeFromInstance(t);k[o]||(k[o]=a.listen(u,"click",b))}},willDeleteListener:function(t,e){if("onClick"===e&&!i(t._tag)){var n=r(t);k[n].remove(),delete k[n]}}};t.exports=E},function(t,e,n){"use strict";function r(t,e,n,r){return i.call(this,t,e,n,r)}var i=n(14),o={animationName:null,elapsedTime:null,pseudoElement:null};i.augmentClass(r,o),t.exports=r},function(t,e,n){"use strict";function r(t,e,n,r){return i.call(this,t,e,n,r)}var i=n(14),o={clipboardData:function(t){return"clipboardData"in t?t.clipboardData:window.clipboardData}};i.augmentClass(r,o),t.exports=r},function(t,e,n){"use strict";function r(t,e,n,r){return i.call(this,t,e,n,r)}var i=n(14),o={data:null};i.augmentClass(r,o),t.exports=r},function(t,e,n){"use strict";function r(t,e,n,r){return i.call(this,t,e,n,r)}var i=n(54),o={dataTransfer:null};i.augmentClass(r,o),t.exports=r},function(t,e,n){"use strict";function r(t,e,n,r){return i.call(this,t,e,n,r)}var i=n(25),o={relatedTarget:null};i.augmentClass(r,o),t.exports=r},function(t,e,n){"use strict";function r(t,e,n,r){return i.call(this,t,e,n,r)}var i=n(14),o={data:null};i.augmentClass(r,o),t.exports=r},function(t,e,n){"use strict";function r(t,e,n,r){return i.call(this,t,e,n,r)}var i=n(25),o=n(92),a=n(403),u=n(93),c={key:a,location:null,ctrlKey:null,shiftKey:null,altKey:null,metaKey:null,repeat:null,locale:null,getModifierState:u,charCode:function(t){return"keypress"===t.type?o(t):0},keyCode:function(t){return"keydown"===t.type||"keyup"===t.type?t.keyCode:0},which:function(t){return"keypress"===t.type?o(t):"keydown"===t.type||"keyup"===t.type?t.keyCode:0}};i.augmentClass(r,c),t.exports=r},function(t,e,n){"use strict";function r(t,e,n,r){return i.call(this,t,e,n,r)}var i=n(25),o=n(93),a={touches:null,targetTouches:null,changedTouches:null,altKey:null,metaKey:null,ctrlKey:null,shiftKey:null,getModifierState:o};i.augmentClass(r,a),t.exports=r},function(t,e,n){"use strict";function r(t,e,n,r){return i.call(this,t,e,n,r)}var i=n(14),o={propertyName:null,elapsedTime:null,pseudoElement:null};i.augmentClass(r,o),t.exports=r},function(t,e,n){"use strict";function r(t,e,n,r){return i.call(this,t,e,n,r)}var i=n(54),o={deltaX:function(t){return"deltaX"in t?t.deltaX:"wheelDeltaX"in t?-t.wheelDeltaX:0},deltaY:function(t){return"deltaY"in t?t.deltaY:"wheelDeltaY"in t?-t.wheelDeltaY:"wheelDelta"in t?-t.wheelDelta:0},deltaZ:null,deltaMode:null};i.augmentClass(r,o),t.exports=r},function(t,e,n){"use strict";function r(t){for(var e=1,n=0,r=0,o=t.length,a=-4&o;r<a;){for(var u=Math.min(r+4096,a);r<u;r+=4)n+=(e+=t.charCodeAt(r))+(e+=t.charCodeAt(r+1))+(e+=t.charCodeAt(r+2))+(e+=t.charCodeAt(r+3));e%=i,n%=i}for(;r<o;r++)n+=e+=t.charCodeAt(r);return e%=i,n%=i,e|n<<16}var i=65521;t.exports=r},function(t,e,n){"use strict";function r(t,e,n,r){if(null==e||"boolean"==typeof e||""===e)return"";var i=isNaN(e);if(r||i||0===e||o.hasOwnProperty(t)&&o[t])return""+e;if("string"==typeof e){e=e.trim()}return e+"px"}var i=n(158),o=(n(2),i.isUnitlessNumber);t.exports=r},function(t,e,n){"use strict";function r(t){if(null==t)return null;if(1===t.nodeType)return t;var e=a.get(t);if(e)return e=u(e),e?o.getNodeFromInstance(e):null;"function"==typeof t.render?i("44"):i("45",Object.keys(t))}var i=n(1),o=(n(15),n(4)),a=n(39),u=n(171);n(0),n(2);t.exports=r},function(t,e,n){"use strict";(function(e){function r(t,e,n,r){if(t&&"object"==typeof t){var i=t,o=void 0===i[n];o&&null!=e&&(i[n]=e)}}function i(t,e){if(null==t)return t;var n={};return o(t,r,n),n}var o=(n(85),n(177));n(2);void 0!==e&&e.env,t.exports=i}).call(e,n(156))},function(t,e,n){"use strict";function r(t){if(t.key){var e=o[t.key]||t.key;if("Unidentified"!==e)return e}if("keypress"===t.type){var n=i(t);return 13===n?"Enter":String.fromCharCode(n)}return"keydown"===t.type||"keyup"===t.type?a[t.keyCode]||"Unidentified":""}var i=n(92),o={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},a={8:"Backspace",9:"Tab",12:"Clear",13:"Enter",16:"Shift",17:"Control",18:"Alt",19:"Pause",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",45:"Insert",46:"Delete",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"NumLock",145:"ScrollLock",224:"Meta"};t.exports=r},function(t,e,n){"use strict";function r(t){var e=t&&(i&&t[i]||t[o]);if("function"==typeof e)return e}var i="function"==typeof Symbol&&Symbol.iterator,o="@@iterator";t.exports=r},function(t,e,n){"use strict";function r(t){for(;t&&t.firstChild;)t=t.firstChild;return t}function i(t){for(;t;){if(t.nextSibling)return t.nextSibling;t=t.parentNode}}function o(t,e){for(var n=r(t),o=0,a=0;n;){if(3===n.nodeType){if(a=o+n.textContent.length,o<=e&&a>=e)return{node:n,offset:e-o};o=a}n=r(i(n))}}t.exports=o},function(t,e,n){"use strict";function r(t,e){var n={};return n[t.toLowerCase()]=e.toLowerCase(),n["Webkit"+t]="webkit"+e,n["Moz"+t]="moz"+e,n["ms"+t]="MS"+e,n["O"+t]="o"+e.toLowerCase(),n}function i(t){if(u[t])return u[t];if(!a[t])return t;var e=a[t];for(var n in e)if(e.hasOwnProperty(n)&&n in c)return u[t]=e[n];return""}var o=n(6),a={animationend:r("Animation","AnimationEnd"),animationiteration:r("Animation","AnimationIteration"),animationstart:r("Animation","AnimationStart"),transitionend:r("Transition","TransitionEnd")},u={},c={};o.canUseDOM&&(c=document.createElement("div").style,"AnimationEvent"in window||(delete a.animationend.animation,delete a.animationiteration.animation,delete a.animationstart.animation),"TransitionEvent"in window||delete a.transitionend.transition),t.exports=i},function(t,e,n){"use strict";function r(t){return'"'+i(t)+'"'}var i=n(56);t.exports=r},function(t,e,n){"use strict";var r=n(167);t.exports=r.renderSubtreeIntoContainer},function(t,e,n){"use strict";function r(t,e){var n=l.extractSingleTouch(e);return n?n[t.page]:t.page in e?e[t.page]:e[t.client]+f[t.envScroll]}function i(t,e){var n=r(b.x,e),i=r(b.y,e);return Math.pow(Math.pow(n-t.x,2)+Math.pow(i-t.y,2),.5)}function o(t){return{tapMoveThreshold:g,ignoreMouseThreshold:m,eventTypes:C,extractEvents:function(e,n,o,a){if(!h(e)&&!d(e))return null;if(v(e))_=k();else if(t(_,k()))return null;var u=null,l=i(y,o);return d(e)&&l<g&&(u=s.getPooled(C.touchTap,n,o,a)),h(e)?(y.x=r(b.x,o),y.y=r(b.y,o)):d(e)&&(y.x=0,y.y=0),c.accumulateTwoPhaseDispatches(u),u}}}var a=n(353),u=n(52),c=n(23),s=n(25),l=n(410),f=n(90),p=n(340),h=(a.topLevelTypes,u.isStartish),d=u.isEndish,v=function(t){return["topTouchCancel","topTouchEnd","topTouchStart","topTouchMove"].indexOf(t)>=0},g=10,m=750,y={x:null,y:null},_=null,b={x:{page:"pageX",client:"clientX",envScroll:"currentPageScrollLeft"},y:{page:"pageY",client:"clientY",envScroll:"currentPageScrollTop"}},x=["topTouchStart","topTouchCancel","topTouchEnd","topTouchMove"],w=["topMouseDown","topMouseMove","topMouseUp"].concat(x),C={touchTap:{phasedRegistrationNames:{bubbled:p({onTouchTap:null}),captured:p({onTouchTapCapture:null})},dependencies:w}},k=function(){return Date.now?Date.now:function(){return+new Date}}();t.exports=o},function(t,e){var n={extractSingleTouch:function(t){var e=t.touches,n=t.changedTouches,r=e&&e.length>0,i=n&&n.length>0;return!r&&i?n[0]:r?e[0]:t}};t.exports=n},function(t,e){t.exports=function(t,e){if(t&&e-t<750)return!0}},function(t,e,n){"use strict";function r(t){var e={"=":"=0",":":"=2"};return"$"+(""+t).replace(/[=:]/g,function(t){return e[t]})}function i(t){var e=/(=0|=2)/g,n={"=0":"=","=2":":"};return(""+("."===t[0]&&"$"===t[1]?t.substring(2):t.substring(1))).replace(e,function(t){return n[t]})}var o={escape:r,unescape:i};t.exports=o},function(t,e,n){"use strict";var r=n(40),i=(n(0),function(t){var e=this;if(e.instancePool.length){var n=e.instancePool.pop();return e.call(n,t),n}return new e(t)}),o=function(t,e){var n=this;if(n.instancePool.length){var r=n.instancePool.pop();return n.call(r,t,e),r}return new n(t,e)},a=function(t,e,n){var r=this;if(r.instancePool.length){var i=r.instancePool.pop();return r.call(i,t,e,n),i}return new r(t,e,n)},u=function(t,e,n,r){var i=this;if(i.instancePool.length){var o=i.instancePool.pop();return i.call(o,t,e,n,r),o}return new i(t,e,n,r)},c=function(t){var e=this;t instanceof e||r("25"),t.destructor(),e.instancePool.length<e.poolSize&&e.instancePool.push(t)},s=i,l=function(t,e){var n=t;return n.instancePool=[],n.getPooled=e||s,n.poolSize||(n.poolSize=10),n.release=c,n},f={addPoolingTo:l,oneArgumentPooler:i,twoArgumentPooler:o,threeArgumentPooler:a,fourArgumentPooler:u};t.exports=f},function(t,e,n){"use strict";function r(t){return(""+t).replace(b,"$&/")}function i(t,e){this.func=t,this.context=e,this.count=0}function o(t,e,n){var r=t.func,i=t.context;r.call(i,e,t.count++)}function a(t,e,n){if(null==t)return t;var r=i.getPooled(e,n);m(t,o,r),i.release(r)}function u(t,e,n,r){this.result=t,this.keyPrefix=e,this.func=n,this.context=r,this.count=0}function c(t,e,n){var i=t.result,o=t.keyPrefix,a=t.func,u=t.context,c=a.call(u,e,t.count++);Array.isArray(c)?s(c,i,n,g.thatReturnsArgument):null!=c&&(v.isValidElement(c)&&(c=v.cloneAndReplaceKey(c,o+(!c.key||e&&e.key===c.key?"":r(c.key)+"/")+n)),i.push(c))}function s(t,e,n,i,o){var a="";null!=n&&(a=r(n)+"/");var s=u.getPooled(e,a,i,o);m(t,c,s),u.release(s)}function l(t,e,n){if(null==t)return t;var r=[];return s(t,r,null,e,n),r}function f(t,e,n){return null}function p(t,e){return m(t,f,null)}function h(t){var e=[];return s(t,e,null,g.thatReturnsArgument),e}var d=n(413),v=n(27),g=n(11),m=n(423),y=d.twoArgumentPooler,_=d.fourArgumentPooler,b=/\/+/g;i.prototype.destructor=function(){this.func=null,this.context=null,this.count=0},d.addPoolingTo(i,y),u.prototype.destructor=function(){this.result=null,this.keyPrefix=null,this.func=null,this.context=null,this.count=0},d.addPoolingTo(u,_);var x={forEach:a,map:l,mapIntoWithKeyPrefixInternal:s,count:p,toArray:h};t.exports=x},function(t,e,n){"use strict";var r=n(27),i=r.createFactory,o={a:i("a"),abbr:i("abbr"),address:i("address"),area:i("area"),article:i("article"),aside:i("aside"),audio:i("audio"),b:i("b"),base:i("base"),bdi:i("bdi"),bdo:i("bdo"),big:i("big"),blockquote:i("blockquote"),body:i("body"),br:i("br"),button:i("button"),canvas:i("canvas"),caption:i("caption"),cite:i("cite"),code:i("code"),col:i("col"),colgroup:i("colgroup"),data:i("data"),datalist:i("datalist"),dd:i("dd"),del:i("del"),details:i("details"),dfn:i("dfn"),dialog:i("dialog"),div:i("div"),dl:i("dl"),dt:i("dt"),em:i("em"),embed:i("embed"),fieldset:i("fieldset"),figcaption:i("figcaption"),figure:i("figure"),footer:i("footer"),form:i("form"),h1:i("h1"),h2:i("h2"),h3:i("h3"),h4:i("h4"),h5:i("h5"),h6:i("h6"),head:i("head"),header:i("header"),hgroup:i("hgroup"),hr:i("hr"),html:i("html"),i:i("i"),iframe:i("iframe"),img:i("img"),input:i("input"),ins:i("ins"),kbd:i("kbd"),keygen:i("keygen"),label:i("label"),legend:i("legend"),li:i("li"),link:i("link"),main:i("main"),map:i("map"),mark:i("mark"),menu:i("menu"),menuitem:i("menuitem"),meta:i("meta"),meter:i("meter"),nav:i("nav"),noscript:i("noscript"),object:i("object"),ol:i("ol"),optgroup:i("optgroup"),option:i("option"),output:i("output"),p:i("p"),param:i("param"),picture:i("picture"),pre:i("pre"),progress:i("progress"),q:i("q"),rp:i("rp"),rt:i("rt"),ruby:i("ruby"),s:i("s"),samp:i("samp"),script:i("script"),section:i("section"),select:i("select"),small:i("small"),source:i("source"),span:i("span"),strong:i("strong"),style:i("style"),sub:i("sub"),summary:i("summary"),sup:i("sup"),table:i("table"),tbody:i("tbody"),td:i("td"),textarea:i("textarea"),tfoot:i("tfoot"),th:i("th"),thead:i("thead"),time:i("time"),title:i("title"),tr:i("tr"),track:i("track"),u:i("u"),ul:i("ul"),var:i("var"),video:i("video"),wbr:i("wbr"),circle:i("circle"),clipPath:i("clipPath"),defs:i("defs"),ellipse:i("ellipse"),g:i("g"),image:i("image"),line:i("line"),linearGradient:i("linearGradient"),mask:i("mask"),path:i("path"),pattern:i("pattern"),polygon:i("polygon"),polyline:i("polyline"),radialGradient:i("radialGradient"),rect:i("rect"),stop:i("stop"),svg:i("svg"),text:i("text"),tspan:i("tspan")};t.exports=o},function(t,e,n){"use strict";var r=n(27),i=r.isValidElement,o=n(157);t.exports=o(i)},function(t,e,n){"use strict";t.exports="15.6.2"},function(t,e,n){"use strict";var r=n(178),i=r.Component,o=n(27),a=o.isValidElement,u=n(181),c=n(191);t.exports=c(i,a,u)},function(t,e,n){"use strict";function r(t){var e=t&&(i&&t[i]||t[o]);if("function"==typeof e)return e}var i="function"==typeof Symbol&&Symbol.iterator,o="@@iterator";t.exports=r},function(t,e,n){"use strict";function r(){return i++}var i=1;t.exports=r},function(t,e,n){"use strict";var r=function(){};t.exports=r},function(t,e,n){"use strict";function r(t){return o.isValidElement(t)||i("143"),t}var i=n(40),o=n(27);n(0);t.exports=r},function(t,e,n){"use strict";function r(t,e){return t&&"object"==typeof t&&null!=t.key?s.escape(t.key):e.toString(36)}function i(t,e,n,o){var p=typeof t;if("undefined"!==p&&"boolean"!==p||(t=null),null===t||"string"===p||"number"===p||"object"===p&&t.$$typeof===u)return n(o,t,""===e?l+r(t,0):e),1;var h,d,v=0,g=""===e?l:e+f;if(Array.isArray(t))for(var m=0;m<t.length;m++)h=t[m],d=g+r(h,m),v+=i(h,d,n,o);else{var y=c(t);if(y){var _,b=y.call(t);if(y!==t.entries)for(var x=0;!(_=b.next()).done;)h=_.value,d=g+r(h,x++),v+=i(h,d,n,o);else for(;!(_=b.next()).done;){var w=_.value;w&&(h=w[1],d=g+s.escape(w[0])+f+r(h,0),v+=i(h,d,n,o))}}else if("object"===p){var C="",k=String(t);a("31","[object Object]"===k?"object with keys {"+Object.keys(t).join(", ")+"}":k,C)}}return v}function o(t,e,n){return null==t?0:i(t,"",e,n)}var a=n(40),u=(n(15),n(180)),c=n(419),s=(n(0),n(412)),l=(n(2),"."),f=":";t.exports=o}]);</script>
</div>
</div>
<div class="output_area">
<div class="prompt"></div>
<div class="output_html rendered_html output_subarea ">
<div id='i4T3Y9DEFAF1JWLMLRJU3'>
<div style='color: #900; text-align: center;'>
<b>Visualization omitted, Javascript library not loaded!</b><br>
Have you run `initjs()` in this notebook? If this notebook was from another
user you must also trust this notebook (File -> Trust notebook). If you are viewing
this notebook on github the Javascript has been stripped for security. If you are using
JupyterLab this error is because a JupyterLab extension has not yet been written.
</div></div>
<script>
if (window.SHAP) SHAP.ReactDom.render(
SHAP.React.createElement(SHAP.AdditiveForceVisualizer, {"outNames": ["output value"], "baseValue": 0.3877307099047089, "outValue": 0.1280622782705989, "link": "identity", "featureNames": ["age", "sibsp", "parch", "fare", "family_size", "pclass_2", "pclass_3", "sex_male", "embarked_Q", "embarked_S"], "features": {"0": {"effect": -0.0261813232478172, "value": 29.69911764705882}, "1": {"effect": 0.003609648341891186, "value": 0.0}, "2": {"effect": 0.0014530058227547828, "value": 0.0}, "3": {"effect": -0.05425827641892526, "value": 7.75}, "4": {"effect": 0.013251676573133342, "value": 0.0}, "5": {"effect": 0.004263134839743946, "value": 0.0}, "6": {"effect": -0.0509046805466792, "value": 1.0}, "7": {"effect": -0.16728350194877983, "value": 1.0}, "8": {"effect": -0.01860694307213476, "value": 1.0}, "9": {"effect": 0.03498882802270305, "value": 0.0}}, "plot_cmap": "RdBu", "labelMargin": 20}),
document.getElementById('i4T3Y9DEFAF1JWLMLRJU3')
);
</script>
</div>
</div>
<div class="output_area">
<div class="prompt"></div>
<div class="output_html rendered_html output_subarea ">
<div>
<style scoped>
.dataframe tbody tr th:only-of-type {
vertical-align: middle;
}
.dataframe tbody tr th {
vertical-align: top;
}
.dataframe thead th {
text-align: right;
}
</style>
<table border="1" class="dataframe">
<thead>
<tr style="text-align: right;">
<th></th>
<th>126</th>
</tr>
</thead>
<tbody>
<tr>
<th>sex_male</th>
<td>-0.167284</td>
</tr>
<tr>
<th>fare</th>
<td>-0.054258</td>
</tr>
<tr>
<th>pclass_3</th>
<td>-0.050905</td>
</tr>
<tr>
<th>age</th>
<td>-0.026181</td>
</tr>
<tr>
<th>embarked_Q</th>
<td>-0.018607</td>
</tr>
<tr>
<th>parch</th>
<td>0.001453</td>
</tr>
<tr>
<th>sibsp</th>
<td>0.003610</td>
</tr>
<tr>
<th>pclass_2</th>
<td>0.004263</td>
</tr>
<tr>
<th>family_size</th>
<td>0.013252</td>
</tr>
<tr>
<th>embarked_S</th>
<td>0.034989</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div><div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<p>Seeing a SHAP plot is like seeing the magician behind the green curtain in the Wizard of Oz. Its beauty lies in how the distribution of feature effects are additive (adding up to the total predicted probability for the <code>1</code> class) and that they are localized to a single prediction. The table below the plot is the full list of features and their SHAP additive weights. We can see very clearly the model brought down his probability of survival by 16% because <code>sex_male == 1</code>, and by an additional 5% because <code>pclass_3 == 1</code>. On the other hand, in his case a <code>family_size == 0</code> slightly helped his odds along with <code>embarked_S == 0</code>. When deciding whether an input attribute value helped or hurt his chances SHAP assumes an <em>all else equal</em> logic - just as you would interpret coefficients (m) in a parametric model (y = mx + b). Furthermore, we can empirically show the additive nature of SHAP holds true: <code>base value (0.38 survival rate for any given passenger) + SUM(SHAP values) == Predicted Probability of Survival</code>.</p>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [471]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#Prove the sum of SHAP values and base_value sum to our prediction for class 1</span>
<span class="kn">import</span> <span class="nn">math</span>
<span class="n">shap_sum</span> <span class="o">=</span> <span class="n">explainer</span><span class="o">.</span><span class="n">expected_value</span> <span class="o">+</span> <span class="n">shap_values</span><span class="o">.</span><span class="n">sum</span><span class="p">()</span>
<span class="k">assert</span><span class="p">(</span><span class="n">math</span><span class="o">.</span><span class="n">isclose</span><span class="p">(</span><span class="n">shap_sum</span><span class="p">,</span><span class="n">rand_proba</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="n">rel_tol</span><span class="o">=</span><span class="mf">1e-06</span><span class="p">))</span> <span class="c1">#if this was False, and error would be thrown</span>
</pre></div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div><div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<p>Now we can use SHAP to view how the features affected the probabilities for a larger sample.</p>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [433]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">shap_values</span> <span class="o">=</span> <span class="n">explainer</span><span class="o">.</span><span class="n">shap_values</span><span class="p">(</span><span class="n">X</span><span class="p">)</span>
<span class="n">shap</span><span class="o">.</span><span class="n">summary_plot</span><span class="p">(</span><span class="n">shap_values</span><span class="p">,</span> <span class="n">X</span><span class="p">)</span>
</pre></div>
</div>
</div>
</div>
<div class="output_wrapper">
<div class="output">
<div class="output_area">
<div class="prompt"></div>
<div class="output_subarea output_stream output_stderr output_text">
<pre> 96%|=================== | 857/891 [00:21<00:00] </pre>
</div>
</div>
<div class="output_area">
<div class="prompt"></div>
<div class="output_png output_subarea ">
<img src="data:image/png;base64,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
"
>
</div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div><div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<p>Above, we see being male is generally a bad thing, but the horizontal dispersion also implies that it depends on other factors. If it did not, we would see a single blob of red on the <code>sex_male</code> line instead of points spread across the X-axis with varying negative SHAP values. At a glance we also see high values for <code>fare</code> tended to aid in survival probability, meanwhile low values for <code>age</code> greatly helped the survival odds. By looking at the SHAP dependence plots we can better understand the interdependence of the features.</p>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [435]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">shap</span><span class="o">.</span><span class="n">dependence_plot</span><span class="p">(</span><span class="s1">'sex_male'</span><span class="p">,</span> <span class="n">shap_values</span><span class="p">,</span> <span class="n">X</span><span class="p">,</span> <span class="n">interaction_index</span><span class="o">=</span><span class="s1">'pclass_3'</span><span class="p">)</span>
<span class="n">shap</span><span class="o">.</span><span class="n">dependence_plot</span><span class="p">(</span><span class="s1">'fare'</span><span class="p">,</span> <span class="n">shap_values</span><span class="p">,</span> <span class="n">X</span><span class="p">)</span> <span class="c1">#when we don't specify an interaction_index, the strongest one is automatically chosen for us</span>
<span class="n">shap</span><span class="o">.</span><span class="n">dependence_plot</span><span class="p">(</span><span class="s1">'age'</span><span class="p">,</span> <span class="n">shap_values</span><span class="p">,</span> <span class="n">X</span><span class="p">,</span> <span class="n">interaction_index</span><span class="o">=</span><span class="s1">'sex_male'</span><span class="p">)</span>
</pre></div>
</div>
</div>
</div>
<div class="output_wrapper">
<div class="output">
<div class="output_area">
<div class="prompt"></div>
<div class="output_png output_subarea ">
<img src="data:image/png;base64,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
"
>
</div>
</div>
<div class="output_area">
<div class="prompt"></div>
<div class="output_png output_subarea ">
<img src="data:image/png;base64,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
"
>
</div>
</div>
<div class="output_area">
<div class="prompt"></div>
<div class="output_png output_subarea ">
<img src="data:image/png;base64,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
"
>
</div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div><div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<p>With SHAP dependence plots we can see how <code>sex_male</code> influences the prediction and how in turn it is influenced by <code>pclass_3</code>. We see a clear benefit on survival of being a woman, and further being in 3rd class hurt your odds as a woman but had a lesser effect if you were a man (because the survival odds are already so bad). The model believes it was better to be a woman in 3rd class than almost any man. The second plot illustrates that a higher <code>fare</code> paid generally conferred a survival benefit, likely due to its influence on cabin class and therefore proximity to lifeboats. Finally, <code>age</code> is interesting because we see a clear benefit to being a child below the age of 10 through an increase in probability of survival, but then we see an interesting spike in the 25-35 range. Further analysis would be warranted but this could be due to the most common ages of the parents who were prioritized alongside their children. We also see more evidence that being a woman at almost any age is better than being a man in terms of survivability.</p>
<p>If a regulator were to ask why a decision was made, SHAP can be used to demonstrate exactly which factors added up to the final decision and how they interacted with each other, even in a complex gradient boosted tree ensemble.</p>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div><div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h2 id="3.-Multi-class-SHAP-Example">3. Multi-class SHAP Example<a class="anchor-link" href="#3.-Multi-class-SHAP-Example">¶</a></h2><p>So now, let us move to a multi-class example. In this case its a bit more complex because SHAP has certain multi-class limitations. I'll keep the model building short so we can focus on the differences from binary classification with SHAP.</p>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [381]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#For the multi-class example we use iris dataset</span>
<span class="n">X</span><span class="p">,</span><span class="n">y</span> <span class="o">=</span> <span class="n">shap</span><span class="o">.</span><span class="n">datasets</span><span class="o">.</span><span class="n">iris</span><span class="p">()</span>
<span class="n">X_display</span><span class="p">,</span><span class="n">y_display</span> <span class="o">=</span> <span class="n">shap</span><span class="o">.</span><span class="n">datasets</span><span class="o">.</span><span class="n">iris</span><span class="p">(</span><span class="n">display</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> <span class="c1"># human readable feature values</span>
<span class="c1"># create a train/test split</span>
<span class="n">X_train</span><span class="p">,</span> <span class="n">X_test</span><span class="p">,</span> <span class="n">y_train</span><span class="p">,</span> <span class="n">y_test</span> <span class="o">=</span> <span class="n">train_test_split</span><span class="p">(</span><span class="n">X</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">test_size</span><span class="o">=</span><span class="mf">0.2</span><span class="p">,</span> <span class="n">random_state</span><span class="o">=</span><span class="mi">42</span><span class="p">)</span>
<span class="n">xgbc</span> <span class="o">=</span> <span class="n">xgb</span><span class="o">.</span><span class="n">XGBClassifier</span><span class="p">(</span><span class="n">learning_rate</span><span class="o">=</span><span class="mf">0.5</span><span class="p">,</span>
<span class="n">n_estimators</span><span class="o">=</span><span class="mi">150</span><span class="p">,</span>
<span class="n">max_depth</span><span class="o">=</span><span class="mi">6</span><span class="p">,</span>
<span class="n">min_child_weight</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span>
<span class="n">gamma</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span>
<span class="n">reg_lambda</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span>
<span class="n">subsample</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span>
<span class="n">colsample_bytree</span><span class="o">=</span><span class="mf">0.75</span><span class="p">,</span>
<span class="n">scale_pos_weight</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span>
<span class="n">objective</span><span class="o">=</span><span class="s1">'multi:softprob'</span><span class="p">,</span>
<span class="n">num_class</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span>
<span class="n">random_state</span><span class="o">=</span><span class="mi">42</span><span class="p">)</span>
<span class="n">mcl</span> <span class="o">=</span> <span class="n">xgbc</span><span class="o">.</span><span class="n">fit</span><span class="p">(</span><span class="n">X_train</span><span class="p">,</span> <span class="n">y_train</span><span class="p">,</span> <span class="n">eval_metric</span><span class="o">=</span><span class="s1">'mlogloss'</span><span class="p">)</span>
<span class="n">pred</span> <span class="o">=</span> <span class="n">mcl</span><span class="o">.</span><span class="n">predict</span><span class="p">(</span><span class="n">X_test</span><span class="p">)</span>
<span class="n">proba</span> <span class="o">=</span> <span class="n">mcl</span><span class="o">.</span><span class="n">predict_proba</span><span class="p">(</span><span class="n">X_test</span><span class="p">)</span>
<span class="c1">#store our flower labels for results</span>
<span class="n">y_map</span> <span class="o">=</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="n">y</span><span class="p">,</span> <span class="n">columns</span><span class="o">=</span><span class="p">[</span><span class="s1">'class'</span><span class="p">])</span>
<span class="n">y_map</span><span class="p">[</span><span class="s1">'label'</span><span class="p">]</span> <span class="o">=</span> <span class="n">y_map</span><span class="p">[</span><span class="s1">'class'</span><span class="p">]</span><span class="o">.</span><span class="n">map</span><span class="p">({</span><span class="mi">0</span><span class="p">:</span><span class="s1">'Iris-setosa'</span><span class="p">,</span><span class="mi">1</span><span class="p">:</span><span class="s1">'Iris-versicolor'</span><span class="p">,</span><span class="mi">2</span><span class="p">:</span><span class="s1">'Iris-virginica'</span><span class="p">})</span>
</pre></div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [422]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#Attempt to use SHAP on multi-class</span>
<span class="n">X_rand</span> <span class="o">=</span> <span class="n">X</span><span class="o">.</span><span class="n">sample</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">random_state</span><span class="o">=</span><span class="mi">42</span><span class="p">)</span>
<span class="n">idx</span> <span class="o">=</span> <span class="n">X_rand</span><span class="o">.</span><span class="n">index</span><span class="o">.</span><span class="n">values</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
<span class="c1">#This line will not work for a multi-class model, so we comment out</span>
<span class="c1">#explainer = shap.TreeExplainer(mcl, model_output='probability', feature_dependence='independent', data=X)</span>
<span class="n">explainer</span> <span class="o">=</span> <span class="n">shap</span><span class="o">.</span><span class="n">TreeExplainer</span><span class="p">(</span><span class="n">mcl</span><span class="p">)</span>
<span class="n">shap_values</span> <span class="o">=</span> <span class="n">explainer</span><span class="o">.</span><span class="n">shap_values</span><span class="p">(</span><span class="n">X</span><span class="o">.</span><span class="n">iloc</span><span class="p">[</span><span class="n">idx</span><span class="p">])</span>
<span class="n">shap</span><span class="o">.</span><span class="n">initjs</span><span class="p">()</span>
<span class="k">for</span> <span class="n">which_class</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="mi">3</span><span class="p">):</span>
<span class="n">display</span><span class="p">(</span><span class="n">shap</span><span class="o">.</span><span class="n">force_plot</span><span class="p">(</span><span class="n">explainer</span><span class="o">.</span><span class="n">expected_value</span><span class="p">[</span><span class="n">which_class</span><span class="p">],</span> <span class="n">shap_values</span><span class="p">[</span><span class="n">which_class</span><span class="p">],</span> <span class="n">X_rand</span><span class="p">))</span>
<span class="c1">#Display all features and SHAP values</span>
<span class="n">df1</span><span class="o">=</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="n">shap_values</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">columns</span><span class="o">=</span><span class="n">X</span><span class="o">.</span><span class="n">columns</span><span class="p">,</span> <span class="n">index</span><span class="o">=</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
<span class="n">df2</span><span class="o">=</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="n">shap_values</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">columns</span><span class="o">=</span><span class="n">X</span><span class="o">.</span><span class="n">columns</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="n">df3</span><span class="o">=</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="n">shap_values</span><span class="p">[</span><span class="mi">2</span><span class="p">],</span> <span class="n">columns</span><span class="o">=</span><span class="n">X</span><span class="o">.</span><span class="n">columns</span><span class="p">,</span> <span class="n">index</span><span class="o">=</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span>
<span class="n">df</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">df1</span><span class="p">,</span><span class="n">df2</span><span class="p">,</span><span class="n">df3</span><span class="p">])</span>
<span class="n">display</span><span class="p">(</span><span class="n">df</span><span class="o">.</span><span class="n">transpose</span><span class="p">())</span>
</pre></div>
</div>
</div>
</div>
<div class="output_wrapper">
<div class="output">
<div class="output_area">
<div class="prompt"></div>
<div class="output_html rendered_html output_subarea ">
<div align='center'><img src='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAWCAYAAAA1vze2AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAdxJREFUeNq0Vt1Rg0AQJjcpgBJiBWIFkgoMFYhPPAIVECogPuYpdJBYgXQQrMCUkA50V7+d2ZwXuXPGm9khHLu3f9+3l1nkWNvtNqfHLgpfQ1EUS3tz5nAQ0+NIsiAZSc6eDlI8M3J00B/mDuUKDk6kfOebAgW3pkdD0pFcODGW4gKKvOrAUm04MA4QDt1OEIXU9hDigfS5rC1eS5T90gltck1Xrizo257kgySZcNRzgCSxCvgiE9nckPJo2b/B2AcEkk2OwL8bD8gmOKR1GPbaCUqxEgTq0tLvgb6zfo7+DgYGkkWL2tqLDV4RSITfbHPPfJKIrWz4nJQTMPAWA7IbD6imcNaDeDfgk+4No+wZr40BL3g9eQJJCFqRQ54KiSt72lsLpE3o3MCBSxDuq4yOckU2hKXRuwBH3OyMR4g1UpyTYw6mlmBqNdUXRM1NfyF5EPI6JkcpIDBIX8jX6DR/6ckAZJ0wEAdLR8DEk6OfC1Pp8BKo6TQIwPJbvJ6toK5lmuvJoRtfK6Ym1iRYIarRo2UyYHvRN5qpakR3yoizWrouoyuXXQqI185LCw07op5ZyCRGL99h24InP0e9xdQukEKVmhzrqZuRIfwISB//cP3Wk3f8f/yR+BRgAHu00HjLcEQBAAAAAElFTkSuQmCC' /></div><script>!function(t){function e(r){if(n[r])return n[r].exports;var i=n[r]={i:r,l:!1,exports:{}};return t[r].call(i.exports,i,i.exports,e),i.l=!0,i.exports}var n={};e.m=t,e.c=n,e.i=function(t){return t},e.d=function(t,n,r){e.o(t,n)||Object.defineProperty(t,n,{configurable:!1,enumerable:!0,get:r})},e.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(n,"a",n),n},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=189)}([function(t,e,n){"use strict";function r(t,e,n,r,o,a,u,c){if(i(e),!t){var s;if(void 0===e)s=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var l=[n,r,o,a,u,c],f=0;s=new Error(e.replace(/%s/g,function(){return l[f++]})),s.name="Invariant Violation"}throw s.framesToPop=1,s}}var i=function(t){};t.exports=r},function(t,e,n){"use strict";function r(t){for(var e=arguments.length-1,n="Minified React error #"+t+"; visit http://facebook.github.io/react/docs/error-decoder.html?invariant="+t,r=0;r<e;r++)n+="&args[]="+encodeURIComponent(arguments[r+1]);n+=" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.";var i=new Error(n);throw i.name="Invariant Violation",i.framesToPop=1,i}t.exports=r},function(t,e,n){"use strict";var r=n(11),i=r;t.exports=i},function(t,e,n){"use strict";function r(t){if(null===t||void 0===t)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(t)}/*
object-assign
(c) Sindre Sorhus
@license MIT
*/
var i=Object.getOwnPropertySymbols,o=Object.prototype.hasOwnProperty,a=Object.prototype.propertyIsEnumerable;t.exports=function(){try{if(!Object.assign)return!1;var t=new String("abc");if(t[5]="de","5"===Object.getOwnPropertyNames(t)[0])return!1;for(var e={},n=0;n<10;n++)e["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(e).map(function(t){return e[t]}).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach(function(t){r[t]=t}),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(t){return!1}}()?Object.assign:function(t,e){for(var n,u,c=r(t),s=1;s<arguments.length;s++){n=Object(arguments[s]);for(var l in n)o.call(n,l)&&(c[l]=n[l]);if(i){u=i(n);for(var f=0;f<u.length;f++)a.call(n,u[f])&&(c[u[f]]=n[u[f]])}}return c}},function(t,e,n){"use strict";function r(t,e){return 1===t.nodeType&&t.getAttribute(d)===String(e)||8===t.nodeType&&t.nodeValue===" react-text: "+e+" "||8===t.nodeType&&t.nodeValue===" react-empty: "+e+" "}function i(t){for(var e;e=t._renderedComponent;)t=e;return t}function o(t,e){var n=i(t);n._hostNode=e,e[g]=n}function a(t){var e=t._hostNode;e&&(delete e[g],t._hostNode=null)}function u(t,e){if(!(t._flags&v.hasCachedChildNodes)){var n=t._renderedChildren,a=e.firstChild;t:for(var u in n)if(n.hasOwnProperty(u)){var c=n[u],s=i(c)._domID;if(0!==s){for(;null!==a;a=a.nextSibling)if(r(a,s)){o(c,a);continue t}f("32",s)}}t._flags|=v.hasCachedChildNodes}}function c(t){if(t[g])return t[g];for(var e=[];!t[g];){if(e.push(t),!t.parentNode)return null;t=t.parentNode}for(var n,r;t&&(r=t[g]);t=e.pop())n=r,e.length&&u(r,t);return n}function s(t){var e=c(t);return null!=e&&e._hostNode===t?e:null}function l(t){if(void 0===t._hostNode&&f("33"),t._hostNode)return t._hostNode;for(var e=[];!t._hostNode;)e.push(t),t._hostParent||f("34"),t=t._hostParent;for(;e.length;t=e.pop())u(t,t._hostNode);return t._hostNode}var f=n(1),p=n(21),h=n(161),d=(n(0),p.ID_ATTRIBUTE_NAME),v=h,g="__reactInternalInstance$"+Math.random().toString(36).slice(2),m={getClosestInstanceFromNode:c,getInstanceFromNode:s,getNodeFromInstance:l,precacheChildNodes:u,precacheNode:o,uncacheNode:a};t.exports=m},function(t,e,n){"use strict";function r(t,e,n,a){function u(e){return t(e=new Date(+e)),e}return u.floor=u,u.ceil=function(n){return t(n=new Date(n-1)),e(n,1),t(n),n},u.round=function(t){var e=u(t),n=u.ceil(t);return t-e<n-t?e:n},u.offset=function(t,n){return e(t=new Date(+t),null==n?1:Math.floor(n)),t},u.range=function(n,r,i){var o,a=[];if(n=u.ceil(n),i=null==i?1:Math.floor(i),!(n<r&&i>0))return a;do{a.push(o=new Date(+n)),e(n,i),t(n)}while(o<n&&n<r);return a},u.filter=function(n){return r(function(e){if(e>=e)for(;t(e),!n(e);)e.setTime(e-1)},function(t,r){if(t>=t)if(r<0)for(;++r<=0;)for(;e(t,-1),!n(t););else for(;--r>=0;)for(;e(t,1),!n(t););})},n&&(u.count=function(e,r){return i.setTime(+e),o.setTime(+r),t(i),t(o),Math.floor(n(i,o))},u.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?u.filter(a?function(e){return a(e)%t==0}:function(e){return u.count(0,e)%t==0}):u:null}),u}e.a=r;var i=new Date,o=new Date},function(t,e,n){"use strict";var r=!("undefined"==typeof window||!window.document||!window.document.createElement),i={canUseDOM:r,canUseWorkers:"undefined"!=typeof Worker,canUseEventListeners:r&&!(!window.addEventListener&&!window.attachEvent),canUseViewport:r&&!!window.screen,isInWorker:!r};t.exports=i},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(101);n.d(e,"bisect",function(){return r.a}),n.d(e,"bisectRight",function(){return r.b}),n.d(e,"bisectLeft",function(){return r.c});var i=n(19);n.d(e,"ascending",function(){return i.a});var o=n(102);n.d(e,"bisector",function(){return o.a});var a=n(193);n.d(e,"cross",function(){return a.a});var u=n(194);n.d(e,"descending",function(){return u.a});var c=n(103);n.d(e,"deviation",function(){return c.a});var s=n(104);n.d(e,"extent",function(){return s.a});var l=n(195);n.d(e,"histogram",function(){return l.a});var f=n(205);n.d(e,"thresholdFreedmanDiaconis",function(){return f.a});var p=n(206);n.d(e,"thresholdScott",function(){return p.a});var h=n(108);n.d(e,"thresholdSturges",function(){return h.a});var d=n(197);n.d(e,"max",function(){return d.a});var v=n(198);n.d(e,"mean",function(){return v.a});var g=n(199);n.d(e,"median",function(){return g.a});var m=n(200);n.d(e,"merge",function(){return m.a});var y=n(105);n.d(e,"min",function(){return y.a});var _=n(106);n.d(e,"pairs",function(){return _.a});var b=n(201);n.d(e,"permute",function(){return b.a});var x=n(59);n.d(e,"quantile",function(){return x.a});var w=n(107);n.d(e,"range",function(){return w.a});var C=n(202);n.d(e,"scan",function(){return C.a});var k=n(203);n.d(e,"shuffle",function(){return k.a});var E=n(204);n.d(e,"sum",function(){return E.a});var M=n(109);n.d(e,"ticks",function(){return M.a}),n.d(e,"tickIncrement",function(){return M.b}),n.d(e,"tickStep",function(){return M.c});var T=n(110);n.d(e,"transpose",function(){return T.a});var S=n(111);n.d(e,"variance",function(){return S.a});var N=n(207);n.d(e,"zip",function(){return N.a})},function(t,e,n){"use strict";function r(t,e){this._groups=t,this._parents=e}function i(){return new r([[document.documentElement]],R)}n.d(e,"c",function(){return R}),e.b=r;var o=n(283),a=n(284),u=n(272),c=n(266),s=n(132),l=n(271),f=n(276),p=n(279),h=n(286),d=n(263),v=n(278),g=n(277),m=n(285),y=n(270),_=n(269),b=n(262),x=n(134),w=n(280),C=n(264),k=n(287),E=n(273),M=n(281),T=n(275),S=n(261),N=n(274),A=n(282),P=n(265),O=n(267),I=n(70),D=n(268),R=[null];r.prototype=i.prototype={constructor:r,select:o.a,selectAll:a.a,filter:u.a,data:c.a,enter:s.a,exit:l.a,merge:f.a,order:p.a,sort:h.a,call:d.a,nodes:v.a,node:g.a,size:m.a,empty:y.a,each:_.a,attr:b.a,style:x.b,property:w.a,classed:C.a,text:k.a,html:E.a,raise:M.a,lower:T.a,append:S.a,insert:N.a,remove:A.a,clone:P.a,datum:O.a,on:I.c,dispatch:D.a},e.a=i},function(t,e,n){"use strict";var r=null;t.exports={debugTool:r}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(61);n.d(e,"color",function(){return r.a}),n.d(e,"rgb",function(){return r.b}),n.d(e,"hsl",function(){return r.c});var i=n(218);n.d(e,"lab",function(){return i.a}),n.d(e,"hcl",function(){return i.b});var o=n(217);n.d(e,"cubehelix",function(){return o.a})},function(t,e,n){"use strict";function r(t){return function(){return t}}var i=function(){};i.thatReturns=r,i.thatReturnsFalse=r(!1),i.thatReturnsTrue=r(!0),i.thatReturnsNull=r(null),i.thatReturnsThis=function(){return this},i.thatReturnsArgument=function(t){return t},t.exports=i},function(t,e,n){"use strict";function r(){S.ReactReconcileTransaction&&w||l("123")}function i(){this.reinitializeTransaction(),this.dirtyComponentsLength=null,this.callbackQueue=p.getPooled(),this.reconcileTransaction=S.ReactReconcileTransaction.getPooled(!0)}function o(t,e,n,i,o,a){return r(),w.batchedUpdates(t,e,n,i,o,a)}function a(t,e){return t._mountOrder-e._mountOrder}function u(t){var e=t.dirtyComponentsLength;e!==y.length&&l("124",e,y.length),y.sort(a),_++;for(var n=0;n<e;n++){var r=y[n],i=r._pendingCallbacks;r._pendingCallbacks=null;var o;if(d.logTopLevelRenders){var u=r;r._currentElement.type.isReactTopLevelWrapper&&(u=r._renderedComponent),o="React update: "+u.getName(),console.time(o)}if(v.performUpdateIfNecessary(r,t.reconcileTransaction,_),o&&console.timeEnd(o),i)for(var c=0;c<i.length;c++)t.callbackQueue.enqueue(i[c],r.getPublicInstance())}}function c(t){if(r(),!w.isBatchingUpdates)return void w.batchedUpdates(c,t);y.push(t),null==t._updateBatchNumber&&(t._updateBatchNumber=_+1)}function s(t,e){m(w.isBatchingUpdates,"ReactUpdates.asap: Can't enqueue an asap callback in a context whereupdates are not being batched."),b.enqueue(t,e),x=!0}var l=n(1),f=n(3),p=n(159),h=n(18),d=n(164),v=n(24),g=n(55),m=n(0),y=[],_=0,b=p.getPooled(),x=!1,w=null,C={initialize:function(){this.dirtyComponentsLength=y.length},close:function(){this.dirtyComponentsLength!==y.length?(y.splice(0,this.dirtyComponentsLength),M()):y.length=0}},k={initialize:function(){this.callbackQueue.reset()},close:function(){this.callbackQueue.notifyAll()}},E=[C,k];f(i.prototype,g,{getTransactionWrappers:function(){return E},destructor:function(){this.dirtyComponentsLength=null,p.release(this.callbackQueue),this.callbackQueue=null,S.ReactReconcileTransaction.release(this.reconcileTransaction),this.reconcileTransaction=null},perform:function(t,e,n){return g.perform.call(this,this.reconcileTransaction.perform,this.reconcileTransaction,t,e,n)}}),h.addPoolingTo(i);var M=function(){for(;y.length||x;){if(y.length){var t=i.getPooled();t.perform(u,null,t),i.release(t)}if(x){x=!1;var e=b;b=p.getPooled(),e.notifyAll(),p.release(e)}}},T={injectReconcileTransaction:function(t){t||l("126"),S.ReactReconcileTransaction=t},injectBatchingStrategy:function(t){t||l("127"),"function"!=typeof t.batchedUpdates&&l("128"),"boolean"!=typeof t.isBatchingUpdates&&l("129"),w=t}},S={ReactReconcileTransaction:null,batchedUpdates:o,enqueueUpdate:c,flushBatchedUpdates:M,injection:T,asap:s};t.exports=S},function(t,e,n){"use strict";n.d(e,"e",function(){return r}),n.d(e,"d",function(){return i}),n.d(e,"c",function(){return o}),n.d(e,"b",function(){return a}),n.d(e,"a",function(){return u});var r=1e3,i=6e4,o=36e5,a=864e5,u=6048e5},function(t,e,n){"use strict";function r(t,e,n,r){this.dispatchConfig=t,this._targetInst=e,this.nativeEvent=n;var i=this.constructor.Interface;for(var o in i)if(i.hasOwnProperty(o)){var u=i[o];u?this[o]=u(n):"target"===o?this.target=r:this[o]=n[o]}var c=null!=n.defaultPrevented?n.defaultPrevented:!1===n.returnValue;return this.isDefaultPrevented=c?a.thatReturnsTrue:a.thatReturnsFalse,this.isPropagationStopped=a.thatReturnsFalse,this}var i=n(3),o=n(18),a=n(11),u=(n(2),["dispatchConfig","_targetInst","nativeEvent","isDefaultPrevented","isPropagationStopped","_dispatchListeners","_dispatchInstances"]),c={type:null,target:null,currentTarget:a.thatReturnsNull,eventPhase:null,bubbles:null,cancelable:null,timeStamp:function(t){return t.timeStamp||Date.now()},defaultPrevented:null,isTrusted:null};i(r.prototype,{preventDefault:function(){this.defaultPrevented=!0;var t=this.nativeEvent;t&&(t.preventDefault?t.preventDefault():"unknown"!=typeof t.returnValue&&(t.returnValue=!1),this.isDefaultPrevented=a.thatReturnsTrue)},stopPropagation:function(){var t=this.nativeEvent;t&&(t.stopPropagation?t.stopPropagation():"unknown"!=typeof t.cancelBubble&&(t.cancelBubble=!0),this.isPropagationStopped=a.thatReturnsTrue)},persist:function(){this.isPersistent=a.thatReturnsTrue},isPersistent:a.thatReturnsFalse,destructor:function(){var t=this.constructor.Interface;for(var e in t)this[e]=null;for(var n=0;n<u.length;n++)this[u[n]]=null}}),r.Interface=c,r.augmentClass=function(t,e){var n=this,r=function(){};r.prototype=n.prototype;var a=new r;i(a,t.prototype),t.prototype=a,t.prototype.constructor=t,t.Interface=i({},n.Interface,e),t.augmentClass=n.augmentClass,o.addPoolingTo(t,o.fourArgumentPooler)},o.addPoolingTo(r,o.fourArgumentPooler),t.exports=r},function(t,e,n){"use strict";var r={current:null};t.exports=r},function(t,e,n){"use strict";n.d(e,"a",function(){return i}),n.d(e,"b",function(){return o});var r=Array.prototype,i=r.map,o=r.slice},function(t,e,n){"use strict";e.a=function(t){return function(){return t}}},function(t,e,n){"use strict";var r=n(1),i=(n(0),function(t){var e=this;if(e.instancePool.length){var n=e.instancePool.pop();return e.call(n,t),n}return new e(t)}),o=function(t,e){var n=this;if(n.instancePool.length){var r=n.instancePool.pop();return n.call(r,t,e),r}return new n(t,e)},a=function(t,e,n){var r=this;if(r.instancePool.length){var i=r.instancePool.pop();return r.call(i,t,e,n),i}return new r(t,e,n)},u=function(t,e,n,r){var i=this;if(i.instancePool.length){var o=i.instancePool.pop();return i.call(o,t,e,n,r),o}return new i(t,e,n,r)},c=function(t){var e=this;t instanceof e||r("25"),t.destructor(),e.instancePool.length<e.poolSize&&e.instancePool.push(t)},s=i,l=function(t,e){var n=t;return n.instancePool=[],n.getPooled=e||s,n.poolSize||(n.poolSize=10),n.release=c,n},f={addPoolingTo:l,oneArgumentPooler:i,twoArgumentPooler:o,threeArgumentPooler:a,fourArgumentPooler:u};t.exports=f},function(t,e,n){"use strict";e.a=function(t,e){return t<e?-1:t>e?1:t>=e?0:NaN}},function(t,e,n){"use strict";function r(t){if(d){var e=t.node,n=t.children;if(n.length)for(var r=0;r<n.length;r++)v(e,n[r],null);else null!=t.html?f(e,t.html):null!=t.text&&h(e,t.text)}}function i(t,e){t.parentNode.replaceChild(e.node,t),r(e)}function o(t,e){d?t.children.push(e):t.node.appendChild(e.node)}function a(t,e){d?t.html=e:f(t.node,e)}function u(t,e){d?t.text=e:h(t.node,e)}function c(){return this.node.nodeName}function s(t){return{node:t,children:[],html:null,text:null,toString:c}}var l=n(83),f=n(57),p=n(91),h=n(176),d="undefined"!=typeof document&&"number"==typeof document.documentMode||"undefined"!=typeof navigator&&"string"==typeof navigator.userAgent&&/\bEdge\/\d/.test(navigator.userAgent),v=p(function(t,e,n){11===e.node.nodeType||1===e.node.nodeType&&"object"===e.node.nodeName.toLowerCase()&&(null==e.node.namespaceURI||e.node.namespaceURI===l.html)?(r(e),t.insertBefore(e.node,n)):(t.insertBefore(e.node,n),r(e))});s.insertTreeBefore=v,s.replaceChildWithTree=i,s.queueChild=o,s.queueHTML=a,s.queueText=u,t.exports=s},function(t,e,n){"use strict";function r(t,e){return(t&e)===e}var i=n(1),o=(n(0),{MUST_USE_PROPERTY:1,HAS_BOOLEAN_VALUE:4,HAS_NUMERIC_VALUE:8,HAS_POSITIVE_NUMERIC_VALUE:24,HAS_OVERLOADED_BOOLEAN_VALUE:32,injectDOMPropertyConfig:function(t){var e=o,n=t.Properties||{},a=t.DOMAttributeNamespaces||{},c=t.DOMAttributeNames||{},s=t.DOMPropertyNames||{},l=t.DOMMutationMethods||{};t.isCustomAttribute&&u._isCustomAttributeFunctions.push(t.isCustomAttribute);for(var f in n){u.properties.hasOwnProperty(f)&&i("48",f);var p=f.toLowerCase(),h=n[f],d={attributeName:p,attributeNamespace:null,propertyName:f,mutationMethod:null,mustUseProperty:r(h,e.MUST_USE_PROPERTY),hasBooleanValue:r(h,e.HAS_BOOLEAN_VALUE),hasNumericValue:r(h,e.HAS_NUMERIC_VALUE),hasPositiveNumericValue:r(h,e.HAS_POSITIVE_NUMERIC_VALUE),hasOverloadedBooleanValue:r(h,e.HAS_OVERLOADED_BOOLEAN_VALUE)};if(d.hasBooleanValue+d.hasNumericValue+d.hasOverloadedBooleanValue<=1||i("50",f),c.hasOwnProperty(f)){var v=c[f];d.attributeName=v}a.hasOwnProperty(f)&&(d.attributeNamespace=a[f]),s.hasOwnProperty(f)&&(d.propertyName=s[f]),l.hasOwnProperty(f)&&(d.mutationMethod=l[f]),u.properties[f]=d}}}),a=":A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD",u={ID_ATTRIBUTE_NAME:"data-reactid",ROOT_ATTRIBUTE_NAME:"data-reactroot",ATTRIBUTE_NAME_START_CHAR:a,ATTRIBUTE_NAME_CHAR:a+"\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040",properties:{},getPossibleStandardName:null,_isCustomAttributeFunctions:[],isCustomAttribute:function(t){for(var e=0;e<u._isCustomAttributeFunctions.length;e++){if((0,u._isCustomAttributeFunctions[e])(t))return!0}return!1},injection:o};t.exports=u},function(t,e,n){"use strict";function r(t){return"button"===t||"input"===t||"select"===t||"textarea"===t}function i(t,e,n){switch(t){case"onClick":case"onClickCapture":case"onDoubleClick":case"onDoubleClickCapture":case"onMouseDown":case"onMouseDownCapture":case"onMouseMove":case"onMouseMoveCapture":case"onMouseUp":case"onMouseUpCapture":return!(!n.disabled||!r(e));default:return!1}}var o=n(1),a=n(84),u=n(52),c=n(88),s=n(169),l=n(170),f=(n(0),{}),p=null,h=function(t,e){t&&(u.executeDispatchesInOrder(t,e),t.isPersistent()||t.constructor.release(t))},d=function(t){return h(t,!0)},v=function(t){return h(t,!1)},g=function(t){return"."+t._rootNodeID},m={injection:{injectEventPluginOrder:a.injectEventPluginOrder,injectEventPluginsByName:a.injectEventPluginsByName},putListener:function(t,e,n){"function"!=typeof n&&o("94",e,typeof n);var r=g(t);(f[e]||(f[e]={}))[r]=n;var i=a.registrationNameModules[e];i&&i.didPutListener&&i.didPutListener(t,e,n)},getListener:function(t,e){var n=f[e];if(i(e,t._currentElement.type,t._currentElement.props))return null;var r=g(t);return n&&n[r]},deleteListener:function(t,e){var n=a.registrationNameModules[e];n&&n.willDeleteListener&&n.willDeleteListener(t,e);var r=f[e];if(r){delete r[g(t)]}},deleteAllListeners:function(t){var e=g(t);for(var n in f)if(f.hasOwnProperty(n)&&f[n][e]){var r=a.registrationNameModules[n];r&&r.willDeleteListener&&r.willDeleteListener(t,n),delete f[n][e]}},extractEvents:function(t,e,n,r){for(var i,o=a.plugins,u=0;u<o.length;u++){var c=o[u];if(c){var l=c.extractEvents(t,e,n,r);l&&(i=s(i,l))}}return i},enqueueEvents:function(t){t&&(p=s(p,t))},processEventQueue:function(t){var e=p;p=null,t?l(e,d):l(e,v),p&&o("95"),c.rethrowCaughtError()},__purge:function(){f={}},__getListenerBank:function(){return f}};t.exports=m},function(t,e,n){"use strict";function r(t,e,n){var r=e.dispatchConfig.phasedRegistrationNames[n];return m(t,r)}function i(t,e,n){var i=r(t,n,e);i&&(n._dispatchListeners=v(n._dispatchListeners,i),n._dispatchInstances=v(n._dispatchInstances,t))}function o(t){t&&t.dispatchConfig.phasedRegistrationNames&&d.traverseTwoPhase(t._targetInst,i,t)}function a(t){if(t&&t.dispatchConfig.phasedRegistrationNames){var e=t._targetInst,n=e?d.getParentInstance(e):null;d.traverseTwoPhase(n,i,t)}}function u(t,e,n){if(n&&n.dispatchConfig.registrationName){var r=n.dispatchConfig.registrationName,i=m(t,r);i&&(n._dispatchListeners=v(n._dispatchListeners,i),n._dispatchInstances=v(n._dispatchInstances,t))}}function c(t){t&&t.dispatchConfig.registrationName&&u(t._targetInst,null,t)}function s(t){g(t,o)}function l(t){g(t,a)}function f(t,e,n,r){d.traverseEnterLeave(n,r,u,t,e)}function p(t){g(t,c)}var h=n(22),d=n(52),v=n(169),g=n(170),m=(n(2),h.getListener),y={accumulateTwoPhaseDispatches:s,accumulateTwoPhaseDispatchesSkipTarget:l,accumulateDirectDispatches:p,accumulateEnterLeaveDispatches:f};t.exports=y},function(t,e,n){"use strict";function r(){i.attachRefs(this,this._currentElement)}var i=n(382),o=(n(9),n(2),{mountComponent:function(t,e,n,i,o,a){var u=t.mountComponent(e,n,i,o,a);return t._currentElement&&null!=t._currentElement.ref&&e.getReactMountReady().enqueue(r,t),u},getHostNode:function(t){return t.getHostNode()},unmountComponent:function(t,e){i.detachRefs(t,t._currentElement),t.unmountComponent(e)},receiveComponent:function(t,e,n,o){var a=t._currentElement;if(e!==a||o!==t._context){var u=i.shouldUpdateRefs(a,e);u&&i.detachRefs(t,a),t.receiveComponent(e,n,o),u&&t._currentElement&&null!=t._currentElement.ref&&n.getReactMountReady().enqueue(r,t)}},performUpdateIfNecessary:function(t,e,n){t._updateBatchNumber===n&&t.performUpdateIfNecessary(e)}});t.exports=o},function(t,e,n){"use strict";function r(t,e,n,r){return i.call(this,t,e,n,r)}var i=n(14),o=n(94),a={view:function(t){if(t.view)return t.view;var e=o(t);if(e.window===e)return e;var n=e.ownerDocument;return n?n.defaultView||n.parentWindow:window},detail:function(t){return t.detail||0}};i.augmentClass(r,a),t.exports=r},function(t,e,n){"use strict";var r=n(3),i=n(178),o=n(414),a=n(415),u=n(27),c=n(416),s=n(417),l=n(418),f=n(422),p=u.createElement,h=u.createFactory,d=u.cloneElement,v=r,g=function(t){return t},m={Children:{map:o.map,forEach:o.forEach,count:o.count,toArray:o.toArray,only:f},Component:i.Component,PureComponent:i.PureComponent,createElement:p,cloneElement:d,isValidElement:u.isValidElement,PropTypes:c,createClass:l,createFactory:h,createMixin:g,DOM:a,version:s,__spread:v};t.exports=m},function(t,e,n){"use strict";function r(t){return void 0!==t.ref}function i(t){return void 0!==t.key}var o=n(3),a=n(15),u=(n(2),n(182),Object.prototype.hasOwnProperty),c=n(180),s={key:!0,ref:!0,__self:!0,__source:!0},l=function(t,e,n,r,i,o,a){var u={$$typeof:c,type:t,key:e,ref:n,props:a,_owner:o};return u};l.createElement=function(t,e,n){var o,c={},f=null,p=null;if(null!=e){r(e)&&(p=e.ref),i(e)&&(f=""+e.key),void 0===e.__self?null:e.__self,void 0===e.__source?null:e.__source;for(o in e)u.call(e,o)&&!s.hasOwnProperty(o)&&(c[o]=e[o])}var h=arguments.length-2;if(1===h)c.children=n;else if(h>1){for(var d=Array(h),v=0;v<h;v++)d[v]=arguments[v+2];c.children=d}if(t&&t.defaultProps){var g=t.defaultProps;for(o in g)void 0===c[o]&&(c[o]=g[o])}return l(t,f,p,0,0,a.current,c)},l.createFactory=function(t){var e=l.createElement.bind(null,t);return e.type=t,e},l.cloneAndReplaceKey=function(t,e){return l(t.type,e,t.ref,t._self,t._source,t._owner,t.props)},l.cloneElement=function(t,e,n){var c,f=o({},t.props),p=t.key,h=t.ref,d=(t._self,t._source,t._owner);if(null!=e){r(e)&&(h=e.ref,d=a.current),i(e)&&(p=""+e.key);var v;t.type&&t.type.defaultProps&&(v=t.type.defaultProps);for(c in e)u.call(e,c)&&!s.hasOwnProperty(c)&&(void 0===e[c]&&void 0!==v?f[c]=v[c]:f[c]=e[c])}var g=arguments.length-2;if(1===g)f.children=n;else if(g>1){for(var m=Array(g),y=0;y<g;y++)m[y]=arguments[y+2];f.children=m}return l(t.type,p,h,0,0,d,f)},l.isValidElement=function(t){return"object"==typeof t&&null!==t&&t.$$typeof===c},t.exports=l},function(t,e,n){"use strict";e.a=function(t){return null===t?NaN:+t}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(219);n.d(e,"formatDefaultLocale",function(){return r.a}),n.d(e,"format",function(){return r.b}),n.d(e,"formatPrefix",function(){return r.c});var i=n(117);n.d(e,"formatLocale",function(){return i.a});var o=n(115);n.d(e,"formatSpecifier",function(){return o.a});var a=n(225);n.d(e,"precisionFixed",function(){return a.a});var u=n(226);n.d(e,"precisionPrefix",function(){return u.a});var c=n(227);n.d(e,"precisionRound",function(){return c.a})},function(t,e,n){"use strict";var r=n(65);n.d(e,"b",function(){return r.a});var i=(n(118),n(64),n(119),n(121),n(43));n.d(e,"a",function(){return i.a});var o=(n(122),n(233));n.d(e,"c",function(){return o.a});var a=(n(124),n(235),n(237),n(123),n(230),n(231),n(229),n(228));n.d(e,"d",function(){return a.a});n(232)},function(t,e,n){"use strict";function r(t,e){return function(n){return t+n*e}}function i(t,e,n){return t=Math.pow(t,n),e=Math.pow(e,n)-t,n=1/n,function(r){return Math.pow(t+r*e,n)}}function o(t,e){var i=e-t;return i?r(t,i>180||i<-180?i-360*Math.round(i/360):i):n.i(c.a)(isNaN(t)?e:t)}function a(t){return 1==(t=+t)?u:function(e,r){return r-e?i(e,r,t):n.i(c.a)(isNaN(e)?r:e)}}function u(t,e){var i=e-t;return i?r(t,i):n.i(c.a)(isNaN(t)?e:t)}e.b=o,e.c=a,e.a=u;var c=n(120)},function(t,e,n){"use strict";var r=n(238);n.d(e,"a",function(){return r.a})},function(t,e,n){"use strict";e.a=function(t){return t.match(/.{6}/g).map(function(t){return"#"+t})}},function(t,e,n){"use strict";function r(t){var e=t.domain;return t.ticks=function(t){var r=e();return n.i(o.ticks)(r[0],r[r.length-1],null==t?10:t)},t.tickFormat=function(t,r){return n.i(c.a)(e(),t,r)},t.nice=function(r){null==r&&(r=10);var i,a=e(),u=0,c=a.length-1,s=a[u],l=a[c];return l<s&&(i=s,s=l,l=i,i=u,u=c,c=i),i=n.i(o.tickIncrement)(s,l,r),i>0?(s=Math.floor(s/i)*i,l=Math.ceil(l/i)*i,i=n.i(o.tickIncrement)(s,l,r)):i<0&&(s=Math.ceil(s*i)/i,l=Math.floor(l*i)/i,i=n.i(o.tickIncrement)(s,l,r)),i>0?(a[u]=Math.floor(s/i)*i,a[c]=Math.ceil(l/i)*i,e(a)):i<0&&(a[u]=Math.ceil(s*i)/i,a[c]=Math.floor(l*i)/i,e(a)),t},t}function i(){var t=n.i(u.a)(u.b,a.a);return t.copy=function(){return n.i(u.c)(t,i())},r(t)}e.b=r,e.a=i;var o=n(7),a=n(30),u=n(44),c=n(253)},function(t,e,n){"use strict";function r(t){return t>1?0:t<-1?h:Math.acos(t)}function i(t){return t>=1?d:t<=-1?-d:Math.asin(t)}n.d(e,"g",function(){return o}),n.d(e,"m",function(){return a}),n.d(e,"h",function(){return u}),n.d(e,"e",function(){return c}),n.d(e,"j",function(){return s}),n.d(e,"i",function(){return l}),n.d(e,"d",function(){return f}),n.d(e,"a",function(){return p}),n.d(e,"b",function(){return h}),n.d(e,"f",function(){return d}),n.d(e,"c",function(){return v}),e.l=r,e.k=i;var o=Math.abs,a=Math.atan2,u=Math.cos,c=Math.max,s=Math.min,l=Math.sin,f=Math.sqrt,p=1e-12,h=Math.PI,d=h/2,v=2*h},function(t,e,n){"use strict";e.a=function(t,e){if((i=t.length)>1)for(var n,r,i,o=1,a=t[e[0]],u=a.length;o<i;++o)for(r=a,a=t[e[o]],n=0;n<u;++n)a[n][1]+=a[n][0]=isNaN(r[n][1])?r[n][0]:r[n][1]}},function(t,e,n){"use strict";e.a=function(t){for(var e=t.length,n=new Array(e);--e>=0;)n[e]=e;return n}},function(t,e,n){(function(t,r){var i;(function(){function o(t,e,n){switch(n.length){case 0:return t.call(e);case 1:return t.call(e,n[0]);case 2:return t.call(e,n[0],n[1]);case 3:return t.call(e,n[0],n[1],n[2])}return t.apply(e,n)}function a(t,e,n,r){for(var i=-1,o=null==t?0:t.length;++i<o;){var a=t[i];e(r,a,n(a),t)}return r}function u(t,e){for(var n=-1,r=null==t?0:t.length;++n<r&&!1!==e(t[n],n,t););return t}function c(t,e){for(var n=null==t?0:t.length;n--&&!1!==e(t[n],n,t););return t}function s(t,e){for(var n=-1,r=null==t?0:t.length;++n<r;)if(!e(t[n],n,t))return!1;return!0}function l(t,e){for(var n=-1,r=null==t?0:t.length,i=0,o=[];++n<r;){var a=t[n];e(a,n,t)&&(o[i++]=a)}return o}function f(t,e){return!!(null==t?0:t.length)&&w(t,e,0)>-1}function p(t,e,n){for(var r=-1,i=null==t?0:t.length;++r<i;)if(n(e,t[r]))return!0;return!1}function h(t,e){for(var n=-1,r=null==t?0:t.length,i=Array(r);++n<r;)i[n]=e(t[n],n,t);return i}function d(t,e){for(var n=-1,r=e.length,i=t.length;++n<r;)t[i+n]=e[n];return t}function v(t,e,n,r){var i=-1,o=null==t?0:t.length;for(r&&o&&(n=t[++i]);++i<o;)n=e(n,t[i],i,t);return n}function g(t,e,n,r){var i=null==t?0:t.length;for(r&&i&&(n=t[--i]);i--;)n=e(n,t[i],i,t);return n}function m(t,e){for(var n=-1,r=null==t?0:t.length;++n<r;)if(e(t[n],n,t))return!0;return!1}function y(t){return t.split("")}function _(t){return t.match(Ue)||[]}function b(t,e,n){var r;return n(t,function(t,n,i){if(e(t,n,i))return r=n,!1}),r}function x(t,e,n,r){for(var i=t.length,o=n+(r?1:-1);r?o--:++o<i;)if(e(t[o],o,t))return o;return-1}function w(t,e,n){return e===e?$(t,e,n):x(t,k,n)}function C(t,e,n,r){for(var i=n-1,o=t.length;++i<o;)if(r(t[i],e))return i;return-1}function k(t){return t!==t}function E(t,e){var n=null==t?0:t.length;return n?A(t,e)/n:It}function M(t){return function(e){return null==e?nt:e[t]}}function T(t){return function(e){return null==t?nt:t[e]}}function S(t,e,n,r,i){return i(t,function(t,i,o){n=r?(r=!1,t):e(n,t,i,o)}),n}function N(t,e){var n=t.length;for(t.sort(e);n--;)t[n]=t[n].value;return t}function A(t,e){for(var n,r=-1,i=t.length;++r<i;){var o=e(t[r]);o!==nt&&(n=n===nt?o:n+o)}return n}function P(t,e){for(var n=-1,r=Array(t);++n<t;)r[n]=e(n);return r}function O(t,e){return h(e,function(e){return[e,t[e]]})}function I(t){return function(e){return t(e)}}function D(t,e){return h(e,function(e){return t[e]})}function R(t,e){return t.has(e)}function L(t,e){for(var n=-1,r=t.length;++n<r&&w(e,t[n],0)>-1;);return n}function U(t,e){for(var n=t.length;n--&&w(e,t[n],0)>-1;);return n}function F(t,e){for(var n=t.length,r=0;n--;)t[n]===e&&++r;return r}function j(t){return"\\"+En[t]}function B(t,e){return null==t?nt:t[e]}function V(t){return gn.test(t)}function W(t){return mn.test(t)}function z(t){for(var e,n=[];!(e=t.next()).done;)n.push(e.value);return n}function H(t){var e=-1,n=Array(t.size);return t.forEach(function(t,r){n[++e]=[r,t]}),n}function q(t,e){return function(n){return t(e(n))}}function Y(t,e){for(var n=-1,r=t.length,i=0,o=[];++n<r;){var a=t[n];a!==e&&a!==ct||(t[n]=ct,o[i++]=n)}return o}function K(t){var e=-1,n=Array(t.size);return t.forEach(function(t){n[++e]=t}),n}function G(t){var e=-1,n=Array(t.size);return t.forEach(function(t){n[++e]=[t,t]}),n}function $(t,e,n){for(var r=n-1,i=t.length;++r<i;)if(t[r]===e)return r;return-1}function X(t,e,n){for(var r=n+1;r--;)if(t[r]===e)return r;return r}function Q(t){return V(t)?J(t):Wn(t)}function Z(t){return V(t)?tt(t):y(t)}function J(t){for(var e=dn.lastIndex=0;dn.test(t);)++e;return e}function tt(t){return t.match(dn)||[]}function et(t){return t.match(vn)||[]}var nt,rt=200,it="Unsupported core-js use. Try https://npms.io/search?q=ponyfill.",ot="Expected a function",at="__lodash_hash_undefined__",ut=500,ct="__lodash_placeholder__",st=1,lt=2,ft=4,pt=1,ht=2,dt=1,vt=2,gt=4,mt=8,yt=16,_t=32,bt=64,xt=128,wt=256,Ct=512,kt=30,Et="...",Mt=800,Tt=16,St=1,Nt=2,At=1/0,Pt=9007199254740991,Ot=1.7976931348623157e308,It=NaN,Dt=4294967295,Rt=Dt-1,Lt=Dt>>>1,Ut=[["ary",xt],["bind",dt],["bindKey",vt],["curry",mt],["curryRight",yt],["flip",Ct],["partial",_t],["partialRight",bt],["rearg",wt]],Ft="[object Arguments]",jt="[object Array]",Bt="[object AsyncFunction]",Vt="[object Boolean]",Wt="[object Date]",zt="[object DOMException]",Ht="[object Error]",qt="[object Function]",Yt="[object GeneratorFunction]",Kt="[object Map]",Gt="[object Number]",$t="[object Null]",Xt="[object Object]",Qt="[object Proxy]",Zt="[object RegExp]",Jt="[object Set]",te="[object String]",ee="[object Symbol]",ne="[object Undefined]",re="[object WeakMap]",ie="[object WeakSet]",oe="[object ArrayBuffer]",ae="[object DataView]",ue="[object Float32Array]",ce="[object Float64Array]",se="[object Int8Array]",le="[object Int16Array]",fe="[object Int32Array]",pe="[object Uint8Array]",he="[object Uint8ClampedArray]",de="[object Uint16Array]",ve="[object Uint32Array]",ge=/\b__p \+= '';/g,me=/\b(__p \+=) '' \+/g,ye=/(__e\(.*?\)|\b__t\)) \+\n'';/g,_e=/&(?:amp|lt|gt|quot|#39);/g,be=/[&<>"']/g,xe=RegExp(_e.source),we=RegExp(be.source),Ce=/<%-([\s\S]+?)%>/g,ke=/<%([\s\S]+?)%>/g,Ee=/<%=([\s\S]+?)%>/g,Me=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Te=/^\w*$/,Se=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Ne=/[\\^$.*+?()[\]{}|]/g,Ae=RegExp(Ne.source),Pe=/^\s+|\s+$/g,Oe=/^\s+/,Ie=/\s+$/,De=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,Re=/\{\n\/\* \[wrapped with (.+)\] \*/,Le=/,? & /,Ue=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,Fe=/\\(\\)?/g,je=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,Be=/\w*$/,Ve=/^[-+]0x[0-9a-f]+$/i,We=/^0b[01]+$/i,ze=/^\[object .+?Constructor\]$/,He=/^0o[0-7]+$/i,qe=/^(?:0|[1-9]\d*)$/,Ye=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,Ke=/($^)/,Ge=/['\n\r\u2028\u2029\\]/g,$e="\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff",Xe="\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",Qe="["+Xe+"]",Ze="["+$e+"]",Je="[a-z\\xdf-\\xf6\\xf8-\\xff]",tn="[^\\ud800-\\udfff"+Xe+"\\d+\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde]",en="\\ud83c[\\udffb-\\udfff]",nn="(?:\\ud83c[\\udde6-\\uddff]){2}",rn="[\\ud800-\\udbff][\\udc00-\\udfff]",on="[A-Z\\xc0-\\xd6\\xd8-\\xde]",an="(?:"+Je+"|"+tn+")",un="(?:[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]|\\ud83c[\\udffb-\\udfff])?",cn="(?:\\u200d(?:"+["[^\\ud800-\\udfff]",nn,rn].join("|")+")[\\ufe0e\\ufe0f]?"+un+")*",sn="[\\ufe0e\\ufe0f]?"+un+cn,ln="(?:"+["[\\u2700-\\u27bf]",nn,rn].join("|")+")"+sn,fn="(?:"+["[^\\ud800-\\udfff]"+Ze+"?",Ze,nn,rn,"[\\ud800-\\udfff]"].join("|")+")",pn=RegExp("['’]","g"),hn=RegExp(Ze,"g"),dn=RegExp(en+"(?="+en+")|"+fn+sn,"g"),vn=RegExp([on+"?"+Je+"+(?:['’](?:d|ll|m|re|s|t|ve))?(?="+[Qe,on,"$"].join("|")+")","(?:[A-Z\\xc0-\\xd6\\xd8-\\xde]|[^\\ud800-\\udfff\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\d+\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde])+(?:['’](?:D|LL|M|RE|S|T|VE))?(?="+[Qe,on+an,"$"].join("|")+")",on+"?"+an+"+(?:['’](?:d|ll|m|re|s|t|ve))?",on+"+(?:['’](?:D|LL|M|RE|S|T|VE))?","\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])","\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])","\\d+",ln].join("|"),"g"),gn=RegExp("[\\u200d\\ud800-\\udfff"+$e+"\\ufe0e\\ufe0f]"),mn=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,yn=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],_n=-1,bn={};bn[ue]=bn[ce]=bn[se]=bn[le]=bn[fe]=bn[pe]=bn[he]=bn[de]=bn[ve]=!0,bn[Ft]=bn[jt]=bn[oe]=bn[Vt]=bn[ae]=bn[Wt]=bn[Ht]=bn[qt]=bn[Kt]=bn[Gt]=bn[Xt]=bn[Zt]=bn[Jt]=bn[te]=bn[re]=!1;var xn={};xn[Ft]=xn[jt]=xn[oe]=xn[ae]=xn[Vt]=xn[Wt]=xn[ue]=xn[ce]=xn[se]=xn[le]=xn[fe]=xn[Kt]=xn[Gt]=xn[Xt]=xn[Zt]=xn[Jt]=xn[te]=xn[ee]=xn[pe]=xn[he]=xn[de]=xn[ve]=!0,xn[Ht]=xn[qt]=xn[re]=!1;var wn={"À":"A","Á":"A","Â":"A","Ã":"A","Ä":"A","Å":"A","à":"a","á":"a","â":"a","ã":"a","ä":"a","å":"a","Ç":"C","ç":"c","Ð":"D","ð":"d","È":"E","É":"E","Ê":"E","Ë":"E","è":"e","é":"e","ê":"e","ë":"e","Ì":"I","Í":"I","Î":"I","Ï":"I","ì":"i","í":"i","î":"i","ï":"i","Ñ":"N","ñ":"n","Ò":"O","Ó":"O","Ô":"O","Õ":"O","Ö":"O","Ø":"O","ò":"o","ó":"o","ô":"o","õ":"o","ö":"o","ø":"o","Ù":"U","Ú":"U","Û":"U","Ü":"U","ù":"u","ú":"u","û":"u","ü":"u","Ý":"Y","ý":"y","ÿ":"y","Æ":"Ae","æ":"ae","Þ":"Th","þ":"th","ß":"ss","Ā":"A","Ă":"A","Ą":"A","ā":"a","ă":"a","ą":"a","Ć":"C","Ĉ":"C","Ċ":"C","Č":"C","ć":"c","ĉ":"c","ċ":"c","č":"c","Ď":"D","Đ":"D","ď":"d","đ":"d","Ē":"E","Ĕ":"E","Ė":"E","Ę":"E","Ě":"E","ē":"e","ĕ":"e","ė":"e","ę":"e","ě":"e","Ĝ":"G","Ğ":"G","Ġ":"G","Ģ":"G","ĝ":"g","ğ":"g","ġ":"g","ģ":"g","Ĥ":"H","Ħ":"H","ĥ":"h","ħ":"h","Ĩ":"I","Ī":"I","Ĭ":"I","Į":"I","İ":"I","ĩ":"i","ī":"i","ĭ":"i","į":"i","ı":"i","Ĵ":"J","ĵ":"j","Ķ":"K","ķ":"k","ĸ":"k","Ĺ":"L","Ļ":"L","Ľ":"L","Ŀ":"L","Ł":"L","ĺ":"l","ļ":"l","ľ":"l","ŀ":"l","ł":"l","Ń":"N","Ņ":"N","Ň":"N","Ŋ":"N","ń":"n","ņ":"n","ň":"n","ŋ":"n","Ō":"O","Ŏ":"O","Ő":"O","ō":"o","ŏ":"o","ő":"o","Ŕ":"R","Ŗ":"R","Ř":"R","ŕ":"r","ŗ":"r","ř":"r","Ś":"S","Ŝ":"S","Ş":"S","Š":"S","ś":"s","ŝ":"s","ş":"s","š":"s","Ţ":"T","Ť":"T","Ŧ":"T","ţ":"t","ť":"t","ŧ":"t","Ũ":"U","Ū":"U","Ŭ":"U","Ů":"U","Ű":"U","Ų":"U","ũ":"u","ū":"u","ŭ":"u","ů":"u","ű":"u","ų":"u","Ŵ":"W","ŵ":"w","Ŷ":"Y","ŷ":"y","Ÿ":"Y","Ź":"Z","Ż":"Z","Ž":"Z","ź":"z","ż":"z","ž":"z","IJ":"IJ","ij":"ij","Œ":"Oe","œ":"oe","ʼn":"'n","ſ":"s"},Cn={"&":"&","<":"<",">":">",'"':""","'":"'"},kn={"&":"&","<":"<",">":">",""":'"',"'":"'"},En={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},Mn=parseFloat,Tn=parseInt,Sn="object"==typeof t&&t&&t.Object===Object&&t,Nn="object"==typeof self&&self&&self.Object===Object&&self,An=Sn||Nn||Function("return this")(),Pn="object"==typeof e&&e&&!e.nodeType&&e,On=Pn&&"object"==typeof r&&r&&!r.nodeType&&r,In=On&&On.exports===Pn,Dn=In&&Sn.process,Rn=function(){try{var t=On&&On.require&&On.require("util").types;return t||Dn&&Dn.binding&&Dn.binding("util")}catch(t){}}(),Ln=Rn&&Rn.isArrayBuffer,Un=Rn&&Rn.isDate,Fn=Rn&&Rn.isMap,jn=Rn&&Rn.isRegExp,Bn=Rn&&Rn.isSet,Vn=Rn&&Rn.isTypedArray,Wn=M("length"),zn=T(wn),Hn=T(Cn),qn=T(kn),Yn=function t(e){function n(t){if(ec(t)&&!hp(t)&&!(t instanceof y)){if(t instanceof i)return t;if(pl.call(t,"__wrapped__"))return Zo(t)}return new i(t)}function r(){}function i(t,e){this.__wrapped__=t,this.__actions__=[],this.__chain__=!!e,this.__index__=0,this.__values__=nt}function y(t){this.__wrapped__=t,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=Dt,this.__views__=[]}function T(){var t=new y(this.__wrapped__);return t.__actions__=Oi(this.__actions__),t.__dir__=this.__dir__,t.__filtered__=this.__filtered__,t.__iteratees__=Oi(this.__iteratees__),t.__takeCount__=this.__takeCount__,t.__views__=Oi(this.__views__),t}function $(){if(this.__filtered__){var t=new y(this);t.__dir__=-1,t.__filtered__=!0}else t=this.clone(),t.__dir__*=-1;return t}function J(){var t=this.__wrapped__.value(),e=this.__dir__,n=hp(t),r=e<0,i=n?t.length:0,o=wo(0,i,this.__views__),a=o.start,u=o.end,c=u-a,s=r?u:a-1,l=this.__iteratees__,f=l.length,p=0,h=Wl(c,this.__takeCount__);if(!n||!r&&i==c&&h==c)return vi(t,this.__actions__);var d=[];t:for(;c--&&p<h;){s+=e;for(var v=-1,g=t[s];++v<f;){var m=l[v],y=m.iteratee,_=m.type,b=y(g);if(_==Nt)g=b;else if(!b){if(_==St)continue t;break t}}d[p++]=g}return d}function tt(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var r=t[e];this.set(r[0],r[1])}}function Ue(){this.__data__=Zl?Zl(null):{},this.size=0}function $e(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e}function Xe(t){var e=this.__data__;if(Zl){var n=e[t];return n===at?nt:n}return pl.call(e,t)?e[t]:nt}function Qe(t){var e=this.__data__;return Zl?e[t]!==nt:pl.call(e,t)}function Ze(t,e){var n=this.__data__;return this.size+=this.has(t)?0:1,n[t]=Zl&&e===nt?at:e,this}function Je(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var r=t[e];this.set(r[0],r[1])}}function tn(){this.__data__=[],this.size=0}function en(t){var e=this.__data__,n=Kn(e,t);return!(n<0)&&(n==e.length-1?e.pop():Ml.call(e,n,1),--this.size,!0)}function nn(t){var e=this.__data__,n=Kn(e,t);return n<0?nt:e[n][1]}function rn(t){return Kn(this.__data__,t)>-1}function on(t,e){var n=this.__data__,r=Kn(n,t);return r<0?(++this.size,n.push([t,e])):n[r][1]=e,this}function an(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var r=t[e];this.set(r[0],r[1])}}function un(){this.size=0,this.__data__={hash:new tt,map:new(Gl||Je),string:new tt}}function cn(t){var e=yo(this,t).delete(t);return this.size-=e?1:0,e}function sn(t){return yo(this,t).get(t)}function ln(t){return yo(this,t).has(t)}function fn(t,e){var n=yo(this,t),r=n.size;return n.set(t,e),this.size+=n.size==r?0:1,this}function dn(t){var e=-1,n=null==t?0:t.length;for(this.__data__=new an;++e<n;)this.add(t[e])}function vn(t){return this.__data__.set(t,at),this}function gn(t){return this.__data__.has(t)}function mn(t){var e=this.__data__=new Je(t);this.size=e.size}function wn(){this.__data__=new Je,this.size=0}function Cn(t){var e=this.__data__,n=e.delete(t);return this.size=e.size,n}function kn(t){return this.__data__.get(t)}function En(t){return this.__data__.has(t)}function Sn(t,e){var n=this.__data__;if(n instanceof Je){var r=n.__data__;if(!Gl||r.length<rt-1)return r.push([t,e]),this.size=++n.size,this;n=this.__data__=new an(r)}return n.set(t,e),this.size=n.size,this}function Nn(t,e){var n=hp(t),r=!n&&pp(t),i=!n&&!r&&vp(t),o=!n&&!r&&!i&&bp(t),a=n||r||i||o,u=a?P(t.length,ol):[],c=u.length;for(var s in t)!e&&!pl.call(t,s)||a&&("length"==s||i&&("offset"==s||"parent"==s)||o&&("buffer"==s||"byteLength"==s||"byteOffset"==s)||Ao(s,c))||u.push(s);return u}function Pn(t){var e=t.length;return e?t[Xr(0,e-1)]:nt}function On(t,e){return Go(Oi(t),Jn(e,0,t.length))}function Dn(t){return Go(Oi(t))}function Rn(t,e,n){(n===nt||Vu(t[e],n))&&(n!==nt||e in t)||Qn(t,e,n)}function Wn(t,e,n){var r=t[e];pl.call(t,e)&&Vu(r,n)&&(n!==nt||e in t)||Qn(t,e,n)}function Kn(t,e){for(var n=t.length;n--;)if(Vu(t[n][0],e))return n;return-1}function Gn(t,e,n,r){return ff(t,function(t,i,o){e(r,t,n(t),o)}),r}function $n(t,e){return t&&Ii(e,Lc(e),t)}function Xn(t,e){return t&&Ii(e,Uc(e),t)}function Qn(t,e,n){"__proto__"==e&&Al?Al(t,e,{configurable:!0,enumerable:!0,value:n,writable:!0}):t[e]=n}function Zn(t,e){for(var n=-1,r=e.length,i=Zs(r),o=null==t;++n<r;)i[n]=o?nt:Ic(t,e[n]);return i}function Jn(t,e,n){return t===t&&(n!==nt&&(t=t<=n?t:n),e!==nt&&(t=t>=e?t:e)),t}function tr(t,e,n,r,i,o){var a,c=e&st,s=e<,l=e&ft;if(n&&(a=i?n(t,r,i,o):n(t)),a!==nt)return a;if(!tc(t))return t;var f=hp(t);if(f){if(a=Eo(t),!c)return Oi(t,a)}else{var p=Cf(t),h=p==qt||p==Yt;if(vp(t))return wi(t,c);if(p==Xt||p==Ft||h&&!i){if(a=s||h?{}:Mo(t),!c)return s?Ri(t,Xn(a,t)):Di(t,$n(a,t))}else{if(!xn[p])return i?t:{};a=To(t,p,c)}}o||(o=new mn);var d=o.get(t);if(d)return d;if(o.set(t,a),_p(t))return t.forEach(function(r){a.add(tr(r,e,n,r,t,o))}),a;if(mp(t))return t.forEach(function(r,i){a.set(i,tr(r,e,n,i,t,o))}),a;var v=l?s?ho:po:s?Uc:Lc,g=f?nt:v(t);return u(g||t,function(r,i){g&&(i=r,r=t[i]),Wn(a,i,tr(r,e,n,i,t,o))}),a}function er(t){var e=Lc(t);return function(n){return nr(n,t,e)}}function nr(t,e,n){var r=n.length;if(null==t)return!r;for(t=rl(t);r--;){var i=n[r],o=e[i],a=t[i];if(a===nt&&!(i in t)||!o(a))return!1}return!0}function rr(t,e,n){if("function"!=typeof t)throw new al(ot);return Mf(function(){t.apply(nt,n)},e)}function ir(t,e,n,r){var i=-1,o=f,a=!0,u=t.length,c=[],s=e.length;if(!u)return c;n&&(e=h(e,I(n))),r?(o=p,a=!1):e.length>=rt&&(o=R,a=!1,e=new dn(e));t:for(;++i<u;){var l=t[i],d=null==n?l:n(l);if(l=r||0!==l?l:0,a&&d===d){for(var v=s;v--;)if(e[v]===d)continue t;c.push(l)}else o(e,d,r)||c.push(l)}return c}function or(t,e){var n=!0;return ff(t,function(t,r,i){return n=!!e(t,r,i)}),n}function ar(t,e,n){for(var r=-1,i=t.length;++r<i;){var o=t[r],a=e(o);if(null!=a&&(u===nt?a===a&&!pc(a):n(a,u)))var u=a,c=o}return c}function ur(t,e,n,r){var i=t.length;for(n=yc(n),n<0&&(n=-n>i?0:i+n),r=r===nt||r>i?i:yc(r),r<0&&(r+=i),r=n>r?0:_c(r);n<r;)t[n++]=e;return t}function cr(t,e){var n=[];return ff(t,function(t,r,i){e(t,r,i)&&n.push(t)}),n}function sr(t,e,n,r,i){var o=-1,a=t.length;for(n||(n=No),i||(i=[]);++o<a;){var u=t[o];e>0&&n(u)?e>1?sr(u,e-1,n,r,i):d(i,u):r||(i[i.length]=u)}return i}function lr(t,e){return t&&hf(t,e,Lc)}function fr(t,e){return t&&df(t,e,Lc)}function pr(t,e){return l(e,function(e){return Qu(t[e])})}function hr(t,e){e=bi(e,t);for(var n=0,r=e.length;null!=t&&n<r;)t=t[$o(e[n++])];return n&&n==r?t:nt}function dr(t,e,n){var r=e(t);return hp(t)?r:d(r,n(t))}function vr(t){return null==t?t===nt?ne:$t:Nl&&Nl in rl(t)?xo(t):Vo(t)}function gr(t,e){return t>e}function mr(t,e){return null!=t&&pl.call(t,e)}function yr(t,e){return null!=t&&e in rl(t)}function _r(t,e,n){return t>=Wl(e,n)&&t<Vl(e,n)}function br(t,e,n){for(var r=n?p:f,i=t[0].length,o=t.length,a=o,u=Zs(o),c=1/0,s=[];a--;){var l=t[a];a&&e&&(l=h(l,I(e))),c=Wl(l.length,c),u[a]=!n&&(e||i>=120&&l.length>=120)?new dn(a&&l):nt}l=t[0];var d=-1,v=u[0];t:for(;++d<i&&s.length<c;){var g=l[d],m=e?e(g):g;if(g=n||0!==g?g:0,!(v?R(v,m):r(s,m,n))){for(a=o;--a;){var y=u[a];if(!(y?R(y,m):r(t[a],m,n)))continue t}v&&v.push(m),s.push(g)}}return s}function xr(t,e,n,r){return lr(t,function(t,i,o){e(r,n(t),i,o)}),r}function wr(t,e,n){e=bi(e,t),t=zo(t,e);var r=null==t?t:t[$o(ma(e))];return null==r?nt:o(r,t,n)}function Cr(t){return ec(t)&&vr(t)==Ft}function kr(t){return ec(t)&&vr(t)==oe}function Er(t){return ec(t)&&vr(t)==Wt}function Mr(t,e,n,r,i){return t===e||(null==t||null==e||!ec(t)&&!ec(e)?t!==t&&e!==e:Tr(t,e,n,r,Mr,i))}function Tr(t,e,n,r,i,o){var a=hp(t),u=hp(e),c=a?jt:Cf(t),s=u?jt:Cf(e);c=c==Ft?Xt:c,s=s==Ft?Xt:s;var l=c==Xt,f=s==Xt,p=c==s;if(p&&vp(t)){if(!vp(e))return!1;a=!0,l=!1}if(p&&!l)return o||(o=new mn),a||bp(t)?co(t,e,n,r,i,o):so(t,e,c,n,r,i,o);if(!(n&pt)){var h=l&&pl.call(t,"__wrapped__"),d=f&&pl.call(e,"__wrapped__");if(h||d){var v=h?t.value():t,g=d?e.value():e;return o||(o=new mn),i(v,g,n,r,o)}}return!!p&&(o||(o=new mn),lo(t,e,n,r,i,o))}function Sr(t){return ec(t)&&Cf(t)==Kt}function Nr(t,e,n,r){var i=n.length,o=i,a=!r;if(null==t)return!o;for(t=rl(t);i--;){var u=n[i];if(a&&u[2]?u[1]!==t[u[0]]:!(u[0]in t))return!1}for(;++i<o;){u=n[i];var c=u[0],s=t[c],l=u[1];if(a&&u[2]){if(s===nt&&!(c in t))return!1}else{var f=new mn;if(r)var p=r(s,l,c,t,e,f);if(!(p===nt?Mr(l,s,pt|ht,r,f):p))return!1}}return!0}function Ar(t){return!(!tc(t)||Ro(t))&&(Qu(t)?yl:ze).test(Xo(t))}function Pr(t){return ec(t)&&vr(t)==Zt}function Or(t){return ec(t)&&Cf(t)==Jt}function Ir(t){return ec(t)&&Ju(t.length)&&!!bn[vr(t)]}function Dr(t){return"function"==typeof t?t:null==t?Ms:"object"==typeof t?hp(t)?Br(t[0],t[1]):jr(t):Ds(t)}function Rr(t){if(!Lo(t))return Bl(t);var e=[];for(var n in rl(t))pl.call(t,n)&&"constructor"!=n&&e.push(n);return e}function Lr(t){if(!tc(t))return Bo(t);var e=Lo(t),n=[];for(var r in t)("constructor"!=r||!e&&pl.call(t,r))&&n.push(r);return n}function Ur(t,e){return t<e}function Fr(t,e){var n=-1,r=Wu(t)?Zs(t.length):[];return ff(t,function(t,i,o){r[++n]=e(t,i,o)}),r}function jr(t){var e=_o(t);return 1==e.length&&e[0][2]?Fo(e[0][0],e[0][1]):function(n){return n===t||Nr(n,t,e)}}function Br(t,e){return Oo(t)&&Uo(e)?Fo($o(t),e):function(n){var r=Ic(n,t);return r===nt&&r===e?Rc(n,t):Mr(e,r,pt|ht)}}function Vr(t,e,n,r,i){t!==e&&hf(e,function(o,a){if(tc(o))i||(i=new mn),Wr(t,e,a,n,Vr,r,i);else{var u=r?r(qo(t,a),o,a+"",t,e,i):nt;u===nt&&(u=o),Rn(t,a,u)}},Uc)}function Wr(t,e,n,r,i,o,a){var u=qo(t,n),c=qo(e,n),s=a.get(c);if(s)return void Rn(t,n,s);var l=o?o(u,c,n+"",t,e,a):nt,f=l===nt;if(f){var p=hp(c),h=!p&&vp(c),d=!p&&!h&&bp(c);l=c,p||h||d?hp(u)?l=u:zu(u)?l=Oi(u):h?(f=!1,l=wi(c,!0)):d?(f=!1,l=Ti(c,!0)):l=[]:sc(c)||pp(c)?(l=u,pp(u)?l=xc(u):tc(u)&&!Qu(u)||(l=Mo(c))):f=!1}f&&(a.set(c,l),i(l,c,r,o,a),a.delete(c)),Rn(t,n,l)}function zr(t,e){var n=t.length;if(n)return e+=e<0?n:0,Ao(e,n)?t[e]:nt}function Hr(t,e,n){var r=-1;return e=h(e.length?e:[Ms],I(mo())),N(Fr(t,function(t,n,i){return{criteria:h(e,function(e){return e(t)}),index:++r,value:t}}),function(t,e){return Ni(t,e,n)})}function qr(t,e){return Yr(t,e,function(e,n){return Rc(t,n)})}function Yr(t,e,n){for(var r=-1,i=e.length,o={};++r<i;){var a=e[r],u=hr(t,a);n(u,a)&&ni(o,bi(a,t),u)}return o}function Kr(t){return function(e){return hr(e,t)}}function Gr(t,e,n,r){var i=r?C:w,o=-1,a=e.length,u=t;for(t===e&&(e=Oi(e)),n&&(u=h(t,I(n)));++o<a;)for(var c=0,s=e[o],l=n?n(s):s;(c=i(u,l,c,r))>-1;)u!==t&&Ml.call(u,c,1),Ml.call(t,c,1);return t}function $r(t,e){for(var n=t?e.length:0,r=n-1;n--;){var i=e[n];if(n==r||i!==o){var o=i;Ao(i)?Ml.call(t,i,1):pi(t,i)}}return t}function Xr(t,e){return t+Rl(ql()*(e-t+1))}function Qr(t,e,n,r){for(var i=-1,o=Vl(Dl((e-t)/(n||1)),0),a=Zs(o);o--;)a[r?o:++i]=t,t+=n;return a}function Zr(t,e){var n="";if(!t||e<1||e>Pt)return n;do{e%2&&(n+=t),(e=Rl(e/2))&&(t+=t)}while(e);return n}function Jr(t,e){return Tf(Wo(t,e,Ms),t+"")}function ti(t){return Pn($c(t))}function ei(t,e){var n=$c(t);return Go(n,Jn(e,0,n.length))}function ni(t,e,n,r){if(!tc(t))return t;e=bi(e,t);for(var i=-1,o=e.length,a=o-1,u=t;null!=u&&++i<o;){var c=$o(e[i]),s=n;if(i!=a){var l=u[c];s=r?r(l,c,u):nt,s===nt&&(s=tc(l)?l:Ao(e[i+1])?[]:{})}Wn(u,c,s),u=u[c]}return t}function ri(t){return Go($c(t))}function ii(t,e,n){var r=-1,i=t.length;e<0&&(e=-e>i?0:i+e),n=n>i?i:n,n<0&&(n+=i),i=e>n?0:n-e>>>0,e>>>=0;for(var o=Zs(i);++r<i;)o[r]=t[r+e];return o}function oi(t,e){var n;return ff(t,function(t,r,i){return!(n=e(t,r,i))}),!!n}function ai(t,e,n){var r=0,i=null==t?r:t.length;if("number"==typeof e&&e===e&&i<=Lt){for(;r<i;){var o=r+i>>>1,a=t[o];null!==a&&!pc(a)&&(n?a<=e:a<e)?r=o+1:i=o}return i}return ui(t,e,Ms,n)}function ui(t,e,n,r){e=n(e);for(var i=0,o=null==t?0:t.length,a=e!==e,u=null===e,c=pc(e),s=e===nt;i<o;){var l=Rl((i+o)/2),f=n(t[l]),p=f!==nt,h=null===f,d=f===f,v=pc(f);if(a)var g=r||d;else g=s?d&&(r||p):u?d&&p&&(r||!h):c?d&&p&&!h&&(r||!v):!h&&!v&&(r?f<=e:f<e);g?i=l+1:o=l}return Wl(o,Rt)}function ci(t,e){for(var n=-1,r=t.length,i=0,o=[];++n<r;){var a=t[n],u=e?e(a):a;if(!n||!Vu(u,c)){var c=u;o[i++]=0===a?0:a}}return o}function si(t){return"number"==typeof t?t:pc(t)?It:+t}function li(t){if("string"==typeof t)return t;if(hp(t))return h(t,li)+"";if(pc(t))return sf?sf.call(t):"";var e=t+"";return"0"==e&&1/t==-At?"-0":e}function fi(t,e,n){var r=-1,i=f,o=t.length,a=!0,u=[],c=u;if(n)a=!1,i=p;else if(o>=rt){var s=e?null:_f(t);if(s)return K(s);a=!1,i=R,c=new dn}else c=e?[]:u;t:for(;++r<o;){var l=t[r],h=e?e(l):l;if(l=n||0!==l?l:0,a&&h===h){for(var d=c.length;d--;)if(c[d]===h)continue t;e&&c.push(h),u.push(l)}else i(c,h,n)||(c!==u&&c.push(h),u.push(l))}return u}function pi(t,e){return e=bi(e,t),null==(t=zo(t,e))||delete t[$o(ma(e))]}function hi(t,e,n,r){return ni(t,e,n(hr(t,e)),r)}function di(t,e,n,r){for(var i=t.length,o=r?i:-1;(r?o--:++o<i)&&e(t[o],o,t););return n?ii(t,r?0:o,r?o+1:i):ii(t,r?o+1:0,r?i:o)}function vi(t,e){var n=t;return n instanceof y&&(n=n.value()),v(e,function(t,e){return e.func.apply(e.thisArg,d([t],e.args))},n)}function gi(t,e,n){var r=t.length;if(r<2)return r?fi(t[0]):[];for(var i=-1,o=Zs(r);++i<r;)for(var a=t[i],u=-1;++u<r;)u!=i&&(o[i]=ir(o[i]||a,t[u],e,n));return fi(sr(o,1),e,n)}function mi(t,e,n){for(var r=-1,i=t.length,o=e.length,a={};++r<i;){var u=r<o?e[r]:nt;n(a,t[r],u)}return a}function yi(t){return zu(t)?t:[]}function _i(t){return"function"==typeof t?t:Ms}function bi(t,e){return hp(t)?t:Oo(t,e)?[t]:Sf(Cc(t))}function xi(t,e,n){var r=t.length;return n=n===nt?r:n,!e&&n>=r?t:ii(t,e,n)}function wi(t,e){if(e)return t.slice();var n=t.length,r=wl?wl(n):new t.constructor(n);return t.copy(r),r}function Ci(t){var e=new t.constructor(t.byteLength);return new xl(e).set(new xl(t)),e}function ki(t,e){var n=e?Ci(t.buffer):t.buffer;return new t.constructor(n,t.byteOffset,t.byteLength)}function Ei(t){var e=new t.constructor(t.source,Be.exec(t));return e.lastIndex=t.lastIndex,e}function Mi(t){return cf?rl(cf.call(t)):{}}function Ti(t,e){var n=e?Ci(t.buffer):t.buffer;return new t.constructor(n,t.byteOffset,t.length)}function Si(t,e){if(t!==e){var n=t!==nt,r=null===t,i=t===t,o=pc(t),a=e!==nt,u=null===e,c=e===e,s=pc(e);if(!u&&!s&&!o&&t>e||o&&a&&c&&!u&&!s||r&&a&&c||!n&&c||!i)return 1;if(!r&&!o&&!s&&t<e||s&&n&&i&&!r&&!o||u&&n&&i||!a&&i||!c)return-1}return 0}function Ni(t,e,n){for(var r=-1,i=t.criteria,o=e.criteria,a=i.length,u=n.length;++r<a;){var c=Si(i[r],o[r]);if(c){if(r>=u)return c;return c*("desc"==n[r]?-1:1)}}return t.index-e.index}function Ai(t,e,n,r){for(var i=-1,o=t.length,a=n.length,u=-1,c=e.length,s=Vl(o-a,0),l=Zs(c+s),f=!r;++u<c;)l[u]=e[u];for(;++i<a;)(f||i<o)&&(l[n[i]]=t[i]);for(;s--;)l[u++]=t[i++];return l}function Pi(t,e,n,r){for(var i=-1,o=t.length,a=-1,u=n.length,c=-1,s=e.length,l=Vl(o-u,0),f=Zs(l+s),p=!r;++i<l;)f[i]=t[i];for(var h=i;++c<s;)f[h+c]=e[c];for(;++a<u;)(p||i<o)&&(f[h+n[a]]=t[i++]);return f}function Oi(t,e){var n=-1,r=t.length;for(e||(e=Zs(r));++n<r;)e[n]=t[n];return e}function Ii(t,e,n,r){var i=!n;n||(n={});for(var o=-1,a=e.length;++o<a;){var u=e[o],c=r?r(n[u],t[u],u,n,t):nt;c===nt&&(c=t[u]),i?Qn(n,u,c):Wn(n,u,c)}return n}function Di(t,e){return Ii(t,xf(t),e)}function Ri(t,e){return Ii(t,wf(t),e)}function Li(t,e){return function(n,r){var i=hp(n)?a:Gn,o=e?e():{};return i(n,t,mo(r,2),o)}}function Ui(t){return Jr(function(e,n){var r=-1,i=n.length,o=i>1?n[i-1]:nt,a=i>2?n[2]:nt;for(o=t.length>3&&"function"==typeof o?(i--,o):nt,a&&Po(n[0],n[1],a)&&(o=i<3?nt:o,i=1),e=rl(e);++r<i;){var u=n[r];u&&t(e,u,r,o)}return e})}function Fi(t,e){return function(n,r){if(null==n)return n;if(!Wu(n))return t(n,r);for(var i=n.length,o=e?i:-1,a=rl(n);(e?o--:++o<i)&&!1!==r(a[o],o,a););return n}}function ji(t){return function(e,n,r){for(var i=-1,o=rl(e),a=r(e),u=a.length;u--;){var c=a[t?u:++i];if(!1===n(o[c],c,o))break}return e}}function Bi(t,e,n){function r(){return(this&&this!==An&&this instanceof r?o:t).apply(i?n:this,arguments)}var i=e&dt,o=zi(t);return r}function Vi(t){return function(e){e=Cc(e);var n=V(e)?Z(e):nt,r=n?n[0]:e.charAt(0),i=n?xi(n,1).join(""):e.slice(1);return r[t]()+i}}function Wi(t){return function(e){return v(xs(es(e).replace(pn,"")),t,"")}}function zi(t){return function(){var e=arguments;switch(e.length){case 0:return new t;case 1:return new t(e[0]);case 2:return new t(e[0],e[1]);case 3:return new t(e[0],e[1],e[2]);case 4:return new t(e[0],e[1],e[2],e[3]);case 5:return new t(e[0],e[1],e[2],e[3],e[4]);case 6:return new t(e[0],e[1],e[2],e[3],e[4],e[5]);case 7:return new t(e[0],e[1],e[2],e[3],e[4],e[5],e[6])}var n=lf(t.prototype),r=t.apply(n,e);return tc(r)?r:n}}function Hi(t,e,n){function r(){for(var a=arguments.length,u=Zs(a),c=a,s=go(r);c--;)u[c]=arguments[c];var l=a<3&&u[0]!==s&&u[a-1]!==s?[]:Y(u,s);return(a-=l.length)<n?eo(t,e,Ki,r.placeholder,nt,u,l,nt,nt,n-a):o(this&&this!==An&&this instanceof r?i:t,this,u)}var i=zi(t);return r}function qi(t){return function(e,n,r){var i=rl(e);if(!Wu(e)){var o=mo(n,3);e=Lc(e),n=function(t){return o(i[t],t,i)}}var a=t(e,n,r);return a>-1?i[o?e[a]:a]:nt}}function Yi(t){return fo(function(e){var n=e.length,r=n,o=i.prototype.thru;for(t&&e.reverse();r--;){var a=e[r];if("function"!=typeof a)throw new al(ot);if(o&&!u&&"wrapper"==vo(a))var u=new i([],!0)}for(r=u?r:n;++r<n;){a=e[r];var c=vo(a),s="wrapper"==c?bf(a):nt;u=s&&Do(s[0])&&s[1]==(xt|mt|_t|wt)&&!s[4].length&&1==s[9]?u[vo(s[0])].apply(u,s[3]):1==a.length&&Do(a)?u[c]():u.thru(a)}return function(){var t=arguments,r=t[0];if(u&&1==t.length&&hp(r))return u.plant(r).value();for(var i=0,o=n?e[i].apply(this,t):r;++i<n;)o=e[i].call(this,o);return o}})}function Ki(t,e,n,r,i,o,a,u,c,s){function l(){for(var m=arguments.length,y=Zs(m),_=m;_--;)y[_]=arguments[_];if(d)var b=go(l),x=F(y,b);if(r&&(y=Ai(y,r,i,d)),o&&(y=Pi(y,o,a,d)),m-=x,d&&m<s){var w=Y(y,b);return eo(t,e,Ki,l.placeholder,n,y,w,u,c,s-m)}var C=p?n:this,k=h?C[t]:t;return m=y.length,u?y=Ho(y,u):v&&m>1&&y.reverse(),f&&c<m&&(y.length=c),this&&this!==An&&this instanceof l&&(k=g||zi(k)),k.apply(C,y)}var f=e&xt,p=e&dt,h=e&vt,d=e&(mt|yt),v=e&Ct,g=h?nt:zi(t);return l}function Gi(t,e){return function(n,r){return xr(n,t,e(r),{})}}function $i(t,e){return function(n,r){var i;if(n===nt&&r===nt)return e;if(n!==nt&&(i=n),r!==nt){if(i===nt)return r;"string"==typeof n||"string"==typeof r?(n=li(n),r=li(r)):(n=si(n),r=si(r)),i=t(n,r)}return i}}function Xi(t){return fo(function(e){return e=h(e,I(mo())),Jr(function(n){var r=this;return t(e,function(t){return o(t,r,n)})})})}function Qi(t,e){e=e===nt?" ":li(e);var n=e.length;if(n<2)return n?Zr(e,t):e;var r=Zr(e,Dl(t/Q(e)));return V(e)?xi(Z(r),0,t).join(""):r.slice(0,t)}function Zi(t,e,n,r){function i(){for(var e=-1,c=arguments.length,s=-1,l=r.length,f=Zs(l+c),p=this&&this!==An&&this instanceof i?u:t;++s<l;)f[s]=r[s];for(;c--;)f[s++]=arguments[++e];return o(p,a?n:this,f)}var a=e&dt,u=zi(t);return i}function Ji(t){return function(e,n,r){return r&&"number"!=typeof r&&Po(e,n,r)&&(n=r=nt),e=mc(e),n===nt?(n=e,e=0):n=mc(n),r=r===nt?e<n?1:-1:mc(r),Qr(e,n,r,t)}}function to(t){return function(e,n){return"string"==typeof e&&"string"==typeof n||(e=bc(e),n=bc(n)),t(e,n)}}function eo(t,e,n,r,i,o,a,u,c,s){var l=e&mt,f=l?a:nt,p=l?nt:a,h=l?o:nt,d=l?nt:o;e|=l?_t:bt,(e&=~(l?bt:_t))>||(e&=~(dt|vt));var v=[t,e,i,h,f,d,p,u,c,s],g=n.apply(nt,v);return Do(t)&&Ef(g,v),g.placeholder=r,Yo(g,t,e)}function no(t){var e=nl[t];return function(t,n){if(t=bc(t),n=null==n?0:Wl(yc(n),292)){var r=(Cc(t)+"e").split("e");return r=(Cc(e(r[0]+"e"+(+r[1]+n)))+"e").split("e"),+(r[0]+"e"+(+r[1]-n))}return e(t)}}function ro(t){return function(e){var n=Cf(e);return n==Kt?H(e):n==Jt?G(e):O(e,t(e))}}function io(t,e,n,r,i,o,a,u){var c=e&vt;if(!c&&"function"!=typeof t)throw new al(ot);var s=r?r.length:0;if(s||(e&=~(_t|bt),r=i=nt),a=a===nt?a:Vl(yc(a),0),u=u===nt?u:yc(u),s-=i?i.length:0,e&bt){var l=r,f=i;r=i=nt}var p=c?nt:bf(t),h=[t,e,n,r,i,l,f,o,a,u];if(p&&jo(h,p),t=h[0],e=h[1],n=h[2],r=h[3],i=h[4],u=h[9]=h[9]===nt?c?0:t.length:Vl(h[9]-s,0),!u&&e&(mt|yt)&&(e&=~(mt|yt)),e&&e!=dt)d=e==mt||e==yt?Hi(t,e,u):e!=_t&&e!=(dt|_t)||i.length?Ki.apply(nt,h):Zi(t,e,n,r);else var d=Bi(t,e,n);return Yo((p?vf:Ef)(d,h),t,e)}function oo(t,e,n,r){return t===nt||Vu(t,sl[n])&&!pl.call(r,n)?e:t}function ao(t,e,n,r,i,o){return tc(t)&&tc(e)&&(o.set(e,t),Vr(t,e,nt,ao,o),o.delete(e)),t}function uo(t){return sc(t)?nt:t}function co(t,e,n,r,i,o){var a=n&pt,u=t.length,c=e.length;if(u!=c&&!(a&&c>u))return!1;var s=o.get(t);if(s&&o.get(e))return s==e;var l=-1,f=!0,p=n&ht?new dn:nt;for(o.set(t,e),o.set(e,t);++l<u;){var h=t[l],d=e[l];if(r)var v=a?r(d,h,l,e,t,o):r(h,d,l,t,e,o);if(v!==nt){if(v)continue;f=!1;break}if(p){if(!m(e,function(t,e){if(!R(p,e)&&(h===t||i(h,t,n,r,o)))return p.push(e)})){f=!1;break}}else if(h!==d&&!i(h,d,n,r,o)){f=!1;break}}return o.delete(t),o.delete(e),f}function so(t,e,n,r,i,o,a){switch(n){case ae:if(t.byteLength!=e.byteLength||t.byteOffset!=e.byteOffset)return!1;t=t.buffer,e=e.buffer;case oe:return!(t.byteLength!=e.byteLength||!o(new xl(t),new xl(e)));case Vt:case Wt:case Gt:return Vu(+t,+e);case Ht:return t.name==e.name&&t.message==e.message;case Zt:case te:return t==e+"";case Kt:var u=H;case Jt:var c=r&pt;if(u||(u=K),t.size!=e.size&&!c)return!1;var s=a.get(t);if(s)return s==e;r|=ht,a.set(t,e);var l=co(u(t),u(e),r,i,o,a);return a.delete(t),l;case ee:if(cf)return cf.call(t)==cf.call(e)}return!1}function lo(t,e,n,r,i,o){var a=n&pt,u=po(t),c=u.length;if(c!=po(e).length&&!a)return!1;for(var s=c;s--;){var l=u[s];if(!(a?l in e:pl.call(e,l)))return!1}var f=o.get(t);if(f&&o.get(e))return f==e;var p=!0;o.set(t,e),o.set(e,t);for(var h=a;++s<c;){l=u[s];var d=t[l],v=e[l];if(r)var g=a?r(v,d,l,e,t,o):r(d,v,l,t,e,o);if(!(g===nt?d===v||i(d,v,n,r,o):g)){p=!1;break}h||(h="constructor"==l)}if(p&&!h){var m=t.constructor,y=e.constructor;m!=y&&"constructor"in t&&"constructor"in e&&!("function"==typeof m&&m instanceof m&&"function"==typeof y&&y instanceof y)&&(p=!1)}return o.delete(t),o.delete(e),p}function fo(t){return Tf(Wo(t,nt,sa),t+"")}function po(t){return dr(t,Lc,xf)}function ho(t){return dr(t,Uc,wf)}function vo(t){for(var e=t.name+"",n=tf[e],r=pl.call(tf,e)?n.length:0;r--;){var i=n[r],o=i.func;if(null==o||o==t)return i.name}return e}function go(t){return(pl.call(n,"placeholder")?n:t).placeholder}function mo(){var t=n.iteratee||Ts;return t=t===Ts?Dr:t,arguments.length?t(arguments[0],arguments[1]):t}function yo(t,e){var n=t.__data__;return Io(e)?n["string"==typeof e?"string":"hash"]:n.map}function _o(t){for(var e=Lc(t),n=e.length;n--;){var r=e[n],i=t[r];e[n]=[r,i,Uo(i)]}return e}function bo(t,e){var n=B(t,e);return Ar(n)?n:nt}function xo(t){var e=pl.call(t,Nl),n=t[Nl];try{t[Nl]=nt;var r=!0}catch(t){}var i=vl.call(t);return r&&(e?t[Nl]=n:delete t[Nl]),i}function wo(t,e,n){for(var r=-1,i=n.length;++r<i;){var o=n[r],a=o.size;switch(o.type){case"drop":t+=a;break;case"dropRight":e-=a;break;case"take":e=Wl(e,t+a);break;case"takeRight":t=Vl(t,e-a)}}return{start:t,end:e}}function Co(t){var e=t.match(Re);return e?e[1].split(Le):[]}function ko(t,e,n){e=bi(e,t);for(var r=-1,i=e.length,o=!1;++r<i;){var a=$o(e[r]);if(!(o=null!=t&&n(t,a)))break;t=t[a]}return o||++r!=i?o:!!(i=null==t?0:t.length)&&Ju(i)&&Ao(a,i)&&(hp(t)||pp(t))}function Eo(t){var e=t.length,n=new t.constructor(e);return e&&"string"==typeof t[0]&&pl.call(t,"index")&&(n.index=t.index,n.input=t.input),n}function Mo(t){return"function"!=typeof t.constructor||Lo(t)?{}:lf(Cl(t))}function To(t,e,n){var r=t.constructor;switch(e){case oe:return Ci(t);case Vt:case Wt:return new r(+t);case ae:return ki(t,n);case ue:case ce:case se:case le:case fe:case pe:case he:case de:case ve:return Ti(t,n);case Kt:return new r;case Gt:case te:return new r(t);case Zt:return Ei(t);case Jt:return new r;case ee:return Mi(t)}}function So(t,e){var n=e.length;if(!n)return t;var r=n-1;return e[r]=(n>1?"& ":"")+e[r],e=e.join(n>2?", ":" "),t.replace(De,"{\n/* [wrapped with "+e+"] */\n")}function No(t){return hp(t)||pp(t)||!!(Tl&&t&&t[Tl])}function Ao(t,e){var n=typeof t;return!!(e=null==e?Pt:e)&&("number"==n||"symbol"!=n&&qe.test(t))&&t>-1&&t%1==0&&t<e}function Po(t,e,n){if(!tc(n))return!1;var r=typeof e;return!!("number"==r?Wu(n)&&Ao(e,n.length):"string"==r&&e in n)&&Vu(n[e],t)}function Oo(t,e){if(hp(t))return!1;var n=typeof t;return!("number"!=n&&"symbol"!=n&&"boolean"!=n&&null!=t&&!pc(t))||(Te.test(t)||!Me.test(t)||null!=e&&t in rl(e))}function Io(t){var e=typeof t;return"string"==e||"number"==e||"symbol"==e||"boolean"==e?"__proto__"!==t:null===t}function Do(t){var e=vo(t),r=n[e];if("function"!=typeof r||!(e in y.prototype))return!1;if(t===r)return!0;var i=bf(r);return!!i&&t===i[0]}function Ro(t){return!!dl&&dl in t}function Lo(t){var e=t&&t.constructor;return t===("function"==typeof e&&e.prototype||sl)}function Uo(t){return t===t&&!tc(t)}function Fo(t,e){return function(n){return null!=n&&(n[t]===e&&(e!==nt||t in rl(n)))}}function jo(t,e){var n=t[1],r=e[1],i=n|r,o=i<(dt|vt|xt),a=r==xt&&n==mt||r==xt&&n==wt&&t[7].length<=e[8]||r==(xt|wt)&&e[7].length<=e[8]&&n==mt;if(!o&&!a)return t;r&dt&&(t[2]=e[2],i|=n&dt?0:gt);var u=e[3];if(u){var c=t[3];t[3]=c?Ai(c,u,e[4]):u,t[4]=c?Y(t[3],ct):e[4]}return u=e[5],u&&(c=t[5],t[5]=c?Pi(c,u,e[6]):u,t[6]=c?Y(t[5],ct):e[6]),u=e[7],u&&(t[7]=u),r&xt&&(t[8]=null==t[8]?e[8]:Wl(t[8],e[8])),null==t[9]&&(t[9]=e[9]),t[0]=e[0],t[1]=i,t}function Bo(t){var e=[];if(null!=t)for(var n in rl(t))e.push(n);return e}function Vo(t){return vl.call(t)}function Wo(t,e,n){return e=Vl(e===nt?t.length-1:e,0),function(){for(var r=arguments,i=-1,a=Vl(r.length-e,0),u=Zs(a);++i<a;)u[i]=r[e+i];i=-1;for(var c=Zs(e+1);++i<e;)c[i]=r[i];return c[e]=n(u),o(t,this,c)}}function zo(t,e){return e.length<2?t:hr(t,ii(e,0,-1))}function Ho(t,e){for(var n=t.length,r=Wl(e.length,n),i=Oi(t);r--;){var o=e[r];t[r]=Ao(o,n)?i[o]:nt}return t}function qo(t,e){if("__proto__"!=e)return t[e]}function Yo(t,e,n){var r=e+"";return Tf(t,So(r,Qo(Co(r),n)))}function Ko(t){var e=0,n=0;return function(){var r=zl(),i=Tt-(r-n);if(n=r,i>0){if(++e>=Mt)return arguments[0]}else e=0;return t.apply(nt,arguments)}}function Go(t,e){var n=-1,r=t.length,i=r-1;for(e=e===nt?r:e;++n<e;){var o=Xr(n,i),a=t[o];t[o]=t[n],t[n]=a}return t.length=e,t}function $o(t){if("string"==typeof t||pc(t))return t;var e=t+"";return"0"==e&&1/t==-At?"-0":e}function Xo(t){if(null!=t){try{return fl.call(t)}catch(t){}try{return t+""}catch(t){}}return""}function Qo(t,e){return u(Ut,function(n){var r="_."+n[0];e&n[1]&&!f(t,r)&&t.push(r)}),t.sort()}function Zo(t){if(t instanceof y)return t.clone();var e=new i(t.__wrapped__,t.__chain__);return e.__actions__=Oi(t.__actions__),e.__index__=t.__index__,e.__values__=t.__values__,e}function Jo(t,e,n){e=(n?Po(t,e,n):e===nt)?1:Vl(yc(e),0);var r=null==t?0:t.length;if(!r||e<1)return[];for(var i=0,o=0,a=Zs(Dl(r/e));i<r;)a[o++]=ii(t,i,i+=e);return a}function ta(t){for(var e=-1,n=null==t?0:t.length,r=0,i=[];++e<n;){var o=t[e];o&&(i[r++]=o)}return i}function ea(){var t=arguments.length;if(!t)return[];for(var e=Zs(t-1),n=arguments[0],r=t;r--;)e[r-1]=arguments[r];return d(hp(n)?Oi(n):[n],sr(e,1))}function na(t,e,n){var r=null==t?0:t.length;return r?(e=n||e===nt?1:yc(e),ii(t,e<0?0:e,r)):[]}function ra(t,e,n){var r=null==t?0:t.length;return r?(e=n||e===nt?1:yc(e),e=r-e,ii(t,0,e<0?0:e)):[]}function ia(t,e){return t&&t.length?di(t,mo(e,3),!0,!0):[]}function oa(t,e){return t&&t.length?di(t,mo(e,3),!0):[]}function aa(t,e,n,r){var i=null==t?0:t.length;return i?(n&&"number"!=typeof n&&Po(t,e,n)&&(n=0,r=i),ur(t,e,n,r)):[]}function ua(t,e,n){var r=null==t?0:t.length;if(!r)return-1;var i=null==n?0:yc(n);return i<0&&(i=Vl(r+i,0)),x(t,mo(e,3),i)}function ca(t,e,n){var r=null==t?0:t.length;if(!r)return-1;var i=r-1;return n!==nt&&(i=yc(n),i=n<0?Vl(r+i,0):Wl(i,r-1)),x(t,mo(e,3),i,!0)}function sa(t){return(null==t?0:t.length)?sr(t,1):[]}function la(t){return(null==t?0:t.length)?sr(t,At):[]}function fa(t,e){return(null==t?0:t.length)?(e=e===nt?1:yc(e),sr(t,e)):[]}function pa(t){for(var e=-1,n=null==t?0:t.length,r={};++e<n;){var i=t[e];r[i[0]]=i[1]}return r}function ha(t){return t&&t.length?t[0]:nt}function da(t,e,n){var r=null==t?0:t.length;if(!r)return-1;var i=null==n?0:yc(n);return i<0&&(i=Vl(r+i,0)),w(t,e,i)}function va(t){return(null==t?0:t.length)?ii(t,0,-1):[]}function ga(t,e){return null==t?"":jl.call(t,e)}function ma(t){var e=null==t?0:t.length;return e?t[e-1]:nt}function ya(t,e,n){var r=null==t?0:t.length;if(!r)return-1;var i=r;return n!==nt&&(i=yc(n),i=i<0?Vl(r+i,0):Wl(i,r-1)),e===e?X(t,e,i):x(t,k,i,!0)}function _a(t,e){return t&&t.length?zr(t,yc(e)):nt}function ba(t,e){return t&&t.length&&e&&e.length?Gr(t,e):t}function xa(t,e,n){return t&&t.length&&e&&e.length?Gr(t,e,mo(n,2)):t}function wa(t,e,n){return t&&t.length&&e&&e.length?Gr(t,e,nt,n):t}function Ca(t,e){var n=[];if(!t||!t.length)return n;var r=-1,i=[],o=t.length;for(e=mo(e,3);++r<o;){var a=t[r];e(a,r,t)&&(n.push(a),i.push(r))}return $r(t,i),n}function ka(t){return null==t?t:Yl.call(t)}function Ea(t,e,n){var r=null==t?0:t.length;return r?(n&&"number"!=typeof n&&Po(t,e,n)?(e=0,n=r):(e=null==e?0:yc(e),n=n===nt?r:yc(n)),ii(t,e,n)):[]}function Ma(t,e){return ai(t,e)}function Ta(t,e,n){return ui(t,e,mo(n,2))}function Sa(t,e){var n=null==t?0:t.length;if(n){var r=ai(t,e);if(r<n&&Vu(t[r],e))return r}return-1}function Na(t,e){return ai(t,e,!0)}function Aa(t,e,n){return ui(t,e,mo(n,2),!0)}function Pa(t,e){if(null==t?0:t.length){var n=ai(t,e,!0)-1;if(Vu(t[n],e))return n}return-1}function Oa(t){return t&&t.length?ci(t):[]}function Ia(t,e){return t&&t.length?ci(t,mo(e,2)):[]}function Da(t){var e=null==t?0:t.length;return e?ii(t,1,e):[]}function Ra(t,e,n){return t&&t.length?(e=n||e===nt?1:yc(e),ii(t,0,e<0?0:e)):[]}function La(t,e,n){var r=null==t?0:t.length;return r?(e=n||e===nt?1:yc(e),e=r-e,ii(t,e<0?0:e,r)):[]}function Ua(t,e){return t&&t.length?di(t,mo(e,3),!1,!0):[]}function Fa(t,e){return t&&t.length?di(t,mo(e,3)):[]}function ja(t){return t&&t.length?fi(t):[]}function Ba(t,e){return t&&t.length?fi(t,mo(e,2)):[]}function Va(t,e){return e="function"==typeof e?e:nt,t&&t.length?fi(t,nt,e):[]}function Wa(t){if(!t||!t.length)return[];var e=0;return t=l(t,function(t){if(zu(t))return e=Vl(t.length,e),!0}),P(e,function(e){return h(t,M(e))})}function za(t,e){if(!t||!t.length)return[];var n=Wa(t);return null==e?n:h(n,function(t){return o(e,nt,t)})}function Ha(t,e){return mi(t||[],e||[],Wn)}function qa(t,e){return mi(t||[],e||[],ni)}function Ya(t){var e=n(t);return e.__chain__=!0,e}function Ka(t,e){return e(t),t}function Ga(t,e){return e(t)}function $a(){return Ya(this)}function Xa(){return new i(this.value(),this.__chain__)}function Qa(){this.__values__===nt&&(this.__values__=gc(this.value()));var t=this.__index__>=this.__values__.length;return{done:t,value:t?nt:this.__values__[this.__index__++]}}function Za(){return this}function Ja(t){for(var e,n=this;n instanceof r;){var i=Zo(n);i.__index__=0,i.__values__=nt,e?o.__wrapped__=i:e=i;var o=i;n=n.__wrapped__}return o.__wrapped__=t,e}function tu(){var t=this.__wrapped__;if(t instanceof y){var e=t;return this.__actions__.length&&(e=new y(this)),e=e.reverse(),e.__actions__.push({func:Ga,args:[ka],thisArg:nt}),new i(e,this.__chain__)}return this.thru(ka)}function eu(){return vi(this.__wrapped__,this.__actions__)}function nu(t,e,n){var r=hp(t)?s:or;return n&&Po(t,e,n)&&(e=nt),r(t,mo(e,3))}function ru(t,e){return(hp(t)?l:cr)(t,mo(e,3))}function iu(t,e){return sr(lu(t,e),1)}function ou(t,e){return sr(lu(t,e),At)}function au(t,e,n){return n=n===nt?1:yc(n),sr(lu(t,e),n)}function uu(t,e){return(hp(t)?u:ff)(t,mo(e,3))}function cu(t,e){return(hp(t)?c:pf)(t,mo(e,3))}function su(t,e,n,r){t=Wu(t)?t:$c(t),n=n&&!r?yc(n):0;var i=t.length;return n<0&&(n=Vl(i+n,0)),fc(t)?n<=i&&t.indexOf(e,n)>-1:!!i&&w(t,e,n)>-1}function lu(t,e){return(hp(t)?h:Fr)(t,mo(e,3))}function fu(t,e,n,r){return null==t?[]:(hp(e)||(e=null==e?[]:[e]),n=r?nt:n,hp(n)||(n=null==n?[]:[n]),Hr(t,e,n))}function pu(t,e,n){var r=hp(t)?v:S,i=arguments.length<3;return r(t,mo(e,4),n,i,ff)}function hu(t,e,n){var r=hp(t)?g:S,i=arguments.length<3;return r(t,mo(e,4),n,i,pf)}function du(t,e){return(hp(t)?l:cr)(t,Su(mo(e,3)))}function vu(t){return(hp(t)?Pn:ti)(t)}function gu(t,e,n){return e=(n?Po(t,e,n):e===nt)?1:yc(e),(hp(t)?On:ei)(t,e)}function mu(t){return(hp(t)?Dn:ri)(t)}function yu(t){if(null==t)return 0;if(Wu(t))return fc(t)?Q(t):t.length;var e=Cf(t);return e==Kt||e==Jt?t.size:Rr(t).length}function _u(t,e,n){var r=hp(t)?m:oi;return n&&Po(t,e,n)&&(e=nt),r(t,mo(e,3))}function bu(t,e){if("function"!=typeof e)throw new al(ot);return t=yc(t),function(){if(--t<1)return e.apply(this,arguments)}}function xu(t,e,n){return e=n?nt:e,e=t&&null==e?t.length:e,io(t,xt,nt,nt,nt,nt,e)}function wu(t,e){var n;if("function"!=typeof e)throw new al(ot);return t=yc(t),function(){return--t>0&&(n=e.apply(this,arguments)),t<=1&&(e=nt),n}}function Cu(t,e,n){e=n?nt:e;var r=io(t,mt,nt,nt,nt,nt,nt,e);return r.placeholder=Cu.placeholder,r}function ku(t,e,n){e=n?nt:e;var r=io(t,yt,nt,nt,nt,nt,nt,e);return r.placeholder=ku.placeholder,r}function Eu(t,e,n){function r(e){var n=p,r=h;return p=h=nt,y=e,v=t.apply(r,n)}function i(t){return y=t,g=Mf(u,e),_?r(t):v}function o(t){var n=t-m,r=t-y,i=e-n;return b?Wl(i,d-r):i}function a(t){var n=t-m,r=t-y;return m===nt||n>=e||n<0||b&&r>=d}function u(){var t=ep();if(a(t))return c(t);g=Mf(u,o(t))}function c(t){return g=nt,x&&p?r(t):(p=h=nt,v)}function s(){g!==nt&&yf(g),y=0,p=m=h=g=nt}function l(){return g===nt?v:c(ep())}function f(){var t=ep(),n=a(t);if(p=arguments,h=this,m=t,n){if(g===nt)return i(m);if(b)return g=Mf(u,e),r(m)}return g===nt&&(g=Mf(u,e)),v}var p,h,d,v,g,m,y=0,_=!1,b=!1,x=!0;if("function"!=typeof t)throw new al(ot);return e=bc(e)||0,tc(n)&&(_=!!n.leading,b="maxWait"in n,d=b?Vl(bc(n.maxWait)||0,e):d,x="trailing"in n?!!n.trailing:x),f.cancel=s,f.flush=l,f}function Mu(t){return io(t,Ct)}function Tu(t,e){if("function"!=typeof t||null!=e&&"function"!=typeof e)throw new al(ot);var n=function(){var r=arguments,i=e?e.apply(this,r):r[0],o=n.cache;if(o.has(i))return o.get(i);var a=t.apply(this,r);return n.cache=o.set(i,a)||o,a};return n.cache=new(Tu.Cache||an),n}function Su(t){if("function"!=typeof t)throw new al(ot);return function(){var e=arguments;switch(e.length){case 0:return!t.call(this);case 1:return!t.call(this,e[0]);case 2:return!t.call(this,e[0],e[1]);case 3:return!t.call(this,e[0],e[1],e[2])}return!t.apply(this,e)}}function Nu(t){return wu(2,t)}function Au(t,e){if("function"!=typeof t)throw new al(ot);return e=e===nt?e:yc(e),Jr(t,e)}function Pu(t,e){if("function"!=typeof t)throw new al(ot);return e=null==e?0:Vl(yc(e),0),Jr(function(n){var r=n[e],i=xi(n,0,e);return r&&d(i,r),o(t,this,i)})}function Ou(t,e,n){var r=!0,i=!0;if("function"!=typeof t)throw new al(ot);return tc(n)&&(r="leading"in n?!!n.leading:r,i="trailing"in n?!!n.trailing:i),Eu(t,e,{leading:r,maxWait:e,trailing:i})}function Iu(t){return xu(t,1)}function Du(t,e){return up(_i(e),t)}function Ru(){if(!arguments.length)return[];var t=arguments[0];return hp(t)?t:[t]}function Lu(t){return tr(t,ft)}function Uu(t,e){return e="function"==typeof e?e:nt,tr(t,ft,e)}function Fu(t){return tr(t,st|ft)}function ju(t,e){return e="function"==typeof e?e:nt,tr(t,st|ft,e)}function Bu(t,e){return null==e||nr(t,e,Lc(e))}function Vu(t,e){return t===e||t!==t&&e!==e}function Wu(t){return null!=t&&Ju(t.length)&&!Qu(t)}function zu(t){return ec(t)&&Wu(t)}function Hu(t){return!0===t||!1===t||ec(t)&&vr(t)==Vt}function qu(t){return ec(t)&&1===t.nodeType&&!sc(t)}function Yu(t){if(null==t)return!0;if(Wu(t)&&(hp(t)||"string"==typeof t||"function"==typeof t.splice||vp(t)||bp(t)||pp(t)))return!t.length;var e=Cf(t);if(e==Kt||e==Jt)return!t.size;if(Lo(t))return!Rr(t).length;for(var n in t)if(pl.call(t,n))return!1;return!0}function Ku(t,e){return Mr(t,e)}function Gu(t,e,n){n="function"==typeof n?n:nt;var r=n?n(t,e):nt;return r===nt?Mr(t,e,nt,n):!!r}function $u(t){if(!ec(t))return!1;var e=vr(t);return e==Ht||e==zt||"string"==typeof t.message&&"string"==typeof t.name&&!sc(t)}function Xu(t){return"number"==typeof t&&Fl(t)}function Qu(t){if(!tc(t))return!1;var e=vr(t);return e==qt||e==Yt||e==Bt||e==Qt}function Zu(t){return"number"==typeof t&&t==yc(t)}function Ju(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=Pt}function tc(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)}function ec(t){return null!=t&&"object"==typeof t}function nc(t,e){return t===e||Nr(t,e,_o(e))}function rc(t,e,n){return n="function"==typeof n?n:nt,Nr(t,e,_o(e),n)}function ic(t){return cc(t)&&t!=+t}function oc(t){if(kf(t))throw new tl(it);return Ar(t)}function ac(t){return null===t}function uc(t){return null==t}function cc(t){return"number"==typeof t||ec(t)&&vr(t)==Gt}function sc(t){if(!ec(t)||vr(t)!=Xt)return!1;var e=Cl(t);if(null===e)return!0;var n=pl.call(e,"constructor")&&e.constructor;return"function"==typeof n&&n instanceof n&&fl.call(n)==gl}function lc(t){return Zu(t)&&t>=-Pt&&t<=Pt}function fc(t){return"string"==typeof t||!hp(t)&&ec(t)&&vr(t)==te}function pc(t){return"symbol"==typeof t||ec(t)&&vr(t)==ee}function hc(t){return t===nt}function dc(t){return ec(t)&&Cf(t)==re}function vc(t){return ec(t)&&vr(t)==ie}function gc(t){if(!t)return[];if(Wu(t))return fc(t)?Z(t):Oi(t);if(Sl&&t[Sl])return z(t[Sl]());var e=Cf(t);return(e==Kt?H:e==Jt?K:$c)(t)}function mc(t){if(!t)return 0===t?t:0;if((t=bc(t))===At||t===-At){return(t<0?-1:1)*Ot}return t===t?t:0}function yc(t){var e=mc(t),n=e%1;return e===e?n?e-n:e:0}function _c(t){return t?Jn(yc(t),0,Dt):0}function bc(t){if("number"==typeof t)return t;if(pc(t))return It;if(tc(t)){var e="function"==typeof t.valueOf?t.valueOf():t;t=tc(e)?e+"":e}if("string"!=typeof t)return 0===t?t:+t;t=t.replace(Pe,"");var n=We.test(t);return n||He.test(t)?Tn(t.slice(2),n?2:8):Ve.test(t)?It:+t}function xc(t){return Ii(t,Uc(t))}function wc(t){return t?Jn(yc(t),-Pt,Pt):0===t?t:0}function Cc(t){return null==t?"":li(t)}function kc(t,e){var n=lf(t);return null==e?n:$n(n,e)}function Ec(t,e){return b(t,mo(e,3),lr)}function Mc(t,e){return b(t,mo(e,3),fr)}function Tc(t,e){return null==t?t:hf(t,mo(e,3),Uc)}function Sc(t,e){return null==t?t:df(t,mo(e,3),Uc)}function Nc(t,e){return t&&lr(t,mo(e,3))}function Ac(t,e){return t&&fr(t,mo(e,3))}function Pc(t){return null==t?[]:pr(t,Lc(t))}function Oc(t){return null==t?[]:pr(t,Uc(t))}function Ic(t,e,n){var r=null==t?nt:hr(t,e);return r===nt?n:r}function Dc(t,e){return null!=t&&ko(t,e,mr)}function Rc(t,e){return null!=t&&ko(t,e,yr)}function Lc(t){return Wu(t)?Nn(t):Rr(t)}function Uc(t){return Wu(t)?Nn(t,!0):Lr(t)}function Fc(t,e){var n={};return e=mo(e,3),lr(t,function(t,r,i){Qn(n,e(t,r,i),t)}),n}function jc(t,e){var n={};return e=mo(e,3),lr(t,function(t,r,i){Qn(n,r,e(t,r,i))}),n}function Bc(t,e){return Vc(t,Su(mo(e)))}function Vc(t,e){if(null==t)return{};var n=h(ho(t),function(t){return[t]});return e=mo(e),Yr(t,n,function(t,n){return e(t,n[0])})}function Wc(t,e,n){e=bi(e,t);var r=-1,i=e.length;for(i||(i=1,t=nt);++r<i;){var o=null==t?nt:t[$o(e[r])];o===nt&&(r=i,o=n),t=Qu(o)?o.call(t):o}return t}function zc(t,e,n){return null==t?t:ni(t,e,n)}function Hc(t,e,n,r){return r="function"==typeof r?r:nt,null==t?t:ni(t,e,n,r)}function qc(t,e,n){var r=hp(t),i=r||vp(t)||bp(t);if(e=mo(e,4),null==n){var o=t&&t.constructor;n=i?r?new o:[]:tc(t)&&Qu(o)?lf(Cl(t)):{}}return(i?u:lr)(t,function(t,r,i){return e(n,t,r,i)}),n}function Yc(t,e){return null==t||pi(t,e)}function Kc(t,e,n){return null==t?t:hi(t,e,_i(n))}function Gc(t,e,n,r){return r="function"==typeof r?r:nt,null==t?t:hi(t,e,_i(n),r)}function $c(t){return null==t?[]:D(t,Lc(t))}function Xc(t){return null==t?[]:D(t,Uc(t))}function Qc(t,e,n){return n===nt&&(n=e,e=nt),n!==nt&&(n=bc(n),n=n===n?n:0),e!==nt&&(e=bc(e),e=e===e?e:0),Jn(bc(t),e,n)}function Zc(t,e,n){return e=mc(e),n===nt?(n=e,e=0):n=mc(n),t=bc(t),_r(t,e,n)}function Jc(t,e,n){if(n&&"boolean"!=typeof n&&Po(t,e,n)&&(e=n=nt),n===nt&&("boolean"==typeof e?(n=e,e=nt):"boolean"==typeof t&&(n=t,t=nt)),t===nt&&e===nt?(t=0,e=1):(t=mc(t),e===nt?(e=t,t=0):e=mc(e)),t>e){var r=t;t=e,e=r}if(n||t%1||e%1){var i=ql();return Wl(t+i*(e-t+Mn("1e-"+((i+"").length-1))),e)}return Xr(t,e)}function ts(t){return Yp(Cc(t).toLowerCase())}function es(t){return(t=Cc(t))&&t.replace(Ye,zn).replace(hn,"")}function ns(t,e,n){t=Cc(t),e=li(e);var r=t.length;n=n===nt?r:Jn(yc(n),0,r);var i=n;return(n-=e.length)>=0&&t.slice(n,i)==e}function rs(t){return t=Cc(t),t&&we.test(t)?t.replace(be,Hn):t}function is(t){return t=Cc(t),t&&Ae.test(t)?t.replace(Ne,"\\$&"):t}function os(t,e,n){t=Cc(t),e=yc(e);var r=e?Q(t):0;if(!e||r>=e)return t;var i=(e-r)/2;return Qi(Rl(i),n)+t+Qi(Dl(i),n)}function as(t,e,n){t=Cc(t),e=yc(e);var r=e?Q(t):0;return e&&r<e?t+Qi(e-r,n):t}function us(t,e,n){t=Cc(t),e=yc(e);var r=e?Q(t):0;return e&&r<e?Qi(e-r,n)+t:t}function cs(t,e,n){return n||null==e?e=0:e&&(e=+e),Hl(Cc(t).replace(Oe,""),e||0)}function ss(t,e,n){return e=(n?Po(t,e,n):e===nt)?1:yc(e),Zr(Cc(t),e)}function ls(){var t=arguments,e=Cc(t[0]);return t.length<3?e:e.replace(t[1],t[2])}function fs(t,e,n){return n&&"number"!=typeof n&&Po(t,e,n)&&(e=n=nt),(n=n===nt?Dt:n>>>0)?(t=Cc(t),t&&("string"==typeof e||null!=e&&!yp(e))&&!(e=li(e))&&V(t)?xi(Z(t),0,n):t.split(e,n)):[]}function ps(t,e,n){return t=Cc(t),n=null==n?0:Jn(yc(n),0,t.length),e=li(e),t.slice(n,n+e.length)==e}function hs(t,e,r){var i=n.templateSettings;r&&Po(t,e,r)&&(e=nt),t=Cc(t),e=Ep({},e,i,oo);var o,a,u=Ep({},e.imports,i.imports,oo),c=Lc(u),s=D(u,c),l=0,f=e.interpolate||Ke,p="__p += '",h=il((e.escape||Ke).source+"|"+f.source+"|"+(f===Ee?je:Ke).source+"|"+(e.evaluate||Ke).source+"|$","g"),d="//# sourceURL="+("sourceURL"in e?e.sourceURL:"lodash.templateSources["+ ++_n+"]")+"\n";t.replace(h,function(e,n,r,i,u,c){return r||(r=i),p+=t.slice(l,c).replace(Ge,j),n&&(o=!0,p+="' +\n__e("+n+") +\n'"),u&&(a=!0,p+="';\n"+u+";\n__p += '"),r&&(p+="' +\n((__t = ("+r+")) == null ? '' : __t) +\n'"),l=c+e.length,e}),p+="';\n";var v=e.variable;v||(p="with (obj) {\n"+p+"\n}\n"),p=(a?p.replace(ge,""):p).replace(me,"$1").replace(ye,"$1;"),p="function("+(v||"obj")+") {\n"+(v?"":"obj || (obj = {});\n")+"var __t, __p = ''"+(o?", __e = _.escape":"")+(a?", __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\n":";\n")+p+"return __p\n}";var g=Kp(function(){return el(c,d+"return "+p).apply(nt,s)});if(g.source=p,$u(g))throw g;return g}function ds(t){return Cc(t).toLowerCase()}function vs(t){return Cc(t).toUpperCase()}function gs(t,e,n){if((t=Cc(t))&&(n||e===nt))return t.replace(Pe,"");if(!t||!(e=li(e)))return t;var r=Z(t),i=Z(e);return xi(r,L(r,i),U(r,i)+1).join("")}function ms(t,e,n){if((t=Cc(t))&&(n||e===nt))return t.replace(Ie,"");if(!t||!(e=li(e)))return t;var r=Z(t);return xi(r,0,U(r,Z(e))+1).join("")}function ys(t,e,n){if((t=Cc(t))&&(n||e===nt))return t.replace(Oe,"");if(!t||!(e=li(e)))return t;var r=Z(t);return xi(r,L(r,Z(e))).join("")}function _s(t,e){var n=kt,r=Et;if(tc(e)){var i="separator"in e?e.separator:i;n="length"in e?yc(e.length):n,r="omission"in e?li(e.omission):r}t=Cc(t);var o=t.length;if(V(t)){var a=Z(t);o=a.length}if(n>=o)return t;var u=n-Q(r);if(u<1)return r;var c=a?xi(a,0,u).join(""):t.slice(0,u);if(i===nt)return c+r;if(a&&(u+=c.length-u),yp(i)){if(t.slice(u).search(i)){var s,l=c;for(i.global||(i=il(i.source,Cc(Be.exec(i))+"g")),i.lastIndex=0;s=i.exec(l);)var f=s.index;c=c.slice(0,f===nt?u:f)}}else if(t.indexOf(li(i),u)!=u){var p=c.lastIndexOf(i);p>-1&&(c=c.slice(0,p))}return c+r}function bs(t){return t=Cc(t),t&&xe.test(t)?t.replace(_e,qn):t}function xs(t,e,n){return t=Cc(t),e=n?nt:e,e===nt?W(t)?et(t):_(t):t.match(e)||[]}function ws(t){var e=null==t?0:t.length,n=mo();return t=e?h(t,function(t){if("function"!=typeof t[1])throw new al(ot);return[n(t[0]),t[1]]}):[],Jr(function(n){for(var r=-1;++r<e;){var i=t[r];if(o(i[0],this,n))return o(i[1],this,n)}})}function Cs(t){return er(tr(t,st))}function ks(t){return function(){return t}}function Es(t,e){return null==t||t!==t?e:t}function Ms(t){return t}function Ts(t){return Dr("function"==typeof t?t:tr(t,st))}function Ss(t){return jr(tr(t,st))}function Ns(t,e){return Br(t,tr(e,st))}function As(t,e,n){var r=Lc(e),i=pr(e,r);null!=n||tc(e)&&(i.length||!r.length)||(n=e,e=t,t=this,i=pr(e,Lc(e)));var o=!(tc(n)&&"chain"in n&&!n.chain),a=Qu(t);return u(i,function(n){var r=e[n];t[n]=r,a&&(t.prototype[n]=function(){var e=this.__chain__;if(o||e){var n=t(this.__wrapped__);return(n.__actions__=Oi(this.__actions__)).push({func:r,args:arguments,thisArg:t}),n.__chain__=e,n}return r.apply(t,d([this.value()],arguments))})}),t}function Ps(){return An._===this&&(An._=ml),this}function Os(){}function Is(t){return t=yc(t),Jr(function(e){return zr(e,t)})}function Ds(t){return Oo(t)?M($o(t)):Kr(t)}function Rs(t){return function(e){return null==t?nt:hr(t,e)}}function Ls(){return[]}function Us(){return!1}function Fs(){return{}}function js(){return""}function Bs(){return!0}function Vs(t,e){if((t=yc(t))<1||t>Pt)return[];var n=Dt,r=Wl(t,Dt);e=mo(e),t-=Dt;for(var i=P(r,e);++n<t;)e(n);return i}function Ws(t){return hp(t)?h(t,$o):pc(t)?[t]:Oi(Sf(Cc(t)))}function zs(t){var e=++hl;return Cc(t)+e}function Hs(t){return t&&t.length?ar(t,Ms,gr):nt}function qs(t,e){return t&&t.length?ar(t,mo(e,2),gr):nt}function Ys(t){return E(t,Ms)}function Ks(t,e){return E(t,mo(e,2))}function Gs(t){return t&&t.length?ar(t,Ms,Ur):nt}function $s(t,e){return t&&t.length?ar(t,mo(e,2),Ur):nt}function Xs(t){return t&&t.length?A(t,Ms):0}function Qs(t,e){return t&&t.length?A(t,mo(e,2)):0}e=null==e?An:Yn.defaults(An.Object(),e,Yn.pick(An,yn));var Zs=e.Array,Js=e.Date,tl=e.Error,el=e.Function,nl=e.Math,rl=e.Object,il=e.RegExp,ol=e.String,al=e.TypeError,ul=Zs.prototype,cl=el.prototype,sl=rl.prototype,ll=e["__core-js_shared__"],fl=cl.toString,pl=sl.hasOwnProperty,hl=0,dl=function(){var t=/[^.]+$/.exec(ll&&ll.keys&&ll.keys.IE_PROTO||"");return t?"Symbol(src)_1."+t:""}(),vl=sl.toString,gl=fl.call(rl),ml=An._,yl=il("^"+fl.call(pl).replace(Ne,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),_l=In?e.Buffer:nt,bl=e.Symbol,xl=e.Uint8Array,wl=_l?_l.allocUnsafe:nt,Cl=q(rl.getPrototypeOf,rl),kl=rl.create,El=sl.propertyIsEnumerable,Ml=ul.splice,Tl=bl?bl.isConcatSpreadable:nt,Sl=bl?bl.iterator:nt,Nl=bl?bl.toStringTag:nt,Al=function(){try{var t=bo(rl,"defineProperty");return t({},"",{}),t}catch(t){}}(),Pl=e.clearTimeout!==An.clearTimeout&&e.clearTimeout,Ol=Js&&Js.now!==An.Date.now&&Js.now,Il=e.setTimeout!==An.setTimeout&&e.setTimeout,Dl=nl.ceil,Rl=nl.floor,Ll=rl.getOwnPropertySymbols,Ul=_l?_l.isBuffer:nt,Fl=e.isFinite,jl=ul.join,Bl=q(rl.keys,rl),Vl=nl.max,Wl=nl.min,zl=Js.now,Hl=e.parseInt,ql=nl.random,Yl=ul.reverse,Kl=bo(e,"DataView"),Gl=bo(e,"Map"),$l=bo(e,"Promise"),Xl=bo(e,"Set"),Ql=bo(e,"WeakMap"),Zl=bo(rl,"create"),Jl=Ql&&new Ql,tf={},ef=Xo(Kl),nf=Xo(Gl),rf=Xo($l),of=Xo(Xl),af=Xo(Ql),uf=bl?bl.prototype:nt,cf=uf?uf.valueOf:nt,sf=uf?uf.toString:nt,lf=function(){function t(){}return function(e){if(!tc(e))return{};if(kl)return kl(e);t.prototype=e;var n=new t;return t.prototype=nt,n}}();n.templateSettings={escape:Ce,evaluate:ke,interpolate:Ee,variable:"",imports:{_:n}},n.prototype=r.prototype,n.prototype.constructor=n,i.prototype=lf(r.prototype),i.prototype.constructor=i,y.prototype=lf(r.prototype),y.prototype.constructor=y,tt.prototype.clear=Ue,tt.prototype.delete=$e,tt.prototype.get=Xe,tt.prototype.has=Qe,tt.prototype.set=Ze,Je.prototype.clear=tn,Je.prototype.delete=en,Je.prototype.get=nn,Je.prototype.has=rn,Je.prototype.set=on,an.prototype.clear=un,an.prototype.delete=cn,an.prototype.get=sn,an.prototype.has=ln,an.prototype.set=fn,dn.prototype.add=dn.prototype.push=vn,dn.prototype.has=gn,mn.prototype.clear=wn,mn.prototype.delete=Cn,mn.prototype.get=kn,mn.prototype.has=En,mn.prototype.set=Sn;var ff=Fi(lr),pf=Fi(fr,!0),hf=ji(),df=ji(!0),vf=Jl?function(t,e){return Jl.set(t,e),t}:Ms,gf=Al?function(t,e){return Al(t,"toString",{configurable:!0,enumerable:!1,value:ks(e),writable:!0})}:Ms,mf=Jr,yf=Pl||function(t){return An.clearTimeout(t)},_f=Xl&&1/K(new Xl([,-0]))[1]==At?function(t){return new Xl(t)}:Os,bf=Jl?function(t){return Jl.get(t)}:Os,xf=Ll?function(t){return null==t?[]:(t=rl(t),l(Ll(t),function(e){return El.call(t,e)}))}:Ls,wf=Ll?function(t){for(var e=[];t;)d(e,xf(t)),t=Cl(t);return e}:Ls,Cf=vr;(Kl&&Cf(new Kl(new ArrayBuffer(1)))!=ae||Gl&&Cf(new Gl)!=Kt||$l&&"[object Promise]"!=Cf($l.resolve())||Xl&&Cf(new Xl)!=Jt||Ql&&Cf(new Ql)!=re)&&(Cf=function(t){var e=vr(t),n=e==Xt?t.constructor:nt,r=n?Xo(n):"";if(r)switch(r){case ef:return ae;case nf:return Kt;case rf:return"[object Promise]";case of:return Jt;case af:return re}return e});var kf=ll?Qu:Us,Ef=Ko(vf),Mf=Il||function(t,e){return An.setTimeout(t,e)},Tf=Ko(gf),Sf=function(t){var e=Tu(t,function(t){return n.size===ut&&n.clear(),t}),n=e.cache;return e}(function(t){var e=[];return 46===t.charCodeAt(0)&&e.push(""),t.replace(Se,function(t,n,r,i){e.push(r?i.replace(Fe,"$1"):n||t)}),e}),Nf=Jr(function(t,e){return zu(t)?ir(t,sr(e,1,zu,!0)):[]}),Af=Jr(function(t,e){var n=ma(e);return zu(n)&&(n=nt),zu(t)?ir(t,sr(e,1,zu,!0),mo(n,2)):[]}),Pf=Jr(function(t,e){var n=ma(e);return zu(n)&&(n=nt),zu(t)?ir(t,sr(e,1,zu,!0),nt,n):[]}),Of=Jr(function(t){var e=h(t,yi);return e.length&&e[0]===t[0]?br(e):[]}),If=Jr(function(t){var e=ma(t),n=h(t,yi);return e===ma(n)?e=nt:n.pop(),n.length&&n[0]===t[0]?br(n,mo(e,2)):[]}),Df=Jr(function(t){var e=ma(t),n=h(t,yi);return e="function"==typeof e?e:nt,e&&n.pop(),n.length&&n[0]===t[0]?br(n,nt,e):[]}),Rf=Jr(ba),Lf=fo(function(t,e){var n=null==t?0:t.length,r=Zn(t,e);return $r(t,h(e,function(t){return Ao(t,n)?+t:t}).sort(Si)),r}),Uf=Jr(function(t){return fi(sr(t,1,zu,!0))}),Ff=Jr(function(t){var e=ma(t);return zu(e)&&(e=nt),fi(sr(t,1,zu,!0),mo(e,2))}),jf=Jr(function(t){var e=ma(t);return e="function"==typeof e?e:nt,fi(sr(t,1,zu,!0),nt,e)}),Bf=Jr(function(t,e){return zu(t)?ir(t,e):[]}),Vf=Jr(function(t){return gi(l(t,zu))}),Wf=Jr(function(t){var e=ma(t);return zu(e)&&(e=nt),gi(l(t,zu),mo(e,2))}),zf=Jr(function(t){var e=ma(t);return e="function"==typeof e?e:nt,gi(l(t,zu),nt,e)}),Hf=Jr(Wa),qf=Jr(function(t){var e=t.length,n=e>1?t[e-1]:nt;return n="function"==typeof n?(t.pop(),n):nt,za(t,n)}),Yf=fo(function(t){var e=t.length,n=e?t[0]:0,r=this.__wrapped__,o=function(e){return Zn(e,t)};return!(e>1||this.__actions__.length)&&r instanceof y&&Ao(n)?(r=r.slice(n,+n+(e?1:0)),r.__actions__.push({func:Ga,args:[o],thisArg:nt}),new i(r,this.__chain__).thru(function(t){return e&&!t.length&&t.push(nt),t})):this.thru(o)}),Kf=Li(function(t,e,n){pl.call(t,n)?++t[n]:Qn(t,n,1)}),Gf=qi(ua),$f=qi(ca),Xf=Li(function(t,e,n){pl.call(t,n)?t[n].push(e):Qn(t,n,[e])}),Qf=Jr(function(t,e,n){var r=-1,i="function"==typeof e,a=Wu(t)?Zs(t.length):[];return ff(t,function(t){a[++r]=i?o(e,t,n):wr(t,e,n)}),a}),Zf=Li(function(t,e,n){Qn(t,n,e)}),Jf=Li(function(t,e,n){t[n?0:1].push(e)},function(){return[[],[]]}),tp=Jr(function(t,e){if(null==t)return[];var n=e.length;return n>1&&Po(t,e[0],e[1])?e=[]:n>2&&Po(e[0],e[1],e[2])&&(e=[e[0]]),Hr(t,sr(e,1),[])}),ep=Ol||function(){return An.Date.now()},np=Jr(function(t,e,n){var r=dt;if(n.length){var i=Y(n,go(np));r|=_t}return io(t,r,e,n,i)}),rp=Jr(function(t,e,n){var r=dt|vt;if(n.length){var i=Y(n,go(rp));r|=_t}return io(e,r,t,n,i)}),ip=Jr(function(t,e){return rr(t,1,e)}),op=Jr(function(t,e,n){return rr(t,bc(e)||0,n)});Tu.Cache=an;var ap=mf(function(t,e){e=1==e.length&&hp(e[0])?h(e[0],I(mo())):h(sr(e,1),I(mo()));var n=e.length;return Jr(function(r){for(var i=-1,a=Wl(r.length,n);++i<a;)r[i]=e[i].call(this,r[i]);return o(t,this,r)})}),up=Jr(function(t,e){var n=Y(e,go(up));return io(t,_t,nt,e,n)}),cp=Jr(function(t,e){var n=Y(e,go(cp));return io(t,bt,nt,e,n)}),sp=fo(function(t,e){return io(t,wt,nt,nt,nt,e)}),lp=to(gr),fp=to(function(t,e){return t>=e}),pp=Cr(function(){return arguments}())?Cr:function(t){return ec(t)&&pl.call(t,"callee")&&!El.call(t,"callee")},hp=Zs.isArray,dp=Ln?I(Ln):kr,vp=Ul||Us,gp=Un?I(Un):Er,mp=Fn?I(Fn):Sr,yp=jn?I(jn):Pr,_p=Bn?I(Bn):Or,bp=Vn?I(Vn):Ir,xp=to(Ur),wp=to(function(t,e){return t<=e}),Cp=Ui(function(t,e){if(Lo(e)||Wu(e))return void Ii(e,Lc(e),t);for(var n in e)pl.call(e,n)&&Wn(t,n,e[n])}),kp=Ui(function(t,e){Ii(e,Uc(e),t)}),Ep=Ui(function(t,e,n,r){Ii(e,Uc(e),t,r)}),Mp=Ui(function(t,e,n,r){Ii(e,Lc(e),t,r)}),Tp=fo(Zn),Sp=Jr(function(t,e){t=rl(t);var n=-1,r=e.length,i=r>2?e[2]:nt;for(i&&Po(e[0],e[1],i)&&(r=1);++n<r;)for(var o=e[n],a=Uc(o),u=-1,c=a.length;++u<c;){var s=a[u],l=t[s];(l===nt||Vu(l,sl[s])&&!pl.call(t,s))&&(t[s]=o[s])}return t}),Np=Jr(function(t){return t.push(nt,ao),o(Dp,nt,t)}),Ap=Gi(function(t,e,n){null!=e&&"function"!=typeof e.toString&&(e=vl.call(e)),t[e]=n},ks(Ms)),Pp=Gi(function(t,e,n){null!=e&&"function"!=typeof e.toString&&(e=vl.call(e)),pl.call(t,e)?t[e].push(n):t[e]=[n]},mo),Op=Jr(wr),Ip=Ui(function(t,e,n){Vr(t,e,n)}),Dp=Ui(function(t,e,n,r){Vr(t,e,n,r)}),Rp=fo(function(t,e){var n={};if(null==t)return n;var r=!1;e=h(e,function(e){return e=bi(e,t),r||(r=e.length>1),e}),Ii(t,ho(t),n),r&&(n=tr(n,st|lt|ft,uo));for(var i=e.length;i--;)pi(n,e[i]);return n}),Lp=fo(function(t,e){return null==t?{}:qr(t,e)}),Up=ro(Lc),Fp=ro(Uc),jp=Wi(function(t,e,n){return e=e.toLowerCase(),t+(n?ts(e):e)}),Bp=Wi(function(t,e,n){return t+(n?"-":"")+e.toLowerCase()}),Vp=Wi(function(t,e,n){return t+(n?" ":"")+e.toLowerCase()}),Wp=Vi("toLowerCase"),zp=Wi(function(t,e,n){return t+(n?"_":"")+e.toLowerCase()}),Hp=Wi(function(t,e,n){return t+(n?" ":"")+Yp(e)}),qp=Wi(function(t,e,n){return t+(n?" ":"")+e.toUpperCase()}),Yp=Vi("toUpperCase"),Kp=Jr(function(t,e){try{return o(t,nt,e)}catch(t){return $u(t)?t:new tl(t)}}),Gp=fo(function(t,e){return u(e,function(e){e=$o(e),Qn(t,e,np(t[e],t))}),t}),$p=Yi(),Xp=Yi(!0),Qp=Jr(function(t,e){return function(n){return wr(n,t,e)}}),Zp=Jr(function(t,e){return function(n){return wr(t,n,e)}}),Jp=Xi(h),th=Xi(s),eh=Xi(m),nh=Ji(),rh=Ji(!0),ih=$i(function(t,e){return t+e},0),oh=no("ceil"),ah=$i(function(t,e){return t/e},1),uh=no("floor"),ch=$i(function(t,e){return t*e},1),sh=no("round"),lh=$i(function(t,e){return t-e},0);return n.after=bu,n.ary=xu,n.assign=Cp,n.assignIn=kp,n.assignInWith=Ep,n.assignWith=Mp,n.at=Tp,n.before=wu,n.bind=np,n.bindAll=Gp,n.bindKey=rp,n.castArray=Ru,n.chain=Ya,n.chunk=Jo,n.compact=ta,n.concat=ea,n.cond=ws,n.conforms=Cs,n.constant=ks,n.countBy=Kf,n.create=kc,n.curry=Cu,n.curryRight=ku,n.debounce=Eu,n.defaults=Sp,n.defaultsDeep=Np,n.defer=ip,n.delay=op,n.difference=Nf,n.differenceBy=Af,n.differenceWith=Pf,n.drop=na,n.dropRight=ra,n.dropRightWhile=ia,n.dropWhile=oa,n.fill=aa,n.filter=ru,n.flatMap=iu,n.flatMapDeep=ou,n.flatMapDepth=au,n.flatten=sa,n.flattenDeep=la,n.flattenDepth=fa,n.flip=Mu,n.flow=$p,n.flowRight=Xp,n.fromPairs=pa,n.functions=Pc,n.functionsIn=Oc,n.groupBy=Xf,n.initial=va,n.intersection=Of,n.intersectionBy=If,n.intersectionWith=Df,n.invert=Ap,n.invertBy=Pp,n.invokeMap=Qf,n.iteratee=Ts,n.keyBy=Zf,n.keys=Lc,n.keysIn=Uc,n.map=lu,n.mapKeys=Fc,n.mapValues=jc,n.matches=Ss,n.matchesProperty=Ns,n.memoize=Tu,n.merge=Ip,n.mergeWith=Dp,n.method=Qp,n.methodOf=Zp,n.mixin=As,n.negate=Su,n.nthArg=Is,n.omit=Rp,n.omitBy=Bc,n.once=Nu,n.orderBy=fu,n.over=Jp,n.overArgs=ap,n.overEvery=th,n.overSome=eh,n.partial=up,n.partialRight=cp,n.partition=Jf,n.pick=Lp,n.pickBy=Vc,n.property=Ds,n.propertyOf=Rs,n.pull=Rf,n.pullAll=ba,n.pullAllBy=xa,n.pullAllWith=wa,n.pullAt=Lf,n.range=nh,n.rangeRight=rh,n.rearg=sp,n.reject=du,n.remove=Ca,n.rest=Au,n.reverse=ka,n.sampleSize=gu,n.set=zc,n.setWith=Hc,n.shuffle=mu,n.slice=Ea,n.sortBy=tp,n.sortedUniq=Oa,n.sortedUniqBy=Ia,n.split=fs,n.spread=Pu,n.tail=Da,n.take=Ra,n.takeRight=La,n.takeRightWhile=Ua,n.takeWhile=Fa,n.tap=Ka,n.throttle=Ou,n.thru=Ga,n.toArray=gc,n.toPairs=Up,n.toPairsIn=Fp,n.toPath=Ws,n.toPlainObject=xc,n.transform=qc,n.unary=Iu,n.union=Uf,n.unionBy=Ff,n.unionWith=jf,n.uniq=ja,n.uniqBy=Ba,n.uniqWith=Va,n.unset=Yc,n.unzip=Wa,n.unzipWith=za,n.update=Kc,n.updateWith=Gc,n.values=$c,n.valuesIn=Xc,n.without=Bf,n.words=xs,n.wrap=Du,n.xor=Vf,n.xorBy=Wf,n.xorWith=zf,n.zip=Hf,n.zipObject=Ha,n.zipObjectDeep=qa,n.zipWith=qf,n.entries=Up,n.entriesIn=Fp,n.extend=kp,n.extendWith=Ep,As(n,n),n.add=ih,n.attempt=Kp,n.camelCase=jp,n.capitalize=ts,n.ceil=oh,n.clamp=Qc,n.clone=Lu,n.cloneDeep=Fu,n.cloneDeepWith=ju,n.cloneWith=Uu,n.conformsTo=Bu,n.deburr=es,n.defaultTo=Es,n.divide=ah,n.endsWith=ns,n.eq=Vu,n.escape=rs,n.escapeRegExp=is,n.every=nu,n.find=Gf,n.findIndex=ua,n.findKey=Ec,n.findLast=$f,n.findLastIndex=ca,n.findLastKey=Mc,n.floor=uh,n.forEach=uu,n.forEachRight=cu,n.forIn=Tc,n.forInRight=Sc,n.forOwn=Nc,n.forOwnRight=Ac,n.get=Ic,n.gt=lp,n.gte=fp,n.has=Dc,n.hasIn=Rc,n.head=ha,n.identity=Ms,n.includes=su,n.indexOf=da,n.inRange=Zc,n.invoke=Op,n.isArguments=pp,n.isArray=hp,n.isArrayBuffer=dp,n.isArrayLike=Wu,n.isArrayLikeObject=zu,n.isBoolean=Hu,n.isBuffer=vp,n.isDate=gp,n.isElement=qu,n.isEmpty=Yu,n.isEqual=Ku,n.isEqualWith=Gu,n.isError=$u,n.isFinite=Xu,n.isFunction=Qu,n.isInteger=Zu,n.isLength=Ju,n.isMap=mp,n.isMatch=nc,n.isMatchWith=rc,n.isNaN=ic,n.isNative=oc,n.isNil=uc,n.isNull=ac,n.isNumber=cc,n.isObject=tc,n.isObjectLike=ec,n.isPlainObject=sc,n.isRegExp=yp,n.isSafeInteger=lc,n.isSet=_p,n.isString=fc,n.isSymbol=pc,n.isTypedArray=bp,n.isUndefined=hc,n.isWeakMap=dc,n.isWeakSet=vc,n.join=ga,n.kebabCase=Bp,n.last=ma,n.lastIndexOf=ya,n.lowerCase=Vp,n.lowerFirst=Wp,n.lt=xp,n.lte=wp,n.max=Hs,n.maxBy=qs,n.mean=Ys,n.meanBy=Ks,n.min=Gs,n.minBy=$s,n.stubArray=Ls,n.stubFalse=Us,n.stubObject=Fs,n.stubString=js,n.stubTrue=Bs,n.multiply=ch,n.nth=_a,n.noConflict=Ps,n.noop=Os,n.now=ep,n.pad=os,n.padEnd=as,n.padStart=us,n.parseInt=cs,n.random=Jc,n.reduce=pu,n.reduceRight=hu,n.repeat=ss,n.replace=ls,n.result=Wc,n.round=sh,n.runInContext=t,n.sample=vu,n.size=yu,n.snakeCase=zp,n.some=_u,n.sortedIndex=Ma,n.sortedIndexBy=Ta,n.sortedIndexOf=Sa,n.sortedLastIndex=Na,n.sortedLastIndexBy=Aa,n.sortedLastIndexOf=Pa,n.startCase=Hp,n.startsWith=ps,n.subtract=lh,n.sum=Xs,n.sumBy=Qs,n.template=hs,n.times=Vs,n.toFinite=mc,n.toInteger=yc,n.toLength=_c,n.toLower=ds,n.toNumber=bc,n.toSafeInteger=wc,n.toString=Cc,n.toUpper=vs,n.trim=gs,n.trimEnd=ms,n.trimStart=ys,n.truncate=_s,n.unescape=bs,n.uniqueId=zs,n.upperCase=qp,n.upperFirst=Yp,n.each=uu,n.eachRight=cu,n.first=ha,As(n,function(){var t={};return lr(n,function(e,r){pl.call(n.prototype,r)||(t[r]=e)}),t}(),{chain:!1}),n.VERSION="4.17.11",u(["bind","bindKey","curry","curryRight","partial","partialRight"],function(t){n[t].placeholder=n}),u(["drop","take"],function(t,e){y.prototype[t]=function(n){n=n===nt?1:Vl(yc(n),0);var r=this.__filtered__&&!e?new y(this):this.clone();return r.__filtered__?r.__takeCount__=Wl(n,r.__takeCount__):r.__views__.push({size:Wl(n,Dt),type:t+(r.__dir__<0?"Right":"")}),r},y.prototype[t+"Right"]=function(e){return this.reverse()[t](e).reverse()}}),u(["filter","map","takeWhile"],function(t,e){var n=e+1,r=n==St||3==n;y.prototype[t]=function(t){var e=this.clone();return e.__iteratees__.push({iteratee:mo(t,3),type:n}),e.__filtered__=e.__filtered__||r,e}}),u(["head","last"],function(t,e){var n="take"+(e?"Right":"");y.prototype[t]=function(){return this[n](1).value()[0]}}),u(["initial","tail"],function(t,e){var n="drop"+(e?"":"Right");y.prototype[t]=function(){return this.__filtered__?new y(this):this[n](1)}}),y.prototype.compact=function(){return this.filter(Ms)},y.prototype.find=function(t){return this.filter(t).head()},y.prototype.findLast=function(t){return this.reverse().find(t)},y.prototype.invokeMap=Jr(function(t,e){return"function"==typeof t?new y(this):this.map(function(n){return wr(n,t,e)})}),y.prototype.reject=function(t){return this.filter(Su(mo(t)))},y.prototype.slice=function(t,e){t=yc(t);var n=this;return n.__filtered__&&(t>0||e<0)?new y(n):(t<0?n=n.takeRight(-t):t&&(n=n.drop(t)),e!==nt&&(e=yc(e),n=e<0?n.dropRight(-e):n.take(e-t)),n)},y.prototype.takeRightWhile=function(t){return this.reverse().takeWhile(t).reverse()},y.prototype.toArray=function(){return this.take(Dt)},lr(y.prototype,function(t,e){var r=/^(?:filter|find|map|reject)|While$/.test(e),o=/^(?:head|last)$/.test(e),a=n[o?"take"+("last"==e?"Right":""):e],u=o||/^find/.test(e);a&&(n.prototype[e]=function(){var e=this.__wrapped__,c=o?[1]:arguments,s=e instanceof y,l=c[0],f=s||hp(e),p=function(t){var e=a.apply(n,d([t],c));return o&&h?e[0]:e};f&&r&&"function"==typeof l&&1!=l.length&&(s=f=!1);var h=this.__chain__,v=!!this.__actions__.length,g=u&&!h,m=s&&!v;if(!u&&f){e=m?e:new y(this);var _=t.apply(e,c);return _.__actions__.push({func:Ga,args:[p],thisArg:nt}),new i(_,h)}return g&&m?t.apply(this,c):(_=this.thru(p),g?o?_.value()[0]:_.value():_)})}),u(["pop","push","shift","sort","splice","unshift"],function(t){var e=ul[t],r=/^(?:push|sort|unshift)$/.test(t)?"tap":"thru",i=/^(?:pop|shift)$/.test(t);n.prototype[t]=function(){var t=arguments;if(i&&!this.__chain__){var n=this.value();return e.apply(hp(n)?n:[],t)}return this[r](function(n){return e.apply(hp(n)?n:[],t)})}}),lr(y.prototype,function(t,e){var r=n[e];if(r){var i=r.name+"";(tf[i]||(tf[i]=[])).push({name:e,func:r})}}),tf[Ki(nt,vt).name]=[{name:"wrapper",func:nt}],y.prototype.clone=T,y.prototype.reverse=$,y.prototype.value=J,n.prototype.at=Yf,n.prototype.chain=$a,n.prototype.commit=Xa,n.prototype.next=Qa,n.prototype.plant=Ja,n.prototype.reverse=tu,n.prototype.toJSON=n.prototype.valueOf=n.prototype.value=eu,n.prototype.first=n.prototype.head,Sl&&(n.prototype[Sl]=Za),n}();An._=Yn,(i=function(){return Yn}.call(e,n,e,r))!==nt&&(r.exports=i)}).call(this)}).call(e,n(98),n(99)(t))},function(t,e,n){"use strict";var r={remove:function(t){t._reactInternalInstance=void 0},get:function(t){return t._reactInternalInstance},has:function(t){return void 0!==t._reactInternalInstance},set:function(t,e){t._reactInternalInstance=e}};t.exports=r},function(t,e,n){"use strict";function r(t){for(var e=arguments.length-1,n="Minified React error #"+t+"; visit http://facebook.github.io/react/docs/error-decoder.html?invariant="+t,r=0;r<e;r++)n+="&args[]="+encodeURIComponent(arguments[r+1]);n+=" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.";var i=new Error(n);throw i.name="Invariant Violation",i.framesToPop=1,i}t.exports=r},function(t,e,n){"use strict";t.exports=n(26)},function(t,e,n){"use strict";var r=n(63);e.a=function(t){return t=n.i(r.a)(Math.abs(t)),t?t[1]:NaN}},function(t,e,n){"use strict";e.a=function(t,e){return t=+t,e-=t,function(n){return t+e*n}}},function(t,e,n){"use strict";function r(t,e){return(e-=t=+t)?function(n){return(n-t)/e}:n.i(h.a)(e)}function i(t){return function(e,n){var r=t(e=+e,n=+n);return function(t){return t<=e?0:t>=n?1:r(t)}}}function o(t){return function(e,n){var r=t(e=+e,n=+n);return function(t){return t<=0?e:t>=1?n:r(t)}}}function a(t,e,n,r){var i=t[0],o=t[1],a=e[0],u=e[1];return o<i?(i=n(o,i),a=r(u,a)):(i=n(i,o),a=r(a,u)),function(t){return a(i(t))}}function u(t,e,r,i){var o=Math.min(t.length,e.length)-1,a=new Array(o),u=new Array(o),c=-1;for(t[o]<t[0]&&(t=t.slice().reverse(),e=e.slice().reverse());++c<o;)a[c]=r(t[c],t[c+1]),u[c]=i(e[c],e[c+1]);return function(e){var r=n.i(l.bisect)(t,e,1,o)-1;return u[r](a[r](e))}}function c(t,e){return e.domain(t.domain()).range(t.range()).interpolate(t.interpolate()).clamp(t.clamp())}function s(t,e){function n(){return s=Math.min(g.length,m.length)>2?u:a,l=h=null,c}function c(e){return(l||(l=s(g,m,_?i(t):t,y)))(+e)}var s,l,h,g=v,m=v,y=f.b,_=!1;return c.invert=function(t){return(h||(h=s(m,g,r,_?o(e):e)))(+t)},c.domain=function(t){return arguments.length?(g=p.a.call(t,d.a),n()):g.slice()},c.range=function(t){return arguments.length?(m=p.b.call(t),n()):m.slice()},c.rangeRound=function(t){return m=p.b.call(t),y=f.c,n()},c.clamp=function(t){return arguments.length?(_=!!t,n()):_},c.interpolate=function(t){return arguments.length?(y=t,n()):y},n()}e.b=r,e.c=c,e.a=s;var l=n(7),f=n(30),p=n(16),h=n(67),d=n(126),v=[0,1]},function(t,e,n){"use strict";function r(t){return function(){var e=this.ownerDocument,n=this.namespaceURI;return n===a.b&&e.documentElement.namespaceURI===a.b?e.createElement(t):e.createElementNS(n,t)}}function i(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}var o=n(68),a=n(69);e.a=function(t){var e=n.i(o.a)(t);return(e.local?i:r)(e)}},function(t,e,n){"use strict";e.a=function(t,e){var n=t.ownerSVGElement||t;if(n.createSVGPoint){var r=n.createSVGPoint();return r.x=e.clientX,r.y=e.clientY,r=r.matrixTransform(t.getScreenCTM().inverse()),[r.x,r.y]}var i=t.getBoundingClientRect();return[e.clientX-i.left-t.clientLeft,e.clientY-i.top-t.clientTop]}},function(t,e,n){"use strict";function r(t,e,n){t._context.bezierCurveTo((2*t._x0+t._x1)/3,(2*t._y0+t._y1)/3,(t._x0+2*t._x1)/3,(t._y0+2*t._y1)/3,(t._x0+4*t._x1+e)/6,(t._y0+4*t._y1+n)/6)}function i(t){this._context=t}e.c=r,e.b=i,i.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){switch(this._point){case 3:r(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:r(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}},e.a=function(t){return new i(t)}},function(t,e,n){"use strict";function r(t,e,n){t._context.bezierCurveTo(t._x1+t._k*(t._x2-t._x0),t._y1+t._k*(t._y2-t._y0),t._x2+t._k*(t._x1-e),t._y2+t._k*(t._y1-n),t._x2,t._y2)}function i(t,e){this._context=t,this._k=(1-e)/6}e.c=r,e.b=i,i.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:r(this,this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2,this._x1=t,this._y1=e;break;case 2:this._point=3;default:r(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}},e.a=function t(e){function n(t){return new i(t,e)}return n.tension=function(e){return t(+e)},n}(0)},function(t,e,n){"use strict";function r(t){this._context=t}r.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:this._context.lineTo(t,e)}}},e.a=function(t){return new r(t)}},function(t,e,n){"use strict";e.a=function(){}},function(t,e,n){"use strict";var r={};t.exports=r},function(t,e,n){"use strict";function r(t){return"topMouseUp"===t||"topTouchEnd"===t||"topTouchCancel"===t}function i(t){return"topMouseMove"===t||"topTouchMove"===t}function o(t){return"topMouseDown"===t||"topTouchStart"===t}function a(t,e,n,r){var i=t.type||"unknown-event";t.currentTarget=m.getNodeFromInstance(r),e?v.invokeGuardedCallbackWithCatch(i,n,t):v.invokeGuardedCallback(i,n,t),t.currentTarget=null}function u(t,e){var n=t._dispatchListeners,r=t._dispatchInstances;if(Array.isArray(n))for(var i=0;i<n.length&&!t.isPropagationStopped();i++)a(t,e,n[i],r[i]);else n&&a(t,e,n,r);t._dispatchListeners=null,t._dispatchInstances=null}function c(t){var e=t._dispatchListeners,n=t._dispatchInstances;if(Array.isArray(e)){for(var r=0;r<e.length&&!t.isPropagationStopped();r++)if(e[r](t,n[r]))return n[r]}else if(e&&e(t,n))return n;return null}function s(t){var e=c(t);return t._dispatchInstances=null,t._dispatchListeners=null,e}function l(t){var e=t._dispatchListeners,n=t._dispatchInstances;Array.isArray(e)&&d("103"),t.currentTarget=e?m.getNodeFromInstance(n):null;var r=e?e(t):null;return t.currentTarget=null,t._dispatchListeners=null,t._dispatchInstances=null,r}function f(t){return!!t._dispatchListeners}var p,h,d=n(1),v=n(88),g=(n(0),n(2),{injectComponentTree:function(t){p=t},injectTreeTraversal:function(t){h=t}}),m={isEndish:r,isMoveish:i,isStartish:o,executeDirectDispatch:l,executeDispatchesInOrder:u,executeDispatchesInOrderStopAtTrue:s,hasDispatches:f,getInstanceFromNode:function(t){return p.getInstanceFromNode(t)},getNodeFromInstance:function(t){return p.getNodeFromInstance(t)},isAncestor:function(t,e){return h.isAncestor(t,e)},getLowestCommonAncestor:function(t,e){return h.getLowestCommonAncestor(t,e)},getParentInstance:function(t){return h.getParentInstance(t)},traverseTwoPhase:function(t,e,n){return h.traverseTwoPhase(t,e,n)},traverseEnterLeave:function(t,e,n,r,i){return h.traverseEnterLeave(t,e,n,r,i)},injection:g};t.exports=m},function(t,e,n){"use strict";function r(t){return Object.prototype.hasOwnProperty.call(t,v)||(t[v]=h++,f[t[v]]={}),f[t[v]]}var i,o=n(3),a=n(84),u=n(374),c=n(90),s=n(406),l=n(95),f={},p=!1,h=0,d={topAbort:"abort",topAnimationEnd:s("animationend")||"animationend",topAnimationIteration:s("animationiteration")||"animationiteration",topAnimationStart:s("animationstart")||"animationstart",topBlur:"blur",topCanPlay:"canplay",topCanPlayThrough:"canplaythrough",topChange:"change",topClick:"click",topCompositionEnd:"compositionend",topCompositionStart:"compositionstart",topCompositionUpdate:"compositionupdate",topContextMenu:"contextmenu",topCopy:"copy",topCut:"cut",topDoubleClick:"dblclick",topDrag:"drag",topDragEnd:"dragend",topDragEnter:"dragenter",topDragExit:"dragexit",topDragLeave:"dragleave",topDragOver:"dragover",topDragStart:"dragstart",topDrop:"drop",topDurationChange:"durationchange",topEmptied:"emptied",topEncrypted:"encrypted",topEnded:"ended",topError:"error",topFocus:"focus",topInput:"input",topKeyDown:"keydown",topKeyPress:"keypress",topKeyUp:"keyup",topLoadedData:"loadeddata",topLoadedMetadata:"loadedmetadata",topLoadStart:"loadstart",topMouseDown:"mousedown",topMouseMove:"mousemove",topMouseOut:"mouseout",topMouseOver:"mouseover",topMouseUp:"mouseup",topPaste:"paste",topPause:"pause",topPlay:"play",topPlaying:"playing",topProgress:"progress",topRateChange:"ratechange",topScroll:"scroll",topSeeked:"seeked",topSeeking:"seeking",topSelectionChange:"selectionchange",topStalled:"stalled",topSuspend:"suspend",topTextInput:"textInput",topTimeUpdate:"timeupdate",topTouchCancel:"touchcancel",topTouchEnd:"touchend",topTouchMove:"touchmove",topTouchStart:"touchstart",topTransitionEnd:s("transitionend")||"transitionend",topVolumeChange:"volumechange",topWaiting:"waiting",topWheel:"wheel"},v="_reactListenersID"+String(Math.random()).slice(2),g=o({},u,{ReactEventListener:null,injection:{injectReactEventListener:function(t){t.setHandleTopLevel(g.handleTopLevel),g.ReactEventListener=t}},setEnabled:function(t){g.ReactEventListener&&g.ReactEventListener.setEnabled(t)},isEnabled:function(){return!(!g.ReactEventListener||!g.ReactEventListener.isEnabled())},listenTo:function(t,e){for(var n=e,i=r(n),o=a.registrationNameDependencies[t],u=0;u<o.length;u++){var c=o[u];i.hasOwnProperty(c)&&i[c]||("topWheel"===c?l("wheel")?g.ReactEventListener.trapBubbledEvent("topWheel","wheel",n):l("mousewheel")?g.ReactEventListener.trapBubbledEvent("topWheel","mousewheel",n):g.ReactEventListener.trapBubbledEvent("topWheel","DOMMouseScroll",n):"topScroll"===c?l("scroll",!0)?g.ReactEventListener.trapCapturedEvent("topScroll","scroll",n):g.ReactEventListener.trapBubbledEvent("topScroll","scroll",g.ReactEventListener.WINDOW_HANDLE):"topFocus"===c||"topBlur"===c?(l("focus",!0)?(g.ReactEventListener.trapCapturedEvent("topFocus","focus",n),g.ReactEventListener.trapCapturedEvent("topBlur","blur",n)):l("focusin")&&(g.ReactEventListener.trapBubbledEvent("topFocus","focusin",n),g.ReactEventListener.trapBubbledEvent("topBlur","focusout",n)),i.topBlur=!0,i.topFocus=!0):d.hasOwnProperty(c)&&g.ReactEventListener.trapBubbledEvent(c,d[c],n),i[c]=!0)}},trapBubbledEvent:function(t,e,n){return g.ReactEventListener.trapBubbledEvent(t,e,n)},trapCapturedEvent:function(t,e,n){return g.ReactEventListener.trapCapturedEvent(t,e,n)},supportsEventPageXY:function(){if(!document.createEvent)return!1;var t=document.createEvent("MouseEvent");return null!=t&&"pageX"in t},ensureScrollValueMonitoring:function(){if(void 0===i&&(i=g.supportsEventPageXY()),!i&&!p){var t=c.refreshScrollValues;g.ReactEventListener.monitorScrollValue(t),p=!0}}});t.exports=g},function(t,e,n){"use strict";function r(t,e,n,r){return i.call(this,t,e,n,r)}var i=n(25),o=n(90),a=n(93),u={screenX:null,screenY:null,clientX:null,clientY:null,ctrlKey:null,shiftKey:null,altKey:null,metaKey:null,getModifierState:a,button:function(t){var e=t.button;return"which"in t?e:2===e?2:4===e?1:0},buttons:null,relatedTarget:function(t){return t.relatedTarget||(t.fromElement===t.srcElement?t.toElement:t.fromElement)},pageX:function(t){return"pageX"in t?t.pageX:t.clientX+o.currentScrollLeft},pageY:function(t){return"pageY"in t?t.pageY:t.clientY+o.currentScrollTop}};i.augmentClass(r,u),t.exports=r},function(t,e,n){"use strict";var r=n(1),i=(n(0),{}),o={reinitializeTransaction:function(){this.transactionWrappers=this.getTransactionWrappers(),this.wrapperInitData?this.wrapperInitData.length=0:this.wrapperInitData=[],this._isInTransaction=!1},_isInTransaction:!1,getTransactionWrappers:null,isInTransaction:function(){return!!this._isInTransaction},perform:function(t,e,n,i,o,a,u,c){this.isInTransaction()&&r("27");var s,l;try{this._isInTransaction=!0,s=!0,this.initializeAll(0),l=t.call(e,n,i,o,a,u,c),s=!1}finally{try{if(s)try{this.closeAll(0)}catch(t){}else this.closeAll(0)}finally{this._isInTransaction=!1}}return l},initializeAll:function(t){for(var e=this.transactionWrappers,n=t;n<e.length;n++){var r=e[n];try{this.wrapperInitData[n]=i,this.wrapperInitData[n]=r.initialize?r.initialize.call(this):null}finally{if(this.wrapperInitData[n]===i)try{this.initializeAll(n+1)}catch(t){}}}},closeAll:function(t){this.isInTransaction()||r("28");for(var e=this.transactionWrappers,n=t;n<e.length;n++){var o,a=e[n],u=this.wrapperInitData[n];try{o=!0,u!==i&&a.close&&a.close.call(this,u),o=!1}finally{if(o)try{this.closeAll(n+1)}catch(t){}}}this.wrapperInitData.length=0}};t.exports=o},function(t,e,n){"use strict";function r(t){var e=""+t,n=o.exec(e);if(!n)return e;var r,i="",a=0,u=0;for(a=n.index;a<e.length;a++){switch(e.charCodeAt(a)){case 34:r=""";break;case 38:r="&";break;case 39:r="'";break;case 60:r="<";break;case 62:r=">";break;default:continue}u!==a&&(i+=e.substring(u,a)),u=a+1,i+=r}return u!==a?i+e.substring(u,a):i}function i(t){return"boolean"==typeof t||"number"==typeof t?""+t:r(t)}var o=/["'&<>]/;t.exports=i},function(t,e,n){"use strict";var r,i=n(6),o=n(83),a=/^[ \r\n\t\f]/,u=/<(!--|link|noscript|meta|script|style)[ \r\n\t\f\/>]/,c=n(91),s=c(function(t,e){if(t.namespaceURI!==o.svg||"innerHTML"in t)t.innerHTML=e;else{r=r||document.createElement("div"),r.innerHTML="<svg>"+e+"</svg>";for(var n=r.firstChild;n.firstChild;)t.appendChild(n.firstChild)}});if(i.canUseDOM){var l=document.createElement("div");l.innerHTML=" ",""===l.innerHTML&&(s=function(t,e){if(t.parentNode&&t.parentNode.replaceChild(t,t),a.test(e)||"<"===e[0]&&u.test(e)){t.innerHTML=String.fromCharCode(65279)+e;var n=t.firstChild;1===n.data.length?t.removeChild(n):n.deleteData(0,1)}else t.innerHTML=e}),l=null}t.exports=s},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default={colors:{RdBu:["rgb(255, 13, 87)","rgb(30, 136, 229)"],GnPR:["rgb(24, 196, 93)","rgb(124, 82, 255)"],CyPU:["#0099C6","#990099"],PkYg:["#DD4477","#66AA00"],DrDb:["#B82E2E","#316395"],LpLb:["#994499","#22AA99"],YlDp:["#AAAA11","#6633CC"],OrId:["#E67300","#3E0099"]},gray:"#777"}},function(t,e,n){"use strict";var r=n(28);e.a=function(t,e,n){if(null==n&&(n=r.a),i=t.length){if((e=+e)<=0||i<2)return+n(t[0],0,t);if(e>=1)return+n(t[i-1],i-1,t);var i,o=(i-1)*e,a=Math.floor(o),u=+n(t[a],a,t);return u+(+n(t[a+1],a+1,t)-u)*(o-a)}}},function(t,e,n){"use strict";function r(){}function i(t,e){var n=new r;if(t instanceof r)t.each(function(t,e){n.set(e,t)});else if(Array.isArray(t)){var i,o=-1,a=t.length;if(null==e)for(;++o<a;)n.set(o,t[o]);else for(;++o<a;)n.set(e(i=t[o],o,t),i)}else if(t)for(var u in t)n.set(u,t[u]);return n}n.d(e,"b",function(){return o});var o="$";r.prototype=i.prototype={constructor:r,has:function(t){return o+t in this},get:function(t){return this[o+t]},set:function(t,e){return this[o+t]=e,this},remove:function(t){var e=o+t;return e in this&&delete this[e]},clear:function(){for(var t in this)t[0]===o&&delete this[t]},keys:function(){var t=[];for(var e in this)e[0]===o&&t.push(e.slice(1));return t},values:function(){var t=[];for(var e in this)e[0]===o&&t.push(this[e]);return t},entries:function(){var t=[];for(var e in this)e[0]===o&&t.push({key:e.slice(1),value:this[e]});return t},size:function(){var t=0;for(var e in this)e[0]===o&&++t;return t},empty:function(){for(var t in this)if(t[0]===o)return!1;return!0},each:function(t){for(var e in this)e[0]===o&&t(this[e],e.slice(1),this)}},e.a=i},function(t,e,n){"use strict";function r(){}function i(t){var e;return t=(t+"").trim().toLowerCase(),(e=x.exec(t))?(e=parseInt(e[1],16),new s(e>>8&15|e>>4&240,e>>4&15|240&e,(15&e)<<4|15&e,1)):(e=w.exec(t))?o(parseInt(e[1],16)):(e=C.exec(t))?new s(e[1],e[2],e[3],1):(e=k.exec(t))?new s(255*e[1]/100,255*e[2]/100,255*e[3]/100,1):(e=E.exec(t))?a(e[1],e[2],e[3],e[4]):(e=M.exec(t))?a(255*e[1]/100,255*e[2]/100,255*e[3]/100,e[4]):(e=T.exec(t))?l(e[1],e[2]/100,e[3]/100,1):(e=S.exec(t))?l(e[1],e[2]/100,e[3]/100,e[4]):N.hasOwnProperty(t)?o(N[t]):"transparent"===t?new s(NaN,NaN,NaN,0):null}function o(t){return new s(t>>16&255,t>>8&255,255&t,1)}function a(t,e,n,r){return r<=0&&(t=e=n=NaN),new s(t,e,n,r)}function u(t){return t instanceof r||(t=i(t)),t?(t=t.rgb(),new s(t.r,t.g,t.b,t.opacity)):new s}function c(t,e,n,r){return 1===arguments.length?u(t):new s(t,e,n,null==r?1:r)}function s(t,e,n,r){this.r=+t,this.g=+e,this.b=+n,this.opacity=+r}function l(t,e,n,r){return r<=0?t=e=n=NaN:n<=0||n>=1?t=e=NaN:e<=0&&(t=NaN),new h(t,e,n,r)}function f(t){if(t instanceof h)return new h(t.h,t.s,t.l,t.opacity);if(t instanceof r||(t=i(t)),!t)return new h;if(t instanceof h)return t;t=t.rgb();var e=t.r/255,n=t.g/255,o=t.b/255,a=Math.min(e,n,o),u=Math.max(e,n,o),c=NaN,s=u-a,l=(u+a)/2;return s?(c=e===u?(n-o)/s+6*(n<o):n===u?(o-e)/s+2:(e-n)/s+4,s/=l<.5?u+a:2-u-a,c*=60):s=l>0&&l<1?0:c,new h(c,s,l,t.opacity)}function p(t,e,n,r){return 1===arguments.length?f(t):new h(t,e,n,null==r?1:r)}function h(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}function d(t,e,n){return 255*(t<60?e+(n-e)*t/60:t<180?n:t<240?e+(n-e)*(240-t)/60:e)}e.f=r,n.d(e,"h",function(){return g}),n.d(e,"g",function(){return m}),e.a=i,e.e=u,e.b=c,e.d=s,e.c=p;var v=n(62),g=.7,m=1/g,y="\\s*([+-]?\\d+)\\s*",_="\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)\\s*",b="\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)%\\s*",x=/^#([0-9a-f]{3})$/,w=/^#([0-9a-f]{6})$/,C=new RegExp("^rgb\\("+[y,y,y]+"\\)$"),k=new RegExp("^rgb\\("+[b,b,b]+"\\)$"),E=new RegExp("^rgba\\("+[y,y,y,_]+"\\)$"),M=new RegExp("^rgba\\("+[b,b,b,_]+"\\)$"),T=new RegExp("^hsl\\("+[_,b,b]+"\\)$"),S=new RegExp("^hsla\\("+[_,b,b,_]+"\\)$"),N={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};n.i(v.a)(r,i,{displayable:function(){return this.rgb().displayable()},toString:function(){return this.rgb()+""}}),n.i(v.a)(s,c,n.i(v.b)(r,{brighter:function(t){return t=null==t?m:Math.pow(m,t),new s(this.r*t,this.g*t,this.b*t,this.opacity)},darker:function(t){return t=null==t?g:Math.pow(g,t),new s(this.r*t,this.g*t,this.b*t,this.opacity)},rgb:function(){return this},displayable:function(){return 0<=this.r&&this.r<=255&&0<=this.g&&this.g<=255&&0<=this.b&&this.b<=255&&0<=this.opacity&&this.opacity<=1},toString:function(){var t=this.opacity;return t=isNaN(t)?1:Math.max(0,Math.min(1,t)),(1===t?"rgb(":"rgba(")+Math.max(0,Math.min(255,Math.round(this.r)||0))+", "+Math.max(0,Math.min(255,Math.round(this.g)||0))+", "+Math.max(0,Math.min(255,Math.round(this.b)||0))+(1===t?")":", "+t+")")}})),n.i(v.a)(h,p,n.i(v.b)(r,{brighter:function(t){return t=null==t?m:Math.pow(m,t),new h(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=null==t?g:Math.pow(g,t),new h(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=this.h%360+360*(this.h<0),e=isNaN(t)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*e,i=2*n-r;return new s(d(t>=240?t-240:t+120,i,r),d(t,i,r),d(t<120?t+240:t-120,i,r),this.opacity)},displayable:function(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1}}))},function(t,e,n){"use strict";function r(t,e){var n=Object.create(t.prototype);for(var r in e)n[r]=e[r];return n}e.b=r,e.a=function(t,e,n){t.prototype=e.prototype=n,n.constructor=t}},function(t,e,n){"use strict";e.a=function(t,e){if((n=(t=e?t.toExponential(e-1):t.toExponential()).indexOf("e"))<0)return null;var n,r=t.slice(0,n);return[r.length>1?r[0]+r.slice(2):r,+t.slice(n+1)]}},function(t,e,n){"use strict";function r(t,e,n,r,i){var o=t*t,a=o*t;return((1-3*t+3*o-a)*e+(4-6*o+3*a)*n+(1+3*t+3*o-3*a)*r+a*i)/6}e.b=r,e.a=function(t){var e=t.length-1;return function(n){var i=n<=0?n=0:n>=1?(n=1,e-1):Math.floor(n*e),o=t[i],a=t[i+1],u=i>0?t[i-1]:2*o-a,c=i<e-1?t[i+2]:2*a-o;return r((n-i/e)*e,u,o,a,c)}}},function(t,e,n){"use strict";var r=n(10),i=n(123),o=n(118),a=n(121),u=n(43),c=n(122),s=n(124),l=n(120);e.a=function(t,e){var f,p=typeof e;return null==e||"boolean"===p?n.i(l.a)(e):("number"===p?u.a:"string"===p?(f=n.i(r.color)(e))?(e=f,i.a):s.a:e instanceof r.color?i.a:e instanceof Date?a.a:Array.isArray(e)?o.a:"function"!=typeof e.valueOf&&"function"!=typeof e.toString||isNaN(e)?c.a:u.a)(t,e)}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(239);n.d(e,"scaleBand",function(){return r.a}),n.d(e,"scalePoint",function(){return r.b});var i=n(245);n.d(e,"scaleIdentity",function(){return i.a});var o=n(34);n.d(e,"scaleLinear",function(){return o.a});var a=n(246);n.d(e,"scaleLog",function(){return a.a});var u=n(127);n.d(e,"scaleOrdinal",function(){return u.a}),n.d(e,"scaleImplicit",function(){return u.b});var c=n(247);n.d(e,"scalePow",function(){return c.a}),n.d(e,"scaleSqrt",function(){return c.b});var s=n(248);n.d(e,"scaleQuantile",function(){return s.a});var l=n(249);n.d(e,"scaleQuantize",function(){return l.a});var f=n(252);n.d(e,"scaleThreshold",function(){return f.a});var p=n(128);n.d(e,"scaleTime",function(){return p.a});var h=n(254);n.d(e,"scaleUtc",function(){return h.a});var d=n(240);n.d(e,"schemeCategory10",function(){return d.a});var v=n(242);n.d(e,"schemeCategory20b",function(){return v.a});var g=n(243);n.d(e,"schemeCategory20c",function(){return g.a});var m=n(241);n.d(e,"schemeCategory20",function(){return m.a});var y=n(244);n.d(e,"interpolateCubehelixDefault",function(){return y.a});var _=n(250);n.d(e,"interpolateRainbow",function(){return _.a}),n.d(e,"interpolateWarm",function(){return _.b}),n.d(e,"interpolateCool",function(){return _.c});var b=n(255);n.d(e,"interpolateViridis",function(){return b.a}),n.d(e,"interpolateMagma",function(){return b.b}),n.d(e,"interpolateInferno",function(){return b.c}),n.d(e,"interpolatePlasma",function(){return b.d});var x=n(251);n.d(e,"scaleSequential",function(){return x.a})},function(t,e,n){"use strict";e.a=function(t){return function(){return t}}},function(t,e,n){"use strict";var r=n(69);e.a=function(t){var e=t+="",n=e.indexOf(":");return n>=0&&"xmlns"!==(e=t.slice(0,n))&&(t=t.slice(n+1)),r.a.hasOwnProperty(e)?{space:r.a[e],local:t}:t}},function(t,e,n){"use strict";n.d(e,"b",function(){return r});var r="http://www.w3.org/1999/xhtml";e.a={svg:"http://www.w3.org/2000/svg",xhtml:r,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"}},function(t,e,n){"use strict";function r(t,e,n){return t=i(t,e,n),function(e){var n=e.relatedTarget;n&&(n===this||8&n.compareDocumentPosition(this))||t.call(this,e)}}function i(t,e,n){return function(r){var i=l;l=r;try{t.call(this,this.__data__,e,n)}finally{l=i}}}function o(t){return t.trim().split(/^|\s+/).map(function(t){var e="",n=t.indexOf(".");return n>=0&&(e=t.slice(n+1),t=t.slice(0,n)),{type:t,name:e}})}function a(t){return function(){var e=this.__on;if(e){for(var n,r=0,i=-1,o=e.length;r<o;++r)n=e[r],t.type&&n.type!==t.type||n.name!==t.name?e[++i]=n:this.removeEventListener(n.type,n.listener,n.capture);++i?e.length=i:delete this.__on}}}function u(t,e,n){var o=s.hasOwnProperty(t.type)?r:i;return function(r,i,a){var u,c=this.__on,s=o(e,i,a);if(c)for(var l=0,f=c.length;l<f;++l)if((u=c[l]).type===t.type&&u.name===t.name)return this.removeEventListener(u.type,u.listener,u.capture),this.addEventListener(u.type,u.listener=s,u.capture=n),void(u.value=e);this.addEventListener(t.type,s,n),u={type:t.type,name:t.name,value:e,listener:s,capture:n},c?c.push(u):this.__on=[u]}}function c(t,e,n,r){var i=l;t.sourceEvent=l,l=t;try{return e.apply(n,r)}finally{l=i}}n.d(e,"a",function(){return l}),e.b=c;var s={},l=null;if("undefined"!=typeof document){"onmouseenter"in document.documentElement||(s={mouseenter:"mouseover",mouseleave:"mouseout"})}e.c=function(t,e,n){var r,i,c=o(t+""),s=c.length;{if(!(arguments.length<2)){for(l=e?u:a,null==n&&(n=!1),r=0;r<s;++r)this.each(l(c[r],e,n));return this}var l=this.node().__on;if(l)for(var f,p=0,h=l.length;p<h;++p)for(r=0,f=l[p];r<s;++r)if((i=c[r]).type===f.type&&i.name===f.name)return f.value}}},function(t,e,n){"use strict";function r(){}e.a=function(t){return null==t?r:function(){return this.querySelector(t)}}},function(t,e,n){"use strict";var r=n(70);e.a=function(){for(var t,e=r.a;t=e.sourceEvent;)e=t;return e}},function(t,e,n){"use strict";e.a=function(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView}},function(t,e,n){"use strict";function r(t,e,n){var r=t._x1,i=t._y1,a=t._x2,u=t._y2;if(t._l01_a>o.a){var c=2*t._l01_2a+3*t._l01_a*t._l12_a+t._l12_2a,s=3*t._l01_a*(t._l01_a+t._l12_a);r=(r*c-t._x0*t._l12_2a+t._x2*t._l01_2a)/s,i=(i*c-t._y0*t._l12_2a+t._y2*t._l01_2a)/s}if(t._l23_a>o.a){var l=2*t._l23_2a+3*t._l23_a*t._l12_a+t._l12_2a,f=3*t._l23_a*(t._l23_a+t._l12_a);a=(a*l+t._x1*t._l23_2a-e*t._l12_2a)/f,u=(u*l+t._y1*t._l23_2a-n*t._l12_2a)/f}t._context.bezierCurveTo(r,i,a,u,t._x2,t._y2)}function i(t,e){this._context=t,this._alpha=e}e.b=r;var o=n(35),a=n(48);i.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:this.point(this._x2,this._y2)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){if(t=+t,e=+e,this._point){var n=this._x2-t,i=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(n*n+i*i,this._alpha))}switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3;default:r(this,t,e)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}},e.a=function t(e){function n(t){return e?new i(t,e):new a.b(t,0)}return n.alpha=function(e){return t(+e)},n}(.5)},function(t,e,n){"use strict";var r=n(32),i=n(17),o=n(49),a=n(77);e.a=function(){function t(t){var i,o,a,p=t.length,h=!1;for(null==s&&(f=l(a=n.i(r.a)())),i=0;i<=p;++i)!(i<p&&c(o=t[i],i,t))===h&&((h=!h)?f.lineStart():f.lineEnd()),h&&f.point(+e(o,i,t),+u(o,i,t));if(a)return f=null,a+""||null}var e=a.a,u=a.b,c=n.i(i.a)(!0),s=null,l=o.a,f=null;return t.x=function(r){return arguments.length?(e="function"==typeof r?r:n.i(i.a)(+r),t):e},t.y=function(e){return arguments.length?(u="function"==typeof e?e:n.i(i.a)(+e),t):u},t.defined=function(e){return arguments.length?(c="function"==typeof e?e:n.i(i.a)(!!e),t):c},t.curve=function(e){return arguments.length?(l=e,null!=s&&(f=l(s)),t):l},t.context=function(e){return arguments.length?(null==e?s=f=null:f=l(s=e),t):s},t}},function(t,e,n){"use strict";function r(t){for(var e,n=0,r=-1,i=t.length;++r<i;)(e=+t[r][1])&&(n+=e);return n}e.b=r;var i=n(37);e.a=function(t){var e=t.map(r);return n.i(i.a)(t).sort(function(t,n){return e[t]-e[n]})}},function(t,e,n){"use strict";function r(t){return t[0]}function i(t){return t[1]}e.a=r,e.b=i},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(79);n.d(e,"timeFormatDefaultLocale",function(){return r.a}),n.d(e,"timeFormat",function(){return r.b}),n.d(e,"timeParse",function(){return r.c}),n.d(e,"utcFormat",function(){return r.d}),n.d(e,"utcParse",function(){return r.e});var i=n(152);n.d(e,"timeFormatLocale",function(){return i.a});var o=n(151);n.d(e,"isoFormat",function(){return o.a});var a=n(314);n.d(e,"isoParse",function(){return a.a})},function(t,e,n){"use strict";function r(t){return i=n.i(s.a)(t),o=i.format,a=i.parse,u=i.utcFormat,c=i.utcParse,i}n.d(e,"b",function(){return o}),n.d(e,"c",function(){return a}),n.d(e,"d",function(){return u}),n.d(e,"e",function(){return c}),e.a=r;var i,o,a,u,c,s=n(152);r({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]})},function(t,e,n){"use strict";var r=(n(5),n(317));n.d(e,"v",function(){return r.a}),n.d(e,"p",function(){return r.a});var i=n(320);n.d(e,"u",function(){return i.a}),n.d(e,"o",function(){return i.a});var o=n(318);n.d(e,"t",function(){return o.a});var a=n(316);n.d(e,"s",function(){return a.a});var u=n(315);n.d(e,"d",function(){return u.a});var c=n(327);n.d(e,"r",function(){return c.a}),n.d(e,"f",function(){return c.a}),n.d(e,"c",function(){return c.b}),n.d(e,"g",function(){return c.c});var s=n(319);n.d(e,"q",function(){return s.a});var l=n(328);n.d(e,"e",function(){return l.a});var f=n(323);n.d(e,"n",function(){return f.a});var p=n(322);n.d(e,"m",function(){return p.a});var h=n(321);n.d(e,"b",function(){return h.a});var d=n(325);n.d(e,"l",function(){return d.a}),n.d(e,"i",function(){return d.a}),n.d(e,"a",function(){return d.b}),n.d(e,"j",function(){return d.c});var v=n(324);n.d(e,"k",function(){return v.a});var g=n(326);n.d(e,"h",function(){return g.a})},function(t,e,n){"use strict";function r(t,e){return t===e?0!==t||0!==e||1/t==1/e:t!==t&&e!==e}function i(t,e){if(r(t,e))return!0;if("object"!=typeof t||null===t||"object"!=typeof e||null===e)return!1;var n=Object.keys(t),i=Object.keys(e);if(n.length!==i.length)return!1;for(var a=0;a<n.length;a++)if(!o.call(e,n[a])||!r(t[n[a]],e[n[a]]))return!1;return!0}var o=Object.prototype.hasOwnProperty;t.exports=i},function(t,e,n){"use strict";function r(t,e){return Array.isArray(e)&&(e=e[1]),e?e.nextSibling:t.firstChild}function i(t,e,n){l.insertTreeBefore(t,e,n)}function o(t,e,n){Array.isArray(e)?u(t,e[0],e[1],n):v(t,e,n)}function a(t,e){if(Array.isArray(e)){var n=e[1];e=e[0],c(t,e,n),t.removeChild(n)}t.removeChild(e)}function u(t,e,n,r){for(var i=e;;){var o=i.nextSibling;if(v(t,i,r),i===n)break;i=o}}function c(t,e,n){for(;;){var r=e.nextSibling;if(r===n)break;t.removeChild(r)}}function s(t,e,n){var r=t.parentNode,i=t.nextSibling;i===e?n&&v(r,document.createTextNode(n),i):n?(d(i,n),c(r,i,e)):c(r,t,e)}var l=n(20),f=n(350),p=(n(4),n(9),n(91)),h=n(57),d=n(176),v=p(function(t,e,n){t.insertBefore(e,n)}),g=f.dangerouslyReplaceNodeWithMarkup,m={dangerouslyReplaceNodeWithMarkup:g,replaceDelimitedText:s,processUpdates:function(t,e){for(var n=0;n<e.length;n++){var u=e[n];switch(u.type){case"INSERT_MARKUP":i(t,u.content,r(t,u.afterNode));break;case"MOVE_EXISTING":o(t,u.fromNode,r(t,u.afterNode));break;case"SET_MARKUP":h(t,u.content);break;case"TEXT_CONTENT":d(t,u.content);break;case"REMOVE_NODE":a(t,u.fromNode)}}}};t.exports=m},function(t,e,n){"use strict";var r={html:"http://www.w3.org/1999/xhtml",mathml:"http://www.w3.org/1998/Math/MathML",svg:"http://www.w3.org/2000/svg"};t.exports=r},function(t,e,n){"use strict";function r(){if(u)for(var t in c){var e=c[t],n=u.indexOf(t);if(n>-1||a("96",t),!s.plugins[n]){e.extractEvents||a("97",t),s.plugins[n]=e;var r=e.eventTypes;for(var o in r)i(r[o],e,o)||a("98",o,t)}}}function i(t,e,n){s.eventNameDispatchConfigs.hasOwnProperty(n)&&a("99",n),s.eventNameDispatchConfigs[n]=t;var r=t.phasedRegistrationNames;if(r){for(var i in r)if(r.hasOwnProperty(i)){var u=r[i];o(u,e,n)}return!0}return!!t.registrationName&&(o(t.registrationName,e,n),!0)}function o(t,e,n){s.registrationNameModules[t]&&a("100",t),s.registrationNameModules[t]=e,s.registrationNameDependencies[t]=e.eventTypes[n].dependencies}var a=n(1),u=(n(0),null),c={},s={plugins:[],eventNameDispatchConfigs:{},registrationNameModules:{},registrationNameDependencies:{},possibleRegistrationNames:null,injectEventPluginOrder:function(t){u&&a("101"),u=Array.prototype.slice.call(t),r()},injectEventPluginsByName:function(t){var e=!1;for(var n in t)if(t.hasOwnProperty(n)){var i=t[n];c.hasOwnProperty(n)&&c[n]===i||(c[n]&&a("102",n),c[n]=i,e=!0)}e&&r()},getPluginModuleForEvent:function(t){var e=t.dispatchConfig;if(e.registrationName)return s.registrationNameModules[e.registrationName]||null;if(void 0!==e.phasedRegistrationNames){var n=e.phasedRegistrationNames;for(var r in n)if(n.hasOwnProperty(r)){var i=s.registrationNameModules[n[r]];if(i)return i}}return null},_resetEventPlugins:function(){u=null;for(var t in c)c.hasOwnProperty(t)&&delete c[t];s.plugins.length=0;var e=s.eventNameDispatchConfigs;for(var n in e)e.hasOwnProperty(n)&&delete e[n];var r=s.registrationNameModules;for(var i in r)r.hasOwnProperty(i)&&delete r[i]}};t.exports=s},function(t,e,n){"use strict";function r(t){var e={"=":"=0",":":"=2"};return"$"+(""+t).replace(/[=:]/g,function(t){return e[t]})}function i(t){var e=/(=0|=2)/g,n={"=0":"=","=2":":"};return(""+("."===t[0]&&"$"===t[1]?t.substring(2):t.substring(1))).replace(e,function(t){return n[t]})}var o={escape:r,unescape:i};t.exports=o},function(t,e,n){"use strict";function r(t){null!=t.checkedLink&&null!=t.valueLink&&u("87")}function i(t){r(t),(null!=t.value||null!=t.onChange)&&u("88")}function o(t){r(t),(null!=t.checked||null!=t.onChange)&&u("89")}function a(t){if(t){var e=t.getName();if(e)return" Check the render method of `"+e+"`."}return""}var u=n(1),c=n(380),s=n(157),l=n(26),f=s(l.isValidElement),p=(n(0),n(2),{button:!0,checkbox:!0,image:!0,hidden:!0,radio:!0,reset:!0,submit:!0}),h={value:function(t,e,n){return!t[e]||p[t.type]||t.onChange||t.readOnly||t.disabled?null:new Error("You provided a `value` prop to a form field without an `onChange` handler. This will render a read-only field. If the field should be mutable use `defaultValue`. Otherwise, set either `onChange` or `readOnly`.")},checked:function(t,e,n){return!t[e]||t.onChange||t.readOnly||t.disabled?null:new Error("You provided a `checked` prop to a form field without an `onChange` handler. This will render a read-only field. If the field should be mutable use `defaultChecked`. Otherwise, set either `onChange` or `readOnly`.")},onChange:f.func},d={},v={checkPropTypes:function(t,e,n){for(var r in h){if(h.hasOwnProperty(r))var i=h[r](e,r,t,"prop",null,c);if(i instanceof Error&&!(i.message in d)){d[i.message]=!0;a(n)}}},getValue:function(t){return t.valueLink?(i(t),t.valueLink.value):t.value},getChecked:function(t){return t.checkedLink?(o(t),t.checkedLink.value):t.checked},executeOnChange:function(t,e){return t.valueLink?(i(t),t.valueLink.requestChange(e.target.value)):t.checkedLink?(o(t),t.checkedLink.requestChange(e.target.checked)):t.onChange?t.onChange.call(void 0,e):void 0}};t.exports=v},function(t,e,n){"use strict";var r=n(1),i=(n(0),!1),o={replaceNodeWithMarkup:null,processChildrenUpdates:null,injection:{injectEnvironment:function(t){i&&r("104"),o.replaceNodeWithMarkup=t.replaceNodeWithMarkup,o.processChildrenUpdates=t.processChildrenUpdates,i=!0}}};t.exports=o},function(t,e,n){"use strict";function r(t,e,n){try{e(n)}catch(t){null===i&&(i=t)}}var i=null,o={invokeGuardedCallback:r,invokeGuardedCallbackWithCatch:r,rethrowCaughtError:function(){if(i){var t=i;throw i=null,t}}};t.exports=o},function(t,e,n){"use strict";function r(t){c.enqueueUpdate(t)}function i(t){var e=typeof t;if("object"!==e)return e;var n=t.constructor&&t.constructor.name||e,r=Object.keys(t);return r.length>0&&r.length<20?n+" (keys: "+r.join(", ")+")":n}function o(t,e){var n=u.get(t);if(!n){return null}return n}var a=n(1),u=(n(15),n(39)),c=(n(9),n(12)),s=(n(0),n(2),{isMounted:function(t){var e=u.get(t);return!!e&&!!e._renderedComponent},enqueueCallback:function(t,e,n){s.validateCallback(e,n);var i=o(t);if(!i)return null;i._pendingCallbacks?i._pendingCallbacks.push(e):i._pendingCallbacks=[e],r(i)},enqueueCallbackInternal:function(t,e){t._pendingCallbacks?t._pendingCallbacks.push(e):t._pendingCallbacks=[e],r(t)},enqueueForceUpdate:function(t){var e=o(t,"forceUpdate");e&&(e._pendingForceUpdate=!0,r(e))},enqueueReplaceState:function(t,e,n){var i=o(t,"replaceState");i&&(i._pendingStateQueue=[e],i._pendingReplaceState=!0,void 0!==n&&null!==n&&(s.validateCallback(n,"replaceState"),i._pendingCallbacks?i._pendingCallbacks.push(n):i._pendingCallbacks=[n]),r(i))},enqueueSetState:function(t,e){var n=o(t,"setState");if(n){(n._pendingStateQueue||(n._pendingStateQueue=[])).push(e),r(n)}},enqueueElementInternal:function(t,e,n){t._pendingElement=e,t._context=n,r(t)},validateCallback:function(t,e){t&&"function"!=typeof t&&a("122",e,i(t))}});t.exports=s},function(t,e,n){"use strict";var r={currentScrollLeft:0,currentScrollTop:0,refreshScrollValues:function(t){r.currentScrollLeft=t.x,r.currentScrollTop=t.y}};t.exports=r},function(t,e,n){"use strict";var r=function(t){return"undefined"!=typeof MSApp&&MSApp.execUnsafeLocalFunction?function(e,n,r,i){MSApp.execUnsafeLocalFunction(function(){return t(e,n,r,i)})}:t};t.exports=r},function(t,e,n){"use strict";function r(t){var e,n=t.keyCode;return"charCode"in t?0===(e=t.charCode)&&13===n&&(e=13):e=n,e>=32||13===e?e:0}t.exports=r},function(t,e,n){"use strict";function r(t){var e=this,n=e.nativeEvent;if(n.getModifierState)return n.getModifierState(t);var r=o[t];return!!r&&!!n[r]}function i(t){return r}var o={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};t.exports=i},function(t,e,n){"use strict";function r(t){var e=t.target||t.srcElement||window;return e.correspondingUseElement&&(e=e.correspondingUseElement),3===e.nodeType?e.parentNode:e}t.exports=r},function(t,e,n){"use strict";/**
* Checks if an event is supported in the current execution environment.
*
* NOTE: This will not work correctly for non-generic events such as `change`,
* `reset`, `load`, `error`, and `select`.
*
* Borrows from Modernizr.
*
* @param {string} eventNameSuffix Event name, e.g. "click".
* @param {?boolean} capture Check if the capture phase is supported.
* @return {boolean} True if the event is supported.
* @internal
* @license Modernizr 3.0.0pre (Custom Build) | MIT
*/
function r(t,e){if(!o.canUseDOM||e&&!("addEventListener"in document))return!1;var n="on"+t,r=n in document;if(!r){var a=document.createElement("div");a.setAttribute(n,"return;"),r="function"==typeof a[n]}return!r&&i&&"wheel"===t&&(r=document.implementation.hasFeature("Events.wheel","3.0")),r}var i,o=n(6);o.canUseDOM&&(i=document.implementation&&document.implementation.hasFeature&&!0!==document.implementation.hasFeature("","")),t.exports=r},function(t,e,n){"use strict";function r(t,e){var n=null===t||!1===t,r=null===e||!1===e;if(n||r)return n===r;var i=typeof t,o=typeof e;return"string"===i||"number"===i?"string"===o||"number"===o:"object"===o&&t.type===e.type&&t.key===e.key}t.exports=r},function(t,e,n){"use strict";var r=(n(3),n(11)),i=(n(2),r);t.exports=i},function(t,e){var n;n=function(){return this}();try{n=n||Function("return this")()||(0,eval)("this")}catch(t){"object"==typeof window&&(n=window)}t.exports=n},function(t,e){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children||(t.children=[]),Object.defineProperty(t,"loaded",{enumerable:!0,get:function(){return t.l}}),Object.defineProperty(t,"id",{enumerable:!0,get:function(){return t.i}}),t.webpackPolyfill=1),t}},function(t,e,n){"use strict";n.d(e,"b",function(){return i}),n.d(e,"a",function(){return o});var r=Array.prototype,i=r.slice,o=r.map},function(t,e,n){"use strict";n.d(e,"b",function(){return a}),n.d(e,"c",function(){return u});var r=n(19),i=n(102),o=n.i(i.a)(r.a),a=o.right,u=o.left;e.a=a},function(t,e,n){"use strict";function r(t){return function(e,r){return n.i(i.a)(t(e),r)}}var i=n(19);e.a=function(t){return 1===t.length&&(t=r(t)),{left:function(e,n,r,i){for(null==r&&(r=0),null==i&&(i=e.length);r<i;){var o=r+i>>>1;t(e[o],n)<0?r=o+1:i=o}return r},right:function(e,n,r,i){for(null==r&&(r=0),null==i&&(i=e.length);r<i;){var o=r+i>>>1;t(e[o],n)>0?i=o:r=o+1}return r}}}},function(t,e,n){"use strict";var r=n(111);e.a=function(t,e){var i=n.i(r.a)(t,e);return i?Math.sqrt(i):i}},function(t,e,n){"use strict";e.a=function(t,e){var n,r,i,o=t.length,a=-1;if(null==e){for(;++a<o;)if(null!=(n=t[a])&&n>=n)for(r=i=n;++a<o;)null!=(n=t[a])&&(r>n&&(r=n),i<n&&(i=n))}else for(;++a<o;)if(null!=(n=e(t[a],a,t))&&n>=n)for(r=i=n;++a<o;)null!=(n=e(t[a],a,t))&&(r>n&&(r=n),i<n&&(i=n));return[r,i]}},function(t,e,n){"use strict";e.a=function(t,e){var n,r,i=t.length,o=-1;if(null==e){for(;++o<i;)if(null!=(n=t[o])&&n>=n)for(r=n;++o<i;)null!=(n=t[o])&&r>n&&(r=n)}else for(;++o<i;)if(null!=(n=e(t[o],o,t))&&n>=n)for(r=n;++o<i;)null!=(n=e(t[o],o,t))&&r>n&&(r=n);return r}},function(t,e,n){"use strict";function r(t,e){return[t,e]}e.b=r,e.a=function(t,e){null==e&&(e=r);for(var n=0,i=t.length-1,o=t[0],a=new Array(i<0?0:i);n<i;)a[n]=e(o,o=t[++n]);return a}},function(t,e,n){"use strict";e.a=function(t,e,n){t=+t,e=+e,n=(i=arguments.length)<2?(e=t,t=0,1):i<3?1:+n;for(var r=-1,i=0|Math.max(0,Math.ceil((e-t)/n)),o=new Array(i);++r<i;)o[r]=t+r*n;return o}},function(t,e,n){"use strict";e.a=function(t){return Math.ceil(Math.log(t.length)/Math.LN2)+1}},function(t,e,n){"use strict";function r(t,e,n){var r=(e-t)/Math.max(0,n),i=Math.floor(Math.log(r)/Math.LN10),c=r/Math.pow(10,i);return i>=0?(c>=o?10:c>=a?5:c>=u?2:1)*Math.pow(10,i):-Math.pow(10,-i)/(c>=o?10:c>=a?5:c>=u?2:1)}function i(t,e,n){var r=Math.abs(e-t)/Math.max(0,n),i=Math.pow(10,Math.floor(Math.log(r)/Math.LN10)),c=r/i;return c>=o?i*=10:c>=a?i*=5:c>=u&&(i*=2),e<t?-i:i}e.b=r,e.c=i;var o=Math.sqrt(50),a=Math.sqrt(10),u=Math.sqrt(2);e.a=function(t,e,n){var i,o,a,u,c=-1;if(e=+e,t=+t,n=+n,t===e&&n>0)return[t];if((i=e<t)&&(o=t,t=e,e=o),0===(u=r(t,e,n))||!isFinite(u))return[];if(u>0)for(t=Math.ceil(t/u),e=Math.floor(e/u),a=new Array(o=Math.ceil(e-t+1));++c<o;)a[c]=(t+c)*u;else for(t=Math.floor(t*u),e=Math.ceil(e*u),a=new Array(o=Math.ceil(t-e+1));++c<o;)a[c]=(t-c)/u;return i&&a.reverse(),a}},function(t,e,n){"use strict";function r(t){return t.length}var i=n(105);e.a=function(t){if(!(u=t.length))return[];for(var e=-1,o=n.i(i.a)(t,r),a=new Array(o);++e<o;)for(var u,c=-1,s=a[e]=new Array(u);++c<u;)s[c]=t[c][e];return a}},function(t,e,n){"use strict";var r=n(28);e.a=function(t,e){var i,o,a=t.length,u=0,c=-1,s=0,l=0;if(null==e)for(;++c<a;)isNaN(i=n.i(r.a)(t[c]))||(o=i-s,s+=o/++u,l+=o*(i-s));else for(;++c<a;)isNaN(i=n.i(r.a)(e(t[c],c,t)))||(o=i-s,s+=o/++u,l+=o*(i-s));if(u>1)return l/(u-1)}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(209);n.d(e,"axisTop",function(){return r.a}),n.d(e,"axisRight",function(){return r.b}),n.d(e,"axisBottom",function(){return r.c}),n.d(e,"axisLeft",function(){return r.d})},function(t,e,n){"use strict";n.d(e,"b",function(){return r}),n.d(e,"a",function(){return i});var r=Math.PI/180,i=180/Math.PI},function(t,e,n){"use strict";n.d(e,"b",function(){return r});var r,i=n(63);e.a=function(t,e){var o=n.i(i.a)(t,e);if(!o)return t+"";var a=o[0],u=o[1],c=u-(r=3*Math.max(-8,Math.min(8,Math.floor(u/3))))+1,s=a.length;return c===s?a:c>s?a+new Array(c-s+1).join("0"):c>0?a.slice(0,c)+"."+a.slice(c):"0."+new Array(1-c).join("0")+n.i(i.a)(t,Math.max(0,e+c-1))[0]}},function(t,e,n){"use strict";function r(t){return new i(t)}function i(t){if(!(e=a.exec(t)))throw new Error("invalid format: "+t);var e,n=e[1]||" ",r=e[2]||">",i=e[3]||"-",u=e[4]||"",c=!!e[5],s=e[6]&&+e[6],l=!!e[7],f=e[8]&&+e[8].slice(1),p=e[9]||"";"n"===p?(l=!0,p="g"):o.a[p]||(p=""),(c||"0"===n&&"="===r)&&(c=!0,n="0",r="="),this.fill=n,this.align=r,this.sign=i,this.symbol=u,this.zero=c,this.width=s,this.comma=l,this.precision=f,this.type=p}e.a=r;var o=n(116),a=/^(?:(.)?([<>=^]))?([+\-\( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?([a-z%])?$/i;r.prototype=i.prototype,i.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(null==this.width?"":Math.max(1,0|this.width))+(this.comma?",":"")+(null==this.precision?"":"."+Math.max(0,0|this.precision))+this.type}},function(t,e,n){"use strict";var r=n(220),i=n(114),o=n(223);e.a={"":r.a,"%":function(t,e){return(100*t).toFixed(e)},b:function(t){return Math.round(t).toString(2)},c:function(t){return t+""},d:function(t){return Math.round(t).toString(10)},e:function(t,e){return t.toExponential(e)},f:function(t,e){return t.toFixed(e)},g:function(t,e){return t.toPrecision(e)},o:function(t){return Math.round(t).toString(8)},p:function(t,e){return n.i(o.a)(100*t,e)},r:o.a,s:i.a,X:function(t){return Math.round(t).toString(16).toUpperCase()},x:function(t){return Math.round(t).toString(16)}}},function(t,e,n){"use strict";var r=n(42),i=n(221),o=n(222),a=n(115),u=n(116),c=n(114),s=n(224),l=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];e.a=function(t){function e(t){function e(t){var e,n,a,u=x,s=w;if("c"===b)s=C(t)+s,t="";else{t=+t;var h=t<0;if(t=C(Math.abs(t),_),h&&0==+t&&(h=!1),u=(h?"("===o?o:"-":"-"===o||"("===o?"":o)+u,s=("s"===b?l[8+c.b/3]:"")+s+(h&&"("===o?")":""),k)for(e=-1,n=t.length;++e<n;)if(48>(a=t.charCodeAt(e))||a>57){s=(46===a?d+t.slice(e+1):t.slice(e))+s,t=t.slice(0,e);break}}y&&!f&&(t=p(t,1/0));var g=u.length+t.length+s.length,E=g<m?new Array(m-g+1).join(r):"";switch(y&&f&&(t=p(E+t,E.length?m-s.length:1/0),E=""),i){case"<":t=u+t+s+E;break;case"=":t=u+E+t+s;break;case"^":t=E.slice(0,g=E.length>>1)+u+t+s+E.slice(g);break;default:t=E+u+t+s}return v(t)}t=n.i(a.a)(t);var r=t.fill,i=t.align,o=t.sign,s=t.symbol,f=t.zero,m=t.width,y=t.comma,_=t.precision,b=t.type,x="$"===s?h[0]:"#"===s&&/[boxX]/.test(b)?"0"+b.toLowerCase():"",w="$"===s?h[1]:/[%p]/.test(b)?g:"",C=u.a[b],k=!b||/[defgprs%]/.test(b);return _=null==_?b?6:12:/[gprs]/.test(b)?Math.max(1,Math.min(21,_)):Math.max(0,Math.min(20,_)),e.toString=function(){return t+""},e}function f(t,i){var o=e((t=n.i(a.a)(t),t.type="f",t)),u=3*Math.max(-8,Math.min(8,Math.floor(n.i(r.a)(i)/3))),c=Math.pow(10,-u),s=l[8+u/3];return function(t){return o(c*t)+s}}var p=t.grouping&&t.thousands?n.i(i.a)(t.grouping,t.thousands):s.a,h=t.currency,d=t.decimal,v=t.numerals?n.i(o.a)(t.numerals):s.a,g=t.percent||"%";return{format:e,formatPrefix:f}}},function(t,e,n){"use strict";var r=n(65);e.a=function(t,e){var i,o=e?e.length:0,a=t?Math.min(o,t.length):0,u=new Array(a),c=new Array(o);for(i=0;i<a;++i)u[i]=n.i(r.a)(t[i],e[i]);for(;i<o;++i)c[i]=e[i];return function(t){for(i=0;i<a;++i)c[i]=u[i](t);return c}}},function(t,e,n){"use strict";var r=n(64);e.a=function(t){var e=t.length;return function(i){var o=Math.floor(((i%=1)<0?++i:i)*e),a=t[(o+e-1)%e],u=t[o%e],c=t[(o+1)%e],s=t[(o+2)%e];return n.i(r.b)((i-o/e)*e,a,u,c,s)}}},function(t,e,n){"use strict";e.a=function(t){return function(){return t}}},function(t,e,n){"use strict";e.a=function(t,e){var n=new Date;return t=+t,e-=t,function(r){return n.setTime(t+e*r),n}}},function(t,e,n){"use strict";var r=n(65);e.a=function(t,e){var i,o={},a={};null!==t&&"object"==typeof t||(t={}),null!==e&&"object"==typeof e||(e={});for(i in e)i in t?o[i]=n.i(r.a)(t[i],e[i]):a[i]=e[i];return function(t){for(i in o)a[i]=o[i](t);return a}}},function(t,e,n){"use strict";function r(t){return function(e){var r,o,a=e.length,u=new Array(a),c=new Array(a),s=new Array(a);for(r=0;r<a;++r)o=n.i(i.rgb)(e[r]),u[r]=o.r||0,c[r]=o.g||0,s[r]=o.b||0;return u=t(u),c=t(c),s=t(s),o.opacity=1,function(t){return o.r=u(t),o.g=c(t),o.b=s(t),o+""}}}var i=n(10),o=n(64),a=n(119),u=n(31);e.a=function t(e){function r(t,e){var r=o((t=n.i(i.rgb)(t)).r,(e=n.i(i.rgb)(e)).r),a=o(t.g,e.g),c=o(t.b,e.b),s=n.i(u.a)(t.opacity,e.opacity);return function(e){return t.r=r(e),t.g=a(e),t.b=c(e),t.opacity=s(e),t+""}}var o=n.i(u.c)(e);return r.gamma=t,r}(1);r(o.a),r(a.a)},function(t,e,n){"use strict";function r(t){return function(){return t}}function i(t){return function(e){return t(e)+""}}var o=n(43),a=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,u=new RegExp(a.source,"g");e.a=function(t,e){var c,s,l,f=a.lastIndex=u.lastIndex=0,p=-1,h=[],d=[];for(t+="",e+="";(c=a.exec(t))&&(s=u.exec(e));)(l=s.index)>f&&(l=e.slice(f,l),h[p]?h[p]+=l:h[++p]=l),(c=c[0])===(s=s[0])?h[p]?h[p]+=s:h[++p]=s:(h[++p]=null,d.push({i:p,x:n.i(o.a)(c,s)})),f=u.lastIndex;return f<e.length&&(l=e.slice(f),h[p]?h[p]+=l:h[++p]=l),h.length<2?d[0]?i(d[0].x):r(e):(e=d.length,function(t){for(var n,r=0;r<e;++r)h[(n=d[r]).i]=n.x(t);return h.join("")})}},function(t,e,n){"use strict";e.a=function(t,e){t=t.slice();var n,r=0,i=t.length-1,o=t[r],a=t[i];return a<o&&(n=r,r=i,i=n,n=o,o=a,a=n),t[r]=e.floor(o),t[i]=e.ceil(a),t}},function(t,e,n){"use strict";e.a=function(t){return+t}},function(t,e,n){"use strict";function r(t){function e(e){var n=e+"",r=u.get(n);if(!r){if(s!==a)return s;u.set(n,r=c.push(e))}return t[(r-1)%t.length]}var u=n.i(i.a)(),c=[],s=a;return t=null==t?[]:o.b.call(t),e.domain=function(t){if(!arguments.length)return c.slice();c=[],u=n.i(i.a)();for(var r,o,a=-1,s=t.length;++a<s;)u.has(o=(r=t[a])+"")||u.set(o,c.push(r));return e},e.range=function(n){return arguments.length?(t=o.b.call(n),e):t.slice()},e.unknown=function(t){return arguments.length?(s=t,e):s},e.copy=function(){return r().domain(c).range(t).unknown(s)},e}n.d(e,"b",function(){return a}),e.a=r;var i=n(211),o=n(16),a={name:"implicit"}},function(t,e,n){"use strict";function r(t){return new Date(t)}function i(t){return t instanceof Date?+t:+new Date(+t)}function o(t,e,c,s,b,x,w,C,k){function E(n){return(w(n)<n?A:x(n)<n?P:b(n)<n?O:s(n)<n?I:e(n)<n?c(n)<n?D:R:t(n)<n?L:U)(n)}function M(e,r,i,o){if(null==e&&(e=10),"number"==typeof e){var u=Math.abs(i-r)/e,c=n.i(a.bisector)(function(t){return t[2]}).right(F,u);c===F.length?(o=n.i(a.tickStep)(r/_,i/_,e),e=t):c?(c=F[u/F[c-1][2]<F[c][2]/u?c-1:c],o=c[1],e=c[0]):(o=Math.max(n.i(a.tickStep)(r,i,e),1),e=C)}return null==o?e:e.every(o)}var T=n.i(f.a)(f.b,u.a),S=T.invert,N=T.domain,A=k(".%L"),P=k(":%S"),O=k("%I:%M"),I=k("%I %p"),D=k("%a %d"),R=k("%b %d"),L=k("%B"),U=k("%Y"),F=[[w,1,h],[w,5,5*h],[w,15,15*h],[w,30,30*h],[x,1,d],[x,5,5*d],[x,15,15*d],[x,30,30*d],[b,1,v],[b,3,3*v],[b,6,6*v],[b,12,12*v],[s,1,g],[s,2,2*g],[c,1,m],[e,1,y],[e,3,3*y],[t,1,_]];return T.invert=function(t){return new Date(S(t))},T.domain=function(t){return arguments.length?N(l.a.call(t,i)):N().map(r)},T.ticks=function(t,e){var n,r=N(),i=r[0],o=r[r.length-1],a=o<i;return a&&(n=i,i=o,o=n),n=M(t,i,o,e),n=n?n.range(i,o+1):[],a?n.reverse():n},T.tickFormat=function(t,e){return null==e?E:k(e)},T.nice=function(t,e){var r=N();return(t=M(t,r[0],r[r.length-1],e))?N(n.i(p.a)(r,t)):T},T.copy=function(){return n.i(f.c)(T,o(t,e,c,s,b,x,w,C,k))},T}e.b=o;var a=n(7),u=n(30),c=n(80),s=n(78),l=n(16),f=n(44),p=n(125),h=1e3,d=60*h,v=60*d,g=24*v,m=7*g,y=30*g,_=365*g;e.a=function(){return o(c.e,c.q,c.r,c.d,c.s,c.t,c.u,c.v,s.timeFormat).domain([new Date(2e3,0,1),new Date(2e3,0,2)])}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(257);n.d(e,"create",function(){return r.a});var i=n(45);n.d(e,"creator",function(){return i.a});var o=n(258);n.d(e,"local",function(){return o.a});var a=n(130);n.d(e,"matcher",function(){return a.a});var u=n(259);n.d(e,"mouse",function(){return u.a});var c=n(68);n.d(e,"namespace",function(){return c.a});var s=n(69);n.d(e,"namespaces",function(){return s.a});var l=n(46);n.d(e,"clientPoint",function(){return l.a});var f=n(131);n.d(e,"select",function(){return f.a});var p=n(260);n.d(e,"selectAll",function(){return p.a});var h=n(8);n.d(e,"selection",function(){return h.a});var d=n(71);n.d(e,"selector",function(){return d.a});var v=n(135);n.d(e,"selectorAll",function(){return v.a});var g=n(134);n.d(e,"style",function(){return g.a});var m=n(288);n.d(e,"touch",function(){return m.a});var y=n(289);n.d(e,"touches",function(){return y.a});var _=n(73);n.d(e,"window",function(){return _.a});var b=n(70);n.d(e,"event",function(){return b.a}),n.d(e,"customEvent",function(){return b.b})},function(t,e,n){"use strict";var r=function(t){return function(){return this.matches(t)}};if("undefined"!=typeof document){var i=document.documentElement;if(!i.matches){var o=i.webkitMatchesSelector||i.msMatchesSelector||i.mozMatchesSelector||i.oMatchesSelector;r=function(t){return function(){return o.call(this,t)}}}}e.a=r},function(t,e,n){"use strict";var r=n(8);e.a=function(t){return"string"==typeof t?new r.b([[document.querySelector(t)]],[document.documentElement]):new r.b([[t]],r.c)}},function(t,e,n){"use strict";function r(t,e){this.ownerDocument=t.ownerDocument,this.namespaceURI=t.namespaceURI,this._next=null,this._parent=t,this.__data__=e}e.b=r;var i=n(133),o=n(8);e.a=function(){return new o.b(this._enter||this._groups.map(i.a),this._parents)},r.prototype={constructor:r,appendChild:function(t){return this._parent.insertBefore(t,this._next)},insertBefore:function(t,e){return this._parent.insertBefore(t,e)},querySelector:function(t){return this._parent.querySelector(t)},querySelectorAll:function(t){return this._parent.querySelectorAll(t)}}},function(t,e,n){"use strict";e.a=function(t){return new Array(t.length)}},function(t,e,n){"use strict";function r(t){return function(){this.style.removeProperty(t)}}function i(t,e,n){return function(){this.style.setProperty(t,e,n)}}function o(t,e,n){return function(){var r=e.apply(this,arguments);null==r?this.style.removeProperty(t):this.style.setProperty(t,r,n)}}function a(t,e){return t.style.getPropertyValue(e)||n.i(u.a)(t).getComputedStyle(t,null).getPropertyValue(e)}e.a=a;var u=n(73);e.b=function(t,e,n){return arguments.length>1?this.each((null==e?r:"function"==typeof e?o:i)(t,e,null==n?"":n)):a(this.node(),t)}},function(t,e,n){"use strict";function r(){return[]}e.a=function(t){return null==t?r:function(){return this.querySelectorAll(t)}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(290);n.d(e,"arc",function(){return r.a});var i=n(137);n.d(e,"area",function(){return i.a});var o=n(75);n.d(e,"line",function(){return o.a});var a=n(311);n.d(e,"pie",function(){return a.a});var u=n(291);n.d(e,"areaRadial",function(){return u.a}),n.d(e,"radialArea",function(){return u.a});var c=n(142);n.d(e,"lineRadial",function(){return c.a}),n.d(e,"radialLine",function(){return c.a});var s=n(143);n.d(e,"pointRadial",function(){return s.a});var l=n(303);n.d(e,"linkHorizontal",function(){return l.a}),n.d(e,"linkVertical",function(){return l.b}),n.d(e,"linkRadial",function(){return l.c});var f=n(313);n.d(e,"symbol",function(){return f.a}),n.d(e,"symbols",function(){return f.b});var p=n(144);n.d(e,"symbolCircle",function(){return p.a});var h=n(145);n.d(e,"symbolCross",function(){return h.a});var d=n(146);n.d(e,"symbolDiamond",function(){return d.a});var v=n(147);n.d(e,"symbolSquare",function(){return v.a});var g=n(148);n.d(e,"symbolStar",function(){return g.a});var m=n(149);n.d(e,"symbolTriangle",function(){return m.a});var y=n(150);n.d(e,"symbolWye",function(){return y.a});var _=n(292);n.d(e,"curveBasisClosed",function(){return _.a});var b=n(293);n.d(e,"curveBasisOpen",function(){return b.a});var x=n(47);n.d(e,"curveBasis",function(){return x.a});var w=n(294);n.d(e,"curveBundle",function(){return w.a});var C=n(139);n.d(e,"curveCardinalClosed",function(){return C.a});var k=n(140);n.d(e,"curveCardinalOpen",function(){return k.a});var E=n(48);n.d(e,"curveCardinal",function(){return E.a});var M=n(295);n.d(e,"curveCatmullRomClosed",function(){return M.a});var T=n(296);n.d(e,"curveCatmullRomOpen",function(){return T.a});var S=n(74);n.d(e,"curveCatmullRom",function(){return S.a});var N=n(297);n.d(e,"curveLinearClosed",function(){return N.a});var A=n(49);n.d(e,"curveLinear",function(){return A.a});var P=n(298);n.d(e,"curveMonotoneX",function(){return P.a}),n.d(e,"curveMonotoneY",function(){return P.b});var O=n(299);n.d(e,"curveNatural",function(){return O.a});var I=n(300);n.d(e,"curveStep",function(){return I.a}),n.d(e,"curveStepAfter",function(){return I.b}),n.d(e,"curveStepBefore",function(){return I.c});var D=n(312);n.d(e,"stack",function(){return D.a});var R=n(305);n.d(e,"stackOffsetExpand",function(){return R.a});var L=n(304);n.d(e,"stackOffsetDiverging",function(){return L.a});var U=n(36);n.d(e,"stackOffsetNone",function(){return U.a});var F=n(306);n.d(e,"stackOffsetSilhouette",function(){return F.a});var j=n(307);n.d(e,"stackOffsetWiggle",function(){return j.a});var B=n(76);n.d(e,"stackOrderAscending",function(){return B.a});var V=n(308);n.d(e,"stackOrderDescending",function(){return V.a});var W=n(309);n.d(e,"stackOrderInsideOut",function(){return W.a});var z=n(37);n.d(e,"stackOrderNone",function(){return z.a});var H=n(310);n.d(e,"stackOrderReverse",function(){return H.a})},function(t,e,n){"use strict";var r=n(32),i=n(17),o=n(49),a=n(75),u=n(77);e.a=function(){function t(t){var e,i,o,a,u,g=t.length,m=!1,y=new Array(g),_=new Array(g);for(null==h&&(v=d(u=n.i(r.a)())),e=0;e<=g;++e){if(!(e<g&&p(a=t[e],e,t))===m)if(m=!m)i=e,v.areaStart(),v.lineStart();else{for(v.lineEnd(),v.lineStart(),o=e-1;o>=i;--o)v.point(y[o],_[o]);v.lineEnd(),v.areaEnd()}m&&(y[e]=+c(a,e,t),_[e]=+l(a,e,t),v.point(s?+s(a,e,t):y[e],f?+f(a,e,t):_[e]))}if(u)return v=null,u+""||null}function e(){return n.i(a.a)().defined(p).curve(d).context(h)}var c=u.a,s=null,l=n.i(i.a)(0),f=u.b,p=n.i(i.a)(!0),h=null,d=o.a,v=null;return t.x=function(e){return arguments.length?(c="function"==typeof e?e:n.i(i.a)(+e),s=null,t):c},t.x0=function(e){return arguments.length?(c="function"==typeof e?e:n.i(i.a)(+e),t):c},t.x1=function(e){return arguments.length?(s=null==e?null:"function"==typeof e?e:n.i(i.a)(+e),t):s},t.y=function(e){return arguments.length?(l="function"==typeof e?e:n.i(i.a)(+e),f=null,t):l},t.y0=function(e){return arguments.length?(l="function"==typeof e?e:n.i(i.a)(+e),t):l},t.y1=function(e){return arguments.length?(f=null==e?null:"function"==typeof e?e:n.i(i.a)(+e),t):f},t.lineX0=t.lineY0=function(){return e().x(c).y(l)},t.lineY1=function(){return e().x(c).y(f)},t.lineX1=function(){return e().x(s).y(l)},t.defined=function(e){return arguments.length?(p="function"==typeof e?e:n.i(i.a)(!!e),t):p},t.curve=function(e){return arguments.length?(d=e,null!=h&&(v=d(h)),t):d},t.context=function(e){return arguments.length?(null==e?h=v=null:v=d(h=e),t):h},t}},function(t,e,n){"use strict";n.d(e,"a",function(){return r});var r=Array.prototype.slice},function(t,e,n){"use strict";function r(t,e){this._context=t,this._k=(1-e)/6}e.b=r;var i=n(50),o=n(48);r.prototype={areaStart:i.a,areaEnd:i.a,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._x3=t,this._y3=e;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=e);break;case 2:this._point=3,this._x5=t,this._y5=e;break;default:n.i(o.c)(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}},e.a=function t(e){function n(t){return new r(t,e)}return n.tension=function(e){return t(+e)},n}(0)},function(t,e,n){"use strict";function r(t,e){this._context=t,this._k=(1-e)/6}e.b=r;var i=n(48);r.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:n.i(i.c)(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}},e.a=function t(e){function n(t){return new r(t,e)}return n.tension=function(e){return t(+e)},n}(0)},function(t,e,n){"use strict";function r(t){this._curve=t}function i(t){function e(e){return new r(t(e))}return e._curve=t,e}n.d(e,"b",function(){return a}),e.a=i;var o=n(49),a=i(o.a);r.prototype={areaStart:function(){this._curve.areaStart()},areaEnd:function(){this._curve.areaEnd()},lineStart:function(){this._curve.lineStart()},lineEnd:function(){this._curve.lineEnd()},point:function(t,e){this._curve.point(e*Math.sin(t),e*-Math.cos(t))}}},function(t,e,n){"use strict";function r(t){var e=t.curve;return t.angle=t.x,delete t.x,t.radius=t.y,delete t.y,t.curve=function(t){return arguments.length?e(n.i(i.a)(t)):e()._curve},t}e.b=r;var i=n(141),o=n(75);e.a=function(){return r(n.i(o.a)().curve(i.b))}},function(t,e,n){"use strict";e.a=function(t,e){return[(e=+e)*Math.cos(t-=Math.PI/2),e*Math.sin(t)]}},function(t,e,n){"use strict";var r=n(35);e.a={draw:function(t,e){var n=Math.sqrt(e/r.b);t.moveTo(n,0),t.arc(0,0,n,0,r.c)}}},function(t,e,n){"use strict";e.a={draw:function(t,e){var n=Math.sqrt(e/5)/2;t.moveTo(-3*n,-n),t.lineTo(-n,-n),t.lineTo(-n,-3*n),t.lineTo(n,-3*n),t.lineTo(n,-n),t.lineTo(3*n,-n),t.lineTo(3*n,n),t.lineTo(n,n),t.lineTo(n,3*n),t.lineTo(-n,3*n),t.lineTo(-n,n),t.lineTo(-3*n,n),t.closePath()}}},function(t,e,n){"use strict";var r=Math.sqrt(1/3),i=2*r;e.a={draw:function(t,e){var n=Math.sqrt(e/i),o=n*r;t.moveTo(0,-n),t.lineTo(o,0),t.lineTo(0,n),t.lineTo(-o,0),t.closePath()}}},function(t,e,n){"use strict";e.a={draw:function(t,e){var n=Math.sqrt(e),r=-n/2;t.rect(r,r,n,n)}}},function(t,e,n){"use strict";var r=n(35),i=Math.sin(r.b/10)/Math.sin(7*r.b/10),o=Math.sin(r.c/10)*i,a=-Math.cos(r.c/10)*i;e.a={draw:function(t,e){var n=Math.sqrt(.8908130915292852*e),i=o*n,u=a*n;t.moveTo(0,-n),t.lineTo(i,u);for(var c=1;c<5;++c){var s=r.c*c/5,l=Math.cos(s),f=Math.sin(s);t.lineTo(f*n,-l*n),t.lineTo(l*i-f*u,f*i+l*u)}t.closePath()}}},function(t,e,n){"use strict";var r=Math.sqrt(3);e.a={draw:function(t,e){var n=-Math.sqrt(e/(3*r));t.moveTo(0,2*n),t.lineTo(-r*n,-n),t.lineTo(r*n,-n),t.closePath()}}},function(t,e,n){"use strict";var r=-.5,i=Math.sqrt(3)/2,o=1/Math.sqrt(12),a=3*(o/2+1);e.a={draw:function(t,e){var n=Math.sqrt(e/a),u=n/2,c=n*o,s=u,l=n*o+n,f=-s,p=l;t.moveTo(u,c),t.lineTo(s,l),t.lineTo(f,p),t.lineTo(r*u-i*c,i*u+r*c),t.lineTo(r*s-i*l,i*s+r*l),t.lineTo(r*f-i*p,i*f+r*p),t.lineTo(r*u+i*c,r*c-i*u),t.lineTo(r*s+i*l,r*l-i*s),t.lineTo(r*f+i*p,r*p-i*f),t.closePath()}}},function(t,e,n){"use strict";function r(t){return t.toISOString()}n.d(e,"b",function(){return o});var i=n(79),o="%Y-%m-%dT%H:%M:%S.%LZ",a=Date.prototype.toISOString?r:n.i(i.d)(o);e.a=a},function(t,e,n){"use strict";function r(t){if(0<=t.y&&t.y<100){var e=new Date(-1,t.m,t.d,t.H,t.M,t.S,t.L);return e.setFullYear(t.y),e}return new Date(t.y,t.m,t.d,t.H,t.M,t.S,t.L)}function i(t){if(0<=t.y&&t.y<100){var e=new Date(Date.UTC(-1,t.m,t.d,t.H,t.M,t.S,t.L));return e.setUTCFullYear(t.y),e}return new Date(Date.UTC(t.y,t.m,t.d,t.H,t.M,t.S,t.L))}function o(t){return{y:t,m:0,d:1,H:0,M:0,S:0,L:0}}function a(t){function e(t,e){return function(n){var r,i,o,a=[],u=-1,c=0,s=t.length;for(n instanceof Date||(n=new Date(+n));++u<s;)37===t.charCodeAt(u)&&(a.push(t.slice(c,u)),null!=(i=dt[r=t.charAt(++u)])?r=t.charAt(++u):i="e"===r?" ":"0",(o=e[r])&&(r=o(n,i)),a.push(r),c=u+1);return a.push(t.slice(c,u)),a.join("")}}function a(t,e){return function(r){var a,c,s=o(1900),l=u(s,t,r+="",0);if(l!=r.length)return null;if("Q"in s)return new Date(s.Q);if("p"in s&&(s.H=s.H%12+12*s.p),"V"in s){if(s.V<1||s.V>53)return null;"w"in s||(s.w=1),"Z"in s?(a=i(o(s.y)),c=a.getUTCDay(),a=c>4||0===c?ht.a.ceil(a):n.i(ht.a)(a),a=ht.b.offset(a,7*(s.V-1)),s.y=a.getUTCFullYear(),s.m=a.getUTCMonth(),s.d=a.getUTCDate()+(s.w+6)%7):(a=e(o(s.y)),c=a.getDay(),a=c>4||0===c?ht.c.ceil(a):n.i(ht.c)(a),a=ht.d.offset(a,7*(s.V-1)),s.y=a.getFullYear(),s.m=a.getMonth(),s.d=a.getDate()+(s.w+6)%7)}else("W"in s||"U"in s)&&("w"in s||(s.w="u"in s?s.u%7:"W"in s?1:0),c="Z"in s?i(o(s.y)).getUTCDay():e(o(s.y)).getDay(),s.m=0,s.d="W"in s?(s.w+6)%7+7*s.W-(c+5)%7:s.w+7*s.U-(c+6)%7);return"Z"in s?(s.H+=s.Z/100|0,s.M+=s.Z%100,i(s)):e(s)}}function u(t,e,n,r){for(var i,o,a=0,u=e.length,c=n.length;a<u;){if(r>=c)return-1;if(37===(i=e.charCodeAt(a++))){if(i=e.charAt(a++),!(o=Zt[i in dt?e.charAt(a++):i])||(r=o(t,n,r))<0)return-1}else if(i!=n.charCodeAt(r++))return-1}return r}function c(t,e,n){var r=Bt.exec(e.slice(n));return r?(t.p=Vt[r[0].toLowerCase()],n+r[0].length):-1}function vt(t,e,n){var r=Ht.exec(e.slice(n));return r?(t.w=qt[r[0].toLowerCase()],n+r[0].length):-1}function gt(t,e,n){var r=Wt.exec(e.slice(n));return r?(t.w=zt[r[0].toLowerCase()],n+r[0].length):-1}function mt(t,e,n){var r=Gt.exec(e.slice(n));return r?(t.m=$t[r[0].toLowerCase()],n+r[0].length):-1}function yt(t,e,n){var r=Yt.exec(e.slice(n));return r?(t.m=Kt[r[0].toLowerCase()],n+r[0].length):-1}function _t(t,e,n){return u(t,Ot,e,n)}function bt(t,e,n){return u(t,It,e,n)}function xt(t,e,n){return u(t,Dt,e,n)}function wt(t){return Ut[t.getDay()]}function Ct(t){return Lt[t.getDay()]}function kt(t){return jt[t.getMonth()]}function Et(t){return Ft[t.getMonth()]}function Mt(t){return Rt[+(t.getHours()>=12)]}function Tt(t){return Ut[t.getUTCDay()]}function St(t){return Lt[t.getUTCDay()]}function Nt(t){return jt[t.getUTCMonth()]}function At(t){return Ft[t.getUTCMonth()]}function Pt(t){return Rt[+(t.getUTCHours()>=12)]}var Ot=t.dateTime,It=t.date,Dt=t.time,Rt=t.periods,Lt=t.days,Ut=t.shortDays,Ft=t.months,jt=t.shortMonths,Bt=s(Rt),Vt=l(Rt),Wt=s(Lt),zt=l(Lt),Ht=s(Ut),qt=l(Ut),Yt=s(Ft),Kt=l(Ft),Gt=s(jt),$t=l(jt),Xt={a:wt,A:Ct,b:kt,B:Et,c:null,d:A,e:A,f:R,H:P,I:O,j:I,L:D,m:L,M:U,p:Mt,Q:ft,s:pt,S:F,u:j,U:B,V:V,w:W,W:z,x:null,X:null,y:H,Y:q,Z:Y,"%":lt},Qt={a:Tt,A:St,b:Nt,B:At,c:null,d:K,e:K,f:Z,H:G,I:$,j:X,L:Q,m:J,M:tt,p:Pt,Q:ft,s:pt,S:et,u:nt,U:rt,V:it,w:ot,W:at,x:null,X:null,y:ut,Y:ct,Z:st,"%":lt},Zt={a:vt,A:gt,b:mt,B:yt,c:_t,d:b,e:b,f:M,H:w,I:w,j:x,L:E,m:_,M:C,p:c,Q:S,s:N,S:k,u:p,U:h,V:d,w:f,W:v,x:bt,X:xt,y:m,Y:g,Z:y,"%":T};return Xt.x=e(It,Xt),Xt.X=e(Dt,Xt),Xt.c=e(Ot,Xt),Qt.x=e(It,Qt),Qt.X=e(Dt,Qt),Qt.c=e(Ot,Qt),{format:function(t){var n=e(t+="",Xt);return n.toString=function(){return t},n},parse:function(t){var e=a(t+="",r);return e.toString=function(){return t},e},utcFormat:function(t){var n=e(t+="",Qt);return n.toString=function(){return t},n},utcParse:function(t){var e=a(t,i);return e.toString=function(){return t},e}}}function u(t,e,n){var r=t<0?"-":"",i=(r?-t:t)+"",o=i.length;return r+(o<n?new Array(n-o+1).join(e)+i:i)}function c(t){return t.replace(mt,"\\$&")}function s(t){return new RegExp("^(?:"+t.map(c).join("|")+")","i")}function l(t){for(var e={},n=-1,r=t.length;++n<r;)e[t[n].toLowerCase()]=n;return e}function f(t,e,n){var r=vt.exec(e.slice(n,n+1));return r?(t.w=+r[0],n+r[0].length):-1}function p(t,e,n){var r=vt.exec(e.slice(n,n+1));return r?(t.u=+r[0],n+r[0].length):-1}function h(t,e,n){var r=vt.exec(e.slice(n,n+2));return r?(t.U=+r[0],n+r[0].length):-1}function d(t,e,n){var r=vt.exec(e.slice(n,n+2));return r?(t.V=+r[0],n+r[0].length):-1}function v(t,e,n){var r=vt.exec(e.slice(n,n+2));return r?(t.W=+r[0],n+r[0].length):-1}function g(t,e,n){var r=vt.exec(e.slice(n,n+4));return r?(t.y=+r[0],n+r[0].length):-1}function m(t,e,n){var r=vt.exec(e.slice(n,n+2));return r?(t.y=+r[0]+(+r[0]>68?1900:2e3),n+r[0].length):-1}function y(t,e,n){var r=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(e.slice(n,n+6));return r?(t.Z=r[1]?0:-(r[2]+(r[3]||"00")),n+r[0].length):-1}function _(t,e,n){var r=vt.exec(e.slice(n,n+2));return r?(t.m=r[0]-1,n+r[0].length):-1}function b(t,e,n){var r=vt.exec(e.slice(n,n+2));return r?(t.d=+r[0],n+r[0].length):-1}function x(t,e,n){var r=vt.exec(e.slice(n,n+3));return r?(t.m=0,t.d=+r[0],n+r[0].length):-1}function w(t,e,n){var r=vt.exec(e.slice(n,n+2));return r?(t.H=+r[0],n+r[0].length):-1}function C(t,e,n){var r=vt.exec(e.slice(n,n+2));return r?(t.M=+r[0],n+r[0].length):-1}function k(t,e,n){var r=vt.exec(e.slice(n,n+2));return r?(t.S=+r[0],n+r[0].length):-1}function E(t,e,n){var r=vt.exec(e.slice(n,n+3));return r?(t.L=+r[0],n+r[0].length):-1}function M(t,e,n){var r=vt.exec(e.slice(n,n+6));return r?(t.L=Math.floor(r[0]/1e3),n+r[0].length):-1}function T(t,e,n){var r=gt.exec(e.slice(n,n+1));return r?n+r[0].length:-1}function S(t,e,n){var r=vt.exec(e.slice(n));return r?(t.Q=+r[0],n+r[0].length):-1}function N(t,e,n){var r=vt.exec(e.slice(n));return r?(t.Q=1e3*+r[0],n+r[0].length):-1}function A(t,e){return u(t.getDate(),e,2)}function P(t,e){return u(t.getHours(),e,2)}function O(t,e){return u(t.getHours()%12||12,e,2)}function I(t,e){return u(1+ht.d.count(n.i(ht.e)(t),t),e,3)}function D(t,e){return u(t.getMilliseconds(),e,3)}function R(t,e){return D(t,e)+"000"}function L(t,e){return u(t.getMonth()+1,e,2)}function U(t,e){return u(t.getMinutes(),e,2)}function F(t,e){return u(t.getSeconds(),e,2)}function j(t){var e=t.getDay();return 0===e?7:e}function B(t,e){return u(ht.f.count(n.i(ht.e)(t),t),e,2)}function V(t,e){var r=t.getDay();return t=r>=4||0===r?n.i(ht.g)(t):ht.g.ceil(t),u(ht.g.count(n.i(ht.e)(t),t)+(4===n.i(ht.e)(t).getDay()),e,2)}function W(t){return t.getDay()}function z(t,e){return u(ht.c.count(n.i(ht.e)(t),t),e,2)}function H(t,e){return u(t.getFullYear()%100,e,2)}function q(t,e){return u(t.getFullYear()%1e4,e,4)}function Y(t){var e=t.getTimezoneOffset();return(e>0?"-":(e*=-1,"+"))+u(e/60|0,"0",2)+u(e%60,"0",2)}function K(t,e){return u(t.getUTCDate(),e,2)}function G(t,e){return u(t.getUTCHours(),e,2)}function $(t,e){return u(t.getUTCHours()%12||12,e,2)}function X(t,e){return u(1+ht.b.count(n.i(ht.h)(t),t),e,3)}function Q(t,e){return u(t.getUTCMilliseconds(),e,3)}function Z(t,e){return Q(t,e)+"000"}function J(t,e){return u(t.getUTCMonth()+1,e,2)}function tt(t,e){return u(t.getUTCMinutes(),e,2)}function et(t,e){return u(t.getUTCSeconds(),e,2)}function nt(t){var e=t.getUTCDay();return 0===e?7:e}function rt(t,e){return u(ht.i.count(n.i(ht.h)(t),t),e,2)}function it(t,e){var r=t.getUTCDay();return t=r>=4||0===r?n.i(ht.j)(t):ht.j.ceil(t),u(ht.j.count(n.i(ht.h)(t),t)+(4===n.i(ht.h)(t).getUTCDay()),e,2)}function ot(t){return t.getUTCDay()}function at(t,e){return u(ht.a.count(n.i(ht.h)(t),t),e,2)}function ut(t,e){return u(t.getUTCFullYear()%100,e,2)}function ct(t,e){return u(t.getUTCFullYear()%1e4,e,4)}function st(){return"+0000"}function lt(){return"%"}function ft(t){return+t}function pt(t){return Math.floor(+t/1e3)}e.a=a;var ht=n(80),dt={"-":"",_:" ",0:"0"},vt=/^\s*\d+/,gt=/^%/,mt=/[\\^$*+?|[\]().{}]/g},function(t,e,n){"use strict";var r=n(11),i={listen:function(t,e,n){return t.addEventListener?(t.addEventListener(e,n,!1),{remove:function(){t.removeEventListener(e,n,!1)}}):t.attachEvent?(t.attachEvent("on"+e,n),{remove:function(){t.detachEvent("on"+e,n)}}):void 0},capture:function(t,e,n){return t.addEventListener?(t.addEventListener(e,n,!0),{remove:function(){t.removeEventListener(e,n,!0)}}):{remove:r}},registerDefault:function(){}};t.exports=i},function(t,e,n){"use strict";function r(t){try{t.focus()}catch(t){}}t.exports=r},function(t,e,n){"use strict";function r(t){if(void 0===(t=t||("undefined"!=typeof document?document:void 0)))return null;try{return t.activeElement||t.body}catch(e){return t.body}}t.exports=r},function(t,e){function n(){throw new Error("setTimeout has not been defined")}function r(){throw new Error("clearTimeout has not been defined")}function i(t){if(l===setTimeout)return setTimeout(t,0);if((l===n||!l)&&setTimeout)return l=setTimeout,setTimeout(t,0);try{return l(t,0)}catch(e){try{return l.call(null,t,0)}catch(e){return l.call(this,t,0)}}}function o(t){if(f===clearTimeout)return clearTimeout(t);if((f===r||!f)&&clearTimeout)return f=clearTimeout,clearTimeout(t);try{return f(t)}catch(e){try{return f.call(null,t)}catch(e){return f.call(this,t)}}}function a(){v&&h&&(v=!1,h.length?d=h.concat(d):g=-1,d.length&&u())}function u(){if(!v){var t=i(a);v=!0;for(var e=d.length;e;){for(h=d,d=[];++g<e;)h&&h[g].run();g=-1,e=d.length}h=null,v=!1,o(t)}}function c(t,e){this.fun=t,this.array=e}function s(){}var l,f,p=t.exports={};!function(){try{l="function"==typeof setTimeout?setTimeout:n}catch(t){l=n}try{f="function"==typeof clearTimeout?clearTimeout:r}catch(t){f=r}}();var h,d=[],v=!1,g=-1;p.nextTick=function(t){var e=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)e[n-1]=arguments[n];d.push(new c(t,e)),1!==d.length||v||i(u)},c.prototype.run=function(){this.fun.apply(null,this.array)},p.title="browser",p.browser=!0,p.env={},p.argv=[],p.version="",p.versions={},p.on=s,p.addListener=s,p.once=s,p.off=s,p.removeListener=s,p.removeAllListeners=s,p.emit=s,p.prependListener=s,p.prependOnceListener=s,p.listeners=function(t){return[]},p.binding=function(t){throw new Error("process.binding is not supported")},p.cwd=function(){return"/"},p.chdir=function(t){throw new Error("process.chdir is not supported")},p.umask=function(){return 0}},function(t,e,n){"use strict";var r=n(343);t.exports=function(t){return r(t,!1)}},function(t,e,n){"use strict";function r(t,e){return t+e.charAt(0).toUpperCase()+e.substring(1)}var i={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},o=["Webkit","ms","Moz","O"];Object.keys(i).forEach(function(t){o.forEach(function(e){i[r(e,t)]=i[t]})});var a={background:{backgroundAttachment:!0,backgroundColor:!0,backgroundImage:!0,backgroundPositionX:!0,backgroundPositionY:!0,backgroundRepeat:!0},backgroundPosition:{backgroundPositionX:!0,backgroundPositionY:!0},border:{borderWidth:!0,borderStyle:!0,borderColor:!0},borderBottom:{borderBottomWidth:!0,borderBottomStyle:!0,borderBottomColor:!0},borderLeft:{borderLeftWidth:!0,borderLeftStyle:!0,borderLeftColor:!0},borderRight:{borderRightWidth:!0,borderRightStyle:!0,borderRightColor:!0},borderTop:{borderTopWidth:!0,borderTopStyle:!0,borderTopColor:!0},font:{fontStyle:!0,fontVariant:!0,fontWeight:!0,fontSize:!0,lineHeight:!0,fontFamily:!0},outline:{outlineWidth:!0,outlineStyle:!0,outlineColor:!0}},u={isUnitlessNumber:i,shorthandPropertyExpansions:a};t.exports=u},function(t,e,n){"use strict";function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var i=n(1),o=n(18),a=(n(0),function(){function t(e){r(this,t),this._callbacks=null,this._contexts=null,this._arg=e}return t.prototype.enqueue=function(t,e){this._callbacks=this._callbacks||[],this._callbacks.push(t),this._contexts=this._contexts||[],this._contexts.push(e)},t.prototype.notifyAll=function(){var t=this._callbacks,e=this._contexts,n=this._arg;if(t&&e){t.length!==e.length&&i("24"),this._callbacks=null,this._contexts=null;for(var r=0;r<t.length;r++)t[r].call(e[r],n);t.length=0,e.length=0}},t.prototype.checkpoint=function(){return this._callbacks?this._callbacks.length:0},t.prototype.rollback=function(t){this._callbacks&&this._contexts&&(this._callbacks.length=t,this._contexts.length=t)},t.prototype.reset=function(){this._callbacks=null,this._contexts=null},t.prototype.destructor=function(){this.reset()},t}());t.exports=o.addPoolingTo(a)},function(t,e,n){"use strict";function r(t){return!!s.hasOwnProperty(t)||!c.hasOwnProperty(t)&&(u.test(t)?(s[t]=!0,!0):(c[t]=!0,!1))}function i(t,e){return null==e||t.hasBooleanValue&&!e||t.hasNumericValue&&isNaN(e)||t.hasPositiveNumericValue&&e<1||t.hasOverloadedBooleanValue&&!1===e}var o=n(21),a=(n(4),n(9),n(407)),u=(n(2),new RegExp("^["+o.ATTRIBUTE_NAME_START_CHAR+"]["+o.ATTRIBUTE_NAME_CHAR+"]*$")),c={},s={},l={createMarkupForID:function(t){return o.ID_ATTRIBUTE_NAME+"="+a(t)},setAttributeForID:function(t,e){t.setAttribute(o.ID_ATTRIBUTE_NAME,e)},createMarkupForRoot:function(){return o.ROOT_ATTRIBUTE_NAME+'=""'},setAttributeForRoot:function(t){t.setAttribute(o.ROOT_ATTRIBUTE_NAME,"")},createMarkupForProperty:function(t,e){var n=o.properties.hasOwnProperty(t)?o.properties[t]:null;if(n){if(i(n,e))return"";var r=n.attributeName;return n.hasBooleanValue||n.hasOverloadedBooleanValue&&!0===e?r+'=""':r+"="+a(e)}return o.isCustomAttribute(t)?null==e?"":t+"="+a(e):null},createMarkupForCustomAttribute:function(t,e){return r(t)&&null!=e?t+"="+a(e):""},setValueForProperty:function(t,e,n){var r=o.properties.hasOwnProperty(e)?o.properties[e]:null;if(r){var a=r.mutationMethod;if(a)a(t,n);else{if(i(r,n))return void this.deleteValueForProperty(t,e);if(r.mustUseProperty)t[r.propertyName]=n;else{var u=r.attributeName,c=r.attributeNamespace;c?t.setAttributeNS(c,u,""+n):r.hasBooleanValue||r.hasOverloadedBooleanValue&&!0===n?t.setAttribute(u,""):t.setAttribute(u,""+n)}}}else if(o.isCustomAttribute(e))return void l.setValueForAttribute(t,e,n)},setValueForAttribute:function(t,e,n){if(r(e)){null==n?t.removeAttribute(e):t.setAttribute(e,""+n)}},deleteValueForAttribute:function(t,e){t.removeAttribute(e)},deleteValueForProperty:function(t,e){var n=o.properties.hasOwnProperty(e)?o.properties[e]:null;if(n){var r=n.mutationMethod;if(r)r(t,void 0);else if(n.mustUseProperty){var i=n.propertyName;n.hasBooleanValue?t[i]=!1:t[i]=""}else t.removeAttribute(n.attributeName)}else o.isCustomAttribute(e)&&t.removeAttribute(e)}};t.exports=l},function(t,e,n){"use strict";var r={hasCachedChildNodes:1};t.exports=r},function(t,e,n){"use strict";function r(){if(this._rootNodeID&&this._wrapperState.pendingUpdate){this._wrapperState.pendingUpdate=!1;var t=this._currentElement.props,e=u.getValue(t);null!=e&&i(this,Boolean(t.multiple),e)}}function i(t,e,n){var r,i,o=c.getNodeFromInstance(t).options;if(e){for(r={},i=0;i<n.length;i++)r[""+n[i]]=!0;for(i=0;i<o.length;i++){var a=r.hasOwnProperty(o[i].value);o[i].selected!==a&&(o[i].selected=a)}}else{for(r=""+n,i=0;i<o.length;i++)if(o[i].value===r)return void(o[i].selected=!0);o.length&&(o[0].selected=!0)}}function o(t){var e=this._currentElement.props,n=u.executeOnChange(e,t);return this._rootNodeID&&(this._wrapperState.pendingUpdate=!0),s.asap(r,this),n}var a=n(3),u=n(86),c=n(4),s=n(12),l=(n(2),!1),f={getHostProps:function(t,e){return a({},e,{onChange:t._wrapperState.onChange,value:void 0})},mountWrapper:function(t,e){var n=u.getValue(e);t._wrapperState={pendingUpdate:!1,initialValue:null!=n?n:e.defaultValue,listeners:null,onChange:o.bind(t),wasMultiple:Boolean(e.multiple)},void 0===e.value||void 0===e.defaultValue||l||(l=!0)},getSelectValueContext:function(t){return t._wrapperState.initialValue},postUpdateWrapper:function(t){var e=t._currentElement.props;t._wrapperState.initialValue=void 0;var n=t._wrapperState.wasMultiple;t._wrapperState.wasMultiple=Boolean(e.multiple);var r=u.getValue(e);null!=r?(t._wrapperState.pendingUpdate=!1,i(t,Boolean(e.multiple),r)):n!==Boolean(e.multiple)&&(null!=e.defaultValue?i(t,Boolean(e.multiple),e.defaultValue):i(t,Boolean(e.multiple),e.multiple?[]:""))}};t.exports=f},function(t,e,n){"use strict";var r,i={injectEmptyComponentFactory:function(t){r=t}},o={create:function(t){return r(t)}};o.injection=i,t.exports=o},function(t,e,n){"use strict";var r={logTopLevelRenders:!1};t.exports=r},function(t,e,n){"use strict";function r(t){return u||a("111",t.type),new u(t)}function i(t){return new c(t)}function o(t){return t instanceof c}var a=n(1),u=(n(0),null),c=null,s={injectGenericComponentClass:function(t){u=t},injectTextComponentClass:function(t){c=t}},l={createInternalComponent:r,createInstanceForText:i,isTextComponent:o,injection:s};t.exports=l},function(t,e,n){"use strict";function r(t){return o(document.documentElement,t)}var i=n(367),o=n(331),a=n(154),u=n(155),c={hasSelectionCapabilities:function(t){var e=t&&t.nodeName&&t.nodeName.toLowerCase();return e&&("input"===e&&"text"===t.type||"textarea"===e||"true"===t.contentEditable)},getSelectionInformation:function(){var t=u();return{focusedElem:t,selectionRange:c.hasSelectionCapabilities(t)?c.getSelection(t):null}},restoreSelection:function(t){var e=u(),n=t.focusedElem,i=t.selectionRange;e!==n&&r(n)&&(c.hasSelectionCapabilities(n)&&c.setSelection(n,i),a(n))},getSelection:function(t){var e;if("selectionStart"in t)e={start:t.selectionStart,end:t.selectionEnd};else if(document.selection&&t.nodeName&&"input"===t.nodeName.toLowerCase()){var n=document.selection.createRange();n.parentElement()===t&&(e={start:-n.moveStart("character",-t.value.length),end:-n.moveEnd("character",-t.value.length)})}else e=i.getOffsets(t);return e||{start:0,end:0}},setSelection:function(t,e){var n=e.start,r=e.end;if(void 0===r&&(r=n),"selectionStart"in t)t.selectionStart=n,t.selectionEnd=Math.min(r,t.value.length);else if(document.selection&&t.nodeName&&"input"===t.nodeName.toLowerCase()){var o=t.createTextRange();o.collapse(!0),o.moveStart("character",n),o.moveEnd("character",r-n),o.select()}else i.setOffsets(t,e)}};t.exports=c},function(t,e,n){"use strict";function r(t,e){for(var n=Math.min(t.length,e.length),r=0;r<n;r++)if(t.charAt(r)!==e.charAt(r))return r;return t.length===e.length?-1:n}function i(t){return t?t.nodeType===D?t.documentElement:t.firstChild:null}function o(t){return t.getAttribute&&t.getAttribute(P)||""}function a(t,e,n,r,i){var o;if(x.logTopLevelRenders){var a=t._currentElement.props.child,u=a.type;o="React mount: "+("string"==typeof u?u:u.displayName||u.name),console.time(o)}var c=k.mountComponent(t,n,null,_(t,e),i,0);o&&console.timeEnd(o),t._renderedComponent._topLevelWrapper=t,j._mountImageIntoNode(c,e,t,r,n)}function u(t,e,n,r){var i=M.ReactReconcileTransaction.getPooled(!n&&b.useCreateElement);i.perform(a,null,t,e,i,n,r),M.ReactReconcileTransaction.release(i)}function c(t,e,n){for(k.unmountComponent(t,n),e.nodeType===D&&(e=e.documentElement);e.lastChild;)e.removeChild(e.lastChild)}function s(t){var e=i(t);if(e){var n=y.getInstanceFromNode(e);return!(!n||!n._hostParent)}}function l(t){return!(!t||t.nodeType!==I&&t.nodeType!==D&&t.nodeType!==R)}function f(t){var e=i(t),n=e&&y.getInstanceFromNode(e);return n&&!n._hostParent?n:null}function p(t){var e=f(t);return e?e._hostContainerInfo._topLevelWrapper:null}var h=n(1),d=n(20),v=n(21),g=n(26),m=n(53),y=(n(15),n(4)),_=n(361),b=n(363),x=n(164),w=n(39),C=(n(9),n(377)),k=n(24),E=n(89),M=n(12),T=n(51),S=n(174),N=(n(0),n(57)),A=n(96),P=(n(2),v.ID_ATTRIBUTE_NAME),O=v.ROOT_ATTRIBUTE_NAME,I=1,D=9,R=11,L={},U=1,F=function(){this.rootID=U++};F.prototype.isReactComponent={},F.prototype.render=function(){return this.props.child},F.isReactTopLevelWrapper=!0;var j={TopLevelWrapper:F,_instancesByReactRootID:L,scrollMonitor:function(t,e){e()},_updateRootComponent:function(t,e,n,r,i){return j.scrollMonitor(r,function(){E.enqueueElementInternal(t,e,n),i&&E.enqueueCallbackInternal(t,i)}),t},_renderNewRootComponent:function(t,e,n,r){l(e)||h("37"),m.ensureScrollValueMonitoring();var i=S(t,!1);M.batchedUpdates(u,i,e,n,r);var o=i._instance.rootID;return L[o]=i,i},renderSubtreeIntoContainer:function(t,e,n,r){return null!=t&&w.has(t)||h("38"),j._renderSubtreeIntoContainer(t,e,n,r)},_renderSubtreeIntoContainer:function(t,e,n,r){E.validateCallback(r,"ReactDOM.render"),g.isValidElement(e)||h("39","string"==typeof e?" Instead of passing a string like 'div', pass React.createElement('div') or <div />.":"function"==typeof e?" Instead of passing a class like Foo, pass React.createElement(Foo) or <Foo />.":null!=e&&void 0!==e.props?" This may be caused by unintentionally loading two independent copies of React.":"");var a,u=g.createElement(F,{child:e});if(t){var c=w.get(t);a=c._processChildContext(c._context)}else a=T;var l=p(n);if(l){var f=l._currentElement,d=f.props.child;if(A(d,e)){var v=l._renderedComponent.getPublicInstance(),m=r&&function(){r.call(v)};return j._updateRootComponent(l,u,a,n,m),v}j.unmountComponentAtNode(n)}var y=i(n),_=y&&!!o(y),b=s(n),x=_&&!l&&!b,C=j._renderNewRootComponent(u,n,x,a)._renderedComponent.getPublicInstance();return r&&r.call(C),C},render:function(t,e,n){return j._renderSubtreeIntoContainer(null,t,e,n)},unmountComponentAtNode:function(t){l(t)||h("40");var e=p(t);if(!e){s(t),1===t.nodeType&&t.hasAttribute(O);return!1}return delete L[e._instance.rootID],M.batchedUpdates(c,e,t,!1),!0},_mountImageIntoNode:function(t,e,n,o,a){if(l(e)||h("41"),o){var u=i(e);if(C.canReuseMarkup(t,u))return void y.precacheNode(n,u);var c=u.getAttribute(C.CHECKSUM_ATTR_NAME);u.removeAttribute(C.CHECKSUM_ATTR_NAME);var s=u.outerHTML;u.setAttribute(C.CHECKSUM_ATTR_NAME,c);var f=t,p=r(f,s),v=" (client) "+f.substring(p-20,p+20)+"\n (server) "+s.substring(p-20,p+20);e.nodeType===D&&h("42",v)}if(e.nodeType===D&&h("43"),a.useCreateElement){for(;e.lastChild;)e.removeChild(e.lastChild);d.insertTreeBefore(e,t,null)}else N(e,t),y.precacheNode(n,e.firstChild)}};t.exports=j},function(t,e,n){"use strict";var r=n(1),i=n(26),o=(n(0),{HOST:0,COMPOSITE:1,EMPTY:2,getType:function(t){return null===t||!1===t?o.EMPTY:i.isValidElement(t)?"function"==typeof t.type?o.COMPOSITE:o.HOST:void r("26",t)}});t.exports=o},function(t,e,n){"use strict";function r(t,e){return null==e&&i("30"),null==t?e:Array.isArray(t)?Array.isArray(e)?(t.push.apply(t,e),t):(t.push(e),t):Array.isArray(e)?[t].concat(e):[t,e]}var i=n(1);n(0);t.exports=r},function(t,e,n){"use strict";function r(t,e,n){Array.isArray(t)?t.forEach(e,n):t&&e.call(n,t)}t.exports=r},function(t,e,n){"use strict";function r(t){for(var e;(e=t._renderedNodeType)===i.COMPOSITE;)t=t._renderedComponent;return e===i.HOST?t._renderedComponent:e===i.EMPTY?null:void 0}var i=n(168);t.exports=r},function(t,e,n){"use strict";function r(){return!o&&i.canUseDOM&&(o="textContent"in document.documentElement?"textContent":"innerText"),o}var i=n(6),o=null;t.exports=r},function(t,e,n){"use strict";function r(t){var e=t.type,n=t.nodeName;return n&&"input"===n.toLowerCase()&&("checkbox"===e||"radio"===e)}function i(t){return t._wrapperState.valueTracker}function o(t,e){t._wrapperState.valueTracker=e}function a(t){t._wrapperState.valueTracker=null}function u(t){var e;return t&&(e=r(t)?""+t.checked:t.value),e}var c=n(4),s={_getTrackerFromNode:function(t){return i(c.getInstanceFromNode(t))},track:function(t){if(!i(t)){var e=c.getNodeFromInstance(t),n=r(e)?"checked":"value",u=Object.getOwnPropertyDescriptor(e.constructor.prototype,n),s=""+e[n];e.hasOwnProperty(n)||"function"!=typeof u.get||"function"!=typeof u.set||(Object.defineProperty(e,n,{enumerable:u.enumerable,configurable:!0,get:function(){return u.get.call(this)},set:function(t){s=""+t,u.set.call(this,t)}}),o(t,{getValue:function(){return s},setValue:function(t){s=""+t},stopTracking:function(){a(t),delete e[n]}}))}},updateValueIfChanged:function(t){if(!t)return!1;var e=i(t);if(!e)return s.track(t),!0;var n=e.getValue(),r=u(c.getNodeFromInstance(t));return r!==n&&(e.setValue(r),!0)},stopTracking:function(t){var e=i(t);e&&e.stopTracking()}};t.exports=s},function(t,e,n){"use strict";function r(t){if(t){var e=t.getName();if(e)return" Check the render method of `"+e+"`."}return""}function i(t){return"function"==typeof t&&void 0!==t.prototype&&"function"==typeof t.prototype.mountComponent&&"function"==typeof t.prototype.receiveComponent}function o(t,e){var n;if(null===t||!1===t)n=s.create(o);else if("object"==typeof t){var u=t,c=u.type;if("function"!=typeof c&&"string"!=typeof c){var p="";p+=r(u._owner),a("130",null==c?c:typeof c,p)}"string"==typeof u.type?n=l.createInternalComponent(u):i(u.type)?(n=new u.type(u),n.getHostNode||(n.getHostNode=n.getNativeNode)):n=new f(u)}else"string"==typeof t||"number"==typeof t?n=l.createInstanceForText(t):a("131",typeof t);return n._mountIndex=0,n._mountImage=null,n}var a=n(1),u=n(3),c=n(358),s=n(163),l=n(165),f=(n(420),n(0),n(2),function(t){this.construct(t)});u(f.prototype,c,{_instantiateReactComponent:o}),t.exports=o},function(t,e,n){"use strict";function r(t){var e=t&&t.nodeName&&t.nodeName.toLowerCase();return"input"===e?!!i[t.type]:"textarea"===e}var i={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};t.exports=r},function(t,e,n){"use strict";var r=n(6),i=n(56),o=n(57),a=function(t,e){if(e){var n=t.firstChild;if(n&&n===t.lastChild&&3===n.nodeType)return void(n.nodeValue=e)}t.textContent=e};r.canUseDOM&&("textContent"in document.documentElement||(a=function(t,e){if(3===t.nodeType)return void(t.nodeValue=e);o(t,i(e))})),t.exports=a},function(t,e,n){"use strict";function r(t,e){return t&&"object"==typeof t&&null!=t.key?s.escape(t.key):e.toString(36)}function i(t,e,n,o){var p=typeof t;if("undefined"!==p&&"boolean"!==p||(t=null),null===t||"string"===p||"number"===p||"object"===p&&t.$$typeof===u)return n(o,t,""===e?l+r(t,0):e),1;var h,d,v=0,g=""===e?l:e+f;if(Array.isArray(t))for(var m=0;m<t.length;m++)h=t[m],d=g+r(h,m),v+=i(h,d,n,o);else{var y=c(t);if(y){var _,b=y.call(t);if(y!==t.entries)for(var x=0;!(_=b.next()).done;)h=_.value,d=g+r(h,x++),v+=i(h,d,n,o);else for(;!(_=b.next()).done;){var w=_.value;w&&(h=w[1],d=g+s.escape(w[0])+f+r(h,0),v+=i(h,d,n,o))}}else if("object"===p){var C="",k=String(t);a("31","[object Object]"===k?"object with keys {"+Object.keys(t).join(", ")+"}":k,C)}}return v}function o(t,e,n){return null==t?0:i(t,"",e,n)}var a=n(1),u=(n(15),n(373)),c=n(404),s=(n(0),n(85)),l=(n(2),"."),f=":";t.exports=o},function(t,e,n){"use strict";function r(t,e,n){this.props=t,this.context=e,this.refs=s,this.updater=n||c}function i(t,e,n){this.props=t,this.context=e,this.refs=s,this.updater=n||c}function o(){}var a=n(40),u=n(3),c=n(181),s=(n(182),n(51));n(0),n(421);r.prototype.isReactComponent={},r.prototype.setState=function(t,e){"object"!=typeof t&&"function"!=typeof t&&null!=t&&a("85"),this.updater.enqueueSetState(this,t),e&&this.updater.enqueueCallback(this,e,"setState")},r.prototype.forceUpdate=function(t){this.updater.enqueueForceUpdate(this),t&&this.updater.enqueueCallback(this,t,"forceUpdate")};o.prototype=r.prototype,i.prototype=new o,i.prototype.constructor=i,u(i.prototype,r.prototype),i.prototype.isPureReactComponent=!0,t.exports={Component:r,PureComponent:i}},function(t,e,n){"use strict";function r(t){var e=Function.prototype.toString,n=Object.prototype.hasOwnProperty,r=RegExp("^"+e.call(n).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");try{var i=e.call(t);return r.test(i)}catch(t){return!1}}function i(t){var e=s(t);if(e){var n=e.childIDs;l(t),n.forEach(i)}}function o(t,e,n){return"\n in "+(t||"Unknown")+(e?" (at "+e.fileName.replace(/^.*[\\\/]/,"")+":"+e.lineNumber+")":n?" (created by "+n+")":"")}function a(t){return null==t?"#empty":"string"==typeof t||"number"==typeof t?"#text":"string"==typeof t.type?t.type:t.type.displayName||t.type.name||"Unknown"}function u(t){var e,n=E.getDisplayName(t),r=E.getElement(t),i=E.getOwnerID(t);return i&&(e=E.getDisplayName(i)),o(n,r&&r._source,e)}var c,s,l,f,p,h,d,v=n(40),g=n(15),m=(n(0),n(2),"function"==typeof Array.from&&"function"==typeof Map&&r(Map)&&null!=Map.prototype&&"function"==typeof Map.prototype.keys&&r(Map.prototype.keys)&&"function"==typeof Set&&r(Set)&&null!=Set.prototype&&"function"==typeof Set.prototype.keys&&r(Set.prototype.keys));if(m){var y=new Map,_=new Set;c=function(t,e){y.set(t,e)},s=function(t){return y.get(t)},l=function(t){y.delete(t)},f=function(){return Array.from(y.keys())},p=function(t){_.add(t)},h=function(t){_.delete(t)},d=function(){return Array.from(_.keys())}}else{var b={},x={},w=function(t){return"."+t},C=function(t){return parseInt(t.substr(1),10)};c=function(t,e){var n=w(t);b[n]=e},s=function(t){var e=w(t);return b[e]},l=function(t){var e=w(t);delete b[e]},f=function(){return Object.keys(b).map(C)},p=function(t){var e=w(t);x[e]=!0},h=function(t){var e=w(t);delete x[e]},d=function(){return Object.keys(x).map(C)}}var k=[],E={onSetChildren:function(t,e){var n=s(t);n||v("144"),n.childIDs=e;for(var r=0;r<e.length;r++){var i=e[r],o=s(i);o||v("140"),null==o.childIDs&&"object"==typeof o.element&&null!=o.element&&v("141"),o.isMounted||v("71"),null==o.parentID&&(o.parentID=t),o.parentID!==t&&v("142",i,o.parentID,t)}},onBeforeMountComponent:function(t,e,n){c(t,{element:e,parentID:n,text:null,childIDs:[],isMounted:!1,updateCount:0})},onBeforeUpdateComponent:function(t,e){var n=s(t);n&&n.isMounted&&(n.element=e)},onMountComponent:function(t){var e=s(t);e||v("144"),e.isMounted=!0,0===e.parentID&&p(t)},onUpdateComponent:function(t){var e=s(t);e&&e.isMounted&&e.updateCount++},onUnmountComponent:function(t){var e=s(t);if(e){e.isMounted=!1;0===e.parentID&&h(t)}k.push(t)},purgeUnmountedComponents:function(){if(!E._preventPurging){for(var t=0;t<k.length;t++){i(k[t])}k.length=0}},isMounted:function(t){var e=s(t);return!!e&&e.isMounted},getCurrentStackAddendum:function(t){var e="";if(t){var n=a(t),r=t._owner;e+=o(n,t._source,r&&r.getName())}var i=g.current,u=i&&i._debugID;return e+=E.getStackAddendumByID(u)},getStackAddendumByID:function(t){for(var e="";t;)e+=u(t),t=E.getParentID(t);return e},getChildIDs:function(t){var e=s(t);return e?e.childIDs:[]},getDisplayName:function(t){var e=E.getElement(t);return e?a(e):null},getElement:function(t){var e=s(t);return e?e.element:null},getOwnerID:function(t){var e=E.getElement(t);return e&&e._owner?e._owner._debugID:null},getParentID:function(t){var e=s(t);return e?e.parentID:null},getSource:function(t){var e=s(t),n=e?e.element:null;return null!=n?n._source:null},getText:function(t){var e=E.getElement(t);return"string"==typeof e?e:"number"==typeof e?""+e:null},getUpdateCount:function(t){var e=s(t);return e?e.updateCount:0},getRootIDs:d,getRegisteredIDs:f,pushNonStandardWarningStack:function(t,e){if("function"==typeof console.reactStack){var n=[],r=g.current,i=r&&r._debugID;try{for(t&&n.push({name:i?E.getDisplayName(i):null,fileName:e?e.fileName:null,lineNumber:e?e.lineNumber:null});i;){var o=E.getElement(i),a=E.getParentID(i),u=E.getOwnerID(i),c=u?E.getDisplayName(u):null,s=o&&o._source;n.push({name:c,fileName:s?s.fileName:null,lineNumber:s?s.lineNumber:null}),i=a}}catch(t){}console.reactStack(n)}},popNonStandardWarningStack:function(){"function"==typeof console.reactStackEnd&&console.reactStackEnd()}};t.exports=E},function(t,e,n){"use strict";var r="function"==typeof Symbol&&Symbol.for&&Symbol.for("react.element")||60103;t.exports=r},function(t,e,n){"use strict";var r=(n(2),{isMounted:function(t){return!1},enqueueCallback:function(t,e){},enqueueForceUpdate:function(t){},enqueueReplaceState:function(t,e){},enqueueSetState:function(t,e){}});t.exports=r},function(t,e,n){"use strict";var r=!1;t.exports=r},,function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function a(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var u="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},c=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),s=n(41),l=r(s),f=n(129),p=n(66),h=(n(7),n(29)),d=n(78),v=n(112),g=n(136),m=n(10),y=n(38),_=n(58),b=r(_),x=function(t){function e(){i(this,e);var t=o(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));return window.lastAdditiveForceArrayVisualizer=t,t.topOffset=28,t.leftOffset=80,t.height=350,t.effectFormat=(0,h.format)(".2"),t.redraw=(0,y.debounce)(function(){return t.draw()},200),t}return a(e,t),c(e,[{key:"componentDidMount",value:function(){var t=this;this.mainGroup=this.svg.append("g"),this.onTopGroup=this.svg.append("g"),this.xaxisElement=this.onTopGroup.append("g").attr("transform","translate(0,35)").attr("class","force-bar-array-xaxis"),this.yaxisElement=this.onTopGroup.append("g").attr("transform","translate(0,35)").attr("class","force-bar-array-yaxis"),this.hoverGroup1=this.svg.append("g"),this.hoverGroup2=this.svg.append("g"),this.baseValueTitle=this.svg.append("text"),this.hoverLine=this.svg.append("line"),this.hoverxOutline=this.svg.append("text").attr("text-anchor","middle").attr("font-weight","bold").attr("fill","#fff").attr("stroke","#fff").attr("stroke-width","6").attr("font-size","12px"),this.hoverx=this.svg.append("text").attr("text-anchor","middle").attr("font-weight","bold").attr("fill","#000").attr("font-size","12px"),this.hoverxTitle=this.svg.append("text").attr("text-anchor","middle").attr("opacity",.6).attr("font-size","12px"),this.hoveryOutline=this.svg.append("text").attr("text-anchor","end").attr("font-weight","bold").attr("fill","#fff").attr("stroke","#fff").attr("stroke-width","6").attr("font-size","12px"),this.hovery=this.svg.append("text").attr("text-anchor","end").attr("font-weight","bold").attr("fill","#000").attr("font-size","12px"),this.xlabel=this.wrapper.select(".additive-force-array-xlabel"),this.ylabel=this.wrapper.select(".additive-force-array-ylabel");var e=void 0;"string"==typeof this.props.plot_cmap?this.props.plot_cmap in b.default.colors?e=b.default.colors[this.props.plot_cmap]:(console.log("Invalid color map name, reverting to default."),e=b.default.colors.RdBu):Array.isArray(this.props.plot_cmap)&&(e=this.props.plot_cmap),this.colors=e.map(function(t){return(0,m.hsl)(t)}),this.brighterColors=[1.45,1.6].map(function(e,n){return t.colors[n].brighter(e)});var n=(0,h.format)(",.4");if(null!=this.props.ordering_keys&&null!=this.props.ordering_keys_time_format){var r=function(t){return"object"==(void 0===t?"undefined":u(t))?this.formatTime(t):n(t)};this.parseTime=(0,d.timeParse)(this.props.ordering_keys_time_format),this.formatTime=(0,d.timeFormat)(this.props.ordering_keys_time_format),this.xtickFormat=r}else this.parseTime=null,this.formatTime=null,this.xtickFormat=n;this.xscale=(0,p.scaleLinear)(),this.xaxis=(0,v.axisBottom)().scale(this.xscale).tickSizeInner(4).tickSizeOuter(0).tickFormat(function(e){return t.xtickFormat(e)}).tickPadding(-18),this.ytickFormat=n,this.yscale=(0,p.scaleLinear)(),this.yaxis=(0,v.axisLeft)().scale(this.yscale).tickSizeInner(4).tickSizeOuter(0).tickFormat(function(e){return t.ytickFormat(t.invLinkFunction(e))}).tickPadding(2),this.xlabel.node().onchange=function(){return t.internalDraw()},this.ylabel.node().onchange=function(){return t.internalDraw()},this.svg.on("mousemove",function(e){return t.mouseMoved(e)}),this.svg.on("click",function(e){return alert("This original index of the sample you clicked is "+t.nearestExpIndex)}),this.svg.on("mouseout",function(e){return t.mouseOut(e)}),window.addEventListener("resize",this.redraw),window.setTimeout(this.redraw,50)}},{key:"componentDidUpdate",value:function(){this.draw()}},{key:"mouseOut",value:function(){this.hoverLine.attr("display","none"),this.hoverx.attr("display","none"),this.hoverxOutline.attr("display","none"),this.hoverxTitle.attr("display","none"),this.hovery.attr("display","none"),this.hoveryOutline.attr("display","none"),this.hoverGroup1.attr("display","none"),this.hoverGroup2.attr("display","none")}},{key:"mouseMoved",value:function(t){var e=this,n=void 0,r=void 0;this.hoverLine.attr("display",""),this.hoverx.attr("display",""),this.hoverxOutline.attr("display",""),this.hoverxTitle.attr("display",""),this.hovery.attr("display",""),this.hoveryOutline.attr("display",""),this.hoverGroup1.attr("display",""),this.hoverGroup2.attr("display","");var i=(0,f.mouse)(this.svg.node())[0];if(this.props.explanations){for(n=0;n<this.props.explanations.length;++n)(!r||Math.abs(r.xmapScaled-i)>Math.abs(this.props.explanations[n].xmapScaled-i))&&(r=this.props.explanations[n],this.nearestExpIndex=n);this.hoverLine.attr("x1",r.xmapScaled).attr("x2",r.xmapScaled).attr("y1",0+this.topOffset).attr("y2",this.height),this.hoverx.attr("x",r.xmapScaled).attr("y",this.topOffset-5).text(this.xtickFormat(r.xmap)),this.hoverxOutline.attr("x",r.xmapScaled).attr("y",this.topOffset-5).text(this.xtickFormat(r.xmap)),this.hoverxTitle.attr("x",r.xmapScaled).attr("y",this.topOffset-18).text(r.count>1?r.count+" averaged samples":""),this.hovery.attr("x",this.leftOffset-6).attr("y",r.joinPointy).text(this.ytickFormat(this.invLinkFunction(r.joinPoint))),this.hoveryOutline.attr("x",this.leftOffset-6).attr("y",r.joinPointy).text(this.ytickFormat(this.invLinkFunction(r.joinPoint)));for(var o=(this.props.featureNames.length,[]),a=void 0,u=void 0,c=this.currPosOrderedFeatures.length-1;c>=0;--c){var s=this.currPosOrderedFeatures[c],l=r.features[s];u=5+(l.posyTop+l.posyBottom)/2,(!a||u-a>=15)&&l.posyTop-l.posyBottom>=6&&(o.push(l),a=u)}var p=[];a=void 0;var h=!0,d=!1,v=void 0;try{for(var g,m=this.currNegOrderedFeatures[Symbol.iterator]();!(h=(g=m.next()).done);h=!0){var y=g.value,_=r.features[y];u=5+(_.negyTop+_.negyBottom)/2,(!a||a-u>=15)&&_.negyTop-_.negyBottom>=6&&(p.push(_),a=u)}}catch(t){d=!0,v=t}finally{try{!h&&m.return&&m.return()}finally{if(d)throw v}}var b=function(t){var n="";return null!==t.value&&void 0!==t.value&&(n=" = "+(isNaN(t.value)?t.value:e.ytickFormat(t.value))),r.count>1?"mean("+e.props.featureNames[t.ind]+")"+n:e.props.featureNames[t.ind]+n},x=this.hoverGroup1.selectAll(".pos-values").data(o);x.enter().append("text").attr("class","pos-values").merge(x).attr("x",r.xmapScaled+5).attr("y",function(t){return 4+(t.posyTop+t.posyBottom)/2}).attr("text-anchor","start").attr("font-size",12).attr("stroke","#fff").attr("fill","#fff").attr("stroke-width","4").attr("stroke-linejoin","round").attr("opacity",1).text(b),x.exit().remove();var w=this.hoverGroup2.selectAll(".pos-values").data(o);w.enter().append("text").attr("class","pos-values").merge(w).attr("x",r.xmapScaled+5).attr("y",function(t){return 4+(t.posyTop+t.posyBottom)/2}).attr("text-anchor","start").attr("font-size",12).attr("fill",this.colors[0]).text(b),w.exit().remove();var C=this.hoverGroup1.selectAll(".neg-values").data(p);C.enter().append("text").attr("class","neg-values").merge(C).attr("x",r.xmapScaled+5).attr("y",function(t){return 4+(t.negyTop+t.negyBottom)/2}).attr("text-anchor","start").attr("font-size",12).attr("stroke","#fff").attr("fill","#fff").attr("stroke-width","4").attr("stroke-linejoin","round").attr("opacity",1).text(b),C.exit().remove();var k=this.hoverGroup2.selectAll(".neg-values").data(p);k.enter().append("text").attr("class","neg-values").merge(k).attr("x",r.xmapScaled+5).attr("y",function(t){return 4+(t.negyTop+t.negyBottom)/2}).attr("text-anchor","start").attr("font-size",12).attr("fill",this.colors[1]).text(b),k.exit().remove()}}},{key:"draw",value:function(){var t=this;if(this.props.explanations&&0!==this.props.explanations.length){(0,y.each)(this.props.explanations,function(t,e){return t.origInd=e});var e={},n={},r={},i=!0,o=!1,a=void 0;try{for(var u,c=this.props.explanations[Symbol.iterator]();!(i=(u=c.next()).done);i=!0){var s=u.value;for(var l in s.features)void 0===e[l]&&(e[l]=0,n[l]=0,r[l]=0),s.features[l].effect>0?e[l]+=s.features[l].effect:n[l]-=s.features[l].effect,null!==s.features[l].value&&void 0!==s.features[l].value&&(r[l]+=1)}}catch(t){o=!0,a=t}finally{try{!i&&c.return&&c.return()}finally{if(o)throw a}}this.usedFeatures=(0,y.sortBy)((0,y.keys)(e),function(t){return-(e[t]+n[t])}),console.log("found ",this.usedFeatures.length," used features"),this.posOrderedFeatures=(0,y.sortBy)(this.usedFeatures,function(t){return e[t]}),this.negOrderedFeatures=(0,y.sortBy)(this.usedFeatures,function(t){return-n[t]}),this.singleValueFeatures=(0,y.filter)(this.usedFeatures,function(t){return r[t]>0});var f=["sample order by similarity","sample order by output value","original sample ordering"].concat(this.singleValueFeatures.map(function(e){return t.props.featureNames[e]}));null!=this.props.ordering_keys&&f.unshift("sample order by key");var p=this.xlabel.selectAll("option").data(f);p.enter().append("option").merge(p).attr("value",function(t){return t}).text(function(t){return t}),p.exit().remove();var h=this.props.outNames[0]?this.props.outNames[0]:"model output value";f=(0,y.map)(this.usedFeatures,function(e){return[t.props.featureNames[e],t.props.featureNames[e]+" effects"]}),f.unshift(["model output value",h]);var d=this.ylabel.selectAll("option").data(f);d.enter().append("option").merge(d).attr("value",function(t){return t[0]}).text(function(t){return t[1]}),d.exit().remove(),this.ylabel.style("top",(this.height-10-this.topOffset)/2+this.topOffset+"px").style("left",10-this.ylabel.node().offsetWidth/2+"px"),this.internalDraw()}}},{key:"internalDraw",value:function(){var t=this,e=!0,n=!1,r=void 0;try{for(var i,o=this.props.explanations[Symbol.iterator]();!(e=(i=o.next()).done);e=!0){var a=i.value,u=!0,c=!1,s=void 0;try{for(var l,f=this.usedFeatures[Symbol.iterator]();!(u=(l=f.next()).done);u=!0){var h=l.value;a.features.hasOwnProperty(h)||(a.features[h]={effect:0,value:0}),a.features[h].ind=h}}catch(t){c=!0,s=t}finally{try{!u&&f.return&&f.return()}finally{if(c)throw s}}}}catch(t){n=!0,r=t}finally{try{!e&&o.return&&o.return()}finally{if(n)throw r}}var d=void 0,v=this.xlabel.node().value,m="sample order by key"===v&&null!=this.props.ordering_keys_time_format;if(this.xscale=m?(0,p.scaleTime)():(0,p.scaleLinear)(),this.xaxis.scale(this.xscale),"sample order by similarity"===v)d=(0,y.sortBy)(this.props.explanations,function(t){return t.simIndex}),(0,y.each)(d,function(t,e){return t.xmap=e});else if("sample order by output value"===v)d=(0,y.sortBy)(this.props.explanations,function(t){return-t.outValue}),(0,y.each)(d,function(t,e){return t.xmap=e});else if("original sample ordering"===v)d=(0,y.sortBy)(this.props.explanations,function(t){return t.origInd}),(0,y.each)(d,function(t,e){return t.xmap=e});else if("sample order by key"===v)d=this.props.explanations,m?(0,y.each)(d,function(e,n){return e.xmap=t.parseTime(t.props.ordering_keys[n])}):(0,y.each)(d,function(e,n){return e.xmap=t.props.ordering_keys[n]}),d=(0,y.sortBy)(d,function(t){return t.xmap});else{var _=(0,y.findKey)(this.props.featureNames,function(t){return t===v});(0,y.each)(this.props.explanations,function(t,e){return t.xmap=t.features[_].value});var b=(0,y.sortBy)(this.props.explanations,function(t){return t.xmap}),x=(0,y.map)(b,function(t){return t.xmap});if("string"==typeof x[0])return void alert("Ordering by category names is not yet supported.");var w=(0,y.min)(x),C=(0,y.max)(x),k=(C-w)/100;d=[];for(var E=void 0,M=void 0,T=0;T<b.length;++T){var S=b[T];if(E&&!M&&S.xmap-E.xmap<=k||M&&S.xmap-M.xmap<=k){M||(M=(0,y.cloneDeep)(E),M.count=1);var N=!0,A=!1,P=void 0;try{for(var O,I=this.usedFeatures[Symbol.iterator]();!(N=(O=I.next()).done);N=!0){var D=O.value;M.features[D].effect+=S.features[D].effect,M.features[D].value+=S.features[D].value}}catch(t){A=!0,P=t}finally{try{!N&&I.return&&I.return()}finally{if(A)throw P}}M.count+=1}else if(E)if(M){var R=!0,L=!1,U=void 0;try{for(var F,j=this.usedFeatures[Symbol.iterator]();!(R=(F=j.next()).done);R=!0){var B=F.value;M.features[B].effect/=M.count,M.features[B].value/=M.count}}catch(t){L=!0,U=t}finally{try{!R&&j.return&&j.return()}finally{if(L)throw U}}d.push(M),M=void 0}else d.push(E);E=S}E.xmap-d[d.length-1].xmap>k&&d.push(E)}this.currUsedFeatures=this.usedFeatures,this.currPosOrderedFeatures=this.posOrderedFeatures,this.currNegOrderedFeatures=this.negOrderedFeatures;var V=this.ylabel.node().value;if("model output value"!==V){d=(0,y.cloneDeep)(d);for(var W=(0,y.findKey)(this.props.featureNames,function(t){return t===V}),z=0;z<d.length;++z){var H=d[z].features[W];d[z].features={},d[z].features[W]=H}this.currUsedFeatures=[W],this.currPosOrderedFeatures=[W],this.currNegOrderedFeatures=[W]}this.currExplanations=d,"identity"===this.props.link?this.invLinkFunction=function(e){return t.props.baseValue+e}:"logit"===this.props.link?this.invLinkFunction=function(e){return 1/(1+Math.exp(-(t.props.baseValue+e)))}:console.log("ERROR: Unrecognized link function: ",this.props.link),this.predValues=(0,y.map)(d,function(t){return(0,y.sum)((0,y.map)(t.features,function(t){return t.effect}))});var q=this.wrapper.node().offsetWidth;if(0==q)return setTimeout(function(){return t.draw(d)},500);this.svg.style("height",this.height+"px"),this.svg.style("width",q+"px");var Y=(0,y.map)(d,function(t){return t.xmap});this.xscale.domain([(0,y.min)(Y),(0,y.max)(Y)]).range([this.leftOffset,q]).clamp(!0),this.xaxisElement.attr("transform","translate(0,"+this.topOffset+")").call(this.xaxis);for(var K=0;K<this.currExplanations.length;++K)this.currExplanations[K].xmapScaled=this.xscale(this.currExplanations[K].xmap);for(var G=d.length,$=0,X=0;X<G;++X){var Q=d[X].features,Z=(0,y.sum)((0,y.map)((0,y.filter)(Q,function(t){return t.effect>0}),function(t){return t.effect}))||0,J=(0,y.sum)((0,y.map)((0,y.filter)(Q,function(t){return t.effect<0}),function(t){return-t.effect}))||0;$=Math.max($,2.2*Math.max(Z,J))}this.yscale.domain([-$/2,$/2]).range([this.height-10,this.topOffset]),this.yaxisElement.attr("transform","translate("+this.leftOffset+",0)").call(this.yaxis);for(var tt=0;tt<G;++tt){var et=d[tt].features,nt=((0,y.sum)((0,y.map)(et,function(t){return Math.abs(t.effect)})),(0,y.sum)((0,y.map)((0,y.filter)(et,function(t){return t.effect<0}),function(t){return-t.effect}))||0),rt=-nt,it=void 0,ot=!0,at=!1,ut=void 0;try{for(var ct,st=this.currPosOrderedFeatures[Symbol.iterator]();!(ot=(ct=st.next()).done);ot=!0)it=ct.value,et[it].posyTop=this.yscale(rt),et[it].effect>0&&(rt+=et[it].effect),et[it].posyBottom=this.yscale(rt),et[it].ind=it}catch(t){at=!0,ut=t}finally{try{!ot&&st.return&&st.return()}finally{if(at)throw ut}}var lt=rt,ft=!0,pt=!1,ht=void 0;try{for(var dt,vt=this.currNegOrderedFeatures[Symbol.iterator]();!(ft=(dt=vt.next()).done);ft=!0)it=dt.value,et[it].negyTop=this.yscale(rt),et[it].effect<0&&(rt-=et[it].effect),et[it].negyBottom=this.yscale(rt)}catch(t){pt=!0,ht=t}finally{try{!ft&&vt.return&&vt.return()}finally{if(pt)throw ht}}d[tt].joinPoint=lt,d[tt].joinPointy=this.yscale(lt)}var gt=(0,g.line)().x(function(t){return t[0]}).y(function(t){return t[1]}),mt=this.mainGroup.selectAll(".force-bar-array-area-pos").data(this.currUsedFeatures);mt.enter().append("path").attr("class","force-bar-array-area-pos").merge(mt).attr("d",function(t){var e=(0,y.map)((0,y.range)(G),function(e){return[d[e].xmapScaled,d[e].features[t].posyTop]}),n=(0,y.map)((0,y.rangeRight)(G),function(e){return[d[e].xmapScaled,d[e].features[t].posyBottom]});return gt(e.concat(n))}).attr("fill",this.colors[0]),mt.exit().remove();var yt=this.mainGroup.selectAll(".force-bar-array-area-neg").data(this.currUsedFeatures);yt.enter().append("path").attr("class","force-bar-array-area-neg").merge(yt).attr("d",function(t){var e=(0,y.map)((0,y.range)(G),function(e){return[d[e].xmapScaled,d[e].features[t].negyTop]}),n=(0,y.map)((0,y.rangeRight)(G),function(e){return[d[e].xmapScaled,d[e].features[t].negyBottom]});return gt(e.concat(n))}).attr("fill",this.colors[1]),yt.exit().remove();var _t=this.mainGroup.selectAll(".force-bar-array-divider-pos").data(this.currUsedFeatures);_t.enter().append("path").attr("class","force-bar-array-divider-pos").merge(_t).attr("d",function(t){var e=(0,y.map)((0,y.range)(G),function(e){return[d[e].xmapScaled,d[e].features[t].posyBottom]});return gt(e)}).attr("fill","none").attr("stroke-width",1).attr("stroke",function(e){return t.colors[0].brighter(1.2)}),_t.exit().remove();var bt=this.mainGroup.selectAll(".force-bar-array-divider-neg").data(this.currUsedFeatures);bt.enter().append("path").attr("class","force-bar-array-divider-neg").merge(bt).attr("d",function(t){var e=(0,y.map)((0,y.range)(G),function(e){return[d[e].xmapScaled,d[e].features[t].negyTop]});return gt(e)}).attr("fill","none").attr("stroke-width",1).attr("stroke",function(e){return t.colors[1].brighter(1.5)}),bt.exit().remove();for(var xt=function(t,e,n,r,i){var o=void 0,a=void 0;"pos"===i?(o=t[n].features[e].posyBottom,a=t[n].features[e].posyTop):(o=t[n].features[e].negyBottom,a=t[n].features[e].negyTop);for(var u=void 0,c=void 0,s=n+1;s<=r;++s)"pos"===i?(u=t[s].features[e].posyBottom,c=t[s].features[e].posyTop):(u=t[s].features[e].negyBottom,c=t[s].features[e].negyTop),u>o&&(o=u),c<a&&(a=c);return{top:o,bottom:a}},wt=[],Ct=["pos","neg"],kt=0;kt<Ct.length;kt++){var Et=Ct[kt],Mt=!0,Tt=!1,St=void 0;try{for(var Nt,At=this.currUsedFeatures[Symbol.iterator]();!(Mt=(Nt=At.next()).done);Mt=!0)for(var Pt=Nt.value,Ot=0,It=0,Dt=0,Rt={top:0,bottom:0},Lt=void 0;It<G-1;){for(;Dt<100&&It<G-1;)++It,Dt=d[It].xmapScaled-d[Ot].xmapScaled;for(Rt=xt(d,Pt,Ot,It,Et);Rt.bottom-Rt.top<20&&Ot<It;)++Ot,Rt=xt(d,Pt,Ot,It,Et);if(Dt=d[It].xmapScaled-d[Ot].xmapScaled,Rt.bottom-Rt.top>=20&&Dt>=100){for(;It<G-1;){if(++It,Lt=xt(d,Pt,Ot,It,Et),!(Lt.bottom-Lt.top>20)){--It;break}Rt=Lt}Dt=d[It].xmapScaled-d[Ot].xmapScaled,wt.push([(d[It].xmapScaled+d[Ot].xmapScaled)/2,(Rt.top+Rt.bottom)/2,this.props.featureNames[Pt]]);var Ut=d[It].xmapScaled;for(Ot=It;Ut+100>d[Ot].xmapScaled&&Ot<G-1;)++Ot;It=Ot}}}catch(t){Tt=!0,St=t}finally{try{!Mt&&At.return&&At.return()}finally{if(Tt)throw St}}}var Ft=this.onTopGroup.selectAll(".force-bar-array-flabels").data(wt);Ft.enter().append("text").attr("class","force-bar-array-flabels").merge(Ft).attr("x",function(t){return t[0]}).attr("y",function(t){return t[1]+4}).text(function(t){return t[2]}),Ft.exit().remove()}},{key:"componentWillUnmount",value:function(){window.removeEventListener("resize",this.redraw)}},{key:"render",value:function(){var t=this;return l.default.createElement("div",{ref:function(e){return t.wrapper=(0,f.select)(e)},style:{textAlign:"center"}},l.default.createElement("style",{dangerouslySetInnerHTML:{__html:"\n .force-bar-array-wrapper {\n text-align: center;\n }\n .force-bar-array-xaxis path {\n fill: none;\n opacity: 0.4;\n }\n .force-bar-array-xaxis .domain {\n opacity: 0;\n }\n .force-bar-array-xaxis paths {\n display: none;\n }\n .force-bar-array-yaxis path {\n fill: none;\n opacity: 0.4;\n }\n .force-bar-array-yaxis paths {\n display: none;\n }\n .tick line {\n stroke: #000;\n stroke-width: 1px;\n opacity: 0.4;\n }\n .tick text {\n fill: #000;\n opacity: 0.5;\n font-size: 12px;\n padding: 0px;\n }\n .force-bar-array-flabels {\n font-size: 12px;\n fill: #fff;\n text-anchor: middle;\n }\n .additive-force-array-xlabel {\n background: none;\n border: 1px solid #ccc;\n opacity: 0.5;\n margin-bottom: 0px;\n font-size: 12px;\n font-family: arial;\n margin-left: 80px;\n max-width: 300px;\n }\n .additive-force-array-xlabel:focus {\n outline: none;\n }\n .additive-force-array-ylabel {\n position: relative;\n top: 0px;\n left: 0px;\n transform: rotate(-90deg);\n background: none;\n border: 1px solid #ccc;\n opacity: 0.5;\n margin-bottom: 0px;\n font-size: 12px;\n font-family: arial;\n max-width: 150px;\n }\n .additive-force-array-ylabel:focus {\n outline: none;\n }\n .additive-force-array-hoverLine {\n stroke-width: 1px;\n stroke: #fff;\n opacity: 1;\n }"}}),l.default.createElement("select",{className:"additive-force-array-xlabel"}),l.default.createElement("div",{style:{height:"0px",textAlign:"left"}},l.default.createElement("select",{className:"additive-force-array-ylabel"})),l.default.createElement("svg",{ref:function(e){return t.svg=(0,f.select)(e)},style:{userSelect:"none",display:"block",fontFamily:"arial",sansSerif:!0}}))}}]),e}(l.default.Component);x.defaultProps={plot_cmap:"RdBu",ordering_keys:null,ordering_keys_time_format:null},e.default=x},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function a(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var u=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),c=n(41),s=r(c),l=n(129),f=n(66),p=(n(7),n(29)),h=n(112),d=n(136),v=n(10),g=n(38),m=n(58),y=r(m),b=function(t){function e(){i(this,e);var t=o(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));return window.lastAdditiveForceVisualizer=t,t.effectFormat=(0,p.format)(".2"),t.redraw=(0,g.debounce)(function(){return t.draw()},200),t}return a(e,t),u(e,[{key:"componentDidMount",value:function(){var t=this;this.mainGroup=this.svg.append("g"),this.axisElement=this.mainGroup.append("g").attr("transform","translate(0,35)").attr("class","force-bar-axis"),this.onTopGroup=this.svg.append("g"),this.baseValueTitle=this.svg.append("text"),this.joinPointLine=this.svg.append("line"),this.joinPointLabelOutline=this.svg.append("text"),this.joinPointLabel=this.svg.append("text"),this.joinPointTitleLeft=this.svg.append("text"),this.joinPointTitleLeftArrow=this.svg.append("text"),this.joinPointTitle=this.svg.append("text"),this.joinPointTitleRightArrow=this.svg.append("text"),this.joinPointTitleRight=this.svg.append("text"),this.hoverLabelBacking=this.svg.append("text").attr("x",10).attr("y",20).attr("text-anchor","middle").attr("font-size",12).attr("stroke","#fff").attr("fill","#fff").attr("stroke-width","4").attr("stroke-linejoin","round").text("").on("mouseover",function(e){t.hoverLabel.attr("opacity",1),t.hoverLabelBacking.attr("opacity",1)}).on("mouseout",function(e){t.hoverLabel.attr("opacity",0),t.hoverLabelBacking.attr("opacity",0)}),this.hoverLabel=this.svg.append("text").attr("x",10).attr("y",20).attr("text-anchor","middle").attr("font-size",12).attr("fill","#0f0").text("").on("mouseover",function(e){t.hoverLabel.attr("opacity",1),t.hoverLabelBacking.attr("opacity",1)}).on("mouseout",function(e){t.hoverLabel.attr("opacity",0),t.hoverLabelBacking.attr("opacity",0)});var e=void 0;"string"==typeof this.props.plot_cmap?this.props.plot_cmap in y.default.colors?e=y.default.colors[this.props.plot_cmap]:(console.log("Invalid color map name, reverting to default."),e=y.default.colors.RdBu):Array.isArray(this.props.plot_cmap)&&(e=this.props.plot_cmap),this.colors=e.map(function(t){return(0,v.hsl)(t)}),this.brighterColors=[1.45,1.6].map(function(e,n){return t.colors[n].brighter(e)}),this.colors.map(function(e,n){var r=t.svg.append("linearGradient").attr("id","linear-grad-"+n).attr("x1","0%").attr("y1","0%").attr("x2","0%").attr("y2","100%");r.append("stop").attr("offset","0%").attr("stop-color",e).attr("stop-opacity",.6),r.append("stop").attr("offset","100%").attr("stop-color",e).attr("stop-opacity",0);var i=t.svg.append("linearGradient").attr("id","linear-backgrad-"+n).attr("x1","0%").attr("y1","0%").attr("x2","0%").attr("y2","100%");i.append("stop").attr("offset","0%").attr("stop-color",e).attr("stop-opacity",.5),i.append("stop").attr("offset","100%").attr("stop-color",e).attr("stop-opacity",0)}),this.tickFormat=(0,p.format)(",.4"),this.scaleCentered=(0,f.scaleLinear)(),this.axis=(0,h.axisBottom)().scale(this.scaleCentered).tickSizeInner(4).tickSizeOuter(0).tickFormat(function(e){return t.tickFormat(t.invLinkFunction(e))}).tickPadding(-18),window.addEventListener("resize",this.redraw),window.setTimeout(this.redraw,50)}},{key:"componentDidUpdate",value:function(){this.draw()}},{key:"draw",value:function(){var t=this;(0,g.each)(this.props.featureNames,function(e,n){t.props.features[n]&&(t.props.features[n].name=e)}),"identity"===this.props.link?this.invLinkFunction=function(e){return t.props.baseValue+e}:"logit"===this.props.link?this.invLinkFunction=function(e){return 1/(1+Math.exp(-(t.props.baseValue+e)))}:console.log("ERROR: Unrecognized link function: ",this.props.link);var e=this.svg.node().parentNode.offsetWidth;if(0==e)return setTimeout(function(){return t.draw(t.props)},500);this.svg.style("height","150px"),this.svg.style("width",e+"px");var n=(0,g.sortBy)(this.props.features,function(t){return-1/(t.effect+1e-10)}),r=(0,g.sum)((0,g.map)(n,function(t){return Math.abs(t.effect)})),i=(0,g.sum)((0,g.map)((0,g.filter)(n,function(t){return t.effect>0}),function(t){return t.effect}))||0,o=(0,g.sum)((0,g.map)((0,g.filter)(n,function(t){return t.effect<0}),function(t){return-t.effect}))||0;this.domainSize=3*Math.max(i,o);var a=(0,f.scaleLinear)().domain([0,this.domainSize]).range([0,e]),u=e/2-a(o);this.scaleCentered.domain([-this.domainSize/2,this.domainSize/2]).range([0,e]).clamp(!0),this.axisElement.attr("transform","translate(0,50)").call(this.axis);var c=0,s=void 0,l=void 0,h=void 0;for(s=0;s<n.length;++s)n[s].x=c,n[s].effect<0&&void 0===l&&(l=c,h=s),c+=Math.abs(n[s].effect);void 0===l&&(l=c,h=s);var v=(0,d.line)().x(function(t){return t[0]}).y(function(t){return t[1]}),m=function(e){return void 0!==e.value&&null!==e.value&&""!==e.value?e.name+" = "+(isNaN(e.value)?e.value:t.tickFormat(e.value)):e.name};n=this.props.hideBars?[]:n;var y=this.mainGroup.selectAll(".force-bar-blocks").data(n);y.enter().append("path").attr("class","force-bar-blocks").merge(y).attr("d",function(t,e){var n=a(t.x)+u,r=a(Math.abs(t.effect)),i=t.effect<0?-4:4,o=i;return e===h&&(i=0),e===h-1&&(o=0),v([[n,56],[n+r,56],[n+r+o,64.5],[n+r,73],[n,73],[n+i,64.5]])}).attr("fill",function(e){return e.effect>0?t.colors[0]:t.colors[1]}).on("mouseover",function(e){if(a(Math.abs(e.effect))<a(r)/50||a(Math.abs(e.effect))<10){var n=a(e.x)+u,i=a(Math.abs(e.effect));t.hoverLabel.attr("opacity",1).attr("x",n+i/2).attr("y",50.5).attr("fill",e.effect>0?t.colors[0]:t.colors[1]).text(m(e)),t.hoverLabelBacking.attr("opacity",1).attr("x",n+i/2).attr("y",50.5).text(m(e))}}).on("mouseout",function(e){t.hoverLabel.attr("opacity",0),t.hoverLabelBacking.attr("opacity",0)}),y.exit().remove();var b=_.filter(n,function(t){return a(Math.abs(t.effect))>a(r)/50&&a(Math.abs(t.effect))>10}),x=this.onTopGroup.selectAll(".force-bar-labels").data(b);if(x.exit().remove(),x=x.enter().append("text").attr("class","force-bar-labels").attr("font-size","12px").attr("y",function(t){return 98}).merge(x).text(function(e){return void 0!==e.value&&null!==e.value&&""!==e.value?e.name+" = "+(isNaN(e.value)?e.value:t.tickFormat(e.value)):e.name}).attr("fill",function(e){return e.effect>0?t.colors[0]:t.colors[1]}).attr("stroke",function(t,e){return t.textWidth=Math.max(this.getComputedTextLength(),a(Math.abs(t.effect))-10),t.innerTextWidth=this.getComputedTextLength(),"none"}),this.filteredData=b,n.length>0){c=l+a.invert(5);for(var w=h;w<n.length;++w)n[w].textx=c,c+=a.invert(n[w].textWidth+10);c=l-a.invert(5);for(var C=h-1;C>=0;--C)n[C].textx=c,c-=a.invert(n[C].textWidth+10)}x.attr("x",function(t){return a(t.textx)+u+(t.effect>0?-t.textWidth/2:t.textWidth/2)}).attr("text-anchor","middle"),b=(0,g.filter)(b,function(n){return a(n.textx)+u>t.props.labelMargin&&a(n.textx)+u<e-t.props.labelMargin}),this.filteredData2=b;var k=b.slice(),E=(0,g.findIndex)(n,b[0])-1;E>=0&&k.unshift(n[E]);var M=this.mainGroup.selectAll(".force-bar-labelBacking").data(b);M.enter().append("path").attr("class","force-bar-labelBacking").attr("stroke","none").attr("opacity",.2).merge(M).attr("d",function(t){return v([[a(t.x)+a(Math.abs(t.effect))+u,73],[(t.effect>0?a(t.textx):a(t.textx)+t.textWidth)+u+5,83],[(t.effect>0?a(t.textx):a(t.textx)+t.textWidth)+u+5,104],[(t.effect>0?a(t.textx)-t.textWidth:a(t.textx))+u-5,104],[(t.effect>0?a(t.textx)-t.textWidth:a(t.textx))+u-5,83],[a(t.x)+u,73]])}).attr("fill",function(t){return"url(#linear-backgrad-"+(t.effect>0?0:1)+")"}),M.exit().remove();var T=this.mainGroup.selectAll(".force-bar-labelDividers").data(b.slice(0,-1));T.enter().append("rect").attr("class","force-bar-labelDividers").attr("height","21px").attr("width","1px").attr("y",83).merge(T).attr("x",function(t){return(t.effect>0?a(t.textx):a(t.textx)+t.textWidth)+u+4.5}).attr("fill",function(t){return"url(#linear-grad-"+(t.effect>0?0:1)+")"}),T.exit().remove();var S=this.mainGroup.selectAll(".force-bar-labelLinks").data(b.slice(0,-1));S.enter().append("line").attr("class","force-bar-labelLinks").attr("y1",73).attr("y2",83).attr("stroke-opacity",.5).attr("stroke-width",1).merge(S).attr("x1",function(t){return a(t.x)+a(Math.abs(t.effect))+u}).attr("x2",function(t){return(t.effect>0?a(t.textx):a(t.textx)+t.textWidth)+u+5}).attr("stroke",function(e){return e.effect>0?t.colors[0]:t.colors[1]}),S.exit().remove();var N=this.mainGroup.selectAll(".force-bar-blockDividers").data(n.slice(0,-1));N.enter().append("path").attr("class","force-bar-blockDividers").attr("stroke-width",2).attr("fill","none").merge(N).attr("d",function(t){var e=a(t.x)+a(Math.abs(t.effect))+u;return v([[e,56],[e+(t.effect<0?-4:4),64.5],[e,73]])}).attr("stroke",function(e,n){return h===n+1||Math.abs(e.effect)<1e-8?"#rgba(0,0,0,0)":e.effect>0?t.brighterColors[0]:t.brighterColors[1]}),N.exit().remove(),this.joinPointLine.attr("x1",a(l)+u).attr("x2",a(l)+u).attr("y1",50).attr("y2",56).attr("stroke","#F2F2F2").attr("stroke-width",1).attr("opacity",1),this.joinPointLabelOutline.attr("x",a(l)+u).attr("y",45).attr("color","#fff").attr("text-anchor","middle").attr("font-weight","bold").attr("stroke","#fff").attr("stroke-width",6).text((0,p.format)(",.2f")(this.invLinkFunction(l-o))).attr("opacity",1),console.log("joinPoint",l,u,50,o),this.joinPointLabel.attr("x",a(l)+u).attr("y",45).attr("text-anchor","middle").attr("font-weight","bold").attr("fill","#000").text((0,p.format)(",.2f")(this.invLinkFunction(l-o))).attr("opacity",1),this.joinPointTitle.attr("x",a(l)+u).attr("y",28).attr("text-anchor","middle").attr("font-size","12").attr("fill","#000").text(this.props.outNames[0]).attr("opacity",.5),this.props.hideBars||(this.joinPointTitleLeft.attr("x",a(l)+u-16).attr("y",12).attr("text-anchor","end").attr("font-size","13").attr("fill",this.colors[0]).text("higher").attr("opacity",1),this.joinPointTitleRight.attr("x",a(l)+u+16).attr("y",12).attr("text-anchor","start").attr("font-size","13").attr("fill",this.colors[1]).text("lower").attr("opacity",1),this.joinPointTitleLeftArrow.attr("x",a(l)+u+7).attr("y",8).attr("text-anchor","end").attr("font-size","13").attr("fill",this.colors[0]).text("→").attr("opacity",1),this.joinPointTitleRightArrow.attr("x",a(l)+u-7).attr("y",14).attr("text-anchor","start").attr("font-size","13").attr("fill",this.colors[1]).text("←").attr("opacity",1)),this.props.hideBaseValueLabel||this.baseValueTitle.attr("x",this.scaleCentered(0)).attr("y",28).attr("text-anchor","middle").attr("font-size","12").attr("fill","#000").text("base value").attr("opacity",.5)}},{key:"componentWillUnmount",value:function(){window.removeEventListener("resize",this.redraw)}},{key:"render",value:function(){var t=this;return s.default.createElement("svg",{ref:function(e){return t.svg=(0,l.select)(e)},style:{userSelect:"none",display:"block",fontFamily:"arial",sansSerif:!0}},s.default.createElement("style",{dangerouslySetInnerHTML:{__html:"\n .force-bar-axis path {\n fill: none;\n opacity: 0.4;\n }\n .force-bar-axis paths {\n display: none;\n }\n .tick line {\n stroke: #000;\n stroke-width: 1px;\n opacity: 0.4;\n }\n .tick text {\n fill: #000;\n opacity: 0.5;\n font-size: 12px;\n padding: 0px;\n }"}}))}}]),e}(s.default.Component);b.defaultProps={plot_cmap:"RdBu"},e.default=b},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function a(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var u=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),c=n(41),s=r(c),l=n(66),f=(n(7),n(29)),p=n(38),h=n(58),d=r(h),v=function(t){function e(){i(this,e);var t=o(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));return t.width=100,window.lastSimpleListInstance=t,t.effectFormat=(0,f.format)(".2"),t}return a(e,t),u(e,[{key:"render",value:function(){var t=this,e=void 0;"string"==typeof this.props.plot_cmap?this.props.plot_cmap in d.default.colors?e=d.default.colors[this.props.plot_cmap]:(console.log("Invalid color map name, reverting to default."),e=d.default.colors.RdBu):Array.isArray(this.props.plot_cmap)&&(e=this.props.plot_cmap),console.log(this.props.features,this.props.features),this.scale=(0,l.scaleLinear)().domain([0,(0,p.max)((0,p.map)(this.props.features,function(t){return Math.abs(t.effect)}))]).range([0,this.width]);var n=(0,p.reverse)((0,p.sortBy)(Object.keys(this.props.features),function(e){return Math.abs(t.props.features[e].effect)})),r=n.map(function(n){var r=t.props.features[n],i=t.props.featureNames[n],o={width:t.scale(Math.abs(r.effect)),height:"20px",background:r.effect<0?e[0]:e[1],display:"inline-block"},a=void 0,u=void 0,c={lineHeight:"20px",display:"inline-block",width:t.width+40,verticalAlign:"top",marginRight:"5px",textAlign:"right"},l={lineHeight:"20px",display:"inline-block",width:t.width+40,verticalAlign:"top",marginLeft:"5px"};return r.effect<0?(u=s.default.createElement("span",{style:l},i),c.width=40+t.width-t.scale(Math.abs(r.effect)),c.textAlign="right",c.color="#999",c.fontSize="13px",a=s.default.createElement("span",{style:c},t.effectFormat(r.effect))):(c.textAlign="right",a=s.default.createElement("span",{style:c},i),l.width=40,l.textAlign="left",l.color="#999",l.fontSize="13px",u=s.default.createElement("span",{style:l},t.effectFormat(r.effect))),s.default.createElement("div",{key:n,style:{marginTop:"2px"}},a,s.default.createElement("div",{style:o}),u)});return s.default.createElement("span",null,r)}}]),e}(s.default.Component);v.defaultProps={plot_cmap:"RdBu"},e.default=v},function(t,e,n){"use strict";t.exports=n(359)},function(t,e,n){var r=(n(0),n(411)),i=!1;t.exports=function(t){t=t||{};var e=t.shouldRejectClick||r;i=!0,n(22).injection.injectEventPluginsByName({TapEventPlugin:n(409)(e)})}},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}var i=n(41),o=r(i),a=n(187),u=r(a),c=n(188),s=r(c),l=n(186),f=r(l),p=n(185),h=r(p),d=n(184),v=r(d);(0,s.default)(),window.SHAP={SimpleListVisualizer:f.default,AdditiveForceVisualizer:h.default,AdditiveForceArrayVisualizer:v.default,React:o.default,ReactDom:u.default}},,function(t,e,n){"use strict";function r(t){return t}function i(t,e,n){function i(t,e){var n=y.hasOwnProperty(e)?y[e]:null;C.hasOwnProperty(e)&&u("OVERRIDE_BASE"===n,"ReactClassInterface: You are attempting to override `%s` from your class specification. Ensure that your method names do not overlap with React methods.",e),t&&u("DEFINE_MANY"===n||"DEFINE_MANY_MERGED"===n,"ReactClassInterface: You are attempting to define `%s` on your component more than once. This conflict may be due to a mixin.",e)}function s(t,n){if(n){u("function"!=typeof n,"ReactClass: You're attempting to use a component class or function as a mixin. Instead, just use a regular object."),u(!e(n),"ReactClass: You're attempting to use a component as a mixin. Instead, just use a regular object.");var r=t.prototype,o=r.__reactAutoBindPairs;n.hasOwnProperty(c)&&b.mixins(t,n.mixins);for(var a in n)if(n.hasOwnProperty(a)&&a!==c){var s=n[a],l=r.hasOwnProperty(a);if(i(l,a),b.hasOwnProperty(a))b[a](t,s);else{var f=y.hasOwnProperty(a),d="function"==typeof s,v=d&&!f&&!l&&!1!==n.autobind;if(v)o.push(a,s),r[a]=s;else if(l){var g=y[a];u(f&&("DEFINE_MANY_MERGED"===g||"DEFINE_MANY"===g),"ReactClass: Unexpected spec policy %s for key %s when mixing in component specs.",g,a),"DEFINE_MANY_MERGED"===g?r[a]=p(r[a],s):"DEFINE_MANY"===g&&(r[a]=h(r[a],s))}else r[a]=s}}}else;}function l(t,e){if(e)for(var n in e){var r=e[n];if(e.hasOwnProperty(n)){var i=n in b;u(!i,'ReactClass: You are attempting to define a reserved property, `%s`, that shouldn\'t be on the "statics" key. Define it as an instance property instead; it will still be accessible on the constructor.',n);var o=n in t;if(o){var a=_.hasOwnProperty(n)?_[n]:null;return u("DEFINE_MANY_MERGED"===a,"ReactClass: You are attempting to define `%s` on your component more than once. This conflict may be due to a mixin.",n),void(t[n]=p(t[n],r))}t[n]=r}}}function f(t,e){u(t&&e&&"object"==typeof t&&"object"==typeof e,"mergeIntoWithNoDuplicateKeys(): Cannot merge non-objects.");for(var n in e)e.hasOwnProperty(n)&&(u(void 0===t[n],"mergeIntoWithNoDuplicateKeys(): Tried to merge two objects with the same key: `%s`. This conflict may be due to a mixin; in particular, this may be caused by two getInitialState() or getDefaultProps() methods returning objects with clashing keys.",n),t[n]=e[n]);return t}function p(t,e){return function(){var n=t.apply(this,arguments),r=e.apply(this,arguments);if(null==n)return r;if(null==r)return n;var i={};return f(i,n),f(i,r),i}}function h(t,e){return function(){t.apply(this,arguments),e.apply(this,arguments)}}function d(t,e){var n=e.bind(t);return n}function v(t){for(var e=t.__reactAutoBindPairs,n=0;n<e.length;n+=2){var r=e[n],i=e[n+1];t[r]=d(t,i)}}function g(t){var e=r(function(t,r,i){this.__reactAutoBindPairs.length&&v(this),this.props=t,this.context=r,this.refs=a,this.updater=i||n,this.state=null;var o=this.getInitialState?this.getInitialState():null;u("object"==typeof o&&!Array.isArray(o),"%s.getInitialState(): must return an object or null",e.displayName||"ReactCompositeComponent"),this.state=o});e.prototype=new k,e.prototype.constructor=e,e.prototype.__reactAutoBindPairs=[],m.forEach(s.bind(null,e)),s(e,x),s(e,t),s(e,w),e.getDefaultProps&&(e.defaultProps=e.getDefaultProps()),u(e.prototype.render,"createClass(...): Class specification must implement a `render` method.");for(var i in y)e.prototype[i]||(e.prototype[i]=null);return e}var m=[],y={mixins:"DEFINE_MANY",statics:"DEFINE_MANY",propTypes:"DEFINE_MANY",contextTypes:"DEFINE_MANY",childContextTypes:"DEFINE_MANY",getDefaultProps:"DEFINE_MANY_MERGED",getInitialState:"DEFINE_MANY_MERGED",getChildContext:"DEFINE_MANY_MERGED",render:"DEFINE_ONCE",componentWillMount:"DEFINE_MANY",componentDidMount:"DEFINE_MANY",componentWillReceiveProps:"DEFINE_MANY",shouldComponentUpdate:"DEFINE_ONCE",componentWillUpdate:"DEFINE_MANY",componentDidUpdate:"DEFINE_MANY",componentWillUnmount:"DEFINE_MANY",UNSAFE_componentWillMount:"DEFINE_MANY",UNSAFE_componentWillReceiveProps:"DEFINE_MANY",UNSAFE_componentWillUpdate:"DEFINE_MANY",updateComponent:"OVERRIDE_BASE"},_={getDerivedStateFromProps:"DEFINE_MANY_MERGED"},b={displayName:function(t,e){t.displayName=e},mixins:function(t,e){if(e)for(var n=0;n<e.length;n++)s(t,e[n])},childContextTypes:function(t,e){t.childContextTypes=o({},t.childContextTypes,e)},contextTypes:function(t,e){t.contextTypes=o({},t.contextTypes,e)},getDefaultProps:function(t,e){t.getDefaultProps?t.getDefaultProps=p(t.getDefaultProps,e):t.getDefaultProps=e},propTypes:function(t,e){t.propTypes=o({},t.propTypes,e)},statics:function(t,e){l(t,e)},autobind:function(){}},x={componentDidMount:function(){this.__isMounted=!0}},w={componentWillUnmount:function(){this.__isMounted=!1}},C={replaceState:function(t,e){this.updater.enqueueReplaceState(this,t,e)},isMounted:function(){return!!this.__isMounted}},k=function(){};return o(k.prototype,t.prototype,C),g}var o=n(3),a=n(51),u=n(0),c="mixins";t.exports=i},function(t,e,n){"use strict";e.a=function(t){return function(){return t}}},function(t,e,n){"use strict";var r=n(106);e.a=function(t,e,n){var i,o,a,u,c=t.length,s=e.length,l=new Array(c*s);for(null==n&&(n=r.b),i=a=0;i<c;++i)for(u=t[i],o=0;o<s;++o,++a)l[a]=n(u,e[o]);return l}},function(t,e,n){"use strict";e.a=function(t,e){return e<t?-1:e>t?1:e>=t?0:NaN}},function(t,e,n){"use strict";var r=n(100),i=n(101),o=n(192),a=n(104),u=n(196),c=n(107),s=n(109),l=n(108);e.a=function(){function t(t){var r,o,a=t.length,u=new Array(a);for(r=0;r<a;++r)u[r]=e(t[r],r,t);var l=f(u),h=l[0],d=l[1],v=p(u,h,d);Array.isArray(v)||(v=n.i(s.c)(h,d,v),v=n.i(c.a)(Math.ceil(h/v)*v,Math.floor(d/v)*v,v));for(var g=v.length;v[0]<=h;)v.shift(),--g;for(;v[g-1]>d;)v.pop(),--g;var m,y=new Array(g+1);for(r=0;r<=g;++r)m=y[r]=[],m.x0=r>0?v[r-1]:h,m.x1=r<g?v[r]:d;for(r=0;r<a;++r)o=u[r],h<=o&&o<=d&&y[n.i(i.a)(v,o,0,g)].push(t[r]);return y}var e=u.a,f=a.a,p=l.a;return t.value=function(r){return arguments.length?(e="function"==typeof r?r:n.i(o.a)(r),t):e},t.domain=function(e){return arguments.length?(f="function"==typeof e?e:n.i(o.a)([e[0],e[1]]),t):f},t.thresholds=function(e){return arguments.length?(p="function"==typeof e?e:Array.isArray(e)?n.i(o.a)(r.b.call(e)):n.i(o.a)(e),t):p},t}},function(t,e,n){"use strict";e.a=function(t){return t}},function(t,e,n){"use strict";e.a=function(t,e){var n,r,i=t.length,o=-1;if(null==e){for(;++o<i;)if(null!=(n=t[o])&&n>=n)for(r=n;++o<i;)null!=(n=t[o])&&n>r&&(r=n)}else for(;++o<i;)if(null!=(n=e(t[o],o,t))&&n>=n)for(r=n;++o<i;)null!=(n=e(t[o],o,t))&&n>r&&(r=n);return r}},function(t,e,n){"use strict";var r=n(28);e.a=function(t,e){var i,o=t.length,a=o,u=-1,c=0;if(null==e)for(;++u<o;)isNaN(i=n.i(r.a)(t[u]))?--a:c+=i;else for(;++u<o;)isNaN(i=n.i(r.a)(e(t[u],u,t)))?--a:c+=i;if(a)return c/a}},function(t,e,n){"use strict";var r=n(19),i=n(28),o=n(59);e.a=function(t,e){var a,u=t.length,c=-1,s=[];if(null==e)for(;++c<u;)isNaN(a=n.i(i.a)(t[c]))||s.push(a);else for(;++c<u;)isNaN(a=n.i(i.a)(e(t[c],c,t)))||s.push(a);return n.i(o.a)(s.sort(r.a),.5)}},function(t,e,n){"use strict";e.a=function(t){for(var e,n,r,i=t.length,o=-1,a=0;++o<i;)a+=t[o].length;for(n=new Array(a);--i>=0;)for(r=t[i],e=r.length;--e>=0;)n[--a]=r[e];return n}},function(t,e,n){"use strict";e.a=function(t,e){for(var n=e.length,r=new Array(n);n--;)r[n]=t[e[n]];return r}},function(t,e,n){"use strict";var r=n(19);e.a=function(t,e){if(n=t.length){var n,i,o=0,a=0,u=t[a];for(null==e&&(e=r.a);++o<n;)(e(i=t[o],u)<0||0!==e(u,u))&&(u=i,a=o);return 0===e(u,u)?a:void 0}}},function(t,e,n){"use strict";e.a=function(t,e,n){for(var r,i,o=(null==n?t.length:n)-(e=null==e?0:+e);o;)i=Math.random()*o--|0,r=t[o+e],t[o+e]=t[i+e],t[i+e]=r;return t}},function(t,e,n){"use strict";e.a=function(t,e){var n,r=t.length,i=-1,o=0;if(null==e)for(;++i<r;)(n=+t[i])&&(o+=n);else for(;++i<r;)(n=+e(t[i],i,t))&&(o+=n);return o}},function(t,e,n){"use strict";var r=n(100),i=n(19),o=n(28),a=n(59);e.a=function(t,e,u){return t=r.a.call(t,o.a).sort(i.a),Math.ceil((u-e)/(2*(n.i(a.a)(t,.75)-n.i(a.a)(t,.25))*Math.pow(t.length,-1/3)))}},function(t,e,n){"use strict";var r=n(103);e.a=function(t,e,i){return Math.ceil((i-e)/(3.5*n.i(r.a)(t)*Math.pow(t.length,-1/3)))}},function(t,e,n){"use strict";var r=n(110);e.a=function(){return n.i(r.a)(arguments)}},function(t,e,n){"use strict";n.d(e,"a",function(){return r});var r=Array.prototype.slice},function(t,e,n){"use strict";function r(t){return"translate("+(t+.5)+",0)"}function i(t){return"translate(0,"+(t+.5)+")"}function o(t){return function(e){return+t(e)}}function a(t){var e=Math.max(0,t.bandwidth()-1)/2;return t.round()&&(e=Math.round(e)),function(n){return+t(n)+e}}function u(){return!this.__axis}function c(t,e){function n(n){var r=null==s?e.ticks?e.ticks.apply(e,c):e.domain():s,i=null==l?e.tickFormat?e.tickFormat.apply(e,c):d.a:l,h=Math.max(f,0)+b,k=e.range(),E=+k[0]+.5,M=+k[k.length-1]+.5,T=(e.bandwidth?a:o)(e.copy()),S=n.selection?n.selection():n,N=S.selectAll(".domain").data([null]),A=S.selectAll(".tick").data(r,e).order(),P=A.exit(),O=A.enter().append("g").attr("class","tick"),I=A.select("line"),D=A.select("text");N=N.merge(N.enter().insert("path",".tick").attr("class","domain").attr("stroke","#000")),A=A.merge(O),I=I.merge(O.append("line").attr("stroke","#000").attr(w+"2",x*f)),D=D.merge(O.append("text").attr("fill","#000").attr(w,x*h).attr("dy",t===v?"0em":t===m?"0.71em":"0.32em")),n!==S&&(N=N.transition(n),A=A.transition(n),I=I.transition(n),D=D.transition(n),P=P.transition(n).attr("opacity",_).attr("transform",function(t){return isFinite(t=T(t))?C(t):this.getAttribute("transform")}),O.attr("opacity",_).attr("transform",function(t){var e=this.parentNode.__axis;return C(e&&isFinite(e=e(t))?e:T(t))})),P.remove(),N.attr("d",t===y||t==g?"M"+x*p+","+E+"H0.5V"+M+"H"+x*p:"M"+E+","+x*p+"V0.5H"+M+"V"+x*p),A.attr("opacity",1).attr("transform",function(t){return C(T(t))}),I.attr(w+"2",x*f),D.attr(w,x*h).text(i),S.filter(u).attr("fill","none").attr("font-size",10).attr("font-family","sans-serif").attr("text-anchor",t===g?"start":t===y?"end":"middle"),S.each(function(){this.__axis=T})}var c=[],s=null,l=null,f=6,p=6,b=3,x=t===v||t===y?-1:1,w=t===y||t===g?"x":"y",C=t===v||t===m?r:i;return n.scale=function(t){return arguments.length?(e=t,n):e},n.ticks=function(){return c=h.a.call(arguments),n},n.tickArguments=function(t){return arguments.length?(c=null==t?[]:h.a.call(t),n):c.slice()},n.tickValues=function(t){return arguments.length?(s=null==t?null:h.a.call(t),n):s&&s.slice()},n.tickFormat=function(t){return arguments.length?(l=t,n):l},n.tickSize=function(t){return arguments.length?(f=p=+t,n):f},n.tickSizeInner=function(t){return arguments.length?(f=+t,n):f},n.tickSizeOuter=function(t){return arguments.length?(p=+t,n):p},n.tickPadding=function(t){return arguments.length?(b=+t,n):b},n}function s(t){return c(v,t)}function l(t){return c(g,t)}function f(t){return c(m,t)}function p(t){return c(y,t)}e.a=s,e.b=l,e.c=f,e.d=p;var h=n(208),d=n(210),v=1,g=2,m=3,y=4,_=1e-6},function(t,e,n){"use strict";e.a=function(t){return t}},function(t,e,n){"use strict";var r=(n(214),n(215),n(60));n.d(e,"a",function(){return r.a});n(213),n(216),n(212)},function(t,e,n){"use strict"},function(t,e,n){"use strict"},function(t,e,n){"use strict";n(60)},function(t,e,n){"use strict";function r(){}function i(t,e){var n=new r;if(t instanceof r)t.each(function(t){n.add(t)});else if(t){var i=-1,o=t.length;if(null==e)for(;++i<o;)n.add(t[i]);else for(;++i<o;)n.add(e(t[i],i,t))}return n}var o=n(60),a=o.a.prototype;r.prototype=i.prototype={constructor:r,has:a.has,add:function(t){return t+="",this[o.b+t]=t,this},remove:a.remove,clear:a.clear,values:a.keys,size:a.size,empty:a.empty,each:a.each}},function(t,e,n){"use strict"},function(t,e,n){"use strict";function r(t){if(t instanceof o)return new o(t.h,t.s,t.l,t.opacity);t instanceof u.d||(t=n.i(u.e)(t));var e=t.r/255,r=t.g/255,i=t.b/255,a=(g*i+d*e-v*r)/(g+d-v),s=i-a,l=(h*(r-a)-f*s)/p,m=Math.sqrt(l*l+s*s)/(h*a*(1-a)),y=m?Math.atan2(l,s)*c.a-120:NaN;return new o(y<0?y+360:y,m,a,t.opacity)}function i(t,e,n,i){return 1===arguments.length?r(t):new o(t,e,n,null==i?1:i)}function o(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}e.a=i;var a=n(62),u=n(61),c=n(113),s=-.14861,l=1.78277,f=-.29227,p=-.90649,h=1.97294,d=h*p,v=h*l,g=l*f-p*s;n.i(a.a)(o,i,n.i(a.b)(u.f,{brighter:function(t){return t=null==t?u.g:Math.pow(u.g,t),new o(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=null==t?u.h:Math.pow(u.h,t),new o(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=isNaN(this.h)?0:(this.h+120)*c.b,e=+this.l,n=isNaN(this.s)?0:this.s*e*(1-e),r=Math.cos(t),i=Math.sin(t);return new u.d(255*(e+n*(s*r+l*i)),255*(e+n*(f*r+p*i)),255*(e+n*(h*r)),this.opacity)}}))},function(t,e,n){"use strict";function r(t){if(t instanceof o)return new o(t.l,t.a,t.b,t.opacity);if(t instanceof p){var e=t.h*v.b;return new o(t.l,Math.cos(e)*t.c,Math.sin(e)*t.c,t.opacity)}t instanceof d.d||(t=n.i(d.e)(t));var r=s(t.r),i=s(t.g),u=s(t.b),c=a((.4124564*r+.3575761*i+.1804375*u)/g),l=a((.2126729*r+.7151522*i+.072175*u)/m);return new o(116*l-16,500*(c-l),200*(l-a((.0193339*r+.119192*i+.9503041*u)/y)),t.opacity)}function i(t,e,n,i){return 1===arguments.length?r(t):new o(t,e,n,null==i?1:i)}function o(t,e,n,r){this.l=+t,this.a=+e,this.b=+n,this.opacity=+r}function a(t){return t>w?Math.pow(t,1/3):t/x+_}function u(t){return t>b?t*t*t:x*(t-_)}function c(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function s(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function l(t){if(t instanceof p)return new p(t.h,t.c,t.l,t.opacity);t instanceof o||(t=r(t));var e=Math.atan2(t.b,t.a)*v.a;return new p(e<0?e+360:e,Math.sqrt(t.a*t.a+t.b*t.b),t.l,t.opacity)}function f(t,e,n,r){return 1===arguments.length?l(t):new p(t,e,n,null==r?1:r)}function p(t,e,n,r){this.h=+t,this.c=+e,this.l=+n,this.opacity=+r}e.a=i,e.b=f;var h=n(62),d=n(61),v=n(113),g=.95047,m=1,y=1.08883,_=4/29,b=6/29,x=3*b*b,w=b*b*b;n.i(h.a)(o,i,n.i(h.b)(d.f,{brighter:function(t){return new o(this.l+18*(null==t?1:t),this.a,this.b,this.opacity)},darker:function(t){return new o(this.l-18*(null==t?1:t),this.a,this.b,this.opacity)},rgb:function(){var t=(this.l+16)/116,e=isNaN(this.a)?t:t+this.a/500,n=isNaN(this.b)?t:t-this.b/200;return t=m*u(t),e=g*u(e),n=y*u(n),new d.d(c(3.2404542*e-1.5371385*t-.4985314*n),c(-.969266*e+1.8760108*t+.041556*n),c(.0556434*e-.2040259*t+1.0572252*n),this.opacity)}})),n.i(h.a)(p,f,n.i(h.b)(d.f,{brighter:function(t){return new p(this.h,this.c,this.l+18*(null==t?1:t),this.opacity)},darker:function(t){return new p(this.h,this.c,this.l-18*(null==t?1:t),this.opacity)},rgb:function(){return r(this).rgb()}}))},function(t,e,n){"use strict";function r(t){return i=n.i(u.a)(t),o=i.format,a=i.formatPrefix,i}n.d(e,"b",function(){return o}),n.d(e,"c",function(){return a}),e.a=r;var i,o,a,u=n(117);r({decimal:".",thousands:",",grouping:[3],currency:["$",""]})},function(t,e,n){"use strict";e.a=function(t,e){t=t.toPrecision(e);t:for(var n,r=t.length,i=1,o=-1;i<r;++i)switch(t[i]){case".":o=n=i;break;case"0":0===o&&(o=i),n=i;break;case"e":break t;default:o>0&&(o=0)}return o>0?t.slice(0,o)+t.slice(n+1):t}},function(t,e,n){"use strict";e.a=function(t,e){return function(n,r){for(var i=n.length,o=[],a=0,u=t[0],c=0;i>0&&u>0&&(c+u+1>r&&(u=Math.max(1,r-c)),o.push(n.substring(i-=u,i+u)),!((c+=u+1)>r));)u=t[a=(a+1)%t.length];return o.reverse().join(e)}}},function(t,e,n){"use strict";e.a=function(t){return function(e){return e.replace(/[0-9]/g,function(e){return t[+e]})}}},function(t,e,n){"use strict";var r=n(63);e.a=function(t,e){var i=n.i(r.a)(t,e);if(!i)return t+"";var o=i[0],a=i[1];return a<0?"0."+new Array(-a).join("0")+o:o.length>a+1?o.slice(0,a+1)+"."+o.slice(a+1):o+new Array(a-o.length+2).join("0")}},function(t,e,n){"use strict";e.a=function(t){return t}},function(t,e,n){"use strict";var r=n(42);e.a=function(t){return Math.max(0,-n.i(r.a)(Math.abs(t)))}},function(t,e,n){"use strict";var r=n(42);e.a=function(t,e){return Math.max(0,3*Math.max(-8,Math.min(8,Math.floor(n.i(r.a)(e)/3)))-n.i(r.a)(Math.abs(t)))}},function(t,e,n){"use strict";var r=n(42);e.a=function(t,e){return t=Math.abs(t),e=Math.abs(e)-t,Math.max(0,n.i(r.a)(e)-n.i(r.a)(t))+1}},function(t,e,n){"use strict";function r(t){return function e(r){function a(e,a){var u=t((e=n.i(i.cubehelix)(e)).h,(a=n.i(i.cubehelix)(a)).h),c=n.i(o.a)(e.s,a.s),s=n.i(o.a)(e.l,a.l),l=n.i(o.a)(e.opacity,a.opacity);return function(t){return e.h=u(t),e.s=c(t),e.l=s(Math.pow(t,r)),e.opacity=l(t),e+""}}return r=+r,a.gamma=e,a}(1)}n.d(e,"a",function(){return a});var i=n(10),o=n(31),a=(r(o.b),r(o.a))},function(t,e,n){"use strict";function r(t){return function(e,r){var a=t((e=n.i(i.hcl)(e)).h,(r=n.i(i.hcl)(r)).h),u=n.i(o.a)(e.c,r.c),c=n.i(o.a)(e.l,r.l),s=n.i(o.a)(e.opacity,r.opacity);return function(t){return e.h=a(t),e.c=u(t),e.l=c(t),e.opacity=s(t),e+""}}}var i=n(10),o=n(31);r(o.b),r(o.a)},function(t,e,n){"use strict";function r(t){return function(e,r){var a=t((e=n.i(i.hsl)(e)).h,(r=n.i(i.hsl)(r)).h),u=n.i(o.a)(e.s,r.s),c=n.i(o.a)(e.l,r.l),s=n.i(o.a)(e.opacity,r.opacity);return function(t){return e.h=a(t),e.s=u(t),e.l=c(t),e.opacity=s(t),e+""}}}var i=n(10),o=n(31);r(o.b),r(o.a)},function(t,e,n){"use strict";n(10),n(31)},function(t,e,n){"use strict"},function(t,e,n){"use strict";e.a=function(t,e){return t=+t,e-=t,function(n){return Math.round(t+e*n)}}},function(t,e,n){"use strict";n.d(e,"a",function(){return i});var r=180/Math.PI,i={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};e.b=function(t,e,n,i,o,a){var u,c,s;return(u=Math.sqrt(t*t+e*e))&&(t/=u,e/=u),(s=t*n+e*i)&&(n-=t*s,i-=e*s),(c=Math.sqrt(n*n+i*i))&&(n/=c,i/=c,s/=c),t*i<e*n&&(t=-t,e=-e,s=-s,u=-u),{translateX:o,translateY:a,rotate:Math.atan2(e,t)*r,skewX:Math.atan(s)*r,scaleX:u,scaleY:c}}},function(t,e,n){"use strict";function r(t,e,r,o){function a(t){return t.length?t.pop()+" ":""}function u(t,o,a,u,c,s){if(t!==a||o!==u){var l=c.push("translate(",null,e,null,r);s.push({i:l-4,x:n.i(i.a)(t,a)},{i:l-2,x:n.i(i.a)(o,u)})}else(a||u)&&c.push("translate("+a+e+u+r)}function c(t,e,r,u){t!==e?(t-e>180?e+=360:e-t>180&&(t+=360),u.push({i:r.push(a(r)+"rotate(",null,o)-2,x:n.i(i.a)(t,e)})):e&&r.push(a(r)+"rotate("+e+o)}function s(t,e,r,u){t!==e?u.push({i:r.push(a(r)+"skewX(",null,o)-2,x:n.i(i.a)(t,e)}):e&&r.push(a(r)+"skewX("+e+o)}function l(t,e,r,o,u,c){if(t!==r||e!==o){var s=u.push(a(u)+"scale(",null,",",null,")");c.push({i:s-4,x:n.i(i.a)(t,r)},{i:s-2,x:n.i(i.a)(e,o)})}else 1===r&&1===o||u.push(a(u)+"scale("+r+","+o+")")}return function(e,n){var r=[],i=[];return e=t(e),n=t(n),u(e.translateX,e.translateY,n.translateX,n.translateY,r,i),c(e.rotate,n.rotate,r,i),s(e.skewX,n.skewX,r,i),l(e.scaleX,e.scaleY,n.scaleX,n.scaleY,r,i),e=n=null,function(t){for(var e,n=-1,o=i.length;++n<o;)r[(e=i[n]).i]=e.x(t);return r.join("")}}}var i=n(43),o=n(236);r(o.a,"px, ","px)","deg)"),r(o.b,", ",")",")")},function(t,e,n){"use strict";function r(t){return"none"===t?s.a:(o||(o=document.createElement("DIV"),a=document.documentElement,u=document.defaultView),o.style.transform=t,t=u.getComputedStyle(a.appendChild(o),null).getPropertyValue("transform"),a.removeChild(o),t=t.slice(7,-1).split(","),n.i(s.b)(+t[0],+t[1],+t[2],+t[3],+t[4],+t[5]))}function i(t){return null==t?s.a:(c||(c=document.createElementNS("http://www.w3.org/2000/svg","g")),c.setAttribute("transform",t),(t=c.transform.baseVal.consolidate())?(t=t.matrix,n.i(s.b)(t.a,t.b,t.c,t.d,t.e,t.f)):s.a)}e.a=r,e.b=i;var o,a,u,c,s=n(234)},function(t,e,n){"use strict";Math.SQRT2},function(t,e,n){"use strict";function r(){this._x0=this._y0=this._x1=this._y1=null,this._=""}function i(){return new r}var o=Math.PI,a=2*o,u=a-1e-6;r.prototype=i.prototype={constructor:r,moveTo:function(t,e){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+e)},closePath:function(){null!==this._x1&&(this._x1=this._x0,this._y1=this._y0,this._+="Z")},lineTo:function(t,e){this._+="L"+(this._x1=+t)+","+(this._y1=+e)},quadraticCurveTo:function(t,e,n,r){this._+="Q"+ +t+","+ +e+","+(this._x1=+n)+","+(this._y1=+r)},bezierCurveTo:function(t,e,n,r,i,o){this._+="C"+ +t+","+ +e+","+ +n+","+ +r+","+(this._x1=+i)+","+(this._y1=+o)},arcTo:function(t,e,n,r,i){t=+t,e=+e,n=+n,r=+r,i=+i;var a=this._x1,u=this._y1,c=n-t,s=r-e,l=a-t,f=u-e,p=l*l+f*f;if(i<0)throw new Error("negative radius: "+i);if(null===this._x1)this._+="M"+(this._x1=t)+","+(this._y1=e);else if(p>1e-6)if(Math.abs(f*c-s*l)>1e-6&&i){var h=n-a,d=r-u,v=c*c+s*s,g=h*h+d*d,m=Math.sqrt(v),y=Math.sqrt(p),_=i*Math.tan((o-Math.acos((v+p-g)/(2*m*y)))/2),b=_/y,x=_/m;Math.abs(b-1)>1e-6&&(this._+="L"+(t+b*l)+","+(e+b*f)),this._+="A"+i+","+i+",0,0,"+ +(f*h>l*d)+","+(this._x1=t+x*c)+","+(this._y1=e+x*s)}else this._+="L"+(this._x1=t)+","+(this._y1=e);else;},arc:function(t,e,n,r,i,c){t=+t,e=+e,n=+n;var s=n*Math.cos(r),l=n*Math.sin(r),f=t+s,p=e+l,h=1^c,d=c?r-i:i-r;if(n<0)throw new Error("negative radius: "+n);null===this._x1?this._+="M"+f+","+p:(Math.abs(this._x1-f)>1e-6||Math.abs(this._y1-p)>1e-6)&&(this._+="L"+f+","+p),n&&(d<0&&(d=d%a+a),d>u?this._+="A"+n+","+n+",0,1,"+h+","+(t-s)+","+(e-l)+"A"+n+","+n+",0,1,"+h+","+(this._x1=f)+","+(this._y1=p):d>1e-6&&(this._+="A"+n+","+n+",0,"+ +(d>=o)+","+h+","+(this._x1=t+n*Math.cos(i))+","+(this._y1=e+n*Math.sin(i))))},rect:function(t,e,n,r){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+e)+"h"+ +n+"v"+ +r+"h"+-n+"Z"},toString:function(){return this._}},e.a=i},function(t,e,n){"use strict";function r(){function t(){var t=c().length,r=l[1]<l[0],o=l[r-0],u=l[1-r];e=(u-o)/Math.max(1,t-p+2*h),f&&(e=Math.floor(e)),o+=(u-o-e*(t-p))*d,i=e*(1-p),f&&(o=Math.round(o),i=Math.round(i));var v=n.i(a.range)(t).map(function(t){return o+e*t});return s(r?v.reverse():v)}var e,i,o=n.i(u.a)().unknown(void 0),c=o.domain,s=o.range,l=[0,1],f=!1,p=0,h=0,d=.5;return delete o.unknown,o.domain=function(e){return arguments.length?(c(e),t()):c()},o.range=function(e){return arguments.length?(l=[+e[0],+e[1]],t()):l.slice()},o.rangeRound=function(e){return l=[+e[0],+e[1]],f=!0,t()},o.bandwidth=function(){return i},o.step=function(){return e},o.round=function(e){return arguments.length?(f=!!e,t()):f},o.padding=function(e){return arguments.length?(p=h=Math.max(0,Math.min(1,e)),t()):p},o.paddingInner=function(e){return arguments.length?(p=Math.max(0,Math.min(1,e)),t()):p},o.paddingOuter=function(e){return arguments.length?(h=Math.max(0,Math.min(1,e)),t()):h},o.align=function(e){return arguments.length?(d=Math.max(0,Math.min(1,e)),t()):d},o.copy=function(){return r().domain(c()).range(l).round(f).paddingInner(p).paddingOuter(h).align(d)},t()}function i(t){var e=t.copy;return t.padding=t.paddingOuter,delete t.paddingInner,delete t.paddingOuter,t.copy=function(){return i(e())},t}function o(){return i(r().paddingInner(1))}e.a=r,e.b=o;var a=n(7),u=n(127)},function(t,e,n){"use strict";var r=n(33);e.a=n.i(r.a)("1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf")},function(t,e,n){"use strict";var r=n(33);e.a=n.i(r.a)("1f77b4aec7e8ff7f0effbb782ca02c98df8ad62728ff98969467bdc5b0d58c564bc49c94e377c2f7b6d27f7f7fc7c7c7bcbd22dbdb8d17becf9edae5")},function(t,e,n){"use strict";var r=n(33);e.a=n.i(r.a)("393b795254a36b6ecf9c9ede6379398ca252b5cf6bcedb9c8c6d31bd9e39e7ba52e7cb94843c39ad494ad6616be7969c7b4173a55194ce6dbdde9ed6")},function(t,e,n){"use strict";var r=n(33);e.a=n.i(r.a)("3182bd6baed69ecae1c6dbefe6550dfd8d3cfdae6bfdd0a231a35474c476a1d99bc7e9c0756bb19e9ac8bcbddcdadaeb636363969696bdbdbdd9d9d9")},function(t,e,n){"use strict";var r=n(10),i=n(30);e.a=n.i(i.d)(n.i(r.cubehelix)(300,.5,0),n.i(r.cubehelix)(-240,.5,1))},function(t,e,n){"use strict";function r(){function t(t){return+t}var e=[0,1];return t.invert=t,t.domain=t.range=function(n){return arguments.length?(e=i.a.call(n,a.a),t):e.slice()},t.copy=function(){return r().domain(e)},n.i(o.b)(t)}e.a=r;var i=n(16),o=n(34),a=n(126)},function(t,e,n){"use strict";function r(t,e){return(e=Math.log(e/t))?function(n){return Math.log(n/t)/e}:n.i(p.a)(e)}function i(t,e){return t<0?function(n){return-Math.pow(-e,n)*Math.pow(-t,1-n)}:function(n){return Math.pow(e,n)*Math.pow(t,1-n)}}function o(t){return isFinite(t)?+("1e"+t):t<0?0:t}function a(t){return 10===t?o:t===Math.E?Math.exp:function(e){return Math.pow(t,e)}}function u(t){return t===Math.E?Math.log:10===t&&Math.log10||2===t&&Math.log2||(t=Math.log(t),function(e){return Math.log(e)/t})}function c(t){return function(e){return-t(-e)}}function s(){function t(){return v=u(p),g=a(p),o()[0]<0&&(v=c(v),g=c(g)),e}var e=n.i(d.a)(r,i).domain([1,10]),o=e.domain,p=10,v=u(10),g=a(10);return e.base=function(e){return arguments.length?(p=+e,t()):p},e.domain=function(e){return arguments.length?(o(e),t()):o()},e.ticks=function(t){var e,r=o(),i=r[0],a=r[r.length-1];(e=a<i)&&(f=i,i=a,a=f);var u,c,s,f=v(i),h=v(a),d=null==t?10:+t,m=[];if(!(p%1)&&h-f<d){if(f=Math.round(f)-1,h=Math.round(h)+1,i>0){for(;f<h;++f)for(c=1,u=g(f);c<p;++c)if(!((s=u*c)<i)){if(s>a)break;m.push(s)}}else for(;f<h;++f)for(c=p-1,u=g(f);c>=1;--c)if(!((s=u*c)<i)){if(s>a)break;m.push(s)}}else m=n.i(l.ticks)(f,h,Math.min(h-f,d)).map(g);return e?m.reverse():m},e.tickFormat=function(t,r){if(null==r&&(r=10===p?".0e":","),"function"!=typeof r&&(r=n.i(f.format)(r)),t===1/0)return r;null==t&&(t=10);var i=Math.max(1,p*t/e.ticks().length);return function(t){var e=t/g(Math.round(v(t)));return e*p<p-.5&&(e*=p),e<=i?r(t):""}},e.nice=function(){return o(n.i(h.a)(o(),{floor:function(t){return g(Math.floor(v(t)))},ceil:function(t){return g(Math.ceil(v(t)))}}))},e.copy=function(){return n.i(d.c)(e,s().base(p))},e}e.a=s;var l=n(7),f=n(29),p=n(67),h=n(125),d=n(44)},function(t,e,n){"use strict";function r(t,e){return t<0?-Math.pow(-t,e):Math.pow(t,e)}function i(){function t(t,e){return(e=r(e,o)-(t=r(t,o)))?function(n){return(r(n,o)-t)/e}:n.i(a.a)(e)}function e(t,e){return e=r(e,o)-(t=r(t,o)),function(n){return r(t+e*n,1/o)}}var o=1,s=n.i(c.a)(t,e),l=s.domain;return s.exponent=function(t){return arguments.length?(o=+t,l(l())):o},s.copy=function(){return n.i(c.c)(s,i().exponent(o))},n.i(u.b)(s)}function o(){return i().exponent(.5)}e.a=i,e.b=o;var a=n(67),u=n(34),c=n(44)},function(t,e,n){"use strict";function r(){function t(){var t=0,r=Math.max(1,u.length);for(c=new Array(r-1);++t<r;)c[t-1]=n.i(i.quantile)(a,t/r);return e}function e(t){if(!isNaN(t=+t))return u[n.i(i.bisect)(c,t)]}var a=[],u=[],c=[];return e.invertExtent=function(t){var e=u.indexOf(t);return e<0?[NaN,NaN]:[e>0?c[e-1]:a[0],e<c.length?c[e]:a[a.length-1]]},e.domain=function(e){if(!arguments.length)return a.slice();a=[];for(var n,r=0,o=e.length;r<o;++r)null==(n=e[r])||isNaN(n=+n)||a.push(n);return a.sort(i.ascending),t()},e.range=function(e){return arguments.length?(u=o.b.call(e),t()):u.slice()},e.quantiles=function(){return c.slice()},e.copy=function(){return r().domain(a).range(u)},e}e.a=r;var i=n(7),o=n(16)},function(t,e,n){"use strict";function r(){function t(t){if(t<=t)return f[n.i(i.bisect)(l,t,0,s)]}function e(){var e=-1;for(l=new Array(s);++e<s;)l[e]=((e+1)*c-(e-s)*u)/(s+1);return t}var u=0,c=1,s=1,l=[.5],f=[0,1];return t.domain=function(t){return arguments.length?(u=+t[0],c=+t[1],e()):[u,c]},t.range=function(t){return arguments.length?(s=(f=o.b.call(t)).length-1,e()):f.slice()},t.invertExtent=function(t){var e=f.indexOf(t);return e<0?[NaN,NaN]:e<1?[u,l[0]]:e>=s?[l[s-1],c]:[l[e-1],l[e]]},t.copy=function(){return r().domain([u,c]).range(f)},n.i(a.b)(t)}e.a=r;var i=n(7),o=n(16),a=n(34)},function(t,e,n){"use strict";n.d(e,"b",function(){return o}),n.d(e,"c",function(){return a});var r=n(10),i=n(30),o=n.i(i.d)(n.i(r.cubehelix)(-100,.75,.35),n.i(r.cubehelix)(80,1.5,.8)),a=n.i(i.d)(n.i(r.cubehelix)(260,.75,.35),n.i(r.cubehelix)(80,1.5,.8)),u=n.i(r.cubehelix)();e.a=function(t){(t<0||t>1)&&(t-=Math.floor(t));var e=Math.abs(t-.5);return u.h=360*t-100,u.s=1.5-1.5*e,u.l=.8-.9*e,u+""}},function(t,e,n){"use strict";function r(t){function e(e){var n=(e-o)/(a-o);return t(u?Math.max(0,Math.min(1,n)):n)}var o=0,a=1,u=!1;return e.domain=function(t){return arguments.length?(o=+t[0],a=+t[1],e):[o,a]},e.clamp=function(t){return arguments.length?(u=!!t,e):u},e.interpolator=function(n){return arguments.length?(t=n,e):t},e.copy=function(){return r(t).domain([o,a]).clamp(u)},n.i(i.b)(e)}e.a=r;var i=n(34)},function(t,e,n){"use strict";function r(){function t(t){if(t<=t)return a[n.i(i.bisect)(e,t,0,u)]}var e=[.5],a=[0,1],u=1;return t.domain=function(n){return arguments.length?(e=o.b.call(n),u=Math.min(e.length,a.length-1),t):e.slice()},t.range=function(n){return arguments.length?(a=o.b.call(n),u=Math.min(e.length,a.length-1),t):a.slice()},t.invertExtent=function(t){var n=a.indexOf(t);return[e[n-1],e[n]]},t.copy=function(){return r().domain(e).range(a)},t}e.a=r;var i=n(7),o=n(16)},function(t,e,n){"use strict";var r=n(7),i=n(29);e.a=function(t,e,o){var a,u=t[0],c=t[t.length-1],s=n.i(r.tickStep)(u,c,null==e?10:e);switch(o=n.i(i.formatSpecifier)(null==o?",f":o),o.type){case"s":var l=Math.max(Math.abs(u),Math.abs(c));return null!=o.precision||isNaN(a=n.i(i.precisionPrefix)(s,l))||(o.precision=a),n.i(i.formatPrefix)(o,l);case"":case"e":case"g":case"p":case"r":null!=o.precision||isNaN(a=n.i(i.precisionRound)(s,Math.max(Math.abs(u),Math.abs(c))))||(o.precision=a-("e"===o.type));break;case"f":case"%":null!=o.precision||isNaN(a=n.i(i.precisionFixed)(s))||(o.precision=a-2*("%"===o.type))}return n.i(i.format)(o)}},function(t,e,n){"use strict";var r=n(128),i=n(78),o=n(80);e.a=function(){return n.i(r.b)(o.h,o.k,o.l,o.b,o.m,o.n,o.o,o.p,i.utcFormat).domain([Date.UTC(2e3,0,1),Date.UTC(2e3,0,2)])}},function(t,e,n){"use strict";function r(t){var e=t.length;return function(n){return t[Math.max(0,Math.min(e-1,Math.floor(n*e)))]}}n.d(e,"b",function(){return o}),n.d(e,"c",function(){return a}),n.d(e,"d",function(){return u});var i=n(33);e.a=r(n.i(i.a)("44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548146748166848176948186a481a6c481b6d481c6e481d6f481f70482071482173482374482475482576482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581453781453882443983443a83443b84433d84433e85423f854240864241864142874144874045884046883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a548c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad8128ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773aba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c56954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece5870cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21ad8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8e621fbe723fde725"));var o=r(n.i(i.a)("00000401000501010601010802010902020b02020d03030f03031204041405041606051806051a07061c08071e0907200a08220b09240c09260d0a290e0b2b100b2d110c2f120d31130d34140e36150e38160f3b180f3d19103f1a10421c10441d11471e114920114b21114e22115024125325125527125829115a2a115c2c115f2d11612f116331116533106734106936106b38106c390f6e3b0f703d0f713f0f72400f74420f75440f764510774710784910784a10794c117a4e117b4f127b51127c52137c54137d56147d57157e59157e5a167e5c167f5d177f5f187f601880621980641a80651a80671b80681c816a1c816b1d816d1d816e1e81701f81721f817320817521817621817822817922827b23827c23827e24828025828125818326818426818627818827818928818b29818c29818e2a81902a81912b81932b80942c80962c80982d80992d809b2e7f9c2e7f9e2f7fa02f7fa1307ea3307ea5317ea6317da8327daa337dab337cad347cae347bb0357bb2357bb3367ab5367ab73779b83779ba3878bc3978bd3977bf3a77c03a76c23b75c43c75c53c74c73d73c83e73ca3e72cc3f71cd4071cf4070d0416fd2426fd3436ed5446dd6456cd8456cd9466bdb476adc4869de4968df4a68e04c67e24d66e34e65e44f64e55064e75263e85362e95462ea5661eb5760ec5860ed5a5fee5b5eef5d5ef05f5ef1605df2625df2645cf3655cf4675cf4695cf56b5cf66c5cf66e5cf7705cf7725cf8745cf8765cf9785df9795df97b5dfa7d5efa7f5efa815ffb835ffb8560fb8761fc8961fc8a62fc8c63fc8e64fc9065fd9266fd9467fd9668fd9869fd9a6afd9b6bfe9d6cfe9f6dfea16efea36ffea571fea772fea973feaa74feac76feae77feb078feb27afeb47bfeb67cfeb77efeb97ffebb81febd82febf84fec185fec287fec488fec68afec88cfeca8dfecc8ffecd90fecf92fed194fed395fed597fed799fed89afdda9cfddc9efddea0fde0a1fde2a3fde3a5fde5a7fde7a9fde9aafdebacfcecaefceeb0fcf0b2fcf2b4fcf4b6fcf6b8fcf7b9fcf9bbfcfbbdfcfdbf")),a=r(n.i(i.a)("00000401000501010601010802010a02020c02020e03021004031204031405041706041907051b08051d09061f0a07220b07240c08260d08290e092b10092d110a30120a32140b34150b37160b39180c3c190c3e1b0c411c0c431e0c451f0c48210c4a230c4c240c4f260c51280b53290b552b0b572d0b592f0a5b310a5c320a5e340a5f3609613809623909633b09643d09653e0966400a67420a68440a68450a69470b6a490b6a4a0c6b4c0c6b4d0d6c4f0d6c510e6c520e6d540f6d550f6d57106e59106e5a116e5c126e5d126e5f136e61136e62146e64156e65156e67166e69166e6a176e6c186e6d186e6f196e71196e721a6e741a6e751b6e771c6d781c6d7a1d6d7c1d6d7d1e6d7f1e6c801f6c82206c84206b85216b87216b88226a8a226a8c23698d23698f24699025689225689326679526679727669827669a28659b29649d29649f2a63a02a63a22b62a32c61a52c60a62d60a82e5fa92e5eab2f5ead305dae305cb0315bb1325ab3325ab43359b63458b73557b93556ba3655bc3754bd3853bf3952c03a51c13a50c33b4fc43c4ec63d4dc73e4cc83f4bca404acb4149cc4248ce4347cf4446d04545d24644d34743d44842d54a41d74b3fd84c3ed94d3dda4e3cdb503bdd513ade5238df5337e05536e15635e25734e35933e45a31e55c30e65d2fe75e2ee8602de9612bea632aeb6429eb6628ec6726ed6925ee6a24ef6c23ef6e21f06f20f1711ff1731df2741cf3761bf37819f47918f57b17f57d15f67e14f68013f78212f78410f8850ff8870ef8890cf98b0bf98c0af98e09fa9008fa9207fa9407fb9606fb9706fb9906fb9b06fb9d07fc9f07fca108fca309fca50afca60cfca80dfcaa0ffcac11fcae12fcb014fcb216fcb418fbb61afbb81dfbba1ffbbc21fbbe23fac026fac228fac42afac62df9c72ff9c932f9cb35f8cd37f8cf3af7d13df7d340f6d543f6d746f5d949f5db4cf4dd4ff4df53f4e156f3e35af3e55df2e661f2e865f2ea69f1ec6df1ed71f1ef75f1f179f2f27df2f482f3f586f3f68af4f88ef5f992f6fa96f8fb9af9fc9dfafda1fcffa4")),u=r(n.i(i.a)("0d088710078813078916078a19068c1b068d1d068e20068f2206902406912605912805922a05932c05942e05952f059631059733059735049837049938049a3a049a3c049b3e049c3f049c41049d43039e44039e46039f48039f4903a04b03a14c02a14e02a25002a25102a35302a35502a45601a45801a45901a55b01a55c01a65e01a66001a66100a76300a76400a76600a76700a86900a86a00a86c00a86e00a86f00a87100a87201a87401a87501a87701a87801a87a02a87b02a87d03a87e03a88004a88104a78305a78405a78606a68707a68808a68a09a58b0aa58d0ba58e0ca48f0da4910ea3920fa39410a29511a19613a19814a099159f9a169f9c179e9d189d9e199da01a9ca11b9ba21d9aa31e9aa51f99a62098a72197a82296aa2395ab2494ac2694ad2793ae2892b02991b12a90b22b8fb32c8eb42e8db52f8cb6308bb7318ab83289ba3388bb3488bc3587bd3786be3885bf3984c03a83c13b82c23c81c33d80c43e7fc5407ec6417dc7427cc8437bc9447aca457acb4679cc4778cc4977cd4a76ce4b75cf4c74d04d73d14e72d24f71d35171d45270d5536fd5546ed6556dd7566cd8576bd9586ada5a6ada5b69db5c68dc5d67dd5e66de5f65de6164df6263e06363e16462e26561e26660e3685fe4695ee56a5de56b5de66c5ce76e5be76f5ae87059e97158e97257ea7457eb7556eb7655ec7754ed7953ed7a52ee7b51ef7c51ef7e50f07f4ff0804ef1814df1834cf2844bf3854bf3874af48849f48948f58b47f58c46f68d45f68f44f79044f79143f79342f89441f89540f9973ff9983ef99a3efa9b3dfa9c3cfa9e3bfb9f3afba139fba238fca338fca537fca636fca835fca934fdab33fdac33fdae32fdaf31fdb130fdb22ffdb42ffdb52efeb72dfeb82cfeba2cfebb2bfebd2afebe2afec029fdc229fdc328fdc527fdc627fdc827fdca26fdcb26fccd25fcce25fcd025fcd225fbd324fbd524fbd724fad824fada24f9dc24f9dd25f8df25f8e125f7e225f7e425f6e626f6e826f5e926f5eb27f4ed27f3ee27f3f027f2f227f1f426f1f525f0f724f0f921"))},function(t,e,n){"use strict";e.a=function(t){return function(){return t}}},function(t,e,n){"use strict";var r=n(45),i=n(131);e.a=function(t){return n.i(i.a)(n.i(r.a)(t).call(document.documentElement))}},function(t,e,n){"use strict";function r(){return new i}function i(){this._="@"+(++o).toString(36)}e.a=r;var o=0;i.prototype=r.prototype={constructor:i,get:function(t){for(var e=this._;!(e in t);)if(!(t=t.parentNode))return;return t[e]},set:function(t,e){return t[this._]=e},remove:function(t){return this._ in t&&delete t[this._]},toString:function(){return this._}}},function(t,e,n){"use strict";var r=n(72),i=n(46);e.a=function(t){var e=n.i(r.a)();return e.changedTouches&&(e=e.changedTouches[0]),n.i(i.a)(t,e)}},function(t,e,n){"use strict";var r=n(8);e.a=function(t){return"string"==typeof t?new r.b([document.querySelectorAll(t)],[document.documentElement]):new r.b([null==t?[]:t],r.c)}},function(t,e,n){"use strict";var r=n(45);e.a=function(t){var e="function"==typeof t?t:n.i(r.a)(t);return this.select(function(){return this.appendChild(e.apply(this,arguments))})}},function(t,e,n){"use strict";function r(t){return function(){this.removeAttribute(t)}}function i(t){return function(){this.removeAttributeNS(t.space,t.local)}}function o(t,e){return function(){this.setAttribute(t,e)}}function a(t,e){return function(){this.setAttributeNS(t.space,t.local,e)}}function u(t,e){return function(){var n=e.apply(this,arguments);null==n?this.removeAttribute(t):this.setAttribute(t,n)}}function c(t,e){return function(){var n=e.apply(this,arguments);null==n?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,n)}}var s=n(68);e.a=function(t,e){var l=n.i(s.a)(t);if(arguments.length<2){var f=this.node();return l.local?f.getAttributeNS(l.space,l.local):f.getAttribute(l)}return this.each((null==e?l.local?i:r:"function"==typeof e?l.local?c:u:l.local?a:o)(l,e))}},function(t,e,n){"use strict";e.a=function(){var t=arguments[0];return arguments[0]=this,t.apply(null,arguments),this}},function(t,e,n){"use strict";function r(t){return t.trim().split(/^|\s+/)}function i(t){return t.classList||new o(t)}function o(t){this._node=t,this._names=r(t.getAttribute("class")||"")}function a(t,e){for(var n=i(t),r=-1,o=e.length;++r<o;)n.add(e[r])}function u(t,e){for(var n=i(t),r=-1,o=e.length;++r<o;)n.remove(e[r])}function c(t){return function(){a(this,t)}}function s(t){return function(){u(this,t)}}function l(t,e){return function(){(e.apply(this,arguments)?a:u)(this,t)}}o.prototype={add:function(t){this._names.indexOf(t)<0&&(this._names.push(t),this._node.setAttribute("class",this._names.join(" ")))},remove:function(t){var e=this._names.indexOf(t);e>=0&&(this._names.splice(e,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}},e.a=function(t,e){var n=r(t+"");if(arguments.length<2){for(var o=i(this.node()),a=-1,u=n.length;++a<u;)if(!o.contains(n[a]))return!1;return!0}return this.each(("function"==typeof e?l:e?c:s)(n,e))}},function(t,e,n){"use strict";function r(){return this.parentNode.insertBefore(this.cloneNode(!1),this.nextSibling)}function i(){return this.parentNode.insertBefore(this.cloneNode(!0),this.nextSibling)}e.a=function(t){return this.select(t?i:r)}},function(t,e,n){"use strict";function r(t,e,n,r,i,o){for(var u,c=0,s=e.length,l=o.length;c<l;++c)(u=e[c])?(u.__data__=o[c],r[c]=u):n[c]=new a.b(t,o[c]);for(;c<s;++c)(u=e[c])&&(i[c]=u)}function i(t,e,n,r,i,o,u){var s,l,f,p={},h=e.length,d=o.length,v=new Array(h);for(s=0;s<h;++s)(l=e[s])&&(v[s]=f=c+u.call(l,l.__data__,s,e),f in p?i[s]=l:p[f]=l);for(s=0;s<d;++s)f=c+u.call(t,o[s],s,o),(l=p[f])?(r[s]=l,l.__data__=o[s],p[f]=null):n[s]=new a.b(t,o[s]);for(s=0;s<h;++s)(l=e[s])&&p[v[s]]===l&&(i[s]=l)}var o=n(8),a=n(132),u=n(256),c="$";e.a=function(t,e){if(!t)return y=new Array(this.size()),d=-1,this.each(function(t){y[++d]=t}),y;var a=e?i:r,c=this._parents,s=this._groups;"function"!=typeof t&&(t=n.i(u.a)(t));for(var l=s.length,f=new Array(l),p=new Array(l),h=new Array(l),d=0;d<l;++d){var v=c[d],g=s[d],m=g.length,y=t.call(v,v&&v.__data__,d,c),_=y.length,b=p[d]=new Array(_),x=f[d]=new Array(_);a(v,g,b,x,h[d]=new Array(m),y,e);for(var w,C,k=0,E=0;k<_;++k)if(w=b[k]){for(k>=E&&(E=k+1);!(C=x[E])&&++E<_;);w._next=C||null}}return f=new o.b(f,c),f._enter=p,f._exit=h,f}},function(t,e,n){"use strict";e.a=function(t){return arguments.length?this.property("__data__",t):this.node().__data__}},function(t,e,n){"use strict";function r(t,e,r){var i=n.i(a.a)(t),o=i.CustomEvent;"function"==typeof o?o=new o(e,r):(o=i.document.createEvent("Event"),r?(o.initEvent(e,r.bubbles,r.cancelable),o.detail=r.detail):o.initEvent(e,!1,!1)),t.dispatchEvent(o)}function i(t,e){return function(){return r(this,t,e)}}function o(t,e){return function(){return r(this,t,e.apply(this,arguments))}}var a=n(73);e.a=function(t,e){return this.each(("function"==typeof e?o:i)(t,e))}},function(t,e,n){"use strict";e.a=function(t){for(var e=this._groups,n=0,r=e.length;n<r;++n)for(var i,o=e[n],a=0,u=o.length;a<u;++a)(i=o[a])&&t.call(i,i.__data__,a,o);return this}},function(t,e,n){"use strict";e.a=function(){return!this.node()}},function(t,e,n){"use strict";var r=n(133),i=n(8);e.a=function(){return new i.b(this._exit||this._groups.map(r.a),this._parents)}},function(t,e,n){"use strict";var r=n(8),i=n(130);e.a=function(t){"function"!=typeof t&&(t=n.i(i.a)(t));for(var e=this._groups,o=e.length,a=new Array(o),u=0;u<o;++u)for(var c,s=e[u],l=s.length,f=a[u]=[],p=0;p<l;++p)(c=s[p])&&t.call(c,c.__data__,p,s)&&f.push(c);return new r.b(a,this._parents)}},function(t,e,n){"use strict";function r(){this.innerHTML=""}function i(t){return function(){this.innerHTML=t}}function o(t){return function(){var e=t.apply(this,arguments);this.innerHTML=null==e?"":e}}e.a=function(t){return arguments.length?this.each(null==t?r:("function"==typeof t?o:i)(t)):this.node().innerHTML}},function(t,e,n){"use strict";function r(){return null}var i=n(45),o=n(71);e.a=function(t,e){var a="function"==typeof t?t:n.i(i.a)(t),u=null==e?r:"function"==typeof e?e:n.i(o.a)(e);return this.select(function(){return this.insertBefore(a.apply(this,arguments),u.apply(this,arguments)||null)})}},function(t,e,n){"use strict";function r(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}e.a=function(){return this.each(r)}},function(t,e,n){"use strict";var r=n(8);e.a=function(t){for(var e=this._groups,n=t._groups,i=e.length,o=n.length,a=Math.min(i,o),u=new Array(i),c=0;c<a;++c)for(var s,l=e[c],f=n[c],p=l.length,h=u[c]=new Array(p),d=0;d<p;++d)(s=l[d]||f[d])&&(h[d]=s);for(;c<i;++c)u[c]=e[c];return new r.b(u,this._parents)}},function(t,e,n){"use strict";e.a=function(){for(var t=this._groups,e=0,n=t.length;e<n;++e)for(var r=t[e],i=0,o=r.length;i<o;++i){var a=r[i];if(a)return a}return null}},function(t,e,n){"use strict";e.a=function(){var t=new Array(this.size()),e=-1;return this.each(function(){t[++e]=this}),t}},function(t,e,n){"use strict";e.a=function(){for(var t=this._groups,e=-1,n=t.length;++e<n;)for(var r,i=t[e],o=i.length-1,a=i[o];--o>=0;)(r=i[o])&&(a&&a!==r.nextSibling&&a.parentNode.insertBefore(r,a),a=r);return this}},function(t,e,n){"use strict";function r(t){return function(){delete this[t]}}function i(t,e){return function(){this[t]=e}}function o(t,e){return function(){var n=e.apply(this,arguments);null==n?delete this[t]:this[t]=n}}e.a=function(t,e){return arguments.length>1?this.each((null==e?r:"function"==typeof e?o:i)(t,e)):this.node()[t]}},function(t,e,n){"use strict";function r(){this.nextSibling&&this.parentNode.appendChild(this)}e.a=function(){return this.each(r)}},function(t,e,n){"use strict";function r(){var t=this.parentNode;t&&t.removeChild(this)}e.a=function(){return this.each(r)}},function(t,e,n){"use strict";var r=n(8),i=n(71);e.a=function(t){"function"!=typeof t&&(t=n.i(i.a)(t));for(var e=this._groups,o=e.length,a=new Array(o),u=0;u<o;++u)for(var c,s,l=e[u],f=l.length,p=a[u]=new Array(f),h=0;h<f;++h)(c=l[h])&&(s=t.call(c,c.__data__,h,l))&&("__data__"in c&&(s.__data__=c.__data__),p[h]=s);return new r.b(a,this._parents)}},function(t,e,n){"use strict";var r=n(8),i=n(135);e.a=function(t){"function"!=typeof t&&(t=n.i(i.a)(t));for(var e=this._groups,o=e.length,a=[],u=[],c=0;c<o;++c)for(var s,l=e[c],f=l.length,p=0;p<f;++p)(s=l[p])&&(a.push(t.call(s,s.__data__,p,l)),u.push(s));return new r.b(a,u)}},function(t,e,n){"use strict";e.a=function(){var t=0;return this.each(function(){++t}),t}},function(t,e,n){"use strict";function r(t,e){return t<e?-1:t>e?1:t>=e?0:NaN}var i=n(8);e.a=function(t){function e(e,n){return e&&n?t(e.__data__,n.__data__):!e-!n}t||(t=r);for(var n=this._groups,o=n.length,a=new Array(o),u=0;u<o;++u){for(var c,s=n[u],l=s.length,f=a[u]=new Array(l),p=0;p<l;++p)(c=s[p])&&(f[p]=c);f.sort(e)}return new i.b(a,this._parents).order()}},function(t,e,n){"use strict";function r(){this.textContent=""}function i(t){return function(){this.textContent=t}}function o(t){return function(){var e=t.apply(this,arguments);this.textContent=null==e?"":e}}e.a=function(t){return arguments.length?this.each(null==t?r:("function"==typeof t?o:i)(t)):this.node().textContent}},function(t,e,n){"use strict";var r=n(72),i=n(46);e.a=function(t,e,o){arguments.length<3&&(o=e,e=n.i(r.a)().changedTouches);for(var a,u=0,c=e?e.length:0;u<c;++u)if((a=e[u]).identifier===o)return n.i(i.a)(t,a);return null}},function(t,e,n){"use strict";var r=n(72),i=n(46);e.a=function(t,e){null==e&&(e=n.i(r.a)().touches);for(var o=0,a=e?e.length:0,u=new Array(a);o<a;++o)u[o]=n.i(i.a)(t,e[o]);return u}},function(t,e,n){"use strict";function r(t){return t.innerRadius}function i(t){return t.outerRadius}function o(t){return t.startAngle}function a(t){return t.endAngle}function u(t){return t&&t.padAngle}function c(t,e,n,r,i,o,a,u){var c=n-t,s=r-e,l=a-i,f=u-o,p=(l*(e-o)-f*(t-i))/(f*c-l*s);return[t+p*c,e+p*s]}function s(t,e,r,i,o,a,u){var c=t-r,s=e-i,l=(u?a:-a)/n.i(p.d)(c*c+s*s),f=l*s,h=-l*c,d=t+f,v=e+h,g=r+f,m=i+h,y=(d+g)/2,_=(v+m)/2,b=g-d,x=m-v,w=b*b+x*x,C=o-a,k=d*m-g*v,E=(x<0?-1:1)*n.i(p.d)(n.i(p.e)(0,C*C*w-k*k)),M=(k*x-b*E)/w,T=(-k*b-x*E)/w,S=(k*x+b*E)/w,N=(-k*b+x*E)/w,A=M-y,P=T-_,O=S-y,I=N-_;return A*A+P*P>O*O+I*I&&(M=S,T=N),{cx:M,cy:T,x01:-f,y01:-h,x11:M*(o/C-1),y11:T*(o/C-1)}}var l=n(32),f=n(17),p=n(35);e.a=function(){function t(){var t,r,i=+e.apply(this,arguments),o=+h.apply(this,arguments),a=g.apply(this,arguments)-p.f,u=m.apply(this,arguments)-p.f,f=n.i(p.g)(u-a),b=u>a;if(_||(_=t=n.i(l.a)()),o<i&&(r=o,o=i,i=r),o>p.a)if(f>p.c-p.a)_.moveTo(o*n.i(p.h)(a),o*n.i(p.i)(a)),_.arc(0,0,o,a,u,!b),i>p.a&&(_.moveTo(i*n.i(p.h)(u),i*n.i(p.i)(u)),_.arc(0,0,i,u,a,b));else{var x,w,C=a,k=u,E=a,M=u,T=f,S=f,N=y.apply(this,arguments)/2,A=N>p.a&&(v?+v.apply(this,arguments):n.i(p.d)(i*i+o*o)),P=n.i(p.j)(n.i(p.g)(o-i)/2,+d.apply(this,arguments)),O=P,I=P;if(A>p.a){var D=n.i(p.k)(A/i*n.i(p.i)(N)),R=n.i(p.k)(A/o*n.i(p.i)(N));(T-=2*D)>p.a?(D*=b?1:-1,E+=D,M-=D):(T=0,E=M=(a+u)/2),(S-=2*R)>p.a?(R*=b?1:-1,C+=R,k-=R):(S=0,C=k=(a+u)/2)}var L=o*n.i(p.h)(C),U=o*n.i(p.i)(C),F=i*n.i(p.h)(M),j=i*n.i(p.i)(M);if(P>p.a){var B=o*n.i(p.h)(k),V=o*n.i(p.i)(k),W=i*n.i(p.h)(E),z=i*n.i(p.i)(E);if(f<p.b){var H=T>p.a?c(L,U,W,z,B,V,F,j):[F,j],q=L-H[0],Y=U-H[1],K=B-H[0],G=V-H[1],$=1/n.i(p.i)(n.i(p.l)((q*K+Y*G)/(n.i(p.d)(q*q+Y*Y)*n.i(p.d)(K*K+G*G)))/2),X=n.i(p.d)(H[0]*H[0]+H[1]*H[1]);O=n.i(p.j)(P,(i-X)/($-1)),I=n.i(p.j)(P,(o-X)/($+1))}}S>p.a?I>p.a?(x=s(W,z,L,U,o,I,b),w=s(B,V,F,j,o,I,b),_.moveTo(x.cx+x.x01,x.cy+x.y01),I<P?_.arc(x.cx,x.cy,I,n.i(p.m)(x.y01,x.x01),n.i(p.m)(w.y01,w.x01),!b):(_.arc(x.cx,x.cy,I,n.i(p.m)(x.y01,x.x01),n.i(p.m)(x.y11,x.x11),!b),_.arc(0,0,o,n.i(p.m)(x.cy+x.y11,x.cx+x.x11),n.i(p.m)(w.cy+w.y11,w.cx+w.x11),!b),_.arc(w.cx,w.cy,I,n.i(p.m)(w.y11,w.x11),n.i(p.m)(w.y01,w.x01),!b))):(_.moveTo(L,U),_.arc(0,0,o,C,k,!b)):_.moveTo(L,U),i>p.a&&T>p.a?O>p.a?(x=s(F,j,B,V,i,-O,b),w=s(L,U,W,z,i,-O,b),_.lineTo(x.cx+x.x01,x.cy+x.y01),O<P?_.arc(x.cx,x.cy,O,n.i(p.m)(x.y01,x.x01),n.i(p.m)(w.y01,w.x01),!b):(_.arc(x.cx,x.cy,O,n.i(p.m)(x.y01,x.x01),n.i(p.m)(x.y11,x.x11),!b),_.arc(0,0,i,n.i(p.m)(x.cy+x.y11,x.cx+x.x11),n.i(p.m)(w.cy+w.y11,w.cx+w.x11),b),_.arc(w.cx,w.cy,O,n.i(p.m)(w.y11,w.x11),n.i(p.m)(w.y01,w.x01),!b))):_.arc(0,0,i,M,E,b):_.lineTo(F,j)}else _.moveTo(0,0);if(_.closePath(),t)return _=null,t+""||null}var e=r,h=i,d=n.i(f.a)(0),v=null,g=o,m=a,y=u,_=null;return t.centroid=function(){var t=(+e.apply(this,arguments)+ +h.apply(this,arguments))/2,r=(+g.apply(this,arguments)+ +m.apply(this,arguments))/2-p.b/2;return[n.i(p.h)(r)*t,n.i(p.i)(r)*t]},t.innerRadius=function(r){return arguments.length?(e="function"==typeof r?r:n.i(f.a)(+r),t):e},t.outerRadius=function(e){return arguments.length?(h="function"==typeof e?e:n.i(f.a)(+e),t):h},t.cornerRadius=function(e){return arguments.length?(d="function"==typeof e?e:n.i(f.a)(+e),t):d},t.padRadius=function(e){return arguments.length?(v=null==e?null:"function"==typeof e?e:n.i(f.a)(+e),t):v},t.startAngle=function(e){return arguments.length?(g="function"==typeof e?e:n.i(f.a)(+e),t):g},t.endAngle=function(e){return arguments.length?(m="function"==typeof e?e:n.i(f.a)(+e),t):m},t.padAngle=function(e){return arguments.length?(y="function"==typeof e?e:n.i(f.a)(+e),t):y},t.context=function(e){return arguments.length?(_=null==e?null:e,t):_},t}},function(t,e,n){"use strict";var r=n(141),i=n(137),o=n(142);e.a=function(){var t=n.i(i.a)().curve(r.b),e=t.curve,a=t.lineX0,u=t.lineX1,c=t.lineY0,s=t.lineY1;return t.angle=t.x,delete t.x,t.startAngle=t.x0,delete t.x0,t.endAngle=t.x1,delete t.x1,t.radius=t.y,delete t.y,t.innerRadius=t.y0,delete t.y0,t.outerRadius=t.y1,delete t.y1,t.lineStartAngle=function(){return n.i(o.b)(a())},delete t.lineX0,t.lineEndAngle=function(){return n.i(o.b)(u())},delete t.lineX1,t.lineInnerRadius=function(){return n.i(o.b)(c())},delete t.lineY0,t.lineOuterRadius=function(){return n.i(o.b)(s())},delete t.lineY1,t.curve=function(t){return arguments.length?e(n.i(r.a)(t)):e()._curve},t}},function(t,e,n){"use strict";function r(t){this._context=t}var i=n(50),o=n(47);r.prototype={areaStart:i.a,areaEnd:i.a,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x2,this._y2),this._context.closePath();break;case 2:this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break;case 3:this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4)}},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._x2=t,this._y2=e;break;case 1:this._point=2,this._x3=t,this._y3=e;break;case 2:this._point=3,this._x4=t,this._y4=e,this._context.moveTo((this._x0+4*this._x1+t)/6,(this._y0+4*this._y1+e)/6);break;default:n.i(o.c)(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}},e.a=function(t){return new r(t)}},function(t,e,n){"use strict";function r(t){this._context=t}var i=n(47);r.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var r=(this._x0+4*this._x1+t)/6,o=(this._y0+4*this._y1+e)/6;this._line?this._context.lineTo(r,o):this._context.moveTo(r,o);break;case 3:this._point=4;default:n.i(i.c)(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}},e.a=function(t){return new r(t)}},function(t,e,n){"use strict";function r(t,e){this._basis=new i.b(t),this._beta=e}var i=n(47);r.prototype={lineStart:function(){this._x=[],this._y=[],this._basis.lineStart()},lineEnd:function(){var t=this._x,e=this._y,n=t.length-1;if(n>0)for(var r,i=t[0],o=e[0],a=t[n]-i,u=e[n]-o,c=-1;++c<=n;)r=c/n,this._basis.point(this._beta*t[c]+(1-this._beta)*(i+r*a),this._beta*e[c]+(1-this._beta)*(o+r*u));this._x=this._y=null,this._basis.lineEnd()},point:function(t,e){this._x.push(+t),this._y.push(+e)}},e.a=function t(e){function n(t){return 1===e?new i.b(t):new r(t,e)}return n.beta=function(e){return t(+e)},n}(.85)},function(t,e,n){"use strict";function r(t,e){this._context=t,this._alpha=e}var i=n(139),o=n(50),a=n(74);r.prototype={areaStart:o.a,areaEnd:o.a,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,e){if(t=+t,e=+e,this._point){var r=this._x2-t,i=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+i*i,this._alpha))}switch(this._point){case 0:this._point=1,this._x3=t,this._y3=e;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=e);break;case 2:this._point=3,this._x5=t,this._y5=e;break;default:n.i(a.b)(this,t,e)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}},e.a=function t(e){function n(t){return e?new r(t,e):new i.b(t,0)}return n.alpha=function(e){return t(+e)},n}(.5)},function(t,e,n){"use strict";function r(t,e){this._context=t,this._alpha=e}var i=n(140),o=n(74);r.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){if(t=+t,e=+e,this._point){var r=this._x2-t,i=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+i*i,this._alpha))}switch(this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:n.i(o.b)(this,t,e)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}},e.a=function t(e){function n(t){return e?new r(t,e):new i.b(t,0)}return n.alpha=function(e){return t(+e)},n}(.5)},function(t,e,n){"use strict";function r(t){this._context=t}var i=n(50);r.prototype={areaStart:i.a,areaEnd:i.a,lineStart:function(){this._point=0},lineEnd:function(){this._point&&this._context.closePath()},point:function(t,e){t=+t,e=+e,this._point?this._context.lineTo(t,e):(this._point=1,this._context.moveTo(t,e))}},e.a=function(t){return new r(t)}},function(t,e,n){"use strict";function r(t){return t<0?-1:1}function i(t,e,n){var i=t._x1-t._x0,o=e-t._x1,a=(t._y1-t._y0)/(i||o<0&&-0),u=(n-t._y1)/(o||i<0&&-0),c=(a*o+u*i)/(i+o);return(r(a)+r(u))*Math.min(Math.abs(a),Math.abs(u),.5*Math.abs(c))||0}function o(t,e){var n=t._x1-t._x0;return n?(3*(t._y1-t._y0)/n-e)/2:e}function a(t,e,n){var r=t._x0,i=t._y0,o=t._x1,a=t._y1,u=(o-r)/3;t._context.bezierCurveTo(r+u,i+u*e,o-u,a-u*n,o,a)}function u(t){this._context=t}function c(t){this._context=new s(t)}function s(t){this._context=t}function l(t){return new u(t)}function f(t){return new c(t)}e.a=l,e.b=f,u.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=this._t0=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x1,this._y1);break;case 3:a(this,this._t0,o(this,this._t0))}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){var n=NaN;if(t=+t,e=+e,t!==this._x1||e!==this._y1){switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3,a(this,o(this,n=i(this,t,e)),n);break;default:a(this,this._t0,n=i(this,t,e))}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e,this._t0=n}}},(c.prototype=Object.create(u.prototype)).point=function(t,e){u.prototype.point.call(this,e,t)},s.prototype={moveTo:function(t,e){this._context.moveTo(e,t)},closePath:function(){this._context.closePath()},lineTo:function(t,e){this._context.lineTo(e,t)},bezierCurveTo:function(t,e,n,r,i,o){this._context.bezierCurveTo(e,t,r,n,o,i)}}},function(t,e,n){"use strict";function r(t){this._context=t}function i(t){var e,n,r=t.length-1,i=new Array(r),o=new Array(r),a=new Array(r);for(i[0]=0,o[0]=2,a[0]=t[0]+2*t[1],e=1;e<r-1;++e)i[e]=1,o[e]=4,a[e]=4*t[e]+2*t[e+1];for(i[r-1]=2,o[r-1]=7,a[r-1]=8*t[r-1]+t[r],e=1;e<r;++e)n=i[e]/o[e-1],o[e]-=n,a[e]-=n*a[e-1];for(i[r-1]=a[r-1]/o[r-1],e=r-2;e>=0;--e)i[e]=(a[e]-i[e+1])/o[e];for(o[r-1]=(t[r]+i[r-1])/2,e=0;e<r-1;++e)o[e]=2*t[e+1]-i[e+1];return[i,o]}r.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=[],this._y=[]},lineEnd:function(){var t=this._x,e=this._y,n=t.length;if(n)if(this._line?this._context.lineTo(t[0],e[0]):this._context.moveTo(t[0],e[0]),2===n)this._context.lineTo(t[1],e[1]);else for(var r=i(t),o=i(e),a=0,u=1;u<n;++a,++u)this._context.bezierCurveTo(r[0][a],o[0][a],r[1][a],o[1][a],t[u],e[u]);(this._line||0!==this._line&&1===n)&&this._context.closePath(),this._line=1-this._line,this._x=this._y=null},point:function(t,e){this._x.push(+t),this._y.push(+e)}},e.a=function(t){return new r(t)}},function(t,e,n){"use strict";function r(t,e){this._context=t,this._t=e}function i(t){return new r(t,0)}function o(t){return new r(t,1)}e.c=i,e.b=o,r.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=this._y=NaN,this._point=0},lineEnd:function(){0<this._t&&this._t<1&&2===this._point&&this._context.lineTo(this._x,this._y),(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line>=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:if(this._t<=0)this._context.lineTo(this._x,e),this._context.lineTo(t,e);else{var n=this._x*(1-this._t)+t*this._t;this._context.lineTo(n,this._y),this._context.lineTo(n,e)}}this._x=t,this._y=e}},e.a=function(t){return new r(t,.5)}},function(t,e,n){"use strict";e.a=function(t,e){return e<t?-1:e>t?1:e>=t?0:NaN}},function(t,e,n){"use strict";e.a=function(t){return t}},function(t,e,n){"use strict";function r(t){return t.source}function i(t){return t.target}function o(t){function e(){var e,r=h.a.call(arguments),i=o.apply(this,r),l=a.apply(this,r);if(s||(s=e=n.i(p.a)()),t(s,+u.apply(this,(r[0]=i,r)),+c.apply(this,r),+u.apply(this,(r[0]=l,r)),+c.apply(this,r)),e)return s=null,e+""||null}var o=r,a=i,u=v.a,c=v.b,s=null;return e.source=function(t){return arguments.length?(o=t,e):o},e.target=function(t){return arguments.length?(a=t,e):a},e.x=function(t){return arguments.length?(u="function"==typeof t?t:n.i(d.a)(+t),e):u},e.y=function(t){return arguments.length?(c="function"==typeof t?t:n.i(d.a)(+t),e):c},e.context=function(t){return arguments.length?(s=null==t?null:t,e):s},e}function a(t,e,n,r,i){t.moveTo(e,n),t.bezierCurveTo(e=(e+r)/2,n,e,i,r,i)}function u(t,e,n,r,i){t.moveTo(e,n),t.bezierCurveTo(e,n=(n+i)/2,r,n,r,i)}function c(t,e,r,i,o){var a=n.i(g.a)(e,r),u=n.i(g.a)(e,r=(r+o)/2),c=n.i(g.a)(i,r),s=n.i(g.a)(i,o);t.moveTo(a[0],a[1]),t.bezierCurveTo(u[0],u[1],c[0],c[1],s[0],s[1])}function s(){return o(a)}function l(){return o(u)}function f(){var t=o(c);return t.angle=t.x,delete t.x,t.radius=t.y,delete t.y,t}e.a=s,e.b=l,e.c=f;var p=n(32),h=n(138),d=n(17),v=n(77),g=n(143)},function(t,e,n){"use strict";e.a=function(t,e){if((u=t.length)>1)for(var n,r,i,o,a,u,c=0,s=t[e[0]].length;c<s;++c)for(o=a=0,n=0;n<u;++n)(i=(r=t[e[n]][c])[1]-r[0])>=0?(r[0]=o,r[1]=o+=i):i<0?(r[1]=a,r[0]=a+=i):r[0]=o}},function(t,e,n){"use strict";var r=n(36);e.a=function(t,e){if((o=t.length)>0){for(var i,o,a,u=0,c=t[0].length;u<c;++u){for(a=i=0;i<o;++i)a+=t[i][u][1]||0;if(a)for(i=0;i<o;++i)t[i][u][1]/=a}n.i(r.a)(t,e)}}},function(t,e,n){"use strict";var r=n(36);e.a=function(t,e){if((i=t.length)>0){for(var i,o=0,a=t[e[0]],u=a.length;o<u;++o){for(var c=0,s=0;c<i;++c)s+=t[c][o][1]||0;a[o][1]+=a[o][0]=-s/2}n.i(r.a)(t,e)}}},function(t,e,n){"use strict";var r=n(36);e.a=function(t,e){if((a=t.length)>0&&(o=(i=t[e[0]]).length)>0){for(var i,o,a,u=0,c=1;c<o;++c){for(var s=0,l=0,f=0;s<a;++s){for(var p=t[e[s]],h=p[c][1]||0,d=p[c-1][1]||0,v=(h-d)/2,g=0;g<s;++g){var m=t[e[g]];v+=(m[c][1]||0)-(m[c-1][1]||0)}l+=h,f+=v*h}i[c-1][1]+=i[c-1][0]=u,l&&(u-=f/l)}i[c-1][1]+=i[c-1][0]=u,n.i(r.a)(t,e)}}},function(t,e,n){"use strict";var r=n(76);e.a=function(t){return n.i(r.a)(t).reverse()}},function(t,e,n){"use strict";var r=n(37),i=n(76);e.a=function(t){var e,o,a=t.length,u=t.map(i.b),c=n.i(r.a)(t).sort(function(t,e){return u[e]-u[t]}),s=0,l=0,f=[],p=[];for(e=0;e<a;++e)o=c[e],s<l?(s+=u[o],f.push(o)):(l+=u[o],p.push(o));return p.reverse().concat(f)}},function(t,e,n){"use strict";var r=n(37);e.a=function(t){return n.i(r.a)(t).reverse()}},function(t,e,n){"use strict";var r=n(17),i=n(301),o=n(302),a=n(35);e.a=function(){function t(t){var n,r,i,o,p,h=t.length,d=0,v=new Array(h),g=new Array(h),m=+s.apply(this,arguments),y=Math.min(a.c,Math.max(-a.c,l.apply(this,arguments)-m)),_=Math.min(Math.abs(y)/h,f.apply(this,arguments)),b=_*(y<0?-1:1);for(n=0;n<h;++n)(p=g[v[n]=n]=+e(t[n],n,t))>0&&(d+=p);for(null!=u?v.sort(function(t,e){return u(g[t],g[e])}):null!=c&&v.sort(function(e,n){return c(t[e],t[n])}),n=0,i=d?(y-h*b)/d:0;n<h;++n,m=o)r=v[n],p=g[r],o=m+(p>0?p*i:0)+b,g[r]={data:t[r],index:n,value:p,startAngle:m,endAngle:o,padAngle:_};return g}var e=o.a,u=i.a,c=null,s=n.i(r.a)(0),l=n.i(r.a)(a.c),f=n.i(r.a)(0);return t.value=function(i){return arguments.length?(e="function"==typeof i?i:n.i(r.a)(+i),t):e},t.sortValues=function(e){return arguments.length?(u=e,c=null,t):u},t.sort=function(e){return arguments.length?(c=e,u=null,t):c},t.startAngle=function(e){return arguments.length?(s="function"==typeof e?e:n.i(r.a)(+e),t):s},t.endAngle=function(e){return arguments.length?(l="function"==typeof e?e:n.i(r.a)(+e),t):l},t.padAngle=function(e){return arguments.length?(f="function"==typeof e?e:n.i(r.a)(+e),t):f},t}},function(t,e,n){"use strict";function r(t,e){return t[e]}var i=n(138),o=n(17),a=n(36),u=n(37);e.a=function(){function t(t){var n,r,i=e.apply(this,arguments),o=t.length,a=i.length,u=new Array(a);for(n=0;n<a;++n){for(var f,p=i[n],h=u[n]=new Array(o),d=0;d<o;++d)h[d]=f=[0,+l(t[d],p,d,t)],f.data=t[d];h.key=p}for(n=0,r=c(u);n<a;++n)u[r[n]].index=n;return s(u,r),u}var e=n.i(o.a)([]),c=u.a,s=a.a,l=r;return t.keys=function(r){return arguments.length?(e="function"==typeof r?r:n.i(o.a)(i.a.call(r)),t):e},t.value=function(e){return arguments.length?(l="function"==typeof e?e:n.i(o.a)(+e),t):l},t.order=function(e){return arguments.length?(c=null==e?u.a:"function"==typeof e?e:n.i(o.a)(i.a.call(e)),t):c},t.offset=function(e){return arguments.length?(s=null==e?a.a:e,t):s},t}},function(t,e,n){"use strict";n.d(e,"b",function(){return p});var r=n(32),i=n(144),o=n(145),a=n(146),u=n(148),c=n(147),s=n(149),l=n(150),f=n(17),p=[i.a,o.a,a.a,c.a,u.a,s.a,l.a];e.a=function(){function t(){var t;if(a||(a=t=n.i(r.a)()),e.apply(this,arguments).draw(a,+o.apply(this,arguments)),t)return a=null,t+""||null}var e=n.i(f.a)(i.a),o=n.i(f.a)(64),a=null;return t.type=function(r){return arguments.length?(e="function"==typeof r?r:n.i(f.a)(r),t):e},t.size=function(e){return arguments.length?(o="function"==typeof e?e:n.i(f.a)(+e),t):o},t.context=function(e){return arguments.length?(a=null==e?null:e,t):a},t}},function(t,e,n){"use strict";function r(t){var e=new Date(t);return isNaN(e)?null:e}var i=n(151),o=n(79),a=+new Date("2000-01-01T00:00:00.000Z")?r:n.i(o.e)(i.b);e.a=a},function(t,e,n){"use strict";var r=n(5),i=n(13),o=n.i(r.a)(function(t){t.setHours(0,0,0,0)},function(t,e){t.setDate(t.getDate()+e)},function(t,e){return(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*i.d)/i.b},function(t){return t.getDate()-1});e.a=o;o.range},function(t,e,n){"use strict";var r=n(5),i=n(13),o=n.i(r.a)(function(t){var e=t.getTimezoneOffset()*i.d%i.c;e<0&&(e+=i.c),t.setTime(Math.floor((+t-e)/i.c)*i.c+e)},function(t,e){t.setTime(+t+e*i.c)},function(t,e){return(e-t)/i.c},function(t){return t.getHours()});e.a=o;o.range},function(t,e,n){"use strict";var r=n(5),i=n.i(r.a)(function(){},function(t,e){t.setTime(+t+e)},function(t,e){return e-t});i.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?n.i(r.a)(function(e){e.setTime(Math.floor(e/t)*t)},function(e,n){e.setTime(+e+n*t)},function(e,n){return(n-e)/t}):i:null},e.a=i;i.range},function(t,e,n){"use strict";var r=n(5),i=n(13),o=n.i(r.a)(function(t){t.setTime(Math.floor(t/i.d)*i.d)},function(t,e){t.setTime(+t+e*i.d)},function(t,e){return(e-t)/i.d},function(t){return t.getMinutes()});e.a=o;o.range},function(t,e,n){"use strict";var r=n(5),i=n.i(r.a)(function(t){t.setDate(1),t.setHours(0,0,0,0)},function(t,e){t.setMonth(t.getMonth()+e)},function(t,e){return e.getMonth()-t.getMonth()+12*(e.getFullYear()-t.getFullYear())},function(t){return t.getMonth()});e.a=i;i.range},function(t,e,n){"use strict";var r=n(5),i=n(13),o=n.i(r.a)(function(t){t.setTime(Math.floor(t/i.e)*i.e)},function(t,e){t.setTime(+t+e*i.e)},function(t,e){return(e-t)/i.e},function(t){return t.getUTCSeconds()});e.a=o;o.range},function(t,e,n){"use strict";var r=n(5),i=n(13),o=n.i(r.a)(function(t){t.setUTCHours(0,0,0,0)},function(t,e){t.setUTCDate(t.getUTCDate()+e)},function(t,e){return(e-t)/i.b},function(t){return t.getUTCDate()-1});e.a=o;o.range},function(t,e,n){"use strict";var r=n(5),i=n(13),o=n.i(r.a)(function(t){t.setUTCMinutes(0,0,0)},function(t,e){t.setTime(+t+e*i.c)},function(t,e){return(e-t)/i.c},function(t){return t.getUTCHours()});e.a=o;o.range},function(t,e,n){"use strict";var r=n(5),i=n(13),o=n.i(r.a)(function(t){t.setUTCSeconds(0,0)},function(t,e){t.setTime(+t+e*i.d)},function(t,e){return(e-t)/i.d},function(t){return t.getUTCMinutes()});e.a=o;o.range},function(t,e,n){"use strict";var r=n(5),i=n.i(r.a)(function(t){t.setUTCDate(1),t.setUTCHours(0,0,0,0)},function(t,e){t.setUTCMonth(t.getUTCMonth()+e)},function(t,e){return e.getUTCMonth()-t.getUTCMonth()+12*(e.getUTCFullYear()-t.getUTCFullYear())},function(t){return t.getUTCMonth()});e.a=i;i.range},function(t,e,n){"use strict";function r(t){return n.i(i.a)(function(e){e.setUTCDate(e.getUTCDate()-(e.getUTCDay()+7-t)%7),e.setUTCHours(0,0,0,0)},function(t,e){t.setUTCDate(t.getUTCDate()+7*e)},function(t,e){return(e-t)/o.a})}n.d(e,"a",function(){return a}),n.d(e,"b",function(){return u}),n.d(e,"c",function(){return l});var i=n(5),o=n(13),a=r(0),u=r(1),c=r(2),s=r(3),l=r(4),f=r(5),p=r(6);a.range,u.range,c.range,s.range,l.range,f.range,p.range},function(t,e,n){"use strict";var r=n(5),i=n.i(r.a)(function(t){t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},function(t,e){t.setUTCFullYear(t.getUTCFullYear()+e)},function(t,e){return e.getUTCFullYear()-t.getUTCFullYear()},function(t){return t.getUTCFullYear()});i.every=function(t){return isFinite(t=Math.floor(t))&&t>0?n.i(r.a)(function(e){e.setUTCFullYear(Math.floor(e.getUTCFullYear()/t)*t),e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},function(e,n){e.setUTCFullYear(e.getUTCFullYear()+n*t)}):null},e.a=i;i.range},function(t,e,n){"use strict";function r(t){return n.i(i.a)(function(e){e.setDate(e.getDate()-(e.getDay()+7-t)%7),e.setHours(0,0,0,0)},function(t,e){t.setDate(t.getDate()+7*e)},function(t,e){return(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*o.d)/o.a})}n.d(e,"a",function(){return a}),n.d(e,"b",function(){return u}),n.d(e,"c",function(){return l});var i=n(5),o=n(13),a=r(0),u=r(1),c=r(2),s=r(3),l=r(4),f=r(5),p=r(6);a.range,u.range,c.range,s.range,l.range,f.range,p.range},function(t,e,n){"use strict";var r=n(5),i=n.i(r.a)(function(t){t.setMonth(0,1),t.setHours(0,0,0,0)},function(t,e){t.setFullYear(t.getFullYear()+e)},function(t,e){return e.getFullYear()-t.getFullYear()},function(t){return t.getFullYear()});i.every=function(t){return isFinite(t=Math.floor(t))&&t>0?n.i(r.a)(function(e){e.setFullYear(Math.floor(e.getFullYear()/t)*t),e.setMonth(0,1),e.setHours(0,0,0,0)},function(e,n){e.setFullYear(e.getFullYear()+n*t)}):null},e.a=i;i.range},function(t,e,n){"use strict";function r(t){return t.replace(i,function(t,e){return e.toUpperCase()})}var i=/-(.)/g;t.exports=r},function(t,e,n){"use strict";function r(t){return i(t.replace(o,"ms-"))}var i=n(329),o=/^-ms-/;t.exports=r},function(t,e,n){"use strict";function r(t,e){return!(!t||!e)&&(t===e||!i(t)&&(i(e)?r(t,e.parentNode):"contains"in t?t.contains(e):!!t.compareDocumentPosition&&!!(16&t.compareDocumentPosition(e))))}var i=n(339);t.exports=r},function(t,e,n){"use strict";function r(t){var e=t.length;if((Array.isArray(t)||"object"!=typeof t&&"function"!=typeof t)&&a(!1),"number"!=typeof e&&a(!1),0===e||e-1 in t||a(!1),"function"==typeof t.callee&&a(!1),t.hasOwnProperty)try{return Array.prototype.slice.call(t)}catch(t){}for(var n=Array(e),r=0;r<e;r++)n[r]=t[r];return n}function i(t){return!!t&&("object"==typeof t||"function"==typeof t)&&"length"in t&&!("setInterval"in t)&&"number"!=typeof t.nodeType&&(Array.isArray(t)||"callee"in t||"item"in t)}function o(t){return i(t)?Array.isArray(t)?t.slice():r(t):[t]}var a=n(0);t.exports=o},function(t,e,n){"use strict";function r(t){var e=t.match(l);return e&&e[1].toLowerCase()}function i(t,e){var n=s;s||c(!1);var i=r(t),o=i&&u(i);if(o){n.innerHTML=o[1]+t+o[2];for(var l=o[0];l--;)n=n.lastChild}else n.innerHTML=t;var f=n.getElementsByTagName("script");f.length&&(e||c(!1),a(f).forEach(e));for(var p=Array.from(n.childNodes);n.lastChild;)n.removeChild(n.lastChild);return p}var o=n(6),a=n(332),u=n(334),c=n(0),s=o.canUseDOM?document.createElement("div"):null,l=/^\s*<(\w+)/;t.exports=i},function(t,e,n){"use strict";function r(t){return a||o(!1),p.hasOwnProperty(t)||(t="*"),u.hasOwnProperty(t)||(a.innerHTML="*"===t?"<link />":"<"+t+"></"+t+">",u[t]=!a.firstChild),u[t]?p[t]:null}var i=n(6),o=n(0),a=i.canUseDOM?document.createElement("div"):null,u={},c=[1,'<select multiple="true">',"</select>"],s=[1,"<table>","</table>"],l=[3,"<table><tbody><tr>","</tr></tbody></table>"],f=[1,'<svg xmlns="http://www.w3.org/2000/svg">',"</svg>"],p={"*":[1,"?<div>","</div>"],area:[1,"<map>","</map>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],legend:[1,"<fieldset>","</fieldset>"],param:[1,"<object>","</object>"],tr:[2,"<table><tbody>","</tbody></table>"],optgroup:c,option:c,caption:s,colgroup:s,tbody:s,tfoot:s,thead:s,td:l,th:l};["circle","clipPath","defs","ellipse","g","image","line","linearGradient","mask","path","pattern","polygon","polyline","radialGradient","rect","stop","text","tspan"].forEach(function(t){p[t]=f,u[t]=!0}),t.exports=r},function(t,e,n){"use strict";function r(t){return t.Window&&t instanceof t.Window?{x:t.pageXOffset||t.document.documentElement.scrollLeft,y:t.pageYOffset||t.document.documentElement.scrollTop}:{x:t.scrollLeft,y:t.scrollTop}}t.exports=r},function(t,e,n){"use strict";function r(t){return t.replace(i,"-$1").toLowerCase()}var i=/([A-Z])/g;t.exports=r},function(t,e,n){"use strict";function r(t){return i(t).replace(o,"-ms-")}var i=n(336),o=/^ms-/;t.exports=r},function(t,e,n){"use strict";function r(t){var e=t?t.ownerDocument||t:document,n=e.defaultView||window;return!(!t||!("function"==typeof n.Node?t instanceof n.Node:"object"==typeof t&&"number"==typeof t.nodeType&&"string"==typeof t.nodeName))}t.exports=r},function(t,e,n){"use strict";function r(t){return i(t)&&3==t.nodeType}var i=n(338);t.exports=r},function(t,e,n){"use strict";var r=function(t){var e;for(e in t)if(t.hasOwnProperty(e))return e;return null};t.exports=r},function(t,e,n){"use strict";function r(t){var e={};return function(n){return e.hasOwnProperty(n)||(e[n]=t.call(this,n)),e[n]}}t.exports=r},function(t,e,n){"use strict";function r(t,e,n,r,i){}t.exports=r},function(t,e,n){"use strict";function r(){return null}var i=n(3),o=n(344),a=n(342),u=function(){};t.exports=function(t,e){function n(t){var e=t&&(E&&t[E]||t[M]);if("function"==typeof e)return e}function c(t,e){return t===e?0!==t||1/t==1/e:t!==t&&e!==e}function s(t){this.message=t,this.stack=""}function l(t){function n(n,r,i,a,u,c,l){if(a=a||T,c=c||i,l!==o){if(e){var f=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use `PropTypes.checkPropTypes()` to call them. Read more at http://fb.me/use-check-prop-types");throw f.name="Invariant Violation",f}}return null==r[i]?n?new s(null===r[i]?"The "+u+" `"+c+"` is marked as required in `"+a+"`, but its value is `null`.":"The "+u+" `"+c+"` is marked as required in `"+a+"`, but its value is `undefined`."):null:t(r,i,a,u,c)}var r=n.bind(null,!1);return r.isRequired=n.bind(null,!0),r}function f(t){function e(e,n,r,i,o,a){var u=e[n];if(x(u)!==t)return new s("Invalid "+i+" `"+o+"` of type `"+w(u)+"` supplied to `"+r+"`, expected `"+t+"`.");return null}return l(e)}function p(t){function e(e,n,r,i,a){if("function"!=typeof t)return new s("Property `"+a+"` of component `"+r+"` has invalid PropType notation inside arrayOf.");var u=e[n];if(!Array.isArray(u)){return new s("Invalid "+i+" `"+a+"` of type `"+x(u)+"` supplied to `"+r+"`, expected an array.")}for(var c=0;c<u.length;c++){var l=t(u,c,r,i,a+"["+c+"]",o);if(l instanceof Error)return l}return null}return l(e)}function h(t){function e(e,n,r,i,o){if(!(e[n]instanceof t)){var a=t.name||T;return new s("Invalid "+i+" `"+o+"` of type `"+k(e[n])+"` supplied to `"+r+"`, expected instance of `"+a+"`.")}return null}return l(e)}function d(t){function e(e,n,r,i,o){for(var a=e[n],u=0;u<t.length;u++)if(c(a,t[u]))return null;return new s("Invalid "+i+" `"+o+"` of value `"+a+"` supplied to `"+r+"`, expected one of "+JSON.stringify(t)+".")}return Array.isArray(t)?l(e):r}function v(t){function e(e,n,r,i,a){if("function"!=typeof t)return new s("Property `"+a+"` of component `"+r+"` has invalid PropType notation inside objectOf.");var u=e[n],c=x(u);if("object"!==c)return new s("Invalid "+i+" `"+a+"` of type `"+c+"` supplied to `"+r+"`, expected an object.");for(var l in u)if(u.hasOwnProperty(l)){var f=t(u,l,r,i,a+"."+l,o);if(f instanceof Error)return f}return null}return l(e)}function g(t){function e(e,n,r,i,a){for(var u=0;u<t.length;u++){if(null==(0,t[u])(e,n,r,i,a,o))return null}return new s("Invalid "+i+" `"+a+"` supplied to `"+r+"`.")}if(!Array.isArray(t))return r;for(var n=0;n<t.length;n++){var i=t[n];if("function"!=typeof i)return u("Invalid argument supplied to oneOfType. Expected an array of check functions, but received "+C(i)+" at index "+n+"."),r}return l(e)}function m(t){function e(e,n,r,i,a){var u=e[n],c=x(u);if("object"!==c)return new s("Invalid "+i+" `"+a+"` of type `"+c+"` supplied to `"+r+"`, expected `object`.");for(var l in t){var f=t[l];if(f){var p=f(u,l,r,i,a+"."+l,o);if(p)return p}}return null}return l(e)}function y(t){function e(e,n,r,a,u){var c=e[n],l=x(c);if("object"!==l)return new s("Invalid "+a+" `"+u+"` of type `"+l+"` supplied to `"+r+"`, expected `object`.");var f=i({},e[n],t);for(var p in f){var h=t[p];if(!h)return new s("Invalid "+a+" `"+u+"` key `"+p+"` supplied to `"+r+"`.\nBad object: "+JSON.stringify(e[n],null," ")+"\nValid keys: "+JSON.stringify(Object.keys(t),null," "));var d=h(c,p,r,a,u+"."+p,o);if(d)return d}return null}return l(e)}function _(e){switch(typeof e){case"number":case"string":case"undefined":return!0;case"boolean":return!e;case"object":if(Array.isArray(e))return e.every(_);if(null===e||t(e))return!0;var r=n(e);if(!r)return!1;var i,o=r.call(e);if(r!==e.entries){for(;!(i=o.next()).done;)if(!_(i.value))return!1}else for(;!(i=o.next()).done;){var a=i.value;if(a&&!_(a[1]))return!1}return!0;default:return!1}}function b(t,e){return"symbol"===t||("Symbol"===e["@@toStringTag"]||"function"==typeof Symbol&&e instanceof Symbol)}function x(t){var e=typeof t;return Array.isArray(t)?"array":t instanceof RegExp?"object":b(e,t)?"symbol":e}function w(t){if(void 0===t||null===t)return""+t;var e=x(t);if("object"===e){if(t instanceof Date)return"date";if(t instanceof RegExp)return"regexp"}return e}function C(t){var e=w(t);switch(e){case"array":case"object":return"an "+e;case"boolean":case"date":case"regexp":return"a "+e;default:return e}}function k(t){return t.constructor&&t.constructor.name?t.constructor.name:T}var E="function"==typeof Symbol&&Symbol.iterator,M="@@iterator",T="<<anonymous>>",S={array:f("array"),bool:f("boolean"),func:f("function"),number:f("number"),object:f("object"),string:f("string"),symbol:f("symbol"),any:function(){return l(r)}(),arrayOf:p,element:function(){function e(e,n,r,i,o){var a=e[n];if(!t(a)){return new s("Invalid "+i+" `"+o+"` of type `"+x(a)+"` supplied to `"+r+"`, expected a single ReactElement.")}return null}return l(e)}(),instanceOf:h,node:function(){function t(t,e,n,r,i){return _(t[e])?null:new s("Invalid "+r+" `"+i+"` supplied to `"+n+"`, expected a ReactNode.")}return l(t)}(),objectOf:v,oneOf:d,oneOfType:g,shape:m,exact:y};return s.prototype=Error.prototype,S.checkPropTypes=a,S.PropTypes=S,S}},function(t,e,n){"use strict";t.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},function(t,e,n){"use strict";var r={Properties:{"aria-current":0,"aria-details":0,"aria-disabled":0,"aria-hidden":0,"aria-invalid":0,"aria-keyshortcuts":0,"aria-label":0,"aria-roledescription":0,"aria-autocomplete":0,"aria-checked":0,"aria-expanded":0,"aria-haspopup":0,"aria-level":0,"aria-modal":0,"aria-multiline":0,"aria-multiselectable":0,"aria-orientation":0,"aria-placeholder":0,"aria-pressed":0,"aria-readonly":0,"aria-required":0,"aria-selected":0,"aria-sort":0,"aria-valuemax":0,"aria-valuemin":0,"aria-valuenow":0,"aria-valuetext":0,"aria-atomic":0,"aria-busy":0,"aria-live":0,"aria-relevant":0,"aria-dropeffect":0,"aria-grabbed":0,"aria-activedescendant":0,"aria-colcount":0,"aria-colindex":0,"aria-colspan":0,"aria-controls":0,"aria-describedby":0,"aria-errormessage":0,"aria-flowto":0,"aria-labelledby":0,"aria-owns":0,"aria-posinset":0,"aria-rowcount":0,"aria-rowindex":0,"aria-rowspan":0,"aria-setsize":0},DOMAttributeNames:{},DOMPropertyNames:{}};t.exports=r},function(t,e,n){"use strict";var r=n(4),i=n(154),o={focusDOMComponent:function(){i(r.getNodeFromInstance(this))}};t.exports=o},function(t,e,n){"use strict";function r(t){return(t.ctrlKey||t.altKey||t.metaKey)&&!(t.ctrlKey&&t.altKey)}function i(t){switch(t){case"topCompositionStart":return E.compositionStart;case"topCompositionEnd":return E.compositionEnd;case"topCompositionUpdate":return E.compositionUpdate}}function o(t,e){return"topKeyDown"===t&&e.keyCode===y}function a(t,e){switch(t){case"topKeyUp":return-1!==m.indexOf(e.keyCode);case"topKeyDown":return e.keyCode!==y;case"topKeyPress":case"topMouseDown":case"topBlur":return!0;default:return!1}}function u(t){var e=t.detail;return"object"==typeof e&&"data"in e?e.data:null}function c(t,e,n,r){var c,s;if(_?c=i(t):T?a(t,n)&&(c=E.compositionEnd):o(t,n)&&(c=E.compositionStart),!c)return null;w&&(T||c!==E.compositionStart?c===E.compositionEnd&&T&&(s=T.getData()):T=d.getPooled(r));var l=v.getPooled(c,e,n,r);if(s)l.data=s;else{var f=u(n);null!==f&&(l.data=f)}return p.accumulateTwoPhaseDispatches(l),l}function s(t,e){switch(t){case"topCompositionEnd":return u(e);case"topKeyPress":return e.which!==C?null:(M=!0,k);case"topTextInput":var n=e.data;return n===k&&M?null:n;default:return null}}function l(t,e){if(T){if("topCompositionEnd"===t||!_&&a(t,e)){var n=T.getData();return d.release(T),T=null,n}return null}switch(t){case"topPaste":return null;case"topKeyPress":return e.which&&!r(e)?String.fromCharCode(e.which):null;case"topCompositionEnd":return w?null:e.data;default:return null}}function f(t,e,n,r){var i;if(!(i=x?s(t,n):l(t,n)))return null;var o=g.getPooled(E.beforeInput,e,n,r);return o.data=i,p.accumulateTwoPhaseDispatches(o),o}var p=n(23),h=n(6),d=n(354),v=n(391),g=n(394),m=[9,13,27,32],y=229,_=h.canUseDOM&&"CompositionEvent"in window,b=null;h.canUseDOM&&"documentMode"in document&&(b=document.documentMode);var x=h.canUseDOM&&"TextEvent"in window&&!b&&!function(){var t=window.opera;return"object"==typeof t&&"function"==typeof t.version&&parseInt(t.version(),10)<=12}(),w=h.canUseDOM&&(!_||b&&b>8&&b<=11),C=32,k=String.fromCharCode(C),E={beforeInput:{phasedRegistrationNames:{bubbled:"onBeforeInput",captured:"onBeforeInputCapture"},dependencies:["topCompositionEnd","topKeyPress","topTextInput","topPaste"]},compositionEnd:{phasedRegistrationNames:{bubbled:"onCompositionEnd",captured:"onCompositionEndCapture"},dependencies:["topBlur","topCompositionEnd","topKeyDown","topKeyPress","topKeyUp","topMouseDown"]},compositionStart:{phasedRegistrationNames:{bubbled:"onCompositionStart",captured:"onCompositionStartCapture"},dependencies:["topBlur","topCompositionStart","topKeyDown","topKeyPress","topKeyUp","topMouseDown"]},compositionUpdate:{phasedRegistrationNames:{bubbled:"onCompositionUpdate",captured:"onCompositionUpdateCapture"},dependencies:["topBlur","topCompositionUpdate","topKeyDown","topKeyPress","topKeyUp","topMouseDown"]}},M=!1,T=null,S={eventTypes:E,extractEvents:function(t,e,n,r){return[c(t,e,n,r),f(t,e,n,r)]}};t.exports=S},function(t,e,n){"use strict";var r=n(158),i=n(6),o=(n(9),n(330),n(400)),a=n(337),u=n(341),c=(n(2),u(function(t){return a(t)})),s=!1,l="cssFloat";if(i.canUseDOM){var f=document.createElement("div").style;try{f.font=""}catch(t){s=!0}void 0===document.documentElement.style.cssFloat&&(l="styleFloat")}var p={createMarkupForStyles:function(t,e){var n="";for(var r in t)if(t.hasOwnProperty(r)){var i=0===r.indexOf("--"),a=t[r];null!=a&&(n+=c(r)+":",n+=o(r,a,e,i)+";")}return n||null},setValueForStyles:function(t,e,n){var i=t.style;for(var a in e)if(e.hasOwnProperty(a)){var u=0===a.indexOf("--"),c=o(a,e[a],n,u);if("float"!==a&&"cssFloat"!==a||(a=l),u)i.setProperty(a,c);else if(c)i[a]=c;else{var f=s&&r.shorthandPropertyExpansions[a];if(f)for(var p in f)i[p]="";else i[a]=""}}}};t.exports=p},function(t,e,n){"use strict";function r(t,e,n){var r=M.getPooled(P.change,t,e,n);return r.type="change",w.accumulateTwoPhaseDispatches(r),r}function i(t){var e=t.nodeName&&t.nodeName.toLowerCase();return"select"===e||"input"===e&&"file"===t.type}function o(t){var e=r(I,t,S(t));E.batchedUpdates(a,e)}function a(t){x.enqueueEvents(t),x.processEventQueue(!1)}function u(t,e){O=t,I=e,O.attachEvent("onchange",o)}function c(){O&&(O.detachEvent("onchange",o),O=null,I=null)}function s(t,e){var n=T.updateValueIfChanged(t),r=!0===e.simulated&&L._allowSimulatedPassThrough;if(n||r)return t}function l(t,e){if("topChange"===t)return e}function f(t,e,n){"topFocus"===t?(c(),u(e,n)):"topBlur"===t&&c()}function p(t,e){O=t,I=e,O.attachEvent("onpropertychange",d)}function h(){O&&(O.detachEvent("onpropertychange",d),O=null,I=null)}function d(t){"value"===t.propertyName&&s(I,t)&&o(t)}function v(t,e,n){"topFocus"===t?(h(),p(e,n)):"topBlur"===t&&h()}function g(t,e,n){if("topSelectionChange"===t||"topKeyUp"===t||"topKeyDown"===t)return s(I,n)}function m(t){var e=t.nodeName;return e&&"input"===e.toLowerCase()&&("checkbox"===t.type||"radio"===t.type)}function y(t,e,n){if("topClick"===t)return s(e,n)}function _(t,e,n){if("topInput"===t||"topChange"===t)return s(e,n)}function b(t,e){if(null!=t){var n=t._wrapperState||e._wrapperState;if(n&&n.controlled&&"number"===e.type){var r=""+e.value;e.getAttribute("value")!==r&&e.setAttribute("value",r)}}}var x=n(22),w=n(23),C=n(6),k=n(4),E=n(12),M=n(14),T=n(173),S=n(94),N=n(95),A=n(175),P={change:{phasedRegistrationNames:{bubbled:"onChange",captured:"onChangeCapture"},dependencies:["topBlur","topChange","topClick","topFocus","topInput","topKeyDown","topKeyUp","topSelectionChange"]}},O=null,I=null,D=!1;C.canUseDOM&&(D=N("change")&&(!document.documentMode||document.documentMode>8));var R=!1;C.canUseDOM&&(R=N("input")&&(!document.documentMode||document.documentMode>9));var L={eventTypes:P,_allowSimulatedPassThrough:!0,_isInputEventSupported:R,extractEvents:function(t,e,n,o){var a,u,c=e?k.getNodeFromInstance(e):window;if(i(c)?D?a=l:u=f:A(c)?R?a=_:(a=g,u=v):m(c)&&(a=y),a){var s=a(t,e,n);if(s){return r(s,n,o)}}u&&u(t,c,e),"topBlur"===t&&b(e,c)}};t.exports=L},function(t,e,n){"use strict";var r=n(1),i=n(20),o=n(6),a=n(333),u=n(11),c=(n(0),{dangerouslyReplaceNodeWithMarkup:function(t,e){if(o.canUseDOM||r("56"),e||r("57"),"HTML"===t.nodeName&&r("58"),"string"==typeof e){var n=a(e,u)[0];t.parentNode.replaceChild(n,t)}else i.replaceChildWithTree(t,e)}});t.exports=c},function(t,e,n){"use strict";var r=["ResponderEventPlugin","SimpleEventPlugin","TapEventPlugin","EnterLeaveEventPlugin","ChangeEventPlugin","SelectEventPlugin","BeforeInputEventPlugin"];t.exports=r},function(t,e,n){"use strict";var r=n(23),i=n(4),o=n(54),a={mouseEnter:{registrationName:"onMouseEnter",dependencies:["topMouseOut","topMouseOver"]},mouseLeave:{registrationName:"onMouseLeave",dependencies:["topMouseOut","topMouseOver"]}},u={eventTypes:a,extractEvents:function(t,e,n,u){if("topMouseOver"===t&&(n.relatedTarget||n.fromElement))return null;if("topMouseOut"!==t&&"topMouseOver"!==t)return null;var c;if(u.window===u)c=u;else{var s=u.ownerDocument;c=s?s.defaultView||s.parentWindow:window}var l,f;if("topMouseOut"===t){l=e;var p=n.relatedTarget||n.toElement;f=p?i.getClosestInstanceFromNode(p):null}else l=null,f=e;if(l===f)return null;var h=null==l?c:i.getNodeFromInstance(l),d=null==f?c:i.getNodeFromInstance(f),v=o.getPooled(a.mouseLeave,l,n,u);v.type="mouseleave",v.target=h,v.relatedTarget=d;var g=o.getPooled(a.mouseEnter,f,n,u);return g.type="mouseenter",g.target=d,g.relatedTarget=h,r.accumulateEnterLeaveDispatches(v,g,l,f),[v,g]}};t.exports=u},function(t,e,n){"use strict";var r={topAbort:null,topAnimationEnd:null,topAnimationIteration:null,topAnimationStart:null,topBlur:null,topCanPlay:null,topCanPlayThrough:null,topChange:null,topClick:null,topCompositionEnd:null,topCompositionStart:null,topCompositionUpdate:null,topContextMenu:null,topCopy:null,topCut:null,topDoubleClick:null,topDrag:null,topDragEnd:null,topDragEnter:null,topDragExit:null,topDragLeave:null,topDragOver:null,topDragStart:null,topDrop:null,topDurationChange:null,topEmptied:null,topEncrypted:null,topEnded:null,topError:null,topFocus:null,topInput:null,topInvalid:null,topKeyDown:null,topKeyPress:null,topKeyUp:null,topLoad:null,topLoadedData:null,topLoadedMetadata:null,topLoadStart:null,topMouseDown:null,topMouseMove:null,topMouseOut:null,topMouseOver:null,topMouseUp:null,topPaste:null,topPause:null,topPlay:null,topPlaying:null,topProgress:null,topRateChange:null,topReset:null,topScroll:null,topSeeked:null,topSeeking:null,topSelectionChange:null,topStalled:null,topSubmit:null,topSuspend:null,topTextInput:null,topTimeUpdate:null,topTouchCancel:null,topTouchEnd:null,topTouchMove:null,topTouchStart:null,topTransitionEnd:null,topVolumeChange:null,topWaiting:null,topWheel:null},i={topLevelTypes:r};t.exports=i},function(t,e,n){"use strict";function r(t){this._root=t,this._startText=this.getText(),this._fallbackText=null}var i=n(3),o=n(18),a=n(172);i(r.prototype,{destructor:function(){this._root=null,this._startText=null,this._fallbackText=null},getText:function(){return"value"in this._root?this._root.value:this._root[a()]},getData:function(){if(this._fallbackText)return this._fallbackText;var t,e,n=this._startText,r=n.length,i=this.getText(),o=i.length;for(t=0;t<r&&n[t]===i[t];t++);var a=r-t;for(e=1;e<=a&&n[r-e]===i[o-e];e++);var u=e>1?1-e:void 0;return this._fallbackText=i.slice(t,u),this._fallbackText}}),o.addPoolingTo(r),t.exports=r},function(t,e,n){"use strict";var r=n(21),i=r.injection.MUST_USE_PROPERTY,o=r.injection.HAS_BOOLEAN_VALUE,a=r.injection.HAS_NUMERIC_VALUE,u=r.injection.HAS_POSITIVE_NUMERIC_VALUE,c=r.injection.HAS_OVERLOADED_BOOLEAN_VALUE,s={isCustomAttribute:RegExp.prototype.test.bind(new RegExp("^(data|aria)-["+r.ATTRIBUTE_NAME_CHAR+"]*$")),Properties:{accept:0,acceptCharset:0,accessKey:0,action:0,allowFullScreen:o,allowTransparency:0,alt:0,as:0,async:o,autoComplete:0,autoPlay:o,capture:o,cellPadding:0,cellSpacing:0,charSet:0,challenge:0,checked:i|o,cite:0,classID:0,className:0,cols:u,colSpan:0,content:0,contentEditable:0,contextMenu:0,controls:o,controlsList:0,coords:0,crossOrigin:0,data:0,dateTime:0,default:o,defer:o,dir:0,disabled:o,download:c,draggable:0,encType:0,form:0,formAction:0,formEncType:0,formMethod:0,formNoValidate:o,formTarget:0,frameBorder:0,headers:0,height:0,hidden:o,high:0,href:0,hrefLang:0,htmlFor:0,httpEquiv:0,icon:0,id:0,inputMode:0,integrity:0,is:0,keyParams:0,keyType:0,kind:0,label:0,lang:0,list:0,loop:o,low:0,manifest:0,marginHeight:0,marginWidth:0,max:0,maxLength:0,media:0,mediaGroup:0,method:0,min:0,minLength:0,multiple:i|o,muted:i|o,name:0,nonce:0,noValidate:o,open:o,optimum:0,pattern:0,placeholder:0,playsInline:o,poster:0,preload:0,profile:0,radioGroup:0,readOnly:o,referrerPolicy:0,rel:0,required:o,reversed:o,role:0,rows:u,rowSpan:a,sandbox:0,scope:0,scoped:o,scrolling:0,seamless:o,selected:i|o,shape:0,size:u,sizes:0,span:u,spellCheck:0,src:0,srcDoc:0,srcLang:0,srcSet:0,start:a,step:0,style:0,summary:0,tabIndex:0,target:0,title:0,type:0,useMap:0,value:0,width:0,wmode:0,wrap:0,about:0,datatype:0,inlist:0,prefix:0,property:0,resource:0,typeof:0,vocab:0,autoCapitalize:0,autoCorrect:0,autoSave:0,color:0,itemProp:0,itemScope:o,itemType:0,itemID:0,itemRef:0,results:0,security:0,unselectable:0},DOMAttributeNames:{acceptCharset:"accept-charset",className:"class",htmlFor:"for",httpEquiv:"http-equiv"},DOMPropertyNames:{},DOMMutationMethods:{value:function(t,e){if(null==e)return t.removeAttribute("value");"number"!==t.type||!1===t.hasAttribute("value")?t.setAttribute("value",""+e):t.validity&&!t.validity.badInput&&t.ownerDocument.activeElement!==t&&t.setAttribute("value",""+e)}}};t.exports=s},function(t,e,n){"use strict";(function(e){function r(t,e,n,r){var i=void 0===t[n];null!=e&&i&&(t[n]=o(e,!0))}var i=n(24),o=n(174),a=(n(85),n(96)),u=n(177);n(2);void 0!==e&&e.env;var c={instantiateChildren:function(t,e,n,i){if(null==t)return null;var o={};return u(t,r,o),o},updateChildren:function(t,e,n,r,u,c,s,l,f){if(e||t){var p,h;for(p in e)if(e.hasOwnProperty(p)){h=t&&t[p];var d=h&&h._currentElement,v=e[p];if(null!=h&&a(d,v))i.receiveComponent(h,v,u,l),e[p]=h;else{h&&(r[p]=i.getHostNode(h),i.unmountComponent(h,!1));var g=o(v,!0);e[p]=g;var m=i.mountComponent(g,u,c,s,l,f);n.push(m)}}for(p in t)!t.hasOwnProperty(p)||e&&e.hasOwnProperty(p)||(h=t[p],r[p]=i.getHostNode(h),i.unmountComponent(h,!1))}},unmountChildren:function(t,e){for(var n in t)if(t.hasOwnProperty(n)){var r=t[n];i.unmountComponent(r,e)}}};t.exports=c}).call(e,n(156))},function(t,e,n){"use strict";var r=n(82),i=n(364),o={processChildrenUpdates:i.dangerouslyProcessChildrenUpdates,replaceNodeWithMarkup:r.dangerouslyReplaceNodeWithMarkup};t.exports=o},function(t,e,n){"use strict";function r(t){}function i(t){return!(!t.prototype||!t.prototype.isReactComponent)}function o(t){return!(!t.prototype||!t.prototype.isPureReactComponent)}var a=n(1),u=n(3),c=n(26),s=n(87),l=n(15),f=n(88),p=n(39),h=(n(9),n(168)),d=n(24),v=n(51),g=(n(0),n(81)),m=n(96),y=(n(2),{ImpureClass:0,PureClass:1,StatelessFunctional:2});r.prototype.render=function(){var t=p.get(this)._currentElement.type,e=t(this.props,this.context,this.updater);return e};var _=1,b={construct:function(t){this._currentElement=t,this._rootNodeID=0,this._compositeType=null,this._instance=null,this._hostParent=null,this._hostContainerInfo=null,this._updateBatchNumber=null,this._pendingElement=null,this._pendingStateQueue=null,this._pendingReplaceState=!1,this._pendingForceUpdate=!1,this._renderedNodeType=null,this._renderedComponent=null,this._context=null,this._mountOrder=0,this._topLevelWrapper=null,this._pendingCallbacks=null,this._calledComponentWillUnmount=!1},mountComponent:function(t,e,n,u){this._context=u,this._mountOrder=_++,this._hostParent=e,this._hostContainerInfo=n;var s,l=this._currentElement.props,f=this._processContext(u),h=this._currentElement.type,d=t.getUpdateQueue(),g=i(h),m=this._constructComponent(g,l,f,d);g||null!=m&&null!=m.render?o(h)?this._compositeType=y.PureClass:this._compositeType=y.ImpureClass:(s=m,null===m||!1===m||c.isValidElement(m)||a("105",h.displayName||h.name||"Component"),m=new r(h),this._compositeType=y.StatelessFunctional);m.props=l,m.context=f,m.refs=v,m.updater=d,this._instance=m,p.set(m,this);var b=m.state;void 0===b&&(m.state=b=null),("object"!=typeof b||Array.isArray(b))&&a("106",this.getName()||"ReactCompositeComponent"),this._pendingStateQueue=null,this._pendingReplaceState=!1,this._pendingForceUpdate=!1;var x;return x=m.unstable_handleError?this.performInitialMountWithErrorHandling(s,e,n,t,u):this.performInitialMount(s,e,n,t,u),m.componentDidMount&&t.getReactMountReady().enqueue(m.componentDidMount,m),x},_constructComponent:function(t,e,n,r){return this._constructComponentWithoutOwner(t,e,n,r)},_constructComponentWithoutOwner:function(t,e,n,r){var i=this._currentElement.type;return t?new i(e,n,r):i(e,n,r)},performInitialMountWithErrorHandling:function(t,e,n,r,i){var o,a=r.checkpoint();try{o=this.performInitialMount(t,e,n,r,i)}catch(u){r.rollback(a),this._instance.unstable_handleError(u),this._pendingStateQueue&&(this._instance.state=this._processPendingState(this._instance.props,this._instance.context)),a=r.checkpoint(),this._renderedComponent.unmountComponent(!0),r.rollback(a),o=this.performInitialMount(t,e,n,r,i)}return o},performInitialMount:function(t,e,n,r,i){var o=this._instance,a=0;o.componentWillMount&&(o.componentWillMount(),this._pendingStateQueue&&(o.state=this._processPendingState(o.props,o.context))),void 0===t&&(t=this._renderValidatedComponent());var u=h.getType(t);this._renderedNodeType=u;var c=this._instantiateReactComponent(t,u!==h.EMPTY);this._renderedComponent=c;var s=d.mountComponent(c,r,e,n,this._processChildContext(i),a);return s},getHostNode:function(){return d.getHostNode(this._renderedComponent)},unmountComponent:function(t){if(this._renderedComponent){var e=this._instance;if(e.componentWillUnmount&&!e._calledComponentWillUnmount)if(e._calledComponentWillUnmount=!0,t){var n=this.getName()+".componentWillUnmount()";f.invokeGuardedCallback(n,e.componentWillUnmount.bind(e))}else e.componentWillUnmount();this._renderedComponent&&(d.unmountComponent(this._renderedComponent,t),this._renderedNodeType=null,this._renderedComponent=null,this._instance=null),this._pendingStateQueue=null,this._pendingReplaceState=!1,this._pendingForceUpdate=!1,this._pendingCallbacks=null,this._pendingElement=null,this._context=null,this._rootNodeID=0,this._topLevelWrapper=null,p.remove(e)}},_maskContext:function(t){var e=this._currentElement.type,n=e.contextTypes;if(!n)return v;var r={};for(var i in n)r[i]=t[i];return r},_processContext:function(t){var e=this._maskContext(t);return e},_processChildContext:function(t){var e,n=this._currentElement.type,r=this._instance;if(r.getChildContext&&(e=r.getChildContext()),e){"object"!=typeof n.childContextTypes&&a("107",this.getName()||"ReactCompositeComponent");for(var i in e)i in n.childContextTypes||a("108",this.getName()||"ReactCompositeComponent",i);return u({},t,e)}return t},_checkContextTypes:function(t,e,n){},receiveComponent:function(t,e,n){var r=this._currentElement,i=this._context;this._pendingElement=null,this.updateComponent(e,r,t,i,n)},performUpdateIfNecessary:function(t){null!=this._pendingElement?d.receiveComponent(this,this._pendingElement,t,this._context):null!==this._pendingStateQueue||this._pendingForceUpdate?this.updateComponent(t,this._currentElement,this._currentElement,this._context,this._context):this._updateBatchNumber=null},updateComponent:function(t,e,n,r,i){var o=this._instance;null==o&&a("136",this.getName()||"ReactCompositeComponent");var u,c=!1;this._context===i?u=o.context:(u=this._processContext(i),c=!0);var s=e.props,l=n.props;e!==n&&(c=!0),c&&o.componentWillReceiveProps&&o.componentWillReceiveProps(l,u);var f=this._processPendingState(l,u),p=!0;this._pendingForceUpdate||(o.shouldComponentUpdate?p=o.shouldComponentUpdate(l,f,u):this._compositeType===y.PureClass&&(p=!g(s,l)||!g(o.state,f))),this._updateBatchNumber=null,p?(this._pendingForceUpdate=!1,this._performComponentUpdate(n,l,f,u,t,i)):(this._currentElement=n,this._context=i,o.props=l,o.state=f,o.context=u)},_processPendingState:function(t,e){var n=this._instance,r=this._pendingStateQueue,i=this._pendingReplaceState;if(this._pendingReplaceState=!1,this._pendingStateQueue=null,!r)return n.state;if(i&&1===r.length)return r[0];for(var o=u({},i?r[0]:n.state),a=i?1:0;a<r.length;a++){var c=r[a];u(o,"function"==typeof c?c.call(n,o,t,e):c)}return o},_performComponentUpdate:function(t,e,n,r,i,o){var a,u,c,s=this._instance,l=Boolean(s.componentDidUpdate);l&&(a=s.props,u=s.state,c=s.context),s.componentWillUpdate&&s.componentWillUpdate(e,n,r),this._currentElement=t,this._context=o,s.props=e,s.state=n,s.context=r,this._updateRenderedComponent(i,o),l&&i.getReactMountReady().enqueue(s.componentDidUpdate.bind(s,a,u,c),s)},_updateRenderedComponent:function(t,e){var n=this._renderedComponent,r=n._currentElement,i=this._renderValidatedComponent(),o=0;if(m(r,i))d.receiveComponent(n,i,t,this._processChildContext(e));else{var a=d.getHostNode(n);d.unmountComponent(n,!1);var u=h.getType(i);this._renderedNodeType=u;var c=this._instantiateReactComponent(i,u!==h.EMPTY);this._renderedComponent=c;var s=d.mountComponent(c,t,this._hostParent,this._hostContainerInfo,this._processChildContext(e),o);this._replaceNodeWithMarkup(a,s,n)}},_replaceNodeWithMarkup:function(t,e,n){s.replaceNodeWithMarkup(t,e,n)},_renderValidatedComponentWithoutOwnerOrContext:function(){var t=this._instance;return t.render()},_renderValidatedComponent:function(){var t;if(this._compositeType!==y.StatelessFunctional){l.current=this;try{t=this._renderValidatedComponentWithoutOwnerOrContext()}finally{l.current=null}}else t=this._renderValidatedComponentWithoutOwnerOrContext();return null===t||!1===t||c.isValidElement(t)||a("109",this.getName()||"ReactCompositeComponent"),t},attachRef:function(t,e){var n=this.getPublicInstance();null==n&&a("110");var r=e.getPublicInstance();(n.refs===v?n.refs={}:n.refs)[t]=r},detachRef:function(t){delete this.getPublicInstance().refs[t]},getName:function(){var t=this._currentElement.type,e=this._instance&&this._instance.constructor;return t.displayName||e&&e.displayName||t.name||e&&e.name||null},getPublicInstance:function(){var t=this._instance;return this._compositeType===y.StatelessFunctional?null:t},_instantiateReactComponent:null};t.exports=b},function(t,e,n){"use strict";var r=n(4),i=n(372),o=n(167),a=n(24),u=n(12),c=n(385),s=n(401),l=n(171),f=n(408);n(2);i.inject();var p={findDOMNode:s,render:o.render,unmountComponentAtNode:o.unmountComponentAtNode,version:c,unstable_batchedUpdates:u.batchedUpdates,unstable_renderSubtreeIntoContainer:f};"undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.inject&&__REACT_DEVTOOLS_GLOBAL_HOOK__.inject({ComponentTree:{getClosestInstanceFromNode:r.getClosestInstanceFromNode,getNodeFromInstance:function(t){return t._renderedComponent&&(t=l(t)),t?r.getNodeFromInstance(t):null}},Mount:o,Reconciler:a});t.exports=p},function(t,e,n){"use strict";function r(t){if(t){var e=t._currentElement._owner||null;if(e){var n=e.getName();if(n)return" This DOM node was rendered by `"+n+"`."}}return""}function i(t,e){e&&($[t._tag]&&(null!=e.children||null!=e.dangerouslySetInnerHTML)&&g("137",t._tag,t._currentElement._owner?" Check the render method of "+t._currentElement._owner.getName()+".":""),null!=e.dangerouslySetInnerHTML&&(null!=e.children&&g("60"),"object"==typeof e.dangerouslySetInnerHTML&&z in e.dangerouslySetInnerHTML||g("61")),null!=e.style&&"object"!=typeof e.style&&g("62",r(t)))}function o(t,e,n,r){if(!(r instanceof D)){var i=t._hostContainerInfo,o=i._node&&i._node.nodeType===q,u=o?i._node:i._ownerDocument;B(e,u),r.getReactMountReady().enqueue(a,{inst:t,registrationName:e,listener:n})}}function a(){var t=this;k.putListener(t.inst,t.registrationName,t.listener)}function u(){var t=this;N.postMountWrapper(t)}function c(){var t=this;O.postMountWrapper(t)}function s(){var t=this;A.postMountWrapper(t)}function l(){L.track(this)}function f(){var t=this;t._rootNodeID||g("63");var e=j(t);switch(e||g("64"),t._tag){case"iframe":case"object":t._wrapperState.listeners=[M.trapBubbledEvent("topLoad","load",e)];break;case"video":case"audio":t._wrapperState.listeners=[];for(var n in Y)Y.hasOwnProperty(n)&&t._wrapperState.listeners.push(M.trapBubbledEvent(n,Y[n],e));break;case"source":t._wrapperState.listeners=[M.trapBubbledEvent("topError","error",e)];break;case"img":t._wrapperState.listeners=[M.trapBubbledEvent("topError","error",e),M.trapBubbledEvent("topLoad","load",e)];break;case"form":t._wrapperState.listeners=[M.trapBubbledEvent("topReset","reset",e),M.trapBubbledEvent("topSubmit","submit",e)];break;case"input":case"select":case"textarea":t._wrapperState.listeners=[M.trapBubbledEvent("topInvalid","invalid",e)]}}function p(){P.postUpdateWrapper(this)}function h(t){Z.call(Q,t)||(X.test(t)||g("65",t),Q[t]=!0)}function d(t,e){return t.indexOf("-")>=0||null!=e.is}function v(t){var e=t.type;h(e),this._currentElement=t,this._tag=e.toLowerCase(),this._namespaceURI=null,this._renderedChildren=null,this._previousStyle=null,this._previousStyleCopy=null,this._hostNode=null,this._hostParent=null,this._rootNodeID=0,this._domID=0,this._hostContainerInfo=null,this._wrapperState=null,this._topLevelWrapper=null,this._flags=0}var g=n(1),m=n(3),y=n(346),_=n(348),b=n(20),x=n(83),w=n(21),C=n(160),k=n(22),E=n(84),M=n(53),T=n(161),S=n(4),N=n(365),A=n(366),P=n(162),O=n(369),I=(n(9),n(378)),D=n(383),R=(n(11),n(56)),L=(n(0),n(95),n(81),n(173)),U=(n(97),n(2),T),F=k.deleteListener,j=S.getNodeFromInstance,B=M.listenTo,V=E.registrationNameModules,W={string:!0,number:!0},z="__html",H={children:null,dangerouslySetInnerHTML:null,suppressContentEditableWarning:null},q=11,Y={topAbort:"abort",topCanPlay:"canplay",topCanPlayThrough:"canplaythrough",topDurationChange:"durationchange",topEmptied:"emptied",topEncrypted:"encrypted",topEnded:"ended",topError:"error",topLoadedData:"loadeddata",topLoadedMetadata:"loadedmetadata",topLoadStart:"loadstart",topPause:"pause",topPlay:"play",topPlaying:"playing",topProgress:"progress",topRateChange:"ratechange",topSeeked:"seeked",topSeeking:"seeking",topStalled:"stalled",topSuspend:"suspend",topTimeUpdate:"timeupdate",topVolumeChange:"volumechange",topWaiting:"waiting"},K={area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0},G={listing:!0,pre:!0,textarea:!0},$=m({menuitem:!0},K),X=/^[a-zA-Z][a-zA-Z:_\.\-\d]*$/,Q={},Z={}.hasOwnProperty,J=1;v.displayName="ReactDOMComponent",v.Mixin={mountComponent:function(t,e,n,r){this._rootNodeID=J++,this._domID=n._idCounter++,this._hostParent=e,this._hostContainerInfo=n;var o=this._currentElement.props;switch(this._tag){case"audio":case"form":case"iframe":case"img":case"link":case"object":case"source":case"video":this._wrapperState={listeners:null},t.getReactMountReady().enqueue(f,this);break;case"input":N.mountWrapper(this,o,e),o=N.getHostProps(this,o),t.getReactMountReady().enqueue(l,this),t.getReactMountReady().enqueue(f,this);break;case"option":A.mountWrapper(this,o,e),o=A.getHostProps(this,o);break;case"select":P.mountWrapper(this,o,e),o=P.getHostProps(this,o),t.getReactMountReady().enqueue(f,this);break;case"textarea":O.mountWrapper(this,o,e),o=O.getHostProps(this,o),t.getReactMountReady().enqueue(l,this),t.getReactMountReady().enqueue(f,this)}i(this,o);var a,p;null!=e?(a=e._namespaceURI,p=e._tag):n._tag&&(a=n._namespaceURI,p=n._tag),(null==a||a===x.svg&&"foreignobject"===p)&&(a=x.html),a===x.html&&("svg"===this._tag?a=x.svg:"math"===this._tag&&(a=x.mathml)),this._namespaceURI=a;var h;if(t.useCreateElement){var d,v=n._ownerDocument;if(a===x.html)if("script"===this._tag){var g=v.createElement("div"),m=this._currentElement.type;g.innerHTML="<"+m+"></"+m+">",d=g.removeChild(g.firstChild)}else d=o.is?v.createElement(this._currentElement.type,o.is):v.createElement(this._currentElement.type);else d=v.createElementNS(a,this._currentElement.type);S.precacheNode(this,d),this._flags|=U.hasCachedChildNodes,this._hostParent||C.setAttributeForRoot(d),this._updateDOMProperties(null,o,t);var _=b(d);this._createInitialChildren(t,o,r,_),h=_}else{var w=this._createOpenTagMarkupAndPutListeners(t,o),k=this._createContentMarkup(t,o,r);h=!k&&K[this._tag]?w+"/>":w+">"+k+"</"+this._currentElement.type+">"}switch(this._tag){case"input":t.getReactMountReady().enqueue(u,this),o.autoFocus&&t.getReactMountReady().enqueue(y.focusDOMComponent,this);break;case"textarea":t.getReactMountReady().enqueue(c,this),o.autoFocus&&t.getReactMountReady().enqueue(y.focusDOMComponent,this);break;case"select":case"button":o.autoFocus&&t.getReactMountReady().enqueue(y.focusDOMComponent,this);break;case"option":t.getReactMountReady().enqueue(s,this)}return h},_createOpenTagMarkupAndPutListeners:function(t,e){var n="<"+this._currentElement.type;for(var r in e)if(e.hasOwnProperty(r)){var i=e[r];if(null!=i)if(V.hasOwnProperty(r))i&&o(this,r,i,t);else{"style"===r&&(i&&(i=this._previousStyleCopy=m({},e.style)),i=_.createMarkupForStyles(i,this));var a=null;null!=this._tag&&d(this._tag,e)?H.hasOwnProperty(r)||(a=C.createMarkupForCustomAttribute(r,i)):a=C.createMarkupForProperty(r,i),a&&(n+=" "+a)}}return t.renderToStaticMarkup?n:(this._hostParent||(n+=" "+C.createMarkupForRoot()),n+=" "+C.createMarkupForID(this._domID))},_createContentMarkup:function(t,e,n){var r="",i=e.dangerouslySetInnerHTML;if(null!=i)null!=i.__html&&(r=i.__html);else{var o=W[typeof e.children]?e.children:null,a=null!=o?null:e.children;if(null!=o)r=R(o);else if(null!=a){var u=this.mountChildren(a,t,n);r=u.join("")}}return G[this._tag]&&"\n"===r.charAt(0)?"\n"+r:r},_createInitialChildren:function(t,e,n,r){var i=e.dangerouslySetInnerHTML;if(null!=i)null!=i.__html&&b.queueHTML(r,i.__html);else{var o=W[typeof e.children]?e.children:null,a=null!=o?null:e.children;if(null!=o)""!==o&&b.queueText(r,o);else if(null!=a)for(var u=this.mountChildren(a,t,n),c=0;c<u.length;c++)b.queueChild(r,u[c])}},receiveComponent:function(t,e,n){var r=this._currentElement;this._currentElement=t,this.updateComponent(e,r,t,n)},updateComponent:function(t,e,n,r){var o=e.props,a=this._currentElement.props;switch(this._tag){case"input":o=N.getHostProps(this,o),a=N.getHostProps(this,a);break;case"option":o=A.getHostProps(this,o),a=A.getHostProps(this,a);break;case"select":o=P.getHostProps(this,o),a=P.getHostProps(this,a);break;case"textarea":o=O.getHostProps(this,o),a=O.getHostProps(this,a)}switch(i(this,a),this._updateDOMProperties(o,a,t),this._updateDOMChildren(o,a,t,r),this._tag){case"input":N.updateWrapper(this),L.updateValueIfChanged(this);break;case"textarea":O.updateWrapper(this);break;case"select":t.getReactMountReady().enqueue(p,this)}},_updateDOMProperties:function(t,e,n){var r,i,a;for(r in t)if(!e.hasOwnProperty(r)&&t.hasOwnProperty(r)&&null!=t[r])if("style"===r){var u=this._previousStyleCopy;for(i in u)u.hasOwnProperty(i)&&(a=a||{},a[i]="");this._previousStyleCopy=null}else V.hasOwnProperty(r)?t[r]&&F(this,r):d(this._tag,t)?H.hasOwnProperty(r)||C.deleteValueForAttribute(j(this),r):(w.properties[r]||w.isCustomAttribute(r))&&C.deleteValueForProperty(j(this),r);for(r in e){var c=e[r],s="style"===r?this._previousStyleCopy:null!=t?t[r]:void 0;if(e.hasOwnProperty(r)&&c!==s&&(null!=c||null!=s))if("style"===r)if(c?c=this._previousStyleCopy=m({},c):this._previousStyleCopy=null,s){for(i in s)!s.hasOwnProperty(i)||c&&c.hasOwnProperty(i)||(a=a||{},a[i]="");for(i in c)c.hasOwnProperty(i)&&s[i]!==c[i]&&(a=a||{},a[i]=c[i])}else a=c;else if(V.hasOwnProperty(r))c?o(this,r,c,n):s&&F(this,r);else if(d(this._tag,e))H.hasOwnProperty(r)||C.setValueForAttribute(j(this),r,c);else if(w.properties[r]||w.isCustomAttribute(r)){var l=j(this);null!=c?C.setValueForProperty(l,r,c):C.deleteValueForProperty(l,r)}}a&&_.setValueForStyles(j(this),a,this)},_updateDOMChildren:function(t,e,n,r){var i=W[typeof t.children]?t.children:null,o=W[typeof e.children]?e.children:null,a=t.dangerouslySetInnerHTML&&t.dangerouslySetInnerHTML.__html,u=e.dangerouslySetInnerHTML&&e.dangerouslySetInnerHTML.__html,c=null!=i?null:t.children,s=null!=o?null:e.children,l=null!=i||null!=a,f=null!=o||null!=u;null!=c&&null==s?this.updateChildren(null,n,r):l&&!f&&this.updateTextContent(""),null!=o?i!==o&&this.updateTextContent(""+o):null!=u?a!==u&&this.updateMarkup(""+u):null!=s&&this.updateChildren(s,n,r)},getHostNode:function(){return j(this)},unmountComponent:function(t){switch(this._tag){case"audio":case"form":case"iframe":case"img":case"link":case"object":case"source":case"video":var e=this._wrapperState.listeners;if(e)for(var n=0;n<e.length;n++)e[n].remove();break;case"input":case"textarea":L.stopTracking(this);break;case"html":case"head":case"body":g("66",this._tag)}this.unmountChildren(t),S.uncacheNode(this),k.deleteAllListeners(this),this._rootNodeID=0,this._domID=0,this._wrapperState=null},getPublicInstance:function(){return j(this)}},m(v.prototype,v.Mixin,I.Mixin),t.exports=v},function(t,e,n){"use strict";function r(t,e){var n={_topLevelWrapper:t,_idCounter:1,_ownerDocument:e?e.nodeType===i?e:e.ownerDocument:null,_node:e,_tag:e?e.nodeName.toLowerCase():null,_namespaceURI:e?e.namespaceURI:null};return n}var i=(n(97),9);t.exports=r},function(t,e,n){"use strict";var r=n(3),i=n(20),o=n(4),a=function(t){this._currentElement=null,this._hostNode=null,this._hostParent=null,this._hostContainerInfo=null,this._domID=0};r(a.prototype,{mountComponent:function(t,e,n,r){var a=n._idCounter++;this._domID=a,this._hostParent=e,this._hostContainerInfo=n;var u=" react-empty: "+this._domID+" ";if(t.useCreateElement){var c=n._ownerDocument,s=c.createComment(u);return o.precacheNode(this,s),i(s)}return t.renderToStaticMarkup?"":"\x3c!--"+u+"--\x3e"},receiveComponent:function(){},getHostNode:function(){return o.getNodeFromInstance(this)},unmountComponent:function(){o.uncacheNode(this)}}),t.exports=a},function(t,e,n){"use strict";var r={useCreateElement:!0,useFiber:!1};t.exports=r},function(t,e,n){"use strict";var r=n(82),i=n(4),o={dangerouslyProcessChildrenUpdates:function(t,e){var n=i.getNodeFromInstance(t);r.processUpdates(n,e)}};t.exports=o},function(t,e,n){"use strict";function r(){this._rootNodeID&&p.updateWrapper(this)}function i(t){return"checkbox"===t.type||"radio"===t.type?null!=t.checked:null!=t.value}function o(t){var e=this._currentElement.props,n=s.executeOnChange(e,t);f.asap(r,this);var i=e.name;if("radio"===e.type&&null!=i){for(var o=l.getNodeFromInstance(this),u=o;u.parentNode;)u=u.parentNode;for(var c=u.querySelectorAll("input[name="+JSON.stringify(""+i)+'][type="radio"]'),p=0;p<c.length;p++){var h=c[p];if(h!==o&&h.form===o.form){var d=l.getInstanceFromNode(h);d||a("90"),f.asap(r,d)}}}return n}var a=n(1),u=n(3),c=n(160),s=n(86),l=n(4),f=n(12),p=(n(0),n(2),{getHostProps:function(t,e){var n=s.getValue(e),r=s.getChecked(e);return u({type:void 0,step:void 0,min:void 0,max:void 0},e,{defaultChecked:void 0,defaultValue:void 0,value:null!=n?n:t._wrapperState.initialValue,checked:null!=r?r:t._wrapperState.initialChecked,onChange:t._wrapperState.onChange})},mountWrapper:function(t,e){var n=e.defaultValue;t._wrapperState={initialChecked:null!=e.checked?e.checked:e.defaultChecked,initialValue:null!=e.value?e.value:n,listeners:null,onChange:o.bind(t),controlled:i(e)}},updateWrapper:function(t){var e=t._currentElement.props,n=e.checked;null!=n&&c.setValueForProperty(l.getNodeFromInstance(t),"checked",n||!1);var r=l.getNodeFromInstance(t),i=s.getValue(e);if(null!=i)if(0===i&&""===r.value)r.value="0";else if("number"===e.type){var o=parseFloat(r.value,10)||0;(i!=o||i==o&&r.value!=i)&&(r.value=""+i)}else r.value!==""+i&&(r.value=""+i);else null==e.value&&null!=e.defaultValue&&r.defaultValue!==""+e.defaultValue&&(r.defaultValue=""+e.defaultValue),null==e.checked&&null!=e.defaultChecked&&(r.defaultChecked=!!e.defaultChecked)},postMountWrapper:function(t){var e=t._currentElement.props,n=l.getNodeFromInstance(t);switch(e.type){case"submit":case"reset":break;case"color":case"date":case"datetime":case"datetime-local":case"month":case"time":case"week":n.value="",n.value=n.defaultValue;break;default:n.value=n.value}var r=n.name;""!==r&&(n.name=""),n.defaultChecked=!n.defaultChecked,n.defaultChecked=!n.defaultChecked,""!==r&&(n.name=r)}});t.exports=p},function(t,e,n){"use strict";function r(t){var e="";return o.Children.forEach(t,function(t){null!=t&&("string"==typeof t||"number"==typeof t?e+=t:c||(c=!0))}),e}var i=n(3),o=n(26),a=n(4),u=n(162),c=(n(2),!1),s={mountWrapper:function(t,e,n){var i=null;if(null!=n){var o=n;"optgroup"===o._tag&&(o=o._hostParent),null!=o&&"select"===o._tag&&(i=u.getSelectValueContext(o))}var a=null;if(null!=i){var c;if(c=null!=e.value?e.value+"":r(e.children),a=!1,Array.isArray(i)){for(var s=0;s<i.length;s++)if(""+i[s]===c){a=!0;break}}else a=""+i===c}t._wrapperState={selected:a}},postMountWrapper:function(t){var e=t._currentElement.props;if(null!=e.value){a.getNodeFromInstance(t).setAttribute("value",e.value)}},getHostProps:function(t,e){var n=i({selected:void 0,children:void 0},e);null!=t._wrapperState.selected&&(n.selected=t._wrapperState.selected);var o=r(e.children);return o&&(n.children=o),n}};t.exports=s},function(t,e,n){"use strict";function r(t,e,n,r){return t===n&&e===r}function i(t){var e=document.selection,n=e.createRange(),r=n.text.length,i=n.duplicate();i.moveToElementText(t),i.setEndPoint("EndToStart",n);var o=i.text.length;return{start:o,end:o+r}}function o(t){var e=window.getSelection&&window.getSelection();if(!e||0===e.rangeCount)return null;var n=e.anchorNode,i=e.anchorOffset,o=e.focusNode,a=e.focusOffset,u=e.getRangeAt(0);try{u.startContainer.nodeType,u.endContainer.nodeType}catch(t){return null}var c=r(e.anchorNode,e.anchorOffset,e.focusNode,e.focusOffset),s=c?0:u.toString().length,l=u.cloneRange();l.selectNodeContents(t),l.setEnd(u.startContainer,u.startOffset);var f=r(l.startContainer,l.startOffset,l.endContainer,l.endOffset),p=f?0:l.toString().length,h=p+s,d=document.createRange();d.setStart(n,i),d.setEnd(o,a);var v=d.collapsed;return{start:v?h:p,end:v?p:h}}function a(t,e){var n,r,i=document.selection.createRange().duplicate();void 0===e.end?(n=e.start,r=n):e.start>e.end?(n=e.end,r=e.start):(n=e.start,r=e.end),i.moveToElementText(t),i.moveStart("character",n),i.setEndPoint("EndToStart",i),i.moveEnd("character",r-n),i.select()}function u(t,e){if(window.getSelection){var n=window.getSelection(),r=t[l()].length,i=Math.min(e.start,r),o=void 0===e.end?i:Math.min(e.end,r);if(!n.extend&&i>o){var a=o;o=i,i=a}var u=s(t,i),c=s(t,o);if(u&&c){var f=document.createRange();f.setStart(u.node,u.offset),n.removeAllRanges(),i>o?(n.addRange(f),n.extend(c.node,c.offset)):(f.setEnd(c.node,c.offset),n.addRange(f))}}}var c=n(6),s=n(405),l=n(172),f=c.canUseDOM&&"selection"in document&&!("getSelection"in window),p={getOffsets:f?i:o,setOffsets:f?a:u};t.exports=p},function(t,e,n){"use strict";var r=n(1),i=n(3),o=n(82),a=n(20),u=n(4),c=n(56),s=(n(0),n(97),function(t){this._currentElement=t,this._stringText=""+t,this._hostNode=null,this._hostParent=null,this._domID=0,this._mountIndex=0,this._closingComment=null,this._commentNodes=null});i(s.prototype,{mountComponent:function(t,e,n,r){var i=n._idCounter++,o=" react-text: "+i+" ";if(this._domID=i,this._hostParent=e,t.useCreateElement){var s=n._ownerDocument,l=s.createComment(o),f=s.createComment(" /react-text "),p=a(s.createDocumentFragment());return a.queueChild(p,a(l)),this._stringText&&a.queueChild(p,a(s.createTextNode(this._stringText))),a.queueChild(p,a(f)),u.precacheNode(this,l),this._closingComment=f,p}var h=c(this._stringText);return t.renderToStaticMarkup?h:"\x3c!--"+o+"--\x3e"+h+"\x3c!-- /react-text --\x3e"},receiveComponent:function(t,e){if(t!==this._currentElement){this._currentElement=t;var n=""+t;if(n!==this._stringText){this._stringText=n;var r=this.getHostNode();o.replaceDelimitedText(r[0],r[1],n)}}},getHostNode:function(){var t=this._commentNodes;if(t)return t;if(!this._closingComment)for(var e=u.getNodeFromInstance(this),n=e.nextSibling;;){if(null==n&&r("67",this._domID),8===n.nodeType&&" /react-text "===n.nodeValue){this._closingComment=n;break}n=n.nextSibling}return t=[this._hostNode,this._closingComment],this._commentNodes=t,t},unmountComponent:function(){this._closingComment=null,this._commentNodes=null,u.uncacheNode(this)}}),t.exports=s},function(t,e,n){"use strict";function r(){this._rootNodeID&&l.updateWrapper(this)}function i(t){var e=this._currentElement.props,n=u.executeOnChange(e,t);return s.asap(r,this),n}var o=n(1),a=n(3),u=n(86),c=n(4),s=n(12),l=(n(0),n(2),{getHostProps:function(t,e){return null!=e.dangerouslySetInnerHTML&&o("91"),a({},e,{value:void 0,defaultValue:void 0,children:""+t._wrapperState.initialValue,onChange:t._wrapperState.onChange})},mountWrapper:function(t,e){var n=u.getValue(e),r=n;if(null==n){var a=e.defaultValue,c=e.children;null!=c&&(null!=a&&o("92"),Array.isArray(c)&&(c.length<=1||o("93"),c=c[0]),a=""+c),null==a&&(a=""),r=a}t._wrapperState={initialValue:""+r,listeners:null,onChange:i.bind(t)}},updateWrapper:function(t){var e=t._currentElement.props,n=c.getNodeFromInstance(t),r=u.getValue(e);if(null!=r){var i=""+r;i!==n.value&&(n.value=i),null==e.defaultValue&&(n.defaultValue=i)}null!=e.defaultValue&&(n.defaultValue=e.defaultValue)},postMountWrapper:function(t){var e=c.getNodeFromInstance(t),n=e.textContent;n===t._wrapperState.initialValue&&(e.value=n)}});t.exports=l},function(t,e,n){"use strict";function r(t,e){"_hostNode"in t||c("33"),"_hostNode"in e||c("33");for(var n=0,r=t;r;r=r._hostParent)n++;for(var i=0,o=e;o;o=o._hostParent)i++;for(;n-i>0;)t=t._hostParent,n--;for(;i-n>0;)e=e._hostParent,i--;for(var a=n;a--;){if(t===e)return t;t=t._hostParent,e=e._hostParent}return null}function i(t,e){"_hostNode"in t||c("35"),"_hostNode"in e||c("35");for(;e;){if(e===t)return!0;e=e._hostParent}return!1}function o(t){return"_hostNode"in t||c("36"),t._hostParent}function a(t,e,n){for(var r=[];t;)r.push(t),t=t._hostParent;var i;for(i=r.length;i-- >0;)e(r[i],"captured",n);for(i=0;i<r.length;i++)e(r[i],"bubbled",n)}function u(t,e,n,i,o){for(var a=t&&e?r(t,e):null,u=[];t&&t!==a;)u.push(t),t=t._hostParent;for(var c=[];e&&e!==a;)c.push(e),e=e._hostParent;var s;for(s=0;s<u.length;s++)n(u[s],"bubbled",i);for(s=c.length;s-- >0;)n(c[s],"captured",o)}var c=n(1);n(0);t.exports={isAncestor:i,getLowestCommonAncestor:r,getParentInstance:o,traverseTwoPhase:a,traverseEnterLeave:u}},function(t,e,n){"use strict";function r(){this.reinitializeTransaction()}var i=n(3),o=n(12),a=n(55),u=n(11),c={initialize:u,close:function(){p.isBatchingUpdates=!1}},s={initialize:u,close:o.flushBatchedUpdates.bind(o)},l=[s,c];i(r.prototype,a,{getTransactionWrappers:function(){return l}});var f=new r,p={isBatchingUpdates:!1,batchedUpdates:function(t,e,n,r,i,o){var a=p.isBatchingUpdates;return p.isBatchingUpdates=!0,a?t(e,n,r,i,o):f.perform(t,null,e,n,r,i,o)}};t.exports=p},function(t,e,n){"use strict";function r(){C||(C=!0,y.EventEmitter.injectReactEventListener(m),y.EventPluginHub.injectEventPluginOrder(u),y.EventPluginUtils.injectComponentTree(p),y.EventPluginUtils.injectTreeTraversal(d),y.EventPluginHub.injectEventPluginsByName({SimpleEventPlugin:w,EnterLeaveEventPlugin:c,ChangeEventPlugin:a,SelectEventPlugin:x,BeforeInputEventPlugin:o}),y.HostComponent.injectGenericComponentClass(f),y.HostComponent.injectTextComponentClass(v),y.DOMProperty.injectDOMPropertyConfig(i),y.DOMProperty.injectDOMPropertyConfig(s),y.DOMProperty.injectDOMPropertyConfig(b),y.EmptyComponent.injectEmptyComponentFactory(function(t){return new h(t)}),y.Updates.injectReconcileTransaction(_),y.Updates.injectBatchingStrategy(g),y.Component.injectEnvironment(l))}var i=n(345),o=n(347),a=n(349),u=n(351),c=n(352),s=n(355),l=n(357),f=n(360),p=n(4),h=n(362),d=n(370),v=n(368),g=n(371),m=n(375),y=n(376),_=n(381),b=n(386),x=n(387),w=n(388),C=!1;t.exports={inject:r}},function(t,e,n){"use strict";var r="function"==typeof Symbol&&Symbol.for&&Symbol.for("react.element")||60103;t.exports=r},function(t,e,n){"use strict";function r(t){i.enqueueEvents(t),i.processEventQueue(!1)}var i=n(22),o={handleTopLevel:function(t,e,n,o){r(i.extractEvents(t,e,n,o))}};t.exports=o},function(t,e,n){"use strict";function r(t){for(;t._hostParent;)t=t._hostParent;var e=f.getNodeFromInstance(t),n=e.parentNode;return f.getClosestInstanceFromNode(n)}function i(t,e){this.topLevelType=t,this.nativeEvent=e,this.ancestors=[]}function o(t){var e=h(t.nativeEvent),n=f.getClosestInstanceFromNode(e),i=n;do{t.ancestors.push(i),i=i&&r(i)}while(i);for(var o=0;o<t.ancestors.length;o++)n=t.ancestors[o],v._handleTopLevel(t.topLevelType,n,t.nativeEvent,h(t.nativeEvent))}function a(t){t(d(window))}var u=n(3),c=n(153),s=n(6),l=n(18),f=n(4),p=n(12),h=n(94),d=n(335);u(i.prototype,{destructor:function(){this.topLevelType=null,this.nativeEvent=null,this.ancestors.length=0}}),l.addPoolingTo(i,l.twoArgumentPooler);var v={_enabled:!0,_handleTopLevel:null,WINDOW_HANDLE:s.canUseDOM?window:null,setHandleTopLevel:function(t){v._handleTopLevel=t},setEnabled:function(t){v._enabled=!!t},isEnabled:function(){return v._enabled},trapBubbledEvent:function(t,e,n){return n?c.listen(n,e,v.dispatchEvent.bind(null,t)):null},trapCapturedEvent:function(t,e,n){return n?c.capture(n,e,v.dispatchEvent.bind(null,t)):null},monitorScrollValue:function(t){var e=a.bind(null,t);c.listen(window,"scroll",e)},dispatchEvent:function(t,e){if(v._enabled){var n=i.getPooled(t,e);try{p.batchedUpdates(o,n)}finally{i.release(n)}}}};t.exports=v},function(t,e,n){"use strict";var r=n(21),i=n(22),o=n(52),a=n(87),u=n(163),c=n(53),s=n(165),l=n(12),f={Component:a.injection,DOMProperty:r.injection,EmptyComponent:u.injection,EventPluginHub:i.injection,EventPluginUtils:o.injection,EventEmitter:c.injection,HostComponent:s.injection,Updates:l.injection};t.exports=f},function(t,e,n){"use strict";var r=n(399),i=/\/?>/,o=/^<\!\-\-/,a={CHECKSUM_ATTR_NAME:"data-react-checksum",addChecksumToMarkup:function(t){var e=r(t);return o.test(t)?t:t.replace(i," "+a.CHECKSUM_ATTR_NAME+'="'+e+'"$&')},canReuseMarkup:function(t,e){var n=e.getAttribute(a.CHECKSUM_ATTR_NAME);return n=n&&parseInt(n,10),r(t)===n}};t.exports=a},function(t,e,n){"use strict";function r(t,e,n){return{type:"INSERT_MARKUP",content:t,fromIndex:null,fromNode:null,toIndex:n,afterNode:e}}function i(t,e,n){return{type:"MOVE_EXISTING",content:null,fromIndex:t._mountIndex,fromNode:p.getHostNode(t),toIndex:n,afterNode:e}}function o(t,e){return{type:"REMOVE_NODE",content:null,fromIndex:t._mountIndex,fromNode:e,toIndex:null,afterNode:null}}function a(t){return{type:"SET_MARKUP",content:t,fromIndex:null,fromNode:null,toIndex:null,afterNode:null}}function u(t){return{type:"TEXT_CONTENT",content:t,fromIndex:null,fromNode:null,toIndex:null,afterNode:null}}function c(t,e){return e&&(t=t||[],t.push(e)),t}function s(t,e){f.processChildrenUpdates(t,e)}var l=n(1),f=n(87),p=(n(39),n(9),n(15),n(24)),h=n(356),d=(n(11),n(402)),v=(n(0),{Mixin:{_reconcilerInstantiateChildren:function(t,e,n){return h.instantiateChildren(t,e,n)},_reconcilerUpdateChildren:function(t,e,n,r,i,o){var a,u=0;return a=d(e,u),h.updateChildren(t,a,n,r,i,this,this._hostContainerInfo,o,u),a},mountChildren:function(t,e,n){var r=this._reconcilerInstantiateChildren(t,e,n);this._renderedChildren=r;var i=[],o=0;for(var a in r)if(r.hasOwnProperty(a)){var u=r[a],c=0,s=p.mountComponent(u,e,this,this._hostContainerInfo,n,c);u._mountIndex=o++,i.push(s)}return i},updateTextContent:function(t){var e=this._renderedChildren;h.unmountChildren(e,!1);for(var n in e)e.hasOwnProperty(n)&&l("118");s(this,[u(t)])},updateMarkup:function(t){var e=this._renderedChildren;h.unmountChildren(e,!1);for(var n in e)e.hasOwnProperty(n)&&l("118");s(this,[a(t)])},updateChildren:function(t,e,n){this._updateChildren(t,e,n)},_updateChildren:function(t,e,n){var r=this._renderedChildren,i={},o=[],a=this._reconcilerUpdateChildren(r,t,o,i,e,n);if(a||r){var u,l=null,f=0,h=0,d=0,v=null;for(u in a)if(a.hasOwnProperty(u)){var g=r&&r[u],m=a[u];g===m?(l=c(l,this.moveChild(g,v,f,h)),h=Math.max(g._mountIndex,h),g._mountIndex=f):(g&&(h=Math.max(g._mountIndex,h)),l=c(l,this._mountChildAtIndex(m,o[d],v,f,e,n)),d++),f++,v=p.getHostNode(m)}for(u in i)i.hasOwnProperty(u)&&(l=c(l,this._unmountChild(r[u],i[u])));l&&s(this,l),this._renderedChildren=a}},unmountChildren:function(t){var e=this._renderedChildren;h.unmountChildren(e,t),this._renderedChildren=null},moveChild:function(t,e,n,r){if(t._mountIndex<r)return i(t,e,n)},createChild:function(t,e,n){return r(n,e,t._mountIndex)},removeChild:function(t,e){return o(t,e)},_mountChildAtIndex:function(t,e,n,r,i,o){return t._mountIndex=r,this.createChild(t,n,e)},_unmountChild:function(t,e){var n=this.removeChild(t,e);return t._mountIndex=null,n}}});t.exports=v},function(t,e,n){"use strict";function r(t){return!(!t||"function"!=typeof t.attachRef||"function"!=typeof t.detachRef)}var i=n(1),o=(n(0),{addComponentAsRefTo:function(t,e,n){r(n)||i("119"),n.attachRef(e,t)},removeComponentAsRefFrom:function(t,e,n){r(n)||i("120");var o=n.getPublicInstance();o&&o.refs[e]===t.getPublicInstance()&&n.detachRef(e)}});t.exports=o},function(t,e,n){"use strict";t.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},function(t,e,n){"use strict";function r(t){this.reinitializeTransaction(),this.renderToStaticMarkup=!1,this.reactMountReady=o.getPooled(null),this.useCreateElement=t}var i=n(3),o=n(159),a=n(18),u=n(53),c=n(166),s=(n(9),n(55)),l=n(89),f={initialize:c.getSelectionInformation,close:c.restoreSelection},p={initialize:function(){var t=u.isEnabled();return u.setEnabled(!1),t},close:function(t){u.setEnabled(t)}},h={initialize:function(){this.reactMountReady.reset()},close:function(){this.reactMountReady.notifyAll()}},d=[f,p,h],v={getTransactionWrappers:function(){return d},getReactMountReady:function(){return this.reactMountReady},getUpdateQueue:function(){return l},checkpoint:function(){return this.reactMountReady.checkpoint()},rollback:function(t){this.reactMountReady.rollback(t)},destructor:function(){o.release(this.reactMountReady),this.reactMountReady=null}};i(r.prototype,s,v),a.addPoolingTo(r),t.exports=r},function(t,e,n){"use strict";function r(t,e,n){"function"==typeof t?t(e.getPublicInstance()):o.addComponentAsRefTo(e,t,n)}function i(t,e,n){"function"==typeof t?t(null):o.removeComponentAsRefFrom(e,t,n)}var o=n(379),a={};a.attachRefs=function(t,e){if(null!==e&&"object"==typeof e){var n=e.ref;null!=n&&r(n,t,e._owner)}},a.shouldUpdateRefs=function(t,e){var n=null,r=null;null!==t&&"object"==typeof t&&(n=t.ref,r=t._owner);var i=null,o=null;return null!==e&&"object"==typeof e&&(i=e.ref,o=e._owner),n!==i||"string"==typeof i&&o!==r},a.detachRefs=function(t,e){if(null!==e&&"object"==typeof e){var n=e.ref;null!=n&&i(n,t,e._owner)}},t.exports=a},function(t,e,n){"use strict";function r(t){this.reinitializeTransaction(),this.renderToStaticMarkup=t,this.useCreateElement=!1,this.updateQueue=new u(this)}var i=n(3),o=n(18),a=n(55),u=(n(9),n(384)),c=[],s={enqueue:function(){}},l={getTransactionWrappers:function(){return c},getReactMountReady:function(){return s},getUpdateQueue:function(){return this.updateQueue},destructor:function(){},checkpoint:function(){},rollback:function(){}};i(r.prototype,a,l),o.addPoolingTo(r),t.exports=r},function(t,e,n){"use strict";function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var i=n(89),o=(n(2),function(){function t(e){r(this,t),this.transaction=e}return t.prototype.isMounted=function(t){return!1},t.prototype.enqueueCallback=function(t,e,n){this.transaction.isInTransaction()&&i.enqueueCallback(t,e,n)},t.prototype.enqueueForceUpdate=function(t){this.transaction.isInTransaction()&&i.enqueueForceUpdate(t)},t.prototype.enqueueReplaceState=function(t,e){this.transaction.isInTransaction()&&i.enqueueReplaceState(t,e)},t.prototype.enqueueSetState=function(t,e){this.transaction.isInTransaction()&&i.enqueueSetState(t,e)},t}());t.exports=o},function(t,e,n){"use strict";t.exports="15.6.2"},function(t,e,n){"use strict";var r={xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace"},i={accentHeight:"accent-height",accumulate:0,additive:0,alignmentBaseline:"alignment-baseline",allowReorder:"allowReorder",alphabetic:0,amplitude:0,arabicForm:"arabic-form",ascent:0,attributeName:"attributeName",attributeType:"attributeType",autoReverse:"autoReverse",azimuth:0,baseFrequency:"baseFrequency",baseProfile:"baseProfile",baselineShift:"baseline-shift",bbox:0,begin:0,bias:0,by:0,calcMode:"calcMode",capHeight:"cap-height",clip:0,clipPath:"clip-path",clipRule:"clip-rule",clipPathUnits:"clipPathUnits",colorInterpolation:"color-interpolation",colorInterpolationFilters:"color-interpolation-filters",colorProfile:"color-profile",colorRendering:"color-rendering",contentScriptType:"contentScriptType",contentStyleType:"contentStyleType",cursor:0,cx:0,cy:0,d:0,decelerate:0,descent:0,diffuseConstant:"diffuseConstant",direction:0,display:0,divisor:0,dominantBaseline:"dominant-baseline",dur:0,dx:0,dy:0,edgeMode:"edgeMode",elevation:0,enableBackground:"enable-background",end:0,exponent:0,externalResourcesRequired:"externalResourcesRequired",fill:0,fillOpacity:"fill-opacity",fillRule:"fill-rule",filter:0,filterRes:"filterRes",filterUnits:"filterUnits",floodColor:"flood-color",floodOpacity:"flood-opacity",focusable:0,fontFamily:"font-family",fontSize:"font-size",fontSizeAdjust:"font-size-adjust",fontStretch:"font-stretch",fontStyle:"font-style",fontVariant:"font-variant",fontWeight:"font-weight",format:0,from:0,fx:0,fy:0,g1:0,g2:0,glyphName:"glyph-name",glyphOrientationHorizontal:"glyph-orientation-horizontal",glyphOrientationVertical:"glyph-orientation-vertical",glyphRef:"glyphRef",gradientTransform:"gradientTransform",gradientUnits:"gradientUnits",hanging:0,horizAdvX:"horiz-adv-x",horizOriginX:"horiz-origin-x",ideographic:0,imageRendering:"image-rendering",in:0,in2:0,intercept:0,k:0,k1:0,k2:0,k3:0,k4:0,kernelMatrix:"kernelMatrix",kernelUnitLength:"kernelUnitLength",kerning:0,keyPoints:"keyPoints",keySplines:"keySplines",keyTimes:"keyTimes",lengthAdjust:"lengthAdjust",letterSpacing:"letter-spacing",lightingColor:"lighting-color",limitingConeAngle:"limitingConeAngle",local:0,markerEnd:"marker-end",markerMid:"marker-mid",markerStart:"marker-start",markerHeight:"markerHeight",markerUnits:"markerUnits",markerWidth:"markerWidth",mask:0,maskContentUnits:"maskContentUnits",maskUnits:"maskUnits",mathematical:0,mode:0,numOctaves:"numOctaves",offset:0,opacity:0,operator:0,order:0,orient:0,orientation:0,origin:0,overflow:0,overlinePosition:"overline-position",overlineThickness:"overline-thickness",paintOrder:"paint-order",panose1:"panose-1",pathLength:"pathLength",patternContentUnits:"patternContentUnits",patternTransform:"patternTransform",patternUnits:"patternUnits",pointerEvents:"pointer-events",points:0,pointsAtX:"pointsAtX",pointsAtY:"pointsAtY",pointsAtZ:"pointsAtZ",preserveAlpha:"preserveAlpha",preserveAspectRatio:"preserveAspectRatio",primitiveUnits:"primitiveUnits",r:0,radius:0,refX:"refX",refY:"refY",renderingIntent:"rendering-intent",repeatCount:"repeatCount",repeatDur:"repeatDur",requiredExtensions:"requiredExtensions",requiredFeatures:"requiredFeatures",restart:0,result:0,rotate:0,rx:0,ry:0,scale:0,seed:0,shapeRendering:"shape-rendering",slope:0,spacing:0,specularConstant:"specularConstant",specularExponent:"specularExponent",speed:0,spreadMethod:"spreadMethod",startOffset:"startOffset",stdDeviation:"stdDeviation",stemh:0,stemv:0,stitchTiles:"stitchTiles",stopColor:"stop-color",stopOpacity:"stop-opacity",strikethroughPosition:"strikethrough-position",strikethroughThickness:"strikethrough-thickness",string:0,stroke:0,strokeDasharray:"stroke-dasharray",strokeDashoffset:"stroke-dashoffset",strokeLinecap:"stroke-linecap",strokeLinejoin:"stroke-linejoin",strokeMiterlimit:"stroke-miterlimit",strokeOpacity:"stroke-opacity",strokeWidth:"stroke-width",surfaceScale:"surfaceScale",systemLanguage:"systemLanguage",tableValues:"tableValues",targetX:"targetX",targetY:"targetY",textAnchor:"text-anchor",textDecoration:"text-decoration",textRendering:"text-rendering",textLength:"textLength",to:0,transform:0,u1:0,u2:0,underlinePosition:"underline-position",underlineThickness:"underline-thickness",unicode:0,unicodeBidi:"unicode-bidi",unicodeRange:"unicode-range",unitsPerEm:"units-per-em",vAlphabetic:"v-alphabetic",vHanging:"v-hanging",vIdeographic:"v-ideographic",vMathematical:"v-mathematical",values:0,vectorEffect:"vector-effect",version:0,vertAdvY:"vert-adv-y",vertOriginX:"vert-origin-x",vertOriginY:"vert-origin-y",viewBox:"viewBox",viewTarget:"viewTarget",visibility:0,widths:0,wordSpacing:"word-spacing",writingMode:"writing-mode",x:0,xHeight:"x-height",x1:0,x2:0,xChannelSelector:"xChannelSelector",xlinkActuate:"xlink:actuate",xlinkArcrole:"xlink:arcrole",xlinkHref:"xlink:href",xlinkRole:"xlink:role",xlinkShow:"xlink:show",xlinkTitle:"xlink:title",xlinkType:"xlink:type",xmlBase:"xml:base",xmlns:0,xmlnsXlink:"xmlns:xlink",xmlLang:"xml:lang",xmlSpace:"xml:space",y:0,y1:0,y2:0,yChannelSelector:"yChannelSelector",z:0,zoomAndPan:"zoomAndPan"},o={Properties:{},DOMAttributeNamespaces:{xlinkActuate:r.xlink,xlinkArcrole:r.xlink,xlinkHref:r.xlink,xlinkRole:r.xlink,xlinkShow:r.xlink,xlinkTitle:r.xlink,xlinkType:r.xlink,xmlBase:r.xml,xmlLang:r.xml,xmlSpace:r.xml},DOMAttributeNames:{}};Object.keys(i).forEach(function(t){o.Properties[t]=0,i[t]&&(o.DOMAttributeNames[t]=i[t])}),t.exports=o},function(t,e,n){"use strict";function r(t){if("selectionStart"in t&&c.hasSelectionCapabilities(t))return{start:t.selectionStart,end:t.selectionEnd};if(window.getSelection){var e=window.getSelection();return{anchorNode:e.anchorNode,anchorOffset:e.anchorOffset,focusNode:e.focusNode,focusOffset:e.focusOffset}}if(document.selection){var n=document.selection.createRange();return{parentElement:n.parentElement(),text:n.text,top:n.boundingTop,left:n.boundingLeft}}}function i(t,e){if(y||null==v||v!==l())return null;var n=r(v);if(!m||!p(m,n)){m=n;var i=s.getPooled(d.select,g,t,e);return i.type="select",i.target=v,o.accumulateTwoPhaseDispatches(i),i}return null}var o=n(23),a=n(6),u=n(4),c=n(166),s=n(14),l=n(155),f=n(175),p=n(81),h=a.canUseDOM&&"documentMode"in document&&document.documentMode<=11,d={select:{phasedRegistrationNames:{bubbled:"onSelect",captured:"onSelectCapture"},dependencies:["topBlur","topContextMenu","topFocus","topKeyDown","topKeyUp","topMouseDown","topMouseUp","topSelectionChange"]}},v=null,g=null,m=null,y=!1,_=!1,b={eventTypes:d,extractEvents:function(t,e,n,r){if(!_)return null;var o=e?u.getNodeFromInstance(e):window;switch(t){case"topFocus":(f(o)||"true"===o.contentEditable)&&(v=o,g=e,m=null);break;case"topBlur":v=null,g=null,m=null;break;case"topMouseDown":y=!0;break;case"topContextMenu":case"topMouseUp":return y=!1,i(n,r);case"topSelectionChange":if(h)break;case"topKeyDown":case"topKeyUp":return i(n,r)}return null},didPutListener:function(t,e,n){"onSelect"===e&&(_=!0)}};t.exports=b},function(t,e,n){"use strict";function r(t){return"."+t._rootNodeID}function i(t){return"button"===t||"input"===t||"select"===t||"textarea"===t}var o=n(1),a=n(153),u=n(23),c=n(4),s=n(389),l=n(390),f=n(14),p=n(393),h=n(395),d=n(54),v=n(392),g=n(396),m=n(397),y=n(25),_=n(398),b=n(11),x=n(92),w=(n(0),{}),C={};["abort","animationEnd","animationIteration","animationStart","blur","canPlay","canPlayThrough","click","contextMenu","copy","cut","doubleClick","drag","dragEnd","dragEnter","dragExit","dragLeave","dragOver","dragStart","drop","durationChange","emptied","encrypted","ended","error","focus","input","invalid","keyDown","keyPress","keyUp","load","loadedData","loadedMetadata","loadStart","mouseDown","mouseMove","mouseOut","mouseOver","mouseUp","paste","pause","play","playing","progress","rateChange","reset","scroll","seeked","seeking","stalled","submit","suspend","timeUpdate","touchCancel","touchEnd","touchMove","touchStart","transitionEnd","volumeChange","waiting","wheel"].forEach(function(t){var e=t[0].toUpperCase()+t.slice(1),n="on"+e,r="top"+e,i={phasedRegistrationNames:{bubbled:n,captured:n+"Capture"},dependencies:[r]};w[t]=i,C[r]=i});var k={},E={eventTypes:w,extractEvents:function(t,e,n,r){var i=C[t];if(!i)return null;var a;switch(t){case"topAbort":case"topCanPlay":case"topCanPlayThrough":case"topDurationChange":case"topEmptied":case"topEncrypted":case"topEnded":case"topError":case"topInput":case"topInvalid":case"topLoad":case"topLoadedData":case"topLoadedMetadata":case"topLoadStart":case"topPause":case"topPlay":case"topPlaying":case"topProgress":case"topRateChange":case"topReset":case"topSeeked":case"topSeeking":case"topStalled":case"topSubmit":case"topSuspend":case"topTimeUpdate":case"topVolumeChange":case"topWaiting":a=f;break;case"topKeyPress":if(0===x(n))return null;case"topKeyDown":case"topKeyUp":a=h;break;case"topBlur":case"topFocus":a=p;break;case"topClick":if(2===n.button)return null;case"topDoubleClick":case"topMouseDown":case"topMouseMove":case"topMouseUp":case"topMouseOut":case"topMouseOver":case"topContextMenu":a=d;break;case"topDrag":case"topDragEnd":case"topDragEnter":case"topDragExit":case"topDragLeave":case"topDragOver":case"topDragStart":case"topDrop":a=v;break;case"topTouchCancel":case"topTouchEnd":case"topTouchMove":case"topTouchStart":a=g;break;case"topAnimationEnd":case"topAnimationIteration":case"topAnimationStart":a=s;break;case"topTransitionEnd":a=m;break;case"topScroll":a=y;break;case"topWheel":a=_;break;case"topCopy":case"topCut":case"topPaste":a=l}a||o("86",t);var c=a.getPooled(i,e,n,r);return u.accumulateTwoPhaseDispatches(c),c},didPutListener:function(t,e,n){if("onClick"===e&&!i(t._tag)){var o=r(t),u=c.getNodeFromInstance(t);k[o]||(k[o]=a.listen(u,"click",b))}},willDeleteListener:function(t,e){if("onClick"===e&&!i(t._tag)){var n=r(t);k[n].remove(),delete k[n]}}};t.exports=E},function(t,e,n){"use strict";function r(t,e,n,r){return i.call(this,t,e,n,r)}var i=n(14),o={animationName:null,elapsedTime:null,pseudoElement:null};i.augmentClass(r,o),t.exports=r},function(t,e,n){"use strict";function r(t,e,n,r){return i.call(this,t,e,n,r)}var i=n(14),o={clipboardData:function(t){return"clipboardData"in t?t.clipboardData:window.clipboardData}};i.augmentClass(r,o),t.exports=r},function(t,e,n){"use strict";function r(t,e,n,r){return i.call(this,t,e,n,r)}var i=n(14),o={data:null};i.augmentClass(r,o),t.exports=r},function(t,e,n){"use strict";function r(t,e,n,r){return i.call(this,t,e,n,r)}var i=n(54),o={dataTransfer:null};i.augmentClass(r,o),t.exports=r},function(t,e,n){"use strict";function r(t,e,n,r){return i.call(this,t,e,n,r)}var i=n(25),o={relatedTarget:null};i.augmentClass(r,o),t.exports=r},function(t,e,n){"use strict";function r(t,e,n,r){return i.call(this,t,e,n,r)}var i=n(14),o={data:null};i.augmentClass(r,o),t.exports=r},function(t,e,n){"use strict";function r(t,e,n,r){return i.call(this,t,e,n,r)}var i=n(25),o=n(92),a=n(403),u=n(93),c={key:a,location:null,ctrlKey:null,shiftKey:null,altKey:null,metaKey:null,repeat:null,locale:null,getModifierState:u,charCode:function(t){return"keypress"===t.type?o(t):0},keyCode:function(t){return"keydown"===t.type||"keyup"===t.type?t.keyCode:0},which:function(t){return"keypress"===t.type?o(t):"keydown"===t.type||"keyup"===t.type?t.keyCode:0}};i.augmentClass(r,c),t.exports=r},function(t,e,n){"use strict";function r(t,e,n,r){return i.call(this,t,e,n,r)}var i=n(25),o=n(93),a={touches:null,targetTouches:null,changedTouches:null,altKey:null,metaKey:null,ctrlKey:null,shiftKey:null,getModifierState:o};i.augmentClass(r,a),t.exports=r},function(t,e,n){"use strict";function r(t,e,n,r){return i.call(this,t,e,n,r)}var i=n(14),o={propertyName:null,elapsedTime:null,pseudoElement:null};i.augmentClass(r,o),t.exports=r},function(t,e,n){"use strict";function r(t,e,n,r){return i.call(this,t,e,n,r)}var i=n(54),o={deltaX:function(t){return"deltaX"in t?t.deltaX:"wheelDeltaX"in t?-t.wheelDeltaX:0},deltaY:function(t){return"deltaY"in t?t.deltaY:"wheelDeltaY"in t?-t.wheelDeltaY:"wheelDelta"in t?-t.wheelDelta:0},deltaZ:null,deltaMode:null};i.augmentClass(r,o),t.exports=r},function(t,e,n){"use strict";function r(t){for(var e=1,n=0,r=0,o=t.length,a=-4&o;r<a;){for(var u=Math.min(r+4096,a);r<u;r+=4)n+=(e+=t.charCodeAt(r))+(e+=t.charCodeAt(r+1))+(e+=t.charCodeAt(r+2))+(e+=t.charCodeAt(r+3));e%=i,n%=i}for(;r<o;r++)n+=e+=t.charCodeAt(r);return e%=i,n%=i,e|n<<16}var i=65521;t.exports=r},function(t,e,n){"use strict";function r(t,e,n,r){if(null==e||"boolean"==typeof e||""===e)return"";var i=isNaN(e);if(r||i||0===e||o.hasOwnProperty(t)&&o[t])return""+e;if("string"==typeof e){e=e.trim()}return e+"px"}var i=n(158),o=(n(2),i.isUnitlessNumber);t.exports=r},function(t,e,n){"use strict";function r(t){if(null==t)return null;if(1===t.nodeType)return t;var e=a.get(t);if(e)return e=u(e),e?o.getNodeFromInstance(e):null;"function"==typeof t.render?i("44"):i("45",Object.keys(t))}var i=n(1),o=(n(15),n(4)),a=n(39),u=n(171);n(0),n(2);t.exports=r},function(t,e,n){"use strict";(function(e){function r(t,e,n,r){if(t&&"object"==typeof t){var i=t,o=void 0===i[n];o&&null!=e&&(i[n]=e)}}function i(t,e){if(null==t)return t;var n={};return o(t,r,n),n}var o=(n(85),n(177));n(2);void 0!==e&&e.env,t.exports=i}).call(e,n(156))},function(t,e,n){"use strict";function r(t){if(t.key){var e=o[t.key]||t.key;if("Unidentified"!==e)return e}if("keypress"===t.type){var n=i(t);return 13===n?"Enter":String.fromCharCode(n)}return"keydown"===t.type||"keyup"===t.type?a[t.keyCode]||"Unidentified":""}var i=n(92),o={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},a={8:"Backspace",9:"Tab",12:"Clear",13:"Enter",16:"Shift",17:"Control",18:"Alt",19:"Pause",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",45:"Insert",46:"Delete",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"NumLock",145:"ScrollLock",224:"Meta"};t.exports=r},function(t,e,n){"use strict";function r(t){var e=t&&(i&&t[i]||t[o]);if("function"==typeof e)return e}var i="function"==typeof Symbol&&Symbol.iterator,o="@@iterator";t.exports=r},function(t,e,n){"use strict";function r(t){for(;t&&t.firstChild;)t=t.firstChild;return t}function i(t){for(;t;){if(t.nextSibling)return t.nextSibling;t=t.parentNode}}function o(t,e){for(var n=r(t),o=0,a=0;n;){if(3===n.nodeType){if(a=o+n.textContent.length,o<=e&&a>=e)return{node:n,offset:e-o};o=a}n=r(i(n))}}t.exports=o},function(t,e,n){"use strict";function r(t,e){var n={};return n[t.toLowerCase()]=e.toLowerCase(),n["Webkit"+t]="webkit"+e,n["Moz"+t]="moz"+e,n["ms"+t]="MS"+e,n["O"+t]="o"+e.toLowerCase(),n}function i(t){if(u[t])return u[t];if(!a[t])return t;var e=a[t];for(var n in e)if(e.hasOwnProperty(n)&&n in c)return u[t]=e[n];return""}var o=n(6),a={animationend:r("Animation","AnimationEnd"),animationiteration:r("Animation","AnimationIteration"),animationstart:r("Animation","AnimationStart"),transitionend:r("Transition","TransitionEnd")},u={},c={};o.canUseDOM&&(c=document.createElement("div").style,"AnimationEvent"in window||(delete a.animationend.animation,delete a.animationiteration.animation,delete a.animationstart.animation),"TransitionEvent"in window||delete a.transitionend.transition),t.exports=i},function(t,e,n){"use strict";function r(t){return'"'+i(t)+'"'}var i=n(56);t.exports=r},function(t,e,n){"use strict";var r=n(167);t.exports=r.renderSubtreeIntoContainer},function(t,e,n){"use strict";function r(t,e){var n=l.extractSingleTouch(e);return n?n[t.page]:t.page in e?e[t.page]:e[t.client]+f[t.envScroll]}function i(t,e){var n=r(b.x,e),i=r(b.y,e);return Math.pow(Math.pow(n-t.x,2)+Math.pow(i-t.y,2),.5)}function o(t){return{tapMoveThreshold:g,ignoreMouseThreshold:m,eventTypes:C,extractEvents:function(e,n,o,a){if(!h(e)&&!d(e))return null;if(v(e))_=k();else if(t(_,k()))return null;var u=null,l=i(y,o);return d(e)&&l<g&&(u=s.getPooled(C.touchTap,n,o,a)),h(e)?(y.x=r(b.x,o),y.y=r(b.y,o)):d(e)&&(y.x=0,y.y=0),c.accumulateTwoPhaseDispatches(u),u}}}var a=n(353),u=n(52),c=n(23),s=n(25),l=n(410),f=n(90),p=n(340),h=(a.topLevelTypes,u.isStartish),d=u.isEndish,v=function(t){return["topTouchCancel","topTouchEnd","topTouchStart","topTouchMove"].indexOf(t)>=0},g=10,m=750,y={x:null,y:null},_=null,b={x:{page:"pageX",client:"clientX",envScroll:"currentPageScrollLeft"},y:{page:"pageY",client:"clientY",envScroll:"currentPageScrollTop"}},x=["topTouchStart","topTouchCancel","topTouchEnd","topTouchMove"],w=["topMouseDown","topMouseMove","topMouseUp"].concat(x),C={touchTap:{phasedRegistrationNames:{bubbled:p({onTouchTap:null}),captured:p({onTouchTapCapture:null})},dependencies:w}},k=function(){return Date.now?Date.now:function(){return+new Date}}();t.exports=o},function(t,e){var n={extractSingleTouch:function(t){var e=t.touches,n=t.changedTouches,r=e&&e.length>0,i=n&&n.length>0;return!r&&i?n[0]:r?e[0]:t}};t.exports=n},function(t,e){t.exports=function(t,e){if(t&&e-t<750)return!0}},function(t,e,n){"use strict";function r(t){var e={"=":"=0",":":"=2"};return"$"+(""+t).replace(/[=:]/g,function(t){return e[t]})}function i(t){var e=/(=0|=2)/g,n={"=0":"=","=2":":"};return(""+("."===t[0]&&"$"===t[1]?t.substring(2):t.substring(1))).replace(e,function(t){return n[t]})}var o={escape:r,unescape:i};t.exports=o},function(t,e,n){"use strict";var r=n(40),i=(n(0),function(t){var e=this;if(e.instancePool.length){var n=e.instancePool.pop();return e.call(n,t),n}return new e(t)}),o=function(t,e){var n=this;if(n.instancePool.length){var r=n.instancePool.pop();return n.call(r,t,e),r}return new n(t,e)},a=function(t,e,n){var r=this;if(r.instancePool.length){var i=r.instancePool.pop();return r.call(i,t,e,n),i}return new r(t,e,n)},u=function(t,e,n,r){var i=this;if(i.instancePool.length){var o=i.instancePool.pop();return i.call(o,t,e,n,r),o}return new i(t,e,n,r)},c=function(t){var e=this;t instanceof e||r("25"),t.destructor(),e.instancePool.length<e.poolSize&&e.instancePool.push(t)},s=i,l=function(t,e){var n=t;return n.instancePool=[],n.getPooled=e||s,n.poolSize||(n.poolSize=10),n.release=c,n},f={addPoolingTo:l,oneArgumentPooler:i,twoArgumentPooler:o,threeArgumentPooler:a,fourArgumentPooler:u};t.exports=f},function(t,e,n){"use strict";function r(t){return(""+t).replace(b,"$&/")}function i(t,e){this.func=t,this.context=e,this.count=0}function o(t,e,n){var r=t.func,i=t.context;r.call(i,e,t.count++)}function a(t,e,n){if(null==t)return t;var r=i.getPooled(e,n);m(t,o,r),i.release(r)}function u(t,e,n,r){this.result=t,this.keyPrefix=e,this.func=n,this.context=r,this.count=0}function c(t,e,n){var i=t.result,o=t.keyPrefix,a=t.func,u=t.context,c=a.call(u,e,t.count++);Array.isArray(c)?s(c,i,n,g.thatReturnsArgument):null!=c&&(v.isValidElement(c)&&(c=v.cloneAndReplaceKey(c,o+(!c.key||e&&e.key===c.key?"":r(c.key)+"/")+n)),i.push(c))}function s(t,e,n,i,o){var a="";null!=n&&(a=r(n)+"/");var s=u.getPooled(e,a,i,o);m(t,c,s),u.release(s)}function l(t,e,n){if(null==t)return t;var r=[];return s(t,r,null,e,n),r}function f(t,e,n){return null}function p(t,e){return m(t,f,null)}function h(t){var e=[];return s(t,e,null,g.thatReturnsArgument),e}var d=n(413),v=n(27),g=n(11),m=n(423),y=d.twoArgumentPooler,_=d.fourArgumentPooler,b=/\/+/g;i.prototype.destructor=function(){this.func=null,this.context=null,this.count=0},d.addPoolingTo(i,y),u.prototype.destructor=function(){this.result=null,this.keyPrefix=null,this.func=null,this.context=null,this.count=0},d.addPoolingTo(u,_);var x={forEach:a,map:l,mapIntoWithKeyPrefixInternal:s,count:p,toArray:h};t.exports=x},function(t,e,n){"use strict";var r=n(27),i=r.createFactory,o={a:i("a"),abbr:i("abbr"),address:i("address"),area:i("area"),article:i("article"),aside:i("aside"),audio:i("audio"),b:i("b"),base:i("base"),bdi:i("bdi"),bdo:i("bdo"),big:i("big"),blockquote:i("blockquote"),body:i("body"),br:i("br"),button:i("button"),canvas:i("canvas"),caption:i("caption"),cite:i("cite"),code:i("code"),col:i("col"),colgroup:i("colgroup"),data:i("data"),datalist:i("datalist"),dd:i("dd"),del:i("del"),details:i("details"),dfn:i("dfn"),dialog:i("dialog"),div:i("div"),dl:i("dl"),dt:i("dt"),em:i("em"),embed:i("embed"),fieldset:i("fieldset"),figcaption:i("figcaption"),figure:i("figure"),footer:i("footer"),form:i("form"),h1:i("h1"),h2:i("h2"),h3:i("h3"),h4:i("h4"),h5:i("h5"),h6:i("h6"),head:i("head"),header:i("header"),hgroup:i("hgroup"),hr:i("hr"),html:i("html"),i:i("i"),iframe:i("iframe"),img:i("img"),input:i("input"),ins:i("ins"),kbd:i("kbd"),keygen:i("keygen"),label:i("label"),legend:i("legend"),li:i("li"),link:i("link"),main:i("main"),map:i("map"),mark:i("mark"),menu:i("menu"),menuitem:i("menuitem"),meta:i("meta"),meter:i("meter"),nav:i("nav"),noscript:i("noscript"),object:i("object"),ol:i("ol"),optgroup:i("optgroup"),option:i("option"),output:i("output"),p:i("p"),param:i("param"),picture:i("picture"),pre:i("pre"),progress:i("progress"),q:i("q"),rp:i("rp"),rt:i("rt"),ruby:i("ruby"),s:i("s"),samp:i("samp"),script:i("script"),section:i("section"),select:i("select"),small:i("small"),source:i("source"),span:i("span"),strong:i("strong"),style:i("style"),sub:i("sub"),summary:i("summary"),sup:i("sup"),table:i("table"),tbody:i("tbody"),td:i("td"),textarea:i("textarea"),tfoot:i("tfoot"),th:i("th"),thead:i("thead"),time:i("time"),title:i("title"),tr:i("tr"),track:i("track"),u:i("u"),ul:i("ul"),var:i("var"),video:i("video"),wbr:i("wbr"),circle:i("circle"),clipPath:i("clipPath"),defs:i("defs"),ellipse:i("ellipse"),g:i("g"),image:i("image"),line:i("line"),linearGradient:i("linearGradient"),mask:i("mask"),path:i("path"),pattern:i("pattern"),polygon:i("polygon"),polyline:i("polyline"),radialGradient:i("radialGradient"),rect:i("rect"),stop:i("stop"),svg:i("svg"),text:i("text"),tspan:i("tspan")};t.exports=o},function(t,e,n){"use strict";var r=n(27),i=r.isValidElement,o=n(157);t.exports=o(i)},function(t,e,n){"use strict";t.exports="15.6.2"},function(t,e,n){"use strict";var r=n(178),i=r.Component,o=n(27),a=o.isValidElement,u=n(181),c=n(191);t.exports=c(i,a,u)},function(t,e,n){"use strict";function r(t){var e=t&&(i&&t[i]||t[o]);if("function"==typeof e)return e}var i="function"==typeof Symbol&&Symbol.iterator,o="@@iterator";t.exports=r},function(t,e,n){"use strict";function r(){return i++}var i=1;t.exports=r},function(t,e,n){"use strict";var r=function(){};t.exports=r},function(t,e,n){"use strict";function r(t){return o.isValidElement(t)||i("143"),t}var i=n(40),o=n(27);n(0);t.exports=r},function(t,e,n){"use strict";function r(t,e){return t&&"object"==typeof t&&null!=t.key?s.escape(t.key):e.toString(36)}function i(t,e,n,o){var p=typeof t;if("undefined"!==p&&"boolean"!==p||(t=null),null===t||"string"===p||"number"===p||"object"===p&&t.$$typeof===u)return n(o,t,""===e?l+r(t,0):e),1;var h,d,v=0,g=""===e?l:e+f;if(Array.isArray(t))for(var m=0;m<t.length;m++)h=t[m],d=g+r(h,m),v+=i(h,d,n,o);else{var y=c(t);if(y){var _,b=y.call(t);if(y!==t.entries)for(var x=0;!(_=b.next()).done;)h=_.value,d=g+r(h,x++),v+=i(h,d,n,o);else for(;!(_=b.next()).done;){var w=_.value;w&&(h=w[1],d=g+s.escape(w[0])+f+r(h,0),v+=i(h,d,n,o))}}else if("object"===p){var C="",k=String(t);a("31","[object Object]"===k?"object with keys {"+Object.keys(t).join(", ")+"}":k,C)}}return v}function o(t,e,n){return null==t?0:i(t,"",e,n)}var a=n(40),u=(n(15),n(180)),c=n(419),s=(n(0),n(412)),l=(n(2),"."),f=":";t.exports=o}]);</script>
</div>
</div>
<div class="output_area">
<div class="prompt"></div>
<div class="output_html rendered_html output_subarea ">
<div id='iC3E7U7RB9ZJ9QF31J4IP'>
<div style='color: #900; text-align: center;'>
<b>Visualization omitted, Javascript library not loaded!</b><br>
Have you run `initjs()` in this notebook? If this notebook was from another
user you must also trust this notebook (File -> Trust notebook). If you are viewing
this notebook on github the Javascript has been stripped for security. If you are using
JupyterLab this error is because a JupyterLab extension has not yet been written.
</div></div>
<script>
if (window.SHAP) SHAP.ReactDom.render(
SHAP.React.createElement(SHAP.AdditiveForceVisualizer, {"outNames": ["output value"], "baseValue": 0.34228140115737915, "outValue": -4.199818134307861, "link": "identity", "featureNames": ["sepal length (cm)", "sepal width (cm)", "petal length (cm)", "petal width (cm)"], "features": {"2": {"effect": -3.5198628902435303, "value": 4.7}, "3": {"effect": -1.0222365856170654, "value": 1.2}}, "plot_cmap": "RdBu", "labelMargin": 20}),
document.getElementById('iC3E7U7RB9ZJ9QF31J4IP')
);
</script>
</div>
</div>
<div class="output_area">
<div class="prompt"></div>
<div class="output_html rendered_html output_subarea ">
<div id='i3TZS8WCCB29724YTNSJ2'>
<div style='color: #900; text-align: center;'>
<b>Visualization omitted, Javascript library not loaded!</b><br>
Have you run `initjs()` in this notebook? If this notebook was from another
user you must also trust this notebook (File -> Trust notebook). If you are viewing
this notebook on github the Javascript has been stripped for security. If you are using
JupyterLab this error is because a JupyterLab extension has not yet been written.
</div></div>
<script>
if (window.SHAP) SHAP.ReactDom.render(
SHAP.React.createElement(SHAP.AdditiveForceVisualizer, {"outNames": ["output value"], "baseValue": 0.8767059445381165, "outValue": 5.675140857696533, "link": "identity", "featureNames": ["sepal length (cm)", "sepal width (cm)", "petal length (cm)", "petal width (cm)"], "features": {"0": {"effect": 0.280146062374115, "value": 6.1}, "1": {"effect": -0.11766554415225983, "value": 2.8}, "2": {"effect": 2.635099411010742, "value": 4.7}, "3": {"effect": 2.000854730606079, "value": 1.2}}, "plot_cmap": "RdBu", "labelMargin": 20}),
document.getElementById('i3TZS8WCCB29724YTNSJ2')
);
</script>
</div>
</div>
<div class="output_area">
<div class="prompt"></div>
<div class="output_html rendered_html output_subarea ">
<div id='iMFNKFWKETLO1P21DB627'>
<div style='color: #900; text-align: center;'>
<b>Visualization omitted, Javascript library not loaded!</b><br>
Have you run `initjs()` in this notebook? If this notebook was from another
user you must also trust this notebook (File -> Trust notebook). If you are viewing
this notebook on github the Javascript has been stripped for security. If you are using
JupyterLab this error is because a JupyterLab extension has not yet been written.
</div></div>
<script>
if (window.SHAP) SHAP.ReactDom.render(
SHAP.React.createElement(SHAP.AdditiveForceVisualizer, {"outNames": ["output value"], "baseValue": 1.033858060836792, "outValue": -1.5019218921661377, "link": "identity", "featureNames": ["sepal length (cm)", "sepal width (cm)", "petal length (cm)", "petal width (cm)"], "features": {"0": {"effect": 0.5172330737113953, "value": 6.1}, "1": {"effect": 0.4969945549964905, "value": 2.8}, "2": {"effect": -1.534397840499878, "value": 4.7}, "3": {"effect": -2.0156097412109375, "value": 1.2}}, "plot_cmap": "RdBu", "labelMargin": 20}),
document.getElementById('iMFNKFWKETLO1P21DB627')
);
</script>
</div>
</div>
<div class="output_area">
<div class="prompt"></div>
<div class="output_html rendered_html output_subarea ">
<div>
<style scoped>
.dataframe tbody tr th:only-of-type {
vertical-align: middle;
}
.dataframe tbody tr th {
vertical-align: top;
}
.dataframe thead th {
text-align: right;
}
</style>
<table border="1" class="dataframe">
<thead>
<tr style="text-align: right;">
<th></th>
<th>0</th>
<th>1</th>
<th>2</th>
</tr>
</thead>
<tbody>
<tr>
<th>sepal length (cm)</th>
<td>0.000000</td>
<td>0.280146</td>
<td>0.517233</td>
</tr>
<tr>
<th>sepal width (cm)</th>
<td>0.000000</td>
<td>-0.117666</td>
<td>0.496995</td>
</tr>
<tr>
<th>petal length (cm)</th>
<td>-3.519863</td>
<td>2.635099</td>
<td>-1.534398</td>
</tr>
<tr>
<th>petal width (cm)</th>
<td>-1.022237</td>
<td>2.000855</td>
<td>-2.015610</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div><div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<p>This first obvious difference is SHAP will output a seperate matrix for each class prediction for the given input row. This means we have 3 plots to look at instead of just one. This is useful because a regulator may be just as interested in why you made a decision as they are in why you didn't make another. Thankfully its easy to loop through each class and generate the appropriate graphs.</p>
<p>As of May 2019 SHAP has some limitations in the multi-class usecase. The first is the explainer methods (Tree and Kernel) cannot output probabilities due to a limitation dealing with non-linear transforms, they can only output the raw margin values of the objective function used to fit the model. To make matters worse, if you try to run the commented line in the above code the error generated is confusing and does not specify the actual problem:</p>
<blockquote><p>Exception: When model_output is not "margin" then we need to know the model's objective. Unfortuneately raw XGBoost Booster objects don't expose this information. Consider using the XGBRegressor/XGBClassifier objects, or annotate the Booster object with the objective you are using, for example: xgb_model.set_attr(objective="binary:logistic").</p>
</blockquote>
<p>Instead of the usual <code>binary:logistic</code> (using which SHAP can output probabilities) our XGBoost objective function for multi-class is typically either <code>multi:softmax</code> or <code>multi:softprob</code> so the output is Log Odds. More on all of the possible XGBoost objective functions <a href="https://xgboost.readthedocs.io/en/latest/parameter.html#learning-task-parameters">here</a>. These are both generalized logistic objective functions and the output of <code>model.predict_proba()</code> will yield class probabilities that sum to 1 across n classes, but SHAP can only display the Log Odds.</p>
<p>This makes interpretation of the SHAP plots a bit more difficult but not impossible - here we determine the largest output value to be the predicted class, and a value of 0 implies a 50% probability.</p>
<p>The second catch comes if you want to convert the Log Odds values to a probability. Normally, to go from Log Odds to Probability we use the conversion rule:</p>
\begin{equation*}
P(x) = \frac{e^{ln(odds)}}{1 + e^{ln(odds)}}\
\end{equation*}<p>The above works fine for Binary Classification models where we only have 2 classes. But for a multi-class classification model we must instead use the following formulation:</p>
\begin{equation*}
P(x) = \frac{e^{ln(odds)}}{\sum_{}e^{ln(odds)}}\
\end{equation*}<p>Let's do the conversion and test to ensure it matches the output of <code>model.predict_proba()</code>.</p>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [423]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#define a function to convert logodds to probability for multi-class </span>
<span class="k">def</span> <span class="nf">logodds_to_proba</span><span class="p">(</span><span class="n">logodds</span><span class="p">):</span>
<span class="k">return</span> <span class="n">np</span><span class="o">.</span><span class="n">exp</span><span class="p">(</span><span class="n">logodds</span><span class="p">)</span><span class="o">/</span><span class="n">np</span><span class="o">.</span><span class="n">exp</span><span class="p">(</span><span class="n">logodds</span><span class="p">)</span><span class="o">.</span><span class="n">sum</span><span class="p">()</span>
<span class="c1">#generate predictions for our row of data and do conversion</span>
<span class="n">logodds</span> <span class="o">=</span> <span class="n">mcl</span><span class="o">.</span><span class="n">predict</span><span class="p">(</span><span class="n">X_rand</span><span class="p">,</span> <span class="n">output_margin</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
<span class="n">probas</span> <span class="o">=</span> <span class="n">mcl</span><span class="o">.</span><span class="n">predict_proba</span><span class="p">(</span><span class="n">X_rand</span><span class="p">)</span>
<span class="k">for</span> <span class="n">which_class</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="mi">3</span><span class="p">):</span>
<span class="n">base_val</span> <span class="o">=</span> <span class="n">explainer</span><span class="o">.</span><span class="n">expected_value</span><span class="p">[</span><span class="n">which_class</span><span class="p">]</span>
<span class="n">pred_val</span> <span class="o">=</span> <span class="n">explainer</span><span class="o">.</span><span class="n">expected_value</span><span class="p">[</span><span class="n">which_class</span><span class="p">]</span> <span class="o">+</span> <span class="n">shap_values</span><span class="p">[</span><span class="n">which_class</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">sum</span><span class="p">()</span> <span class="c1">#delta between base value and pred value</span>
<span class="n">converted_prob_val</span> <span class="o">=</span> <span class="n">logodds_to_proba</span><span class="p">(</span><span class="n">logodds</span><span class="p">)[</span><span class="mi">0</span><span class="p">][</span><span class="n">which_class</span><span class="p">]</span>
<span class="n">proba</span> <span class="o">=</span> <span class="n">probas</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="n">which_class</span><span class="p">]</span>
<span class="nb">print</span><span class="p">(</span><span class="s1">'Class: '</span><span class="p">,</span><span class="n">which_class</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="s1">'Base value: '</span><span class="p">,</span> <span class="n">base_val</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="s1">'Prediction value: '</span><span class="p">,</span> <span class="n">pred_val</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="s1">'Converted Proba value:'</span><span class="p">,</span> <span class="n">converted_prob_val</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="s1">'Proba value:'</span><span class="p">,</span> <span class="n">proba</span><span class="p">,</span> <span class="s1">'</span><span class="se">\n</span><span class="s1">'</span><span class="p">)</span>
</pre></div>
</div>
</div>
</div>
<div class="output_wrapper">
<div class="output">
<div class="output_area">
<div class="prompt"></div>
<div class="output_subarea output_stream output_stdout output_text">
<pre>Class: 0
Base value: 0.3422814
Prediction value: -4.199818
Converted Proba value: 5.1404942e-05
Proba value: 5.1404906e-05
Class: 1
Base value: 0.87670594
Prediction value: 5.675141
Converted Proba value: 0.9991854
Proba value: 0.99918526
Class: 2
Base value: 1.0338581
Prediction value: -1.5019219
Converted Proba value: 0.0007632843
Proba value: 0.00076328433
</pre>
</div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div><div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<p>As you can see, this conversion works as expected, and we are able to back out of the values used by the SHAP graphs to match our predicted probabilities from the model. This SHAP limitation will likely be fixed in the coming months as the issue is currently open on the repository. For those who don't have a need to output the probabilities and are comfortable working directly with Log Odds values, then this is no limitation at all. Because conversion is possible, SHAP is just as useful when explaining a multi-class model to anyone who needs to understand <em>why</em> a particular prediction was made.</p>
<h2 id="Conclusion">Conclusion<a class="anchor-link" href="#Conclusion">¶</a></h2><p>I hope this post was helpful in demonstrating how to train an XGBoost classifier, and most importantly, how to use SHAP to effectively understand and explain why a specific prediction was made. As companies demonstrate these tools to regulators and as they begin to use these tools themselves, the doors should open to using Machine Learning in places never before thought possible. Ultimately, the benefits of these advancements when used wisely and applied fairly should help both consumers and the enterprises serving them.</p>
</div>
</div>
</div>
<script type="text/javascript">if (!document.getElementById('mathjaxscript_pelican_#%@#$@#')) {
var mathjaxscript = document.createElement('script');
mathjaxscript.id = 'mathjaxscript_pelican_#%@#$@#';
mathjaxscript.type = 'text/javascript';
mathjaxscript.src = '//cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML';
mathjaxscript[(window.opera ? "innerHTML" : "text")] =
"MathJax.Hub.Config({" +
" config: ['MMLorHTML.js']," +
" TeX: { extensions: ['AMSmath.js','AMSsymbols.js','noErrors.js','noUndefined.js'], equationNumbers: { autoNumber: 'AMS' } }," +
" jax: ['input/TeX','input/MathML','output/HTML-CSS']," +
" extensions: ['tex2jax.js','mml2jax.js','MathMenu.js','MathZoom.js']," +
" displayAlign: 'center'," +
" displayIndent: '0em'," +
" showMathMenu: true," +
" tex2jax: { " +
" inlineMath: [ ['$','$'] ], " +
" displayMath: [ ['$$','$$'] ]," +
" processEscapes: true," +
" preview: 'TeX'," +
" }, " +
" 'HTML-CSS': { " +
" linebreaks: { automatic: true, width: '95% container' }, " +
" styles: { '.MathJax_Display, .MathJax .mo, .MathJax .mi, .MathJax .mn': {color: 'black ! important'} }" +
" } " +
"}); ";
(document.body || document.getElementsByTagName('head')[0]).appendChild(mathjaxscript);
}
</script>
Portfolio Rebalancing Using Python2018-12-17T16:37:00-05:002018-12-17T16:37:00-05:00Evgeny Pogorelovtag:evgenypogorelov.com,2018-12-17:/portfolio-rebalancing-python.html<p>A simple portfolio rebalancer using Pandas and the Tiingo API.</p><style type="text/css">/*!
*
* IPython notebook
*
*/
/* CSS font colors for translated ANSI escape sequences */
/* The color values are a mix of
http://www.xcolors.net/dl/baskerville-ivorylight and
http://www.xcolors.net/dl/euphrasia */
.ansi-black-fg {
color: #3E424D;
}
.ansi-black-bg {
background-color: #3E424D;
}
.ansi-black-intense-fg {
color: #282C36;
}
.ansi-black-intense-bg {
background-color: #282C36;
}
.ansi-red-fg {
color: #E75C58;
}
.ansi-red-bg {
background-color: #E75C58;
}
.ansi-red-intense-fg {
color: #B22B31;
}
.ansi-red-intense-bg {
background-color: #B22B31;
}
.ansi-green-fg {
color: #00A250;
}
.ansi-green-bg {
background-color: #00A250;
}
.ansi-green-intense-fg {
color: #007427;
}
.ansi-green-intense-bg {
background-color: #007427;
}
.ansi-yellow-fg {
color: #DDB62B;
}
.ansi-yellow-bg {
background-color: #DDB62B;
}
.ansi-yellow-intense-fg {
color: #B27D12;
}
.ansi-yellow-intense-bg {
background-color: #B27D12;
}
.ansi-blue-fg {
color: #208FFB;
}
.ansi-blue-bg {
background-color: #208FFB;
}
.ansi-blue-intense-fg {
color: #0065CA;
}
.ansi-blue-intense-bg {
background-color: #0065CA;
}
.ansi-magenta-fg {
color: #D160C4;
}
.ansi-magenta-bg {
background-color: #D160C4;
}
.ansi-magenta-intense-fg {
color: #A03196;
}
.ansi-magenta-intense-bg {
background-color: #A03196;
}
.ansi-cyan-fg {
color: #60C6C8;
}
.ansi-cyan-bg {
background-color: #60C6C8;
}
.ansi-cyan-intense-fg {
color: #258F8F;
}
.ansi-cyan-intense-bg {
background-color: #258F8F;
}
.ansi-white-fg {
color: #C5C1B4;
}
.ansi-white-bg {
background-color: #C5C1B4;
}
.ansi-white-intense-fg {
color: #A1A6B2;
}
.ansi-white-intense-bg {
background-color: #A1A6B2;
}
.ansi-default-inverse-fg {
color: #FFFFFF;
}
.ansi-default-inverse-bg {
background-color: #000000;
}
.ansi-bold {
font-weight: bold;
}
.ansi-underline {
text-decoration: underline;
}
/* The following styles are deprecated an will be removed in a future version */
.ansibold {
font-weight: bold;
}
.ansi-inverse {
outline: 0.5px dotted;
}
/* use dark versions for foreground, to improve visibility */
.ansiblack {
color: black;
}
.ansired {
color: darkred;
}
.ansigreen {
color: darkgreen;
}
.ansiyellow {
color: #c4a000;
}
.ansiblue {
color: darkblue;
}
.ansipurple {
color: darkviolet;
}
.ansicyan {
color: steelblue;
}
.ansigray {
color: gray;
}
/* and light for background, for the same reason */
.ansibgblack {
background-color: black;
}
.ansibgred {
background-color: red;
}
.ansibggreen {
background-color: green;
}
.ansibgyellow {
background-color: yellow;
}
.ansibgblue {
background-color: blue;
}
.ansibgpurple {
background-color: magenta;
}
.ansibgcyan {
background-color: cyan;
}
.ansibggray {
background-color: gray;
}
div.cell {
/* Old browsers */
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-box-align: stretch;
display: -moz-box;
-moz-box-orient: vertical;
-moz-box-align: stretch;
display: box;
box-orient: vertical;
box-align: stretch;
/* Modern browsers */
display: flex;
flex-direction: column;
align-items: stretch;
border-radius: 2px;
box-sizing: border-box;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
border-width: 1px;
border-style: solid;
border-color: transparent;
width: 100%;
padding: 5px;
/* This acts as a spacer between cells, that is outside the border */
margin: 0px;
outline: none;
position: relative;
overflow: visible;
}
div.cell:before {
position: absolute;
display: block;
top: -1px;
left: -1px;
width: 5px;
height: calc(100% + 2px);
content: '';
background: transparent;
}
div.cell.jupyter-soft-selected {
border-left-color: #E3F2FD;
border-left-width: 1px;
padding-left: 5px;
border-right-color: #E3F2FD;
border-right-width: 1px;
background: #E3F2FD;
}
@media print {
div.cell.jupyter-soft-selected {
border-color: transparent;
}
}
div.cell.selected,
div.cell.selected.jupyter-soft-selected {
border-color: #ababab;
}
div.cell.selected:before,
div.cell.selected.jupyter-soft-selected:before {
position: absolute;
display: block;
top: -1px;
left: -1px;
width: 5px;
height: calc(100% + 2px);
content: '';
background: #42A5F5;
}
@media print {
div.cell.selected,
div.cell.selected.jupyter-soft-selected {
border-color: transparent;
}
}
.edit_mode div.cell.selected {
border-color: #66BB6A;
}
.edit_mode div.cell.selected:before {
position: absolute;
display: block;
top: -1px;
left: -1px;
width: 5px;
height: calc(100% + 2px);
content: '';
background: #66BB6A;
}
@media print {
.edit_mode div.cell.selected {
border-color: transparent;
}
}
.prompt {
/* This needs to be wide enough for 3 digit prompt numbers: In[100]: */
min-width: 14ex;
/* This padding is tuned to match the padding on the CodeMirror editor. */
padding: 0.4em;
margin: 0px;
font-family: monospace;
text-align: right;
/* This has to match that of the the CodeMirror class line-height below */
line-height: 1.21429em;
/* Don't highlight prompt number selection */
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
/* Use default cursor */
cursor: default;
}
@media (max-width: 540px) {
.prompt {
text-align: left;
}
}
div.inner_cell {
min-width: 0;
/* Old browsers */
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-box-align: stretch;
display: -moz-box;
-moz-box-orient: vertical;
-moz-box-align: stretch;
display: box;
box-orient: vertical;
box-align: stretch;
/* Modern browsers */
display: flex;
flex-direction: column;
align-items: stretch;
/* Old browsers */
-webkit-box-flex: 1;
-moz-box-flex: 1;
box-flex: 1;
/* Modern browsers */
flex: 1;
}
/* input_area and input_prompt must match in top border and margin for alignment */
div.input_area {
border: 1px solid #cfcfcf;
border-radius: 2px;
background: #f7f7f7;
line-height: 1.21429em;
}
/* This is needed so that empty prompt areas can collapse to zero height when there
is no content in the output_subarea and the prompt. The main purpose of this is
to make sure that empty JavaScript output_subareas have no height. */
div.prompt:empty {
padding-top: 0;
padding-bottom: 0;
}
div.unrecognized_cell {
padding: 5px 5px 5px 0px;
/* Old browsers */
display: -webkit-box;
-webkit-box-orient: horizontal;
-webkit-box-align: stretch;
display: -moz-box;
-moz-box-orient: horizontal;
-moz-box-align: stretch;
display: box;
box-orient: horizontal;
box-align: stretch;
/* Modern browsers */
display: flex;
flex-direction: row;
align-items: stretch;
}
div.unrecognized_cell .inner_cell {
border-radius: 2px;
padding: 5px;
font-weight: bold;
color: red;
border: 1px solid #cfcfcf;
background: #eaeaea;
}
div.unrecognized_cell .inner_cell a {
color: inherit;
text-decoration: none;
}
div.unrecognized_cell .inner_cell a:hover {
color: inherit;
text-decoration: none;
}
@media (max-width: 540px) {
div.unrecognized_cell > div.prompt {
display: none;
}
}
div.code_cell {
/* avoid page breaking on code cells when printing */
}
@media print {
div.code_cell {
page-break-inside: avoid;
}
}
/* any special styling for code cells that are currently running goes here */
div.input {
page-break-inside: avoid;
/* Old browsers */
display: -webkit-box;
-webkit-box-orient: horizontal;
-webkit-box-align: stretch;
display: -moz-box;
-moz-box-orient: horizontal;
-moz-box-align: stretch;
display: box;
box-orient: horizontal;
box-align: stretch;
/* Modern browsers */
display: flex;
flex-direction: row;
align-items: stretch;
}
@media (max-width: 540px) {
div.input {
/* Old browsers */
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-box-align: stretch;
display: -moz-box;
-moz-box-orient: vertical;
-moz-box-align: stretch;
display: box;
box-orient: vertical;
box-align: stretch;
/* Modern browsers */
display: flex;
flex-direction: column;
align-items: stretch;
}
}
/* input_area and input_prompt must match in top border and margin for alignment */
div.input_prompt {
color: #303F9F;
border-top: 1px solid transparent;
}
div.input_area > div.highlight {
margin: 0.4em;
border: none;
padding: 0px;
background-color: transparent;
}
div.input_area > div.highlight > pre {
margin: 0px;
border: none;
padding: 0px;
background-color: transparent;
}
/* The following gets added to the <head> if it is detected that the user has a
* monospace font with inconsistent normal/bold/italic height. See
* notebookmain.js. Such fonts will have keywords vertically offset with
* respect to the rest of the text. The user should select a better font.
* See: https://github.com/ipython/ipython/issues/1503
*
* .CodeMirror span {
* vertical-align: bottom;
* }
*/
.CodeMirror {
line-height: 1.21429em;
/* Changed from 1em to our global default */
font-size: 14px;
height: auto;
/* Changed to auto to autogrow */
background: none;
/* Changed from white to allow our bg to show through */
}
.CodeMirror-scroll {
/* The CodeMirror docs are a bit fuzzy on if overflow-y should be hidden or visible.*/
/* We have found that if it is visible, vertical scrollbars appear with font size changes.*/
overflow-y: hidden;
overflow-x: auto;
}
.CodeMirror-lines {
/* In CM2, this used to be 0.4em, but in CM3 it went to 4px. We need the em value because */
/* we have set a different line-height and want this to scale with that. */
/* Note that this should set vertical padding only, since CodeMirror assumes
that horizontal padding will be set on CodeMirror pre */
padding: 0.4em 0;
}
.CodeMirror-linenumber {
padding: 0 8px 0 4px;
}
.CodeMirror-gutters {
border-bottom-left-radius: 2px;
border-top-left-radius: 2px;
}
.CodeMirror pre {
/* In CM3 this went to 4px from 0 in CM2. This sets horizontal padding only,
use .CodeMirror-lines for vertical */
padding: 0 0.4em;
border: 0;
border-radius: 0;
}
.CodeMirror-cursor {
border-left: 1.4px solid black;
}
@media screen and (min-width: 2138px) and (max-width: 4319px) {
.CodeMirror-cursor {
border-left: 2px solid black;
}
}
@media screen and (min-width: 4320px) {
.CodeMirror-cursor {
border-left: 4px solid black;
}
}
/*
Original style from softwaremaniacs.org (c) Ivan Sagalaev <Maniac@SoftwareManiacs.Org>
Adapted from GitHub theme
*/
.highlight-base {
color: #000;
}
.highlight-variable {
color: #000;
}
.highlight-variable-2 {
color: #1a1a1a;
}
.highlight-variable-3 {
color: #333333;
}
.highlight-string {
color: #BA2121;
}
.highlight-comment {
color: #408080;
font-style: italic;
}
.highlight-number {
color: #080;
}
.highlight-atom {
color: #88F;
}
.highlight-keyword {
color: #008000;
font-weight: bold;
}
.highlight-builtin {
color: #008000;
}
.highlight-error {
color: #f00;
}
.highlight-operator {
color: #AA22FF;
font-weight: bold;
}
.highlight-meta {
color: #AA22FF;
}
/* previously not defined, copying from default codemirror */
.highlight-def {
color: #00f;
}
.highlight-string-2 {
color: #f50;
}
.highlight-qualifier {
color: #555;
}
.highlight-bracket {
color: #997;
}
.highlight-tag {
color: #170;
}
.highlight-attribute {
color: #00c;
}
.highlight-header {
color: blue;
}
.highlight-quote {
color: #090;
}
.highlight-link {
color: #00c;
}
/* apply the same style to codemirror */
.cm-s-ipython span.cm-keyword {
color: #008000;
font-weight: bold;
}
.cm-s-ipython span.cm-atom {
color: #88F;
}
.cm-s-ipython span.cm-number {
color: #080;
}
.cm-s-ipython span.cm-def {
color: #00f;
}
.cm-s-ipython span.cm-variable {
color: #000;
}
.cm-s-ipython span.cm-operator {
color: #AA22FF;
font-weight: bold;
}
.cm-s-ipython span.cm-variable-2 {
color: #1a1a1a;
}
.cm-s-ipython span.cm-variable-3 {
color: #333333;
}
.cm-s-ipython span.cm-comment {
color: #408080;
font-style: italic;
}
.cm-s-ipython span.cm-string {
color: #BA2121;
}
.cm-s-ipython span.cm-string-2 {
color: #f50;
}
.cm-s-ipython span.cm-meta {
color: #AA22FF;
}
.cm-s-ipython span.cm-qualifier {
color: #555;
}
.cm-s-ipython span.cm-builtin {
color: #008000;
}
.cm-s-ipython span.cm-bracket {
color: #997;
}
.cm-s-ipython span.cm-tag {
color: #170;
}
.cm-s-ipython span.cm-attribute {
color: #00c;
}
.cm-s-ipython span.cm-header {
color: blue;
}
.cm-s-ipython span.cm-quote {
color: #090;
}
.cm-s-ipython span.cm-link {
color: #00c;
}
.cm-s-ipython span.cm-error {
color: #f00;
}
.cm-s-ipython span.cm-tab {
background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAMCAYAAAAkuj5RAAAAAXNSR0IArs4c6QAAAGFJREFUSMft1LsRQFAQheHPowAKoACx3IgEKtaEHujDjORSgWTH/ZOdnZOcM/sgk/kFFWY0qV8foQwS4MKBCS3qR6ixBJvElOobYAtivseIE120FaowJPN75GMu8j/LfMwNjh4HUpwg4LUAAAAASUVORK5CYII=);
background-position: right;
background-repeat: no-repeat;
}
div.output_wrapper {
/* this position must be relative to enable descendents to be absolute within it */
position: relative;
/* Old browsers */
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-box-align: stretch;
display: -moz-box;
-moz-box-orient: vertical;
-moz-box-align: stretch;
display: box;
box-orient: vertical;
box-align: stretch;
/* Modern browsers */
display: flex;
flex-direction: column;
align-items: stretch;
z-index: 1;
}
/* class for the output area when it should be height-limited */
div.output_scroll {
/* ideally, this would be max-height, but FF barfs all over that */
height: 24em;
/* FF needs this *and the wrapper* to specify full width, or it will shrinkwrap */
width: 100%;
overflow: auto;
border-radius: 2px;
-webkit-box-shadow: inset 0 2px 8px rgba(0, 0, 0, 0.8);
box-shadow: inset 0 2px 8px rgba(0, 0, 0, 0.8);
display: block;
}
/* output div while it is collapsed */
div.output_collapsed {
margin: 0px;
padding: 0px;
/* Old browsers */
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-box-align: stretch;
display: -moz-box;
-moz-box-orient: vertical;
-moz-box-align: stretch;
display: box;
box-orient: vertical;
box-align: stretch;
/* Modern browsers */
display: flex;
flex-direction: column;
align-items: stretch;
}
div.out_prompt_overlay {
height: 100%;
padding: 0px 0.4em;
position: absolute;
border-radius: 2px;
}
div.out_prompt_overlay:hover {
/* use inner shadow to get border that is computed the same on WebKit/FF */
-webkit-box-shadow: inset 0 0 1px #000;
box-shadow: inset 0 0 1px #000;
background: rgba(240, 240, 240, 0.5);
}
div.output_prompt {
color: #D84315;
}
/* This class is the outer container of all output sections. */
div.output_area {
padding: 0px;
page-break-inside: avoid;
/* Old browsers */
display: -webkit-box;
-webkit-box-orient: horizontal;
-webkit-box-align: stretch;
display: -moz-box;
-moz-box-orient: horizontal;
-moz-box-align: stretch;
display: box;
box-orient: horizontal;
box-align: stretch;
/* Modern browsers */
display: flex;
flex-direction: row;
align-items: stretch;
}
div.output_area .MathJax_Display {
text-align: left !important;
}
div.output_area
div.output_area
div.output_area img,
div.output_area svg {
max-width: 100%;
height: auto;
}
div.output_area img.unconfined,
div.output_area svg.unconfined {
max-width: none;
}
div.output_area .mglyph > img {
max-width: none;
}
/* This is needed to protect the pre formating from global settings such
as that of bootstrap */
.output {
/* Old browsers */
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-box-align: stretch;
display: -moz-box;
-moz-box-orient: vertical;
-moz-box-align: stretch;
display: box;
box-orient: vertical;
box-align: stretch;
/* Modern browsers */
display: flex;
flex-direction: column;
align-items: stretch;
}
@media (max-width: 540px) {
div.output_area {
/* Old browsers */
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-box-align: stretch;
display: -moz-box;
-moz-box-orient: vertical;
-moz-box-align: stretch;
display: box;
box-orient: vertical;
box-align: stretch;
/* Modern browsers */
display: flex;
flex-direction: column;
align-items: stretch;
}
}
div.output_area pre {
margin: 0;
padding: 1px 0 1px 0;
border: 0;
vertical-align: baseline;
color: black;
background-color: transparent;
border-radius: 0;
}
/* This class is for the output subarea inside the output_area and after
the prompt div. */
div.output_subarea {
overflow-x: auto;
padding: 0.4em;
/* Old browsers */
-webkit-box-flex: 1;
-moz-box-flex: 1;
box-flex: 1;
/* Modern browsers */
flex: 1;
max-width: calc(100% - 14ex);
}
div.output_scroll div.output_subarea {
overflow-x: visible;
}
/* The rest of the output_* classes are for special styling of the different
output types */
/* all text output has this class: */
div.output_text {
text-align: left;
color: #000;
/* This has to match that of the the CodeMirror class line-height below */
line-height: 1.21429em;
}
/* stdout/stderr are 'text' as well as 'stream', but execute_result/error are *not* streams */
div.output_stderr {
background: #fdd;
/* very light red background for stderr */
}
div.output_latex {
text-align: left;
}
/* Empty output_javascript divs should have no height */
div.output_javascript:empty {
padding: 0;
}
.js-error {
color: darkred;
}
/* raw_input styles */
div.raw_input_container {
line-height: 1.21429em;
padding-top: 5px;
}
pre.raw_input_prompt {
/* nothing needed here. */
}
input.raw_input {
font-family: monospace;
font-size: inherit;
color: inherit;
width: auto;
/* make sure input baseline aligns with prompt */
vertical-align: baseline;
/* padding + margin = 0.5em between prompt and cursor */
padding: 0em 0.25em;
margin: 0em 0.25em;
}
input.raw_input:focus {
box-shadow: none;
}
p.p-space {
margin-bottom: 10px;
}
div.output_unrecognized {
padding: 5px;
font-weight: bold;
color: red;
}
div.output_unrecognized a {
color: inherit;
text-decoration: none;
}
div.output_unrecognized a:hover {
color: inherit;
text-decoration: none;
}
.rendered_html {
color: #000;
/* any extras will just be numbers: */
}
.rendered_html :link {
text-decoration: underline;
}
.rendered_html :visited {
text-decoration: underline;
}
.rendered_html h1:first-child {
margin-top: 0.538em;
}
.rendered_html h2:first-child {
margin-top: 0.636em;
}
.rendered_html h3:first-child {
margin-top: 0.777em;
}
.rendered_html h4:first-child {
margin-top: 1em;
}
.rendered_html h5:first-child {
margin-top: 1em;
}
.rendered_html h6:first-child {
margin-top: 1em;
}
.rendered_html ul:not(.list-inline),
.rendered_html ol:not(.list-inline) {
padding-left: 2em;
}
.rendered_html * + ul {
margin-top: 1em;
}
.rendered_html * + ol {
margin-top: 1em;
}
.rendered_html pre,
.rendered_html tr,
.rendered_html th,
.rendered_html tbody tr:nth-child(odd) {
background: #f5f5f5;
}
.rendered_html tbody tr:hover {
background: rgba(66, 165, 245, 0.2);
}
.rendered_html * + table {
margin-top: 1em;
}
.rendered_html * + p {
margin-top: 1em;
}
.rendered_html * + img {
margin-top: 1em;
}
.rendered_html img,
.rendered_html img.unconfined,
.rendered_html * + .alert {
margin-top: 1em;
}
[dir="rtl"]
div.text_cell {
/* Old browsers */
display: -webkit-box;
-webkit-box-orient: horizontal;
-webkit-box-align: stretch;
display: -moz-box;
-moz-box-orient: horizontal;
-moz-box-align: stretch;
display: box;
box-orient: horizontal;
box-align: stretch;
/* Modern browsers */
display: flex;
flex-direction: row;
align-items: stretch;
}
@media (max-width: 540px) {
div.text_cell > div.prompt {
display: none;
}
}
div.text_cell_render {
/*font-family: "Helvetica Neue", Arial, Helvetica, Geneva, sans-serif;*/
outline: none;
resize: none;
width: inherit;
border-style: none;
padding: 0.5em 0.5em 0.5em 0.4em;
color: #000;
box-sizing: border-box;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
}
a.anchor-link:link {
text-decoration: none;
padding: 0px 20px;
visibility: hidden;
}
h1:hover .anchor-link,
h2:hover .anchor-link,
h3:hover .anchor-link,
h4:hover .anchor-link,
h5:hover .anchor-link,
h6:hover .anchor-link {
visibility: visible;
}
.text_cell.rendered .input_area {
display: none;
}
.text_cell.rendered
.text_cell.rendered .rendered_html tr,
.text_cell.rendered .rendered_html th,
.text_cell.rendered
.text_cell.unrendered .text_cell_render {
display: none;
}
.text_cell .dropzone .input_area {
border: 2px dashed #bababa;
margin: -1px;
}
.cm-header-1,
.cm-header-2,
.cm-header-3,
.cm-header-4,
.cm-header-5,
.cm-header-6 {
font-weight: bold;
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
}
.cm-header-1 {
font-size: 185.7%;
}
.cm-header-2 {
font-size: 157.1%;
}
.cm-header-3 {
font-size: 128.6%;
}
.cm-header-4 {
font-size: 110%;
}
.cm-header-5 {
font-size: 100%;
font-style: italic;
}
.cm-header-6 {
font-size: 100%;
font-style: italic;
}
</style>
<style type="text/css">pre { line-height: 125%; }
td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
.highlight pre .hll { background-color: #ffffcc }
.highlight pre { background: #f8f8f8; }
.highlight pre .c { color: #3D7B7B; font-style: italic } /* Comment */
.highlight pre .err { border: 1px solid #FF0000 } /* Error */
.highlight pre .k { color: #008000; font-weight: bold } /* Keyword */
.highlight pre .o { color: #666666 } /* Operator */
.highlight pre .ch { color: #3D7B7B; font-style: italic } /* Comment.Hashbang */
.highlight pre .cm { color: #3D7B7B; font-style: italic } /* Comment.Multiline */
.highlight pre .cp { color: #9C6500 } /* Comment.Preproc */
.highlight pre .cpf { color: #3D7B7B; font-style: italic } /* Comment.PreprocFile */
.highlight pre .c1 { color: #3D7B7B; font-style: italic } /* Comment.Single */
.highlight pre .cs { color: #3D7B7B; font-style: italic } /* Comment.Special */
.highlight pre .gd { color: #A00000 } /* Generic.Deleted */
.highlight pre .ge { font-style: italic } /* Generic.Emph */
.highlight pre .gr { color: #E40000 } /* Generic.Error */
.highlight pre .gh { color: #000080; font-weight: bold } /* Generic.Heading */
.highlight pre .gi { color: #008400 } /* Generic.Inserted */
.highlight pre .go { color: #717171 } /* Generic.Output */
.highlight pre .gp { color: #000080; font-weight: bold } /* Generic.Prompt */
.highlight pre .gs { font-weight: bold } /* Generic.Strong */
.highlight pre .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
.highlight pre .gt { color: #0044DD } /* Generic.Traceback */
.highlight pre .kc { color: #008000; font-weight: bold } /* Keyword.Constant */
.highlight pre .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */
.highlight pre .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */
.highlight pre .kp { color: #008000 } /* Keyword.Pseudo */
.highlight pre .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */
.highlight pre .kt { color: #B00040 } /* Keyword.Type */
.highlight pre .m { color: #666666 } /* Literal.Number */
.highlight pre .s { color: #BA2121 } /* Literal.String */
.highlight pre .na { color: #687822 } /* Name.Attribute */
.highlight pre .nb { color: #008000 } /* Name.Builtin */
.highlight pre .nc { color: #0000FF; font-weight: bold } /* Name.Class */
.highlight pre .no { color: #880000 } /* Name.Constant */
.highlight pre .nd { color: #AA22FF } /* Name.Decorator */
.highlight pre .ni { color: #717171; font-weight: bold } /* Name.Entity */
.highlight pre .ne { color: #CB3F38; font-weight: bold } /* Name.Exception */
.highlight pre .nf { color: #0000FF } /* Name.Function */
.highlight pre .nl { color: #767600 } /* Name.Label */
.highlight pre .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */
.highlight pre .nt { color: #008000; font-weight: bold } /* Name.Tag */
.highlight pre .nv { color: #19177C } /* Name.Variable */
.highlight pre .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */
.highlight pre .w { color: #bbbbbb } /* Text.Whitespace */
.highlight pre .mb { color: #666666 } /* Literal.Number.Bin */
.highlight pre .mf { color: #666666 } /* Literal.Number.Float */
.highlight pre .mh { color: #666666 } /* Literal.Number.Hex */
.highlight pre .mi { color: #666666 } /* Literal.Number.Integer */
.highlight pre .mo { color: #666666 } /* Literal.Number.Oct */
.highlight pre .sa { color: #BA2121 } /* Literal.String.Affix */
.highlight pre .sb { color: #BA2121 } /* Literal.String.Backtick */
.highlight pre .sc { color: #BA2121 } /* Literal.String.Char */
.highlight pre .dl { color: #BA2121 } /* Literal.String.Delimiter */
.highlight pre .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */
.highlight pre .s2 { color: #BA2121 } /* Literal.String.Double */
.highlight pre .se { color: #AA5D1F; font-weight: bold } /* Literal.String.Escape */
.highlight pre .sh { color: #BA2121 } /* Literal.String.Heredoc */
.highlight pre .si { color: #A45A77; font-weight: bold } /* Literal.String.Interpol */
.highlight pre .sx { color: #008000 } /* Literal.String.Other */
.highlight pre .sr { color: #A45A77 } /* Literal.String.Regex */
.highlight pre .s1 { color: #BA2121 } /* Literal.String.Single */
.highlight pre .ss { color: #19177C } /* Literal.String.Symbol */
.highlight pre .bp { color: #008000 } /* Name.Builtin.Pseudo */
.highlight pre .fm { color: #0000FF } /* Name.Function.Magic */
.highlight pre .vc { color: #19177C } /* Name.Variable.Class */
.highlight pre .vg { color: #19177C } /* Name.Variable.Global */
.highlight pre .vi { color: #19177C } /* Name.Variable.Instance */
.highlight pre .vm { color: #19177C } /* Name.Variable.Magic */
.highlight pre .il { color: #666666 } /* Literal.Number.Integer.Long */</style><div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div><div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<p>If you are an investor in stocks or bonds you are likely always looking for ways to increase your return or lower your risk, and it turns out there is a way to do both simultaneously called rebalancing. Portfolio rebalancing is something every investor should either do themselves or have done for them. Registered investment advisors like Vanguard and others will provide this service as part of an active management agreement, while robo-advisors such as Betterment will also rebalance automatically. To understand why it's so important, I'll defer to the finance professionals over at <a href="https://www.bogleheads.org/wiki/Rebalancing">BogleHeads</a> :</p>
<blockquote><p>Rebalancing is the action of bringing a portfolio that has deviated away from one's target asset allocation back into line. The objective is to maintain a consistent mix of asset classes (most commonly equities vs. fixed income) in order to control risk at the level desired by the investor. This is accomplished by transferring funds from higher-performing classes to lower-performing classes. While potentially counterintuitive, rebalancing ensures that investors "Buy Low" and "Sell High".</p>
</blockquote>
<p>Much research has been conducted on the benefits of portoflio rebalancing, here is an excerpt from a fairly recent <a href="https://www.morganstanley.com/articles/rebalancing-effect">Morgan Stanley</a> research piece:</p>
<blockquote><p>Rebalancing takes advantage of the long-term effects of mean reversion. By lightening up on stocks after periods of significant outperformance, or topping off positions after periods of underperformance, this discipline helps take advantage of volatility to benefit from these swings. ... A disciplined approach to rebalancing portfolios annually can create additional return and lower volatility versus never rebalancing or rebalancing during different time periods. While investing for the long term requires patience, a disciplined approach to rebalancing can help create value beyond the cyclical trends of the market.</p>
</blockquote>
<p>Timely and consistent rebalancing has become a cornerstone of modern portfolio theory. Rebalancing can magnify returns by promoting selling high and buying low, and reduce long-term risk by ensuring the portfolio adheres to its designated risk tolerance. The keys are to rebalance in a timely manner (i.e. annually) and to do it consistently because the benefits of rebalancing compound over time - but rebalancing by hand is a pain, and that can lead to inconsistency. I pursued this project due to the lack of free tools to simply rebalance an existing portfolio. Sure, we can all use a worksheet to do the math each time, but why not automate it to make it more likely we will actually do it? Here, inspired by the work of <a href="https://nbviewer.jupyter.org/github/kdboller/pythonsp500/blob/a7066d998ff046c3cc8b26ece3b0efdf00959d57/Investment%20Portfolio%20Python%20Notebook_03_2018_blog%20example.ipynb">kdboller</a>, I'll use Pandas, the Tiingo API, and some simple math to calculate how to optimally rebalance a portfolio given a target allocation. This is a simple, no-frills portfolio rebalancing exercise which does not factor in important considerations such as tax efficiency, transaction costs, minimum investment amounts, or alternate approaches such as stock-out rebalances, or bond-floor settings. Future versions of this project may contemplate these extra factors.</p>
<p>My portfolio is spread across various accounts and asset classes, so at a minimum this portfolio rebalancer had to consider how to best allocate assets within and across accounts. If new assets were added to the portfolio (based on the target portfolio definition) the rebalancer must also handle distributing those new assets into an existing account with adequate funds for it. A final consideration was basic asset tax location, I wanted the distribution of new assets to prioritize the appropriate accounts, for example, bonds will go in tax-free or tax-deferred acounts first and only to taxable accounts as a last resort. The reason for this tax location is bonds and bond funds are taxed as regular income (a higher rate) versus stocks which are taxed as capital gains (a lower rate) so we would generally prefer the higher taxed asset to be placed in a tax-advantaged account. The account-level distribution logic is constrained by available funds from sales in that same account, this is a simplifying constraint because the code does not currently contemplate IRA or Roth-IRA contribution levels or limits, and as a practical matter manually moving additional funds into a 401k may be impossible. Unfortunately, these additional considerations add to complexity and code length but I felt leaving them out would be too oversimplified and not actually useful for an average portfolio like my own.</p>
<p>The steps and static code are below, but thanks to the amazing folks over at <a href="https://mybinder.org/">Binder</a> you can run this code interactively right in your browser and play with the rebalancer in real-time and change the inputs to suit your needs. Click the launch Binder link below to launch a new window which will load the code environment (it takes a few minutes).</p>
<p><a href="https://mybinder.org/v2/gh/pogoetic/rebalance/master?filepath=portfolio_rebalance.ipynb" target="_blank"><img src="https://mybinder.org/badge_logo.svg"></a></p>
<p><strong>Steps:</strong></p>
<ol>
<li>Set triggers to rebalance (time or threshold or both)</li>
<li>Define our current Portfolio (accounttype, accountid, lastrebaldate, ticker, shares, cost basis, assetclass) </li>
<li>Define our target allocation (ticker, allocation, assetclass) </li>
<li>Factor in any new money being invested </li>
<li>Aggregate to security level and calculate rebalance triggers to determine which securities must be rebalanced</li>
<li>Calculate initial transactions needed to hit target allocation (1 row per ticker)</li>
<li>Disaggregate portfolio back to account level (1 row per ticker per account)</li>
<li>Iteratively distribute new securities into accounts, keeping tax location in mind</li>
<li>Iteratively distribute across accounts any new securities which do not fit into a single account</li>
</ol>
<p><strong>References:</strong></p>
<p><a href="https://nbviewer.jupyter.org/github/kdboller/pythonsp500/blob/a7066d998ff046c3cc8b26ece3b0efdf00959d57/Investment%20Portfolio%20Python%20Notebook_03_2018_blog%20example.ipynb">pythonsp500 by kdboller</a></p>
<p><a href="https://www.bogleheads.org/wiki/Rebalancing">Portfolio Rebalancing by bogleheads wiki</a></p>
<p><a href="https://www.morganstanley.com/articles/rebalancing-effect">The Rebalancing Effect by Morgan Stanely</a></p>
<p><strong>Github Repo:</strong>
<a href="https://github.com/pogoetic/rebalance">pogoetic/rebalance</a></p>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div><div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h2 id="Code">Code<a class="anchor-link" href="#Code">¶</a></h2>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [2]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#Lets import the necessary packages</span>
<span class="kn">import</span> <span class="nn">pandas</span> <span class="k">as</span> <span class="nn">pd</span>
<span class="kn">from</span> <span class="nn">IPython.display</span> <span class="kn">import</span> <span class="n">display</span>
<span class="n">pd</span><span class="o">.</span><span class="n">set_option</span><span class="p">(</span><span class="s1">'display.max_columns'</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
<span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
<span class="kn">import</span> <span class="nn">datetime</span>
<span class="kn">import</span> <span class="nn">decimal</span>
<span class="kn">from</span> <span class="nn">pandas_datareader</span> <span class="kn">import</span> <span class="n">data</span> <span class="k">as</span> <span class="n">pdr</span>
<span class="kn">from</span> <span class="nn">keys</span> <span class="kn">import</span> <span class="n">tiingo_key</span>
<span class="c1">#define todays datetime</span>
<span class="n">now</span> <span class="o">=</span> <span class="n">datetime</span><span class="o">.</span><span class="n">datetime</span><span class="o">.</span><span class="n">now</span><span class="p">()</span>
</pre></div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [3]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#Settings</span>
<span class="n">new_money_in</span> <span class="o">=</span> <span class="mi">10000</span>
<span class="c1">#Set our rebalance threshold</span>
<span class="n">rebal_threshold</span> <span class="o">=</span> <span class="mf">.05</span> <span class="c1">#allowable allocation drift</span>
<span class="n">rebal_timeframe</span> <span class="o">=</span> <span class="mi">180</span> <span class="c1">#in days</span>
</pre></div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [4]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#Define target and current allocations</span>
<span class="c1">#create our target allocation</span>
<span class="n">columns_t</span> <span class="o">=</span> <span class="p">[</span><span class="s1">'ticker'</span><span class="p">,</span><span class="s1">'allocation_target'</span><span class="p">,</span><span class="s1">'assetclass'</span><span class="p">]</span>
<span class="n">positions_t</span> <span class="o">=</span> <span class="p">[[</span><span class="s1">'VTSAX'</span><span class="p">,</span><span class="mf">0.5652</span><span class="p">,</span><span class="s1">'ST'</span><span class="p">],</span>
<span class="p">[</span><span class="s1">'VIGAX'</span><span class="p">,</span><span class="mf">0.0131</span><span class="p">,</span><span class="s1">'ST'</span><span class="p">],</span>
<span class="p">[</span><span class="s1">'VSMAX'</span><span class="p">,</span><span class="mf">0.0066</span><span class="p">,</span><span class="s1">'ST'</span><span class="p">],</span>
<span class="p">[</span><span class="s1">'VSEQX'</span><span class="p">,</span><span class="mf">0.0066</span><span class="p">,</span><span class="s1">'ST'</span><span class="p">],</span>
<span class="p">[</span><span class="s1">'VWIGX'</span><span class="p">,</span><span class="mf">0.0507</span><span class="p">,</span><span class="s1">'ST'</span><span class="p">],</span>
<span class="p">[</span><span class="s1">'VTRIX'</span><span class="p">,</span><span class="mf">0.0507</span><span class="p">,</span><span class="s1">'ST'</span><span class="p">],</span>
<span class="p">[</span><span class="s1">'VTIAX'</span><span class="p">,</span><span class="mf">0.1521</span><span class="p">,</span><span class="s1">'ST'</span><span class="p">],</span>
<span class="p">[</span><span class="s1">'VBTLX'</span><span class="p">,</span><span class="mf">0.035</span><span class="p">,</span><span class="s1">'BD'</span><span class="p">],</span>
<span class="p">[</span><span class="s1">'VTABX'</span><span class="p">,</span><span class="mf">0.015</span><span class="p">,</span><span class="s1">'BD'</span><span class="p">],</span>
<span class="p">[</span><span class="s1">'VGSLX'</span><span class="p">,</span><span class="mf">0.05</span><span class="p">,</span><span class="s1">'RE'</span><span class="p">],</span>
<span class="p">[</span><span class="s1">'VNQI'</span><span class="p">,</span><span class="mf">0.01</span><span class="p">,</span><span class="s1">'RE'</span><span class="p">],</span>
<span class="p">[</span><span class="s1">'VDE'</span><span class="p">,</span><span class="mf">0.03</span><span class="p">,</span><span class="s1">'ST'</span><span class="p">],</span>
<span class="p">[</span><span class="s1">'GLD'</span><span class="p">,</span><span class="mf">0.015</span><span class="p">,</span><span class="s1">'CS'</span><span class="p">]]</span>
<span class="c1">#set our current portfolio</span>
<span class="n">columns_c</span> <span class="o">=</span> <span class="p">[</span><span class="s1">'accounttype'</span><span class="p">,</span><span class="s1">'accountid'</span><span class="p">,</span><span class="s1">'lastrebaldate'</span><span class="p">,</span><span class="s1">'ticker'</span><span class="p">,</span><span class="s1">'assetclass'</span><span class="p">,</span><span class="s1">'basisdate'</span><span class="p">,</span><span class="s1">'costbasis'</span><span class="p">,</span><span class="s1">'shares'</span><span class="p">]</span>
<span class="n">positions_c</span> <span class="o">=</span> <span class="p">[[</span><span class="s1">'RIRA'</span><span class="p">,</span><span class="s1">'1111'</span><span class="p">,</span><span class="s1">'2018-11-16'</span><span class="p">,</span><span class="s1">'VBTLX'</span><span class="p">,</span><span class="s1">'BD'</span><span class="p">,</span><span class="s1">'2018-11-16'</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mf">913.483</span><span class="p">],</span>
<span class="p">[</span><span class="s1">'RIRA'</span><span class="p">,</span><span class="s1">'1111'</span><span class="p">,</span><span class="s1">'2018-11-16'</span><span class="p">,</span><span class="s1">'VTIAX'</span><span class="p">,</span><span class="s1">'ST'</span><span class="p">,</span><span class="s1">'2018-11-16'</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mf">514.298</span><span class="p">],</span>
<span class="p">[</span><span class="s1">'RIRA'</span><span class="p">,</span><span class="s1">'1111'</span><span class="p">,</span><span class="s1">'2018-11-16'</span><span class="p">,</span><span class="s1">'VTSAX'</span><span class="p">,</span><span class="s1">'ST'</span><span class="p">,</span><span class="s1">'2018-11-16'</span><span class="p">,</span><span class="mi">10</span><span class="p">,</span><span class="mf">151.121</span><span class="p">],</span>
<span class="p">[</span><span class="s1">'RIRA'</span><span class="p">,</span><span class="s1">'2222'</span><span class="p">,</span><span class="s1">'2018-11-16'</span><span class="p">,</span><span class="s1">'VBTLX'</span><span class="p">,</span><span class="s1">'BD'</span><span class="p">,</span><span class="s1">'2018-11-16'</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mf">772.407</span><span class="p">],</span>
<span class="p">[</span><span class="s1">'RIRA'</span><span class="p">,</span><span class="s1">'2222'</span><span class="p">,</span><span class="s1">'2018-11-16'</span><span class="p">,</span><span class="s1">'VTSAX'</span><span class="p">,</span><span class="s1">'ST'</span><span class="p">,</span><span class="s1">'2018-11-16'</span><span class="p">,</span><span class="mi">20</span><span class="p">,</span><span class="mf">151.578</span><span class="p">],</span>
<span class="p">[</span><span class="s1">'TAXB'</span><span class="p">,</span><span class="s1">'3333'</span><span class="p">,</span><span class="s1">'2018-11-16'</span><span class="p">,</span><span class="s1">'AAPL'</span><span class="p">,</span><span class="s1">'ST'</span><span class="p">,</span><span class="s1">'2018-11-16'</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mf">3.14</span><span class="p">],</span>
<span class="p">[</span><span class="s1">'TAXB'</span><span class="p">,</span><span class="s1">'3333'</span><span class="p">,</span><span class="s1">'2018-11-16'</span><span class="p">,</span><span class="s1">'VTSAX'</span><span class="p">,</span><span class="s1">'ST'</span><span class="p">,</span><span class="s1">'2018-11-16'</span><span class="p">,</span><span class="mi">10</span><span class="p">,</span><span class="mf">549.871</span><span class="p">]]</span>
</pre></div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [5]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#lookup table for account type abbreviations</span>
<span class="n">accounttypes</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'TAXB'</span><span class="p">:</span><span class="s1">'Taxable Brokerage'</span><span class="p">,</span> <span class="s1">'401K'</span><span class="p">:</span><span class="s1">'401k'</span><span class="p">,</span> <span class="s1">'RIRA'</span><span class="p">:</span><span class="s1">'Roth-IRA'</span><span class="p">,</span> <span class="s1">'TIRA'</span><span class="p">:</span><span class="s1">'Traditional-IRA'</span><span class="p">}</span>
<span class="n">assetclasses</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'ST'</span><span class="p">:</span><span class="s1">'Equity Stocks'</span><span class="p">,</span> <span class="s1">'BD'</span><span class="p">:</span><span class="s1">'Bonds Fixed-Income'</span><span class="p">,</span> <span class="s1">'CS'</span><span class="p">:</span><span class="s1">'Cash and Commodities'</span><span class="p">,</span> <span class="s1">'RE'</span><span class="p">:</span><span class="s1">'Real-Estate'</span><span class="p">,</span> <span class="s1">'ALT'</span><span class="p">:</span><span class="s1">'Alternatives'</span><span class="p">}</span>
<span class="n">assettypes</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'SEC'</span><span class="p">:</span><span class="s1">'Individual Security'</span><span class="p">,</span> <span class="s1">'ETF'</span><span class="p">:</span><span class="s1">'Exchange Traded Fund'</span><span class="p">,</span> <span class="s1">'MF'</span><span class="p">:</span> <span class="s1">'Mutual Fund'</span><span class="p">,</span> <span class="s1">'IF'</span><span class="p">:</span><span class="s1">'Index Fund'</span><span class="p">}</span>
<span class="n">assetregion</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'D'</span><span class="p">:</span><span class="s1">'Domestic'</span><span class="p">,</span><span class="s1">'I'</span><span class="p">:</span><span class="s1">'International'</span><span class="p">}</span>
<span class="c1">#initialize target portfolio</span>
<span class="n">targetalloc</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">DataFrame</span><span class="p">(</span><span class="n">columns</span> <span class="o">=</span> <span class="n">columns_t</span><span class="p">,</span> <span class="n">data</span> <span class="o">=</span> <span class="n">positions_t</span><span class="p">)</span>
<span class="n">total</span><span class="o">=</span><span class="n">decimal</span><span class="o">.</span><span class="n">Decimal</span><span class="p">(</span><span class="n">targetalloc</span><span class="o">.</span><span class="n">allocation_target</span><span class="o">.</span><span class="n">sum</span><span class="p">())</span>
<span class="c1">#check that our target allocation indeed adds to 100%</span>
<span class="k">assert</span> <span class="nb">round</span><span class="p">(</span><span class="n">total</span><span class="p">,</span><span class="mi">4</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span><span class="p">,</span><span class="s1">'Target Allocation not 100% : </span><span class="si">{}</span><span class="s1">'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">int</span><span class="p">(</span><span class="n">total</span><span class="p">))</span>
<span class="c1">#initialize current portfolio</span>
<span class="n">start_port</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">DataFrame</span><span class="p">(</span><span class="n">columns</span> <span class="o">=</span> <span class="n">columns_c</span><span class="p">,</span> <span class="n">data</span> <span class="o">=</span> <span class="n">positions_c</span><span class="p">)</span>
<span class="n">start_port</span><span class="o">.</span><span class="n">lastrebaldate</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">to_datetime</span><span class="p">(</span><span class="n">start_port</span><span class="o">.</span><span class="n">lastrebaldate</span><span class="p">)</span>
<span class="n">start_port</span><span class="o">.</span><span class="n">basisdate</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">to_datetime</span><span class="p">(</span><span class="n">start_port</span><span class="o">.</span><span class="n">basisdate</span><span class="p">)</span>
<span class="c1">#custom apply function</span>
<span class="k">def</span> <span class="nf">f</span><span class="p">(</span><span class="n">x</span><span class="p">):</span>
<span class="n">d</span> <span class="o">=</span> <span class="p">{}</span>
<span class="n">d</span><span class="p">[</span><span class="s1">'lastrebaldate'</span><span class="p">]</span> <span class="o">=</span> <span class="n">x</span><span class="p">[</span><span class="s1">'lastrebaldate'</span><span class="p">]</span><span class="o">.</span><span class="n">max</span><span class="p">()</span>
<span class="n">d</span><span class="p">[</span><span class="s1">'assetclass'</span><span class="p">]</span> <span class="o">=</span> <span class="n">x</span><span class="p">[</span><span class="s1">'assetclass'</span><span class="p">]</span><span class="o">.</span><span class="n">max</span><span class="p">()</span>
<span class="n">d</span><span class="p">[</span><span class="s1">'basisdate'</span><span class="p">]</span> <span class="o">=</span> <span class="n">x</span><span class="p">[</span><span class="s1">'basisdate'</span><span class="p">]</span><span class="o">.</span><span class="n">min</span><span class="p">()</span>
<span class="n">d</span><span class="p">[</span><span class="s1">'costbasis'</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="s1">'costbasis'</span><span class="p">]</span> <span class="o">*</span> <span class="n">x</span><span class="p">[</span><span class="s1">'shares'</span><span class="p">])</span><span class="o">.</span><span class="n">sum</span><span class="p">()</span><span class="o">/</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="s1">'shares'</span><span class="p">]</span><span class="o">.</span><span class="n">sum</span><span class="p">()</span> <span class="ow">or</span> <span class="mi">1</span><span class="p">)</span> <span class="c1">#weighted avg</span>
<span class="n">d</span><span class="p">[</span><span class="s1">'shares'</span><span class="p">]</span> <span class="o">=</span> <span class="n">x</span><span class="p">[</span><span class="s1">'shares'</span><span class="p">]</span><span class="o">.</span><span class="n">sum</span><span class="p">()</span>
<span class="k">return</span> <span class="n">pd</span><span class="o">.</span><span class="n">Series</span><span class="p">(</span><span class="n">d</span><span class="p">,</span> <span class="n">index</span><span class="o">=</span><span class="p">[</span><span class="s1">'lastrebaldate'</span><span class="p">,</span> <span class="s1">'assetclass'</span><span class="p">,</span> <span class="s1">'basisdate'</span><span class="p">,</span> <span class="s1">'costbasis'</span><span class="p">,</span> <span class="s1">'shares'</span><span class="p">])</span>
<span class="c1">#aggregate by ticker to account for duplicate securities held in different accounts</span>
<span class="n">agg_port</span> <span class="o">=</span> <span class="n">start_port</span><span class="o">.</span><span class="n">groupby</span><span class="p">([</span><span class="s1">'ticker'</span><span class="p">])</span><span class="o">.</span><span class="n">apply</span><span class="p">(</span><span class="n">f</span><span class="p">)</span>
<span class="c1">#Define list of distinct tickers we care about</span>
<span class="n">tickers</span> <span class="o">=</span> <span class="nb">set</span><span class="p">(</span><span class="n">targetalloc</span><span class="o">.</span><span class="n">ticker</span><span class="o">.</span><span class="n">unique</span><span class="p">()</span><span class="o">.</span><span class="n">tolist</span><span class="p">()</span><span class="o">+</span><span class="n">start_port</span><span class="o">.</span><span class="n">ticker</span><span class="o">.</span><span class="n">unique</span><span class="p">()</span><span class="o">.</span><span class="n">tolist</span><span class="p">())</span>
</pre></div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [6]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#Lets look at our input portfolios (target and current)</span>
<span class="n">display</span><span class="p">(</span><span class="n">targetalloc</span><span class="p">)</span>
<span class="n">display</span><span class="p">(</span><span class="n">start_port</span><span class="p">)</span>
<span class="c1">#And our aggregated portfolio at the ticker level (1 row per ticker)</span>
<span class="n">display</span><span class="p">(</span><span class="n">agg_port</span><span class="p">)</span>
</pre></div>
</div>
</div>
</div>
<div class="output_wrapper">
<div class="output">
<div class="output_area">
<div class="prompt"></div>
<div class="output_html rendered_html output_subarea ">
<div>
<style scoped>
.dataframe tbody tr th:only-of-type {
vertical-align: middle;
}
.dataframe tbody tr th {
vertical-align: top;
}
.dataframe thead th {
text-align: right;
}
</style>
<table border="1" class="dataframe">
<thead>
<tr style="text-align: right;">
<th></th>
<th>ticker</th>
<th>allocation_target</th>
<th>assetclass</th>
</tr>
</thead>
<tbody>
<tr>
<th>0</th>
<td>VTSAX</td>
<td>0.5652</td>
<td>ST</td>
</tr>
<tr>
<th>1</th>
<td>VIGAX</td>
<td>0.0131</td>
<td>ST</td>
</tr>
<tr>
<th>2</th>
<td>VSMAX</td>
<td>0.0066</td>
<td>ST</td>
</tr>
<tr>
<th>3</th>
<td>VSEQX</td>
<td>0.0066</td>
<td>ST</td>
</tr>
<tr>
<th>4</th>
<td>VWIGX</td>
<td>0.0507</td>
<td>ST</td>
</tr>
<tr>
<th>5</th>
<td>VTRIX</td>
<td>0.0507</td>
<td>ST</td>
</tr>
<tr>
<th>6</th>
<td>VTIAX</td>
<td>0.1521</td>
<td>ST</td>
</tr>
<tr>
<th>7</th>
<td>VBTLX</td>
<td>0.0350</td>
<td>BD</td>
</tr>
<tr>
<th>8</th>
<td>VTABX</td>
<td>0.0150</td>
<td>BD</td>
</tr>
<tr>
<th>9</th>
<td>VGSLX</td>
<td>0.0500</td>
<td>RE</td>
</tr>
<tr>
<th>10</th>
<td>VNQI</td>
<td>0.0100</td>
<td>RE</td>
</tr>
<tr>
<th>11</th>
<td>VDE</td>
<td>0.0300</td>
<td>ST</td>
</tr>
<tr>
<th>12</th>
<td>GLD</td>
<td>0.0150</td>
<td>CS</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="output_area">
<div class="prompt"></div>
<div class="output_html rendered_html output_subarea ">
<div>
<style scoped>
.dataframe tbody tr th:only-of-type {
vertical-align: middle;
}
.dataframe tbody tr th {
vertical-align: top;
}
.dataframe thead th {
text-align: right;
}
</style>
<table border="1" class="dataframe">
<thead>
<tr style="text-align: right;">
<th></th>
<th>accounttype</th>
<th>accountid</th>
<th>lastrebaldate</th>
<th>ticker</th>
<th>assetclass</th>
<th>basisdate</th>
<th>costbasis</th>
<th>shares</th>
</tr>
</thead>
<tbody>
<tr>
<th>0</th>
<td>RIRA</td>
<td>1111</td>
<td>2018-11-16</td>
<td>VBTLX</td>
<td>BD</td>
<td>2018-11-16</td>
<td>1</td>
<td>913.483</td>
</tr>
<tr>
<th>1</th>
<td>RIRA</td>
<td>1111</td>
<td>2018-11-16</td>
<td>VTIAX</td>
<td>ST</td>
<td>2018-11-16</td>
<td>1</td>
<td>514.298</td>
</tr>
<tr>
<th>2</th>
<td>RIRA</td>
<td>1111</td>
<td>2018-11-16</td>
<td>VTSAX</td>
<td>ST</td>
<td>2018-11-16</td>
<td>10</td>
<td>151.121</td>
</tr>
<tr>
<th>3</th>
<td>RIRA</td>
<td>2222</td>
<td>2018-11-16</td>
<td>VBTLX</td>
<td>BD</td>
<td>2018-11-16</td>
<td>1</td>
<td>772.407</td>
</tr>
<tr>
<th>4</th>
<td>RIRA</td>
<td>2222</td>
<td>2018-11-16</td>
<td>VTSAX</td>
<td>ST</td>
<td>2018-11-16</td>
<td>20</td>
<td>151.578</td>
</tr>
<tr>
<th>5</th>
<td>TAXB</td>
<td>3333</td>
<td>2018-11-16</td>
<td>AAPL</td>
<td>ST</td>
<td>2018-11-16</td>
<td>1</td>
<td>3.140</td>
</tr>
<tr>
<th>6</th>
<td>TAXB</td>
<td>3333</td>
<td>2018-11-16</td>
<td>VTSAX</td>
<td>ST</td>
<td>2018-11-16</td>
<td>10</td>
<td>549.871</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="output_area">
<div class="prompt"></div>
<div class="output_html rendered_html output_subarea ">
<div>
<style scoped>
.dataframe tbody tr th:only-of-type {
vertical-align: middle;
}
.dataframe tbody tr th {
vertical-align: top;
}
.dataframe thead th {
text-align: right;
}
</style>
<table border="1" class="dataframe">
<thead>
<tr style="text-align: right;">
<th></th>
<th>lastrebaldate</th>
<th>assetclass</th>
<th>basisdate</th>
<th>costbasis</th>
<th>shares</th>
</tr>
<tr>
<th>ticker</th>
<th></th>
<th></th>
<th></th>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<th>AAPL</th>
<td>2018-11-16</td>
<td>ST</td>
<td>2018-11-16</td>
<td>1.000000</td>
<td>3.140</td>
</tr>
<tr>
<th>VBTLX</th>
<td>2018-11-16</td>
<td>BD</td>
<td>2018-11-16</td>
<td>1.000000</td>
<td>1685.890</td>
</tr>
<tr>
<th>VTIAX</th>
<td>2018-11-16</td>
<td>ST</td>
<td>2018-11-16</td>
<td>1.000000</td>
<td>514.298</td>
</tr>
<tr>
<th>VTSAX</th>
<td>2018-11-16</td>
<td>ST</td>
<td>2018-11-16</td>
<td>11.777895</td>
<td>852.570</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [7]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#Next we pull the latest prices from Tiingo (YahooFinance is buggy, and IEX does not contain mutual fund data)</span>
<span class="c1">#Tiingo limits for free API: 500 unique tickers ever, 500 requests/hr, 20,000 requests/day</span>
<span class="c1">#https://pandas-datareader.readthedocs.io/en/latest/remote_data.html#tiingo</span>
<span class="c1">#Tiingo API key required: set 'tiingo_key' value in python file called 'keys.py' in same directory as this script</span>
<span class="n">now</span> <span class="o">=</span> <span class="n">datetime</span><span class="o">.</span><span class="n">datetime</span><span class="o">.</span><span class="n">now</span><span class="p">()</span>
<span class="n">yesterday</span> <span class="o">=</span> <span class="n">now</span> <span class="o">-</span> <span class="n">datetime</span><span class="o">.</span><span class="n">timedelta</span><span class="p">(</span><span class="mi">3</span><span class="p">)</span> <span class="c1">#avoids weekends with no data - need better weekend detection</span>
<span class="n">start</span> <span class="o">=</span> <span class="n">datetime</span><span class="o">.</span><span class="n">datetime</span><span class="p">(</span><span class="n">yesterday</span><span class="o">.</span><span class="n">year</span><span class="p">,</span> <span class="n">yesterday</span><span class="o">.</span><span class="n">month</span><span class="p">,</span> <span class="n">yesterday</span><span class="o">.</span><span class="n">day</span><span class="p">)</span>
<span class="n">end</span> <span class="o">=</span> <span class="n">datetime</span><span class="o">.</span><span class="n">datetime</span><span class="p">(</span><span class="n">now</span><span class="o">.</span><span class="n">year</span><span class="p">,</span> <span class="n">now</span><span class="o">.</span><span class="n">month</span><span class="p">,</span> <span class="n">now</span><span class="o">.</span><span class="n">day</span><span class="p">)</span>
<span class="n">bad_tickers</span> <span class="o">=</span> <span class="p">[]</span>
<span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">t</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">tickers</span><span class="p">):</span>
<span class="k">try</span><span class="p">:</span>
<span class="k">if</span> <span class="n">i</span><span class="o">==</span><span class="mi">0</span><span class="p">:</span>
<span class="n">ohlc</span> <span class="o">=</span> <span class="n">pdr</span><span class="o">.</span><span class="n">get_data_tiingo</span><span class="p">(</span><span class="n">t</span><span class="p">,</span> <span class="n">api_key</span><span class="o">=</span><span class="n">tiingo_key</span><span class="p">)</span><span class="o">.</span><span class="n">tail</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span><span class="o">.</span><span class="n">close</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">ohlc</span> <span class="o">=</span> <span class="n">ohlc</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">pdr</span><span class="o">.</span><span class="n">get_data_tiingo</span><span class="p">(</span><span class="n">t</span><span class="p">,</span> <span class="n">api_key</span><span class="o">=</span><span class="n">tiingo_key</span><span class="p">)</span><span class="o">.</span><span class="n">tail</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span><span class="o">.</span><span class="n">close</span><span class="p">)</span>
<span class="k">except</span><span class="p">:</span>
<span class="n">bad_tickers</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">t</span><span class="p">)</span>
<span class="c1">#print(bad_tickers)</span>
<span class="n">ohlc</span> <span class="o">=</span> <span class="n">ohlc</span><span class="o">.</span><span class="n">to_frame</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="s1">'close'</span><span class="p">)</span>
<span class="c1">#drop our date index since its only the latest data</span>
<span class="n">ohlc2</span><span class="o">=</span><span class="n">ohlc</span><span class="o">.</span><span class="n">reset_index</span><span class="p">(</span><span class="n">level</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">drop</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
<span class="c1">#Manual fix for known bad_tickers which Tiingo can't find, adjust to suit your needs</span>
<span class="k">if</span> <span class="s1">'VMFXX'</span> <span class="ow">in</span> <span class="n">bad_tickers</span><span class="p">:</span>
<span class="n">ohlc2</span><span class="o">.</span><span class="n">loc</span><span class="p">[</span><span class="s1">'VMFXX'</span><span class="p">]</span> <span class="o">=</span> <span class="mf">1.0</span>
</pre></div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [8]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#What did we get?</span>
<span class="n">display</span><span class="p">(</span><span class="n">ohlc2</span><span class="p">)</span>
</pre></div>
</div>
</div>
</div>
<div class="output_wrapper">
<div class="output">
<div class="output_area">
<div class="prompt"></div>
<div class="output_html rendered_html output_subarea ">
<div>
<style scoped>
.dataframe tbody tr th:only-of-type {
vertical-align: middle;
}
.dataframe tbody tr th {
vertical-align: top;
}
.dataframe thead th {
text-align: right;
}
</style>
<table border="1" class="dataframe">
<thead>
<tr style="text-align: right;">
<th></th>
<th>close</th>
</tr>
<tr>
<th>symbol</th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<th>VTABX</th>
<td>21.66</td>
</tr>
<tr>
<th>VIGAX</th>
<td>68.02</td>
</tr>
<tr>
<th>VSEQX</th>
<td>26.77</td>
</tr>
<tr>
<th>VTIAX</th>
<td>25.17</td>
</tr>
<tr>
<th>VNQI</th>
<td>52.05</td>
</tr>
<tr>
<th>VWIGX</th>
<td>24.76</td>
</tr>
<tr>
<th>VTSAX</th>
<td>61.08</td>
</tr>
<tr>
<th>VTRIX</th>
<td>31.91</td>
</tr>
<tr>
<th>VBTLX</th>
<td>10.39</td>
</tr>
<tr>
<th>VDE</th>
<td>77.44</td>
</tr>
<tr>
<th>VSMAX</th>
<td>62.25</td>
</tr>
<tr>
<th>AAPL</th>
<td>156.15</td>
</tr>
<tr>
<th>VGSLX</th>
<td>105.06</td>
</tr>
<tr>
<th>GLD</th>
<td>120.57</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [9]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#concatenate target allocation and latest prices with our portfolio</span>
<span class="n">start_port_c</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">merge</span><span class="p">(</span><span class="n">agg_port</span><span class="p">,</span> <span class="n">targetalloc</span><span class="p">,</span> <span class="n">on</span> <span class="o">=</span><span class="s1">'ticker'</span><span class="p">,</span> <span class="n">how</span> <span class="o">=</span><span class="s1">'outer'</span><span class="p">)</span>
<span class="n">final_port</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">merge</span><span class="p">(</span><span class="n">start_port_c</span><span class="p">,</span> <span class="n">ohlc2</span><span class="p">,</span> <span class="n">left_on</span> <span class="o">=</span><span class="s1">'ticker'</span><span class="p">,</span> <span class="n">right_index</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> <span class="n">how</span> <span class="o">=</span> <span class="s1">'left'</span><span class="p">)</span>
<span class="c1">#set target to zero for tickers held but not present in our target allocation, set initial basisdate and costbasis for new securities entering the portfolio</span>
<span class="n">final_port</span><span class="o">.</span><span class="n">fillna</span><span class="p">(</span><span class="n">value</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'allocation_target'</span><span class="p">:</span><span class="mf">0.0</span><span class="p">,</span><span class="s1">'shares'</span><span class="p">:</span><span class="mf">0.0</span><span class="p">,</span><span class="s1">'basisdate'</span><span class="p">:</span><span class="n">pd</span><span class="o">.</span><span class="n">to_datetime</span><span class="p">(</span><span class="n">now</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s2">"%Y-%m-</span><span class="si">%d</span><span class="s2">"</span><span class="p">)),</span><span class="s1">'costbasis'</span><span class="p">:</span><span class="n">final_port</span><span class="o">.</span><span class="n">close</span><span class="p">,</span><span class="s1">'assetclass_x'</span><span class="p">:</span><span class="n">final_port</span><span class="o">.</span><span class="n">assetclass_y</span><span class="p">},</span><span class="n">inplace</span> <span class="o">=</span> <span class="kc">True</span><span class="p">)</span>
<span class="n">final_port</span><span class="o">.</span><span class="n">drop</span><span class="p">([</span><span class="s1">'assetclass_y'</span><span class="p">],</span><span class="n">axis</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span><span class="n">inplace</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
<span class="n">final_port</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="s1">'assetclass_x'</span><span class="p">:</span><span class="s1">'assetclass'</span><span class="p">},</span><span class="n">inplace</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
<span class="c1">#calculate holding values and current allocation</span>
<span class="n">final_port</span><span class="p">[</span><span class="s1">'value'</span><span class="p">]</span> <span class="o">=</span> <span class="n">final_port</span><span class="o">.</span><span class="n">close</span> <span class="o">*</span> <span class="n">final_port</span><span class="o">.</span><span class="n">shares</span> <span class="c1">#calculate value as price x shares</span>
<span class="n">final_port</span><span class="o">.</span><span class="n">loc</span><span class="p">[</span><span class="n">final_port</span><span class="o">.</span><span class="n">value</span><span class="o">.</span><span class="n">isna</span><span class="p">()</span> <span class="o">&</span> <span class="n">final_port</span><span class="o">.</span><span class="n">shares</span><span class="o">.</span><span class="n">isna</span><span class="p">(),[</span><span class="s1">'value'</span><span class="p">]]</span><span class="o">=</span><span class="mf">0.0</span> <span class="c1">#for securities not currently held but in our target (and close price failed to return), establish zero value</span>
<span class="n">final_port</span><span class="p">[</span><span class="s1">'allocation'</span><span class="p">]</span> <span class="o">=</span> <span class="n">final_port</span><span class="o">.</span><span class="n">value</span> <span class="o">/</span> <span class="n">final_port</span><span class="o">.</span><span class="n">value</span><span class="o">.</span><span class="n">sum</span><span class="p">()</span>
<span class="n">final_port</span><span class="p">[</span><span class="s1">'correction'</span><span class="p">]</span> <span class="o">=</span> <span class="n">final_port</span><span class="o">.</span><span class="n">allocation_target</span> <span class="o">-</span> <span class="n">final_port</span><span class="o">.</span><span class="n">allocation</span>
<span class="n">final_port</span><span class="p">[</span><span class="s1">'new_money_in'</span><span class="p">]</span> <span class="o">=</span> <span class="n">new_money_in</span> <span class="o">*</span> <span class="n">final_port</span><span class="o">.</span><span class="n">allocation_target</span> <span class="c1">#Account for new money in</span>
</pre></div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [10]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#create timedelta int column</span>
<span class="n">final_port</span><span class="p">[</span><span class="s1">'timedelta'</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span><span class="n">final_port</span><span class="o">.</span><span class="n">lastrebaldate</span> <span class="o">-</span> <span class="n">pd</span><span class="o">.</span><span class="n">to_datetime</span><span class="p">(</span><span class="n">now</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s2">"%Y-%m-</span><span class="si">%d</span><span class="s2">"</span><span class="p">)))</span><span class="o">.</span><span class="n">dt</span><span class="o">.</span><span class="n">days</span>
<span class="n">final_port</span><span class="o">.</span><span class="n">timedelta</span><span class="o">.</span><span class="n">fillna</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="n">inplace</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
<span class="c1">#define rebalance flags to determine if we must rebalance</span>
<span class="n">final_port</span><span class="p">[</span><span class="s1">'rebal_flag_thresh'</span><span class="p">]</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">where</span><span class="p">((</span><span class="nb">abs</span><span class="p">(</span><span class="n">final_port</span><span class="o">.</span><span class="n">correction</span><span class="p">)</span><span class="o"><=</span><span class="n">rebal_threshold</span><span class="p">)</span> <span class="o">&</span> <span class="p">(</span><span class="n">final_port</span><span class="o">.</span><span class="n">allocation</span> <span class="o">></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="n">final_port</span><span class="p">[</span><span class="s1">'rebal_flag_time'</span><span class="p">]</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">where</span><span class="p">(</span><span class="n">final_port</span><span class="o">.</span><span class="n">timedelta</span> <span class="o">>=</span> <span class="n">rebal_timeframe</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">final_port</span><span class="p">[</span><span class="s1">'rebal_flag_exit'</span><span class="p">]</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">where</span><span class="p">((</span><span class="n">final_port</span><span class="o">.</span><span class="n">allocation</span> <span class="o">></span> <span class="mi">0</span><span class="p">)</span> <span class="o">&</span> <span class="p">(</span><span class="n">final_port</span><span class="o">.</span><span class="n">allocation_target</span><span class="o">==</span><span class="mi">0</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="c1">#force rebal securities not present in our target portfolio</span>
<span class="n">final_port</span><span class="p">[</span><span class="s1">'rebal_flag_newmoney'</span><span class="p">]</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">where</span><span class="p">(</span><span class="n">final_port</span><span class="o">.</span><span class="n">new_money_in</span><span class="o">></span><span class="mi">0</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">final_port</span><span class="p">[</span><span class="s1">'rebal_flag'</span><span class="p">]</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">where</span><span class="p">(</span><span class="n">final_port</span><span class="o">.</span><span class="n">rebal_flag_thresh</span> <span class="o">+</span> <span class="n">final_port</span><span class="o">.</span><span class="n">rebal_flag_time</span> <span class="o">+</span> <span class="n">final_port</span><span class="o">.</span><span class="n">rebal_flag_exit</span> <span class="o">+</span> <span class="n">final_port</span><span class="o">.</span><span class="n">rebal_flag_newmoney</span> <span class="o">>=</span> <span class="mi">1</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="c1">#Subset of securities we need to rebalance, and those we need to leave alone</span>
<span class="n">rebal_port</span> <span class="o">=</span> <span class="n">final_port</span><span class="p">[</span><span class="n">final_port</span><span class="o">.</span><span class="n">rebal_flag</span><span class="o">==</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span>
<span class="n">stable_port</span> <span class="o">=</span> <span class="n">final_port</span><span class="p">[</span><span class="n">final_port</span><span class="o">.</span><span class="n">rebal_flag</span><span class="o">==</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span>
</pre></div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [11]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#Calculate our current allocation, target, and the change we need to hit target</span>
<span class="n">total_val</span> <span class="o">=</span> <span class="n">rebal_port</span><span class="o">.</span><span class="n">value</span><span class="o">.</span><span class="n">sum</span><span class="p">()</span>
<span class="n">rebal_port</span><span class="p">[</span><span class="s1">'allocation'</span><span class="p">]</span> <span class="o">=</span> <span class="n">rebal_port</span><span class="o">.</span><span class="n">value</span><span class="o">/</span><span class="n">rebal_port</span><span class="o">.</span><span class="n">value</span><span class="o">.</span><span class="n">sum</span><span class="p">()</span>
<span class="n">rebal_port</span><span class="p">[</span><span class="s1">'allocation_target'</span><span class="p">]</span> <span class="o">=</span> <span class="n">rebal_port</span><span class="o">.</span><span class="n">allocation_target</span><span class="o">/</span><span class="n">rebal_port</span><span class="o">.</span><span class="n">allocation_target</span><span class="o">.</span><span class="n">sum</span><span class="p">()</span>
<span class="n">rebal_port</span><span class="p">[</span><span class="s1">'correction'</span><span class="p">]</span> <span class="o">=</span> <span class="n">rebal_port</span><span class="o">.</span><span class="n">allocation_target</span> <span class="o">-</span> <span class="n">rebal_port</span><span class="o">.</span><span class="n">allocation</span>
<span class="c1">#Factor in any new money entering the portfolio and determine necessary changes in value and shares</span>
<span class="n">rebal_port</span><span class="p">[</span><span class="s1">'value_chg'</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span><span class="n">total_val</span> <span class="o">*</span> <span class="n">rebal_port</span><span class="o">.</span><span class="n">correction</span><span class="p">)</span> <span class="o">+</span> <span class="n">rebal_port</span><span class="o">.</span><span class="n">new_money_in</span>
<span class="n">rebal_port</span><span class="p">[</span><span class="s1">'shares_chg'</span><span class="p">]</span> <span class="o">=</span> <span class="n">rebal_port</span><span class="o">.</span><span class="n">value_chg</span> <span class="o">/</span> <span class="n">rebal_port</span><span class="o">.</span><span class="n">close</span>
<span class="n">rebal_port</span><span class="o">.</span><span class="n">loc</span><span class="p">[</span><span class="n">rebal_port</span><span class="o">.</span><span class="n">value_chg</span><span class="o">.</span><span class="n">isna</span><span class="p">()</span> <span class="o">&</span> <span class="n">rebal_port</span><span class="o">.</span><span class="n">shares</span> <span class="o">></span> <span class="mi">0</span><span class="p">,[</span><span class="s1">'shares_chg'</span><span class="p">]]</span><span class="o">=-</span><span class="n">rebal_port</span><span class="o">.</span><span class="n">shares</span> <span class="c1">#sell all shares of securities not in our target portfolio</span>
<span class="c1">#Round off shares to whole numbers, except when we are fully exiting a position</span>
<span class="n">rebal_port</span><span class="p">[</span><span class="s1">'shares_chg_round'</span><span class="p">]</span> <span class="o">=</span> <span class="n">rebal_port</span><span class="o">.</span><span class="n">shares_chg</span>
<span class="n">rebal_port</span> <span class="o">=</span> <span class="n">rebal_port</span><span class="o">.</span><span class="n">astype</span><span class="p">({</span><span class="s1">'shares_chg_round'</span><span class="p">:</span> <span class="nb">int</span><span class="p">})</span>
<span class="n">rebal_port</span><span class="p">[</span><span class="s1">'final_shares_chg'</span><span class="p">]</span> <span class="o">=</span> <span class="n">rebal_port</span><span class="o">.</span><span class="n">shares_chg</span>
<span class="n">rebal_port</span><span class="o">.</span><span class="n">loc</span><span class="p">[</span><span class="n">np</span><span class="o">.</span><span class="n">round</span><span class="p">(</span><span class="n">rebal_port</span><span class="o">.</span><span class="n">shares_chg</span><span class="o">+</span><span class="n">rebal_port</span><span class="o">.</span><span class="n">shares</span><span class="p">)</span><span class="o">!=</span><span class="mi">0</span><span class="p">,[</span><span class="s1">'final_shares_chg'</span><span class="p">]]</span><span class="o">=</span><span class="n">rebal_port</span><span class="o">.</span><span class="n">shares_chg_round</span><span class="o">*</span><span class="mf">1.0</span>
<span class="n">rebal_port</span><span class="o">.</span><span class="n">drop</span><span class="p">([</span><span class="s1">'shares_chg_round'</span><span class="p">],</span><span class="n">axis</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span><span class="n">inplace</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
<span class="c1">#Calculate initial new shares and values</span>
<span class="n">rebal_port</span><span class="p">[</span><span class="s1">'new_shares'</span><span class="p">]</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">round</span><span class="p">(</span><span class="n">rebal_port</span><span class="o">.</span><span class="n">shares</span> <span class="o">+</span> <span class="n">rebal_port</span><span class="o">.</span><span class="n">final_shares_chg</span><span class="p">,</span><span class="mi">3</span><span class="p">)</span>
<span class="n">rebal_port</span><span class="p">[</span><span class="s1">'new_value'</span><span class="p">]</span> <span class="o">=</span> <span class="n">rebal_port</span><span class="o">.</span><span class="n">new_shares</span> <span class="o">*</span> <span class="n">rebal_port</span><span class="o">.</span><span class="n">close</span> <span class="c1">#due to share rounding, there will be slight variance vs. portfolio starting value</span>
<span class="n">rebal_port</span><span class="p">[</span><span class="s1">'new_value_chg'</span><span class="p">]</span> <span class="o">=</span> <span class="n">rebal_port</span><span class="o">.</span><span class="n">final_shares_chg</span> <span class="o">*</span> <span class="n">rebal_port</span><span class="o">.</span><span class="n">close</span>
</pre></div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [12]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#Double check our work so far</span>
<span class="c1">#net of buying and selling should be zero</span>
<span class="k">assert</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">round</span><span class="p">(</span><span class="n">rebal_port</span><span class="o">.</span><span class="n">value_chg</span><span class="o">.</span><span class="n">sum</span><span class="p">(),</span><span class="mi">3</span><span class="p">)</span><span class="o">-</span><span class="n">new_money_in</span><span class="o">==</span><span class="mi">0</span><span class="p">)</span>
<span class="c1">#make sure totals match (with rounding error + new money in) from original portfolio and rebalanced portfolio</span>
<span class="k">assert</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">round</span><span class="p">(</span><span class="n">rebal_port</span><span class="o">.</span><span class="n">new_value</span><span class="o">.</span><span class="n">sum</span><span class="p">()</span> <span class="o">-</span> <span class="n">rebal_port</span><span class="o">.</span><span class="n">value</span><span class="o">.</span><span class="n">sum</span><span class="p">(),</span><span class="mi">3</span><span class="p">)</span><span class="o">==</span><span class="n">np</span><span class="o">.</span><span class="n">round</span><span class="p">((</span><span class="n">rebal_port</span><span class="o">.</span><span class="n">new_value</span><span class="o">.</span><span class="n">sum</span><span class="p">()</span> <span class="o">+</span> <span class="n">stable_port</span><span class="o">.</span><span class="n">value</span><span class="o">.</span><span class="n">sum</span><span class="p">())</span> <span class="o">-</span> <span class="n">final_port</span><span class="o">.</span><span class="n">value</span><span class="o">.</span><span class="n">sum</span><span class="p">(),</span><span class="mi">3</span><span class="p">))</span>
</pre></div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [13]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#Merge our rebalanced portfolio with our stable portfolio for our execution portfolio</span>
<span class="n">stable_port</span><span class="p">[</span><span class="s1">'value_chg'</span><span class="p">]</span> <span class="o">=</span> <span class="mi">0</span>
<span class="n">stable_port</span><span class="p">[</span><span class="s1">'shares_chg'</span><span class="p">]</span><span class="o">=</span><span class="mi">0</span>
<span class="n">stable_port</span><span class="p">[</span><span class="s1">'final_shares_chg'</span><span class="p">]</span> <span class="o">=</span> <span class="mi">0</span>
<span class="n">stable_port</span><span class="p">[</span><span class="s1">'new_value_chg'</span><span class="p">]</span> <span class="o">=</span> <span class="mi">0</span>
<span class="n">stable_port</span><span class="p">[</span><span class="s1">'new_shares'</span><span class="p">]</span> <span class="o">=</span> <span class="n">stable_port</span><span class="o">.</span><span class="n">shares</span>
<span class="n">stable_port</span><span class="p">[</span><span class="s1">'new_value'</span><span class="p">]</span> <span class="o">=</span> <span class="n">stable_port</span><span class="o">.</span><span class="n">value</span>
<span class="n">exec_port</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">rebal_port</span><span class="p">,</span><span class="n">stable_port</span><span class="p">],</span><span class="n">sort</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
<span class="n">exec_port</span><span class="o">.</span><span class="n">drop</span><span class="p">(</span><span class="n">columns</span><span class="o">=</span><span class="p">[</span><span class="s1">'timedelta'</span><span class="p">,</span><span class="s1">'rebal_flag_thresh'</span><span class="p">,</span><span class="s1">'rebal_flag_time'</span><span class="p">,</span><span class="s1">'rebal_flag_exit'</span><span class="p">,</span><span class="s1">'rebal_flag_newmoney'</span><span class="p">,</span><span class="s1">'value_chg'</span><span class="p">,</span><span class="s1">'shares_chg'</span><span class="p">],</span><span class="n">inplace</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
<span class="c1">#Reset allocations to be based on all securities</span>
<span class="n">exec_port</span><span class="p">[</span><span class="s1">'allocation'</span><span class="p">]</span> <span class="o">=</span> <span class="n">exec_port</span><span class="o">.</span><span class="n">value</span><span class="o">/</span><span class="n">exec_port</span><span class="o">.</span><span class="n">value</span><span class="o">.</span><span class="n">sum</span><span class="p">()</span>
<span class="n">exec_port</span><span class="p">[</span><span class="s1">'allocation_target'</span><span class="p">]</span> <span class="o">=</span> <span class="n">exec_port</span><span class="o">.</span><span class="n">allocation_target</span><span class="o">/</span><span class="n">exec_port</span><span class="o">.</span><span class="n">allocation_target</span><span class="o">.</span><span class="n">sum</span><span class="p">()</span>
<span class="n">exec_port</span><span class="p">[</span><span class="s1">'correction'</span><span class="p">]</span> <span class="o">=</span> <span class="n">exec_port</span><span class="o">.</span><span class="n">allocation_target</span> <span class="o">-</span> <span class="n">exec_port</span><span class="o">.</span><span class="n">allocation</span>
<span class="n">exec_port</span><span class="p">[</span><span class="s1">'final_allocation'</span><span class="p">]</span> <span class="o">=</span> <span class="n">exec_port</span><span class="o">.</span><span class="n">new_value</span> <span class="o">/</span> <span class="n">exec_port</span><span class="o">.</span><span class="n">new_value</span><span class="o">.</span><span class="n">sum</span><span class="p">()</span>
</pre></div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [14]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#Lets look at all our work to get to our target portfolio</span>
<span class="n">exec_port</span>
</pre></div>
</div>
</div>
</div>
<div class="output_wrapper">
<div class="output">
<div class="output_area">
<div class="prompt output_prompt">Out[14]:</div>
<div class="output_html rendered_html output_subarea output_execute_result">
<div>
<style scoped>
.dataframe tbody tr th:only-of-type {
vertical-align: middle;
}
.dataframe tbody tr th {
vertical-align: top;
}
.dataframe thead th {
text-align: right;
}
</style>
<table border="1" class="dataframe">
<thead>
<tr style="text-align: right;">
<th></th>
<th>ticker</th>
<th>lastrebaldate</th>
<th>assetclass</th>
<th>basisdate</th>
<th>costbasis</th>
<th>shares</th>
<th>allocation_target</th>
<th>close</th>
<th>value</th>
<th>allocation</th>
<th>correction</th>
<th>new_money_in</th>
<th>rebal_flag</th>
<th>final_shares_chg</th>
<th>new_shares</th>
<th>new_value</th>
<th>new_value_chg</th>
<th>final_allocation</th>
</tr>
</thead>
<tbody>
<tr>
<th>0</th>
<td>AAPL</td>
<td>2018-11-16</td>
<td>ST</td>
<td>2018-11-16</td>
<td>1.000000</td>
<td>3.140</td>
<td>0.0000</td>
<td>156.15</td>
<td>490.31100</td>
<td>0.005905</td>
<td>-0.005905</td>
<td>0.0</td>
<td>1</td>
<td>-3.14</td>
<td>0.000</td>
<td>0.00000</td>
<td>-490.311</td>
<td>0.000000</td>
</tr>
<tr>
<th>1</th>
<td>VBTLX</td>
<td>2018-11-16</td>
<td>BD</td>
<td>2018-11-16</td>
<td>1.000000</td>
<td>1685.890</td>
<td>0.0350</td>
<td>10.39</td>
<td>17516.39710</td>
<td>0.210973</td>
<td>-0.175973</td>
<td>350.0</td>
<td>1</td>
<td>-1372.00</td>
<td>313.890</td>
<td>3261.31710</td>
<td>-14255.080</td>
<td>0.035196</td>
</tr>
<tr>
<th>2</th>
<td>VTIAX</td>
<td>2018-11-16</td>
<td>ST</td>
<td>2018-11-16</td>
<td>1.000000</td>
<td>514.298</td>
<td>0.1521</td>
<td>25.17</td>
<td>12944.88066</td>
<td>0.155913</td>
<td>-0.003813</td>
<td>1521.0</td>
<td>1</td>
<td>47.00</td>
<td>561.298</td>
<td>14127.87066</td>
<td>1182.990</td>
<td>0.152468</td>
</tr>
<tr>
<th>3</th>
<td>VTSAX</td>
<td>2018-11-16</td>
<td>ST</td>
<td>2018-11-16</td>
<td>11.777895</td>
<td>852.570</td>
<td>0.5652</td>
<td>61.08</td>
<td>52074.97560</td>
<td>0.627209</td>
<td>-0.062009</td>
<td>5652.0</td>
<td>1</td>
<td>8.00</td>
<td>860.570</td>
<td>52563.61560</td>
<td>488.640</td>
<td>0.567266</td>
</tr>
<tr>
<th>4</th>
<td>VIGAX</td>
<td>NaT</td>
<td>ST</td>
<td>2018-12-27</td>
<td>68.020000</td>
<td>0.000</td>
<td>0.0131</td>
<td>68.02</td>
<td>0.00000</td>
<td>0.000000</td>
<td>0.013100</td>
<td>131.0</td>
<td>1</td>
<td>17.00</td>
<td>17.000</td>
<td>1156.34000</td>
<td>1156.340</td>
<td>0.012479</td>
</tr>
<tr>
<th>5</th>
<td>VSMAX</td>
<td>NaT</td>
<td>ST</td>
<td>2018-12-27</td>
<td>62.250000</td>
<td>0.000</td>
<td>0.0066</td>
<td>62.25</td>
<td>0.00000</td>
<td>0.000000</td>
<td>0.006600</td>
<td>66.0</td>
<td>1</td>
<td>9.00</td>
<td>9.000</td>
<td>560.25000</td>
<td>560.250</td>
<td>0.006046</td>
</tr>
<tr>
<th>6</th>
<td>VSEQX</td>
<td>NaT</td>
<td>ST</td>
<td>2018-12-27</td>
<td>26.770000</td>
<td>0.000</td>
<td>0.0066</td>
<td>26.77</td>
<td>0.00000</td>
<td>0.000000</td>
<td>0.006600</td>
<td>66.0</td>
<td>1</td>
<td>22.00</td>
<td>22.000</td>
<td>588.94000</td>
<td>588.940</td>
<td>0.006356</td>
</tr>
<tr>
<th>7</th>
<td>VWIGX</td>
<td>NaT</td>
<td>ST</td>
<td>2018-12-27</td>
<td>24.760000</td>
<td>0.000</td>
<td>0.0507</td>
<td>24.76</td>
<td>0.00000</td>
<td>0.000000</td>
<td>0.050700</td>
<td>507.0</td>
<td>1</td>
<td>190.00</td>
<td>190.000</td>
<td>4704.40000</td>
<td>4704.400</td>
<td>0.050770</td>
</tr>
<tr>
<th>8</th>
<td>VTRIX</td>
<td>NaT</td>
<td>ST</td>
<td>2018-12-27</td>
<td>31.910000</td>
<td>0.000</td>
<td>0.0507</td>
<td>31.91</td>
<td>0.00000</td>
<td>0.000000</td>
<td>0.050700</td>
<td>507.0</td>
<td>1</td>
<td>147.00</td>
<td>147.000</td>
<td>4690.77000</td>
<td>4690.770</td>
<td>0.050623</td>
</tr>
<tr>
<th>9</th>
<td>VTABX</td>
<td>NaT</td>
<td>BD</td>
<td>2018-12-27</td>
<td>21.660000</td>
<td>0.000</td>
<td>0.0150</td>
<td>21.66</td>
<td>0.00000</td>
<td>0.000000</td>
<td>0.015000</td>
<td>150.0</td>
<td>1</td>
<td>64.00</td>
<td>64.000</td>
<td>1386.24000</td>
<td>1386.240</td>
<td>0.014960</td>
</tr>
<tr>
<th>10</th>
<td>VGSLX</td>
<td>NaT</td>
<td>RE</td>
<td>2018-12-27</td>
<td>105.060000</td>
<td>0.000</td>
<td>0.0500</td>
<td>105.06</td>
<td>0.00000</td>
<td>0.000000</td>
<td>0.050000</td>
<td>500.0</td>
<td>1</td>
<td>44.00</td>
<td>44.000</td>
<td>4622.64000</td>
<td>4622.640</td>
<td>0.049887</td>
</tr>
<tr>
<th>11</th>
<td>VNQI</td>
<td>NaT</td>
<td>RE</td>
<td>2018-12-27</td>
<td>52.050000</td>
<td>0.000</td>
<td>0.0100</td>
<td>52.05</td>
<td>0.00000</td>
<td>0.000000</td>
<td>0.010000</td>
<td>100.0</td>
<td>1</td>
<td>17.00</td>
<td>17.000</td>
<td>884.85000</td>
<td>884.850</td>
<td>0.009549</td>
</tr>
<tr>
<th>12</th>
<td>VDE</td>
<td>NaT</td>
<td>ST</td>
<td>2018-12-27</td>
<td>77.440000</td>
<td>0.000</td>
<td>0.0300</td>
<td>77.44</td>
<td>0.00000</td>
<td>0.000000</td>
<td>0.030000</td>
<td>300.0</td>
<td>1</td>
<td>36.00</td>
<td>36.000</td>
<td>2787.84000</td>
<td>2787.840</td>
<td>0.030086</td>
</tr>
<tr>
<th>13</th>
<td>GLD</td>
<td>NaT</td>
<td>CS</td>
<td>2018-12-27</td>
<td>120.570000</td>
<td>0.000</td>
<td>0.0150</td>
<td>120.57</td>
<td>0.00000</td>
<td>0.000000</td>
<td>0.015000</td>
<td>150.0</td>
<td>1</td>
<td>11.00</td>
<td>11.000</td>
<td>1326.27000</td>
<td>1326.270</td>
<td>0.014313</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [16]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#Lets add a bar chart here to show the new allocation vs. the target allocation and vs. the original portfolio</span>
<span class="n">graph_port</span> <span class="o">=</span> <span class="n">exec_port</span><span class="p">[[</span><span class="s1">'ticker'</span><span class="p">,</span><span class="s1">'allocation'</span><span class="p">,</span><span class="s1">'allocation_target'</span><span class="p">,</span><span class="s1">'final_allocation'</span><span class="p">]]</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span>
<span class="n">graph_port</span><span class="o">.</span><span class="n">plot</span><span class="o">.</span><span class="n">barh</span><span class="p">(</span><span class="n">x</span><span class="o">=</span><span class="s1">'ticker'</span><span class="p">,</span><span class="n">figsize</span><span class="o">=</span><span class="p">(</span><span class="mi">20</span><span class="p">,</span><span class="mi">10</span><span class="p">))</span>
</pre></div>
</div>
</div>
</div>
<div class="output_wrapper">
<div class="output">
<div class="output_area">
<div class="prompt output_prompt">Out[16]:</div>
<div class="output_text output_subarea output_execute_result">
<pre><matplotlib.axes._subplots.AxesSubplot at 0x12561aa20></pre>
</div>
</div>
<div class="output_area">
<div class="prompt"></div>
<div class="output_png output_subarea ">
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABKYAAAJCCAYAAAD6G89IAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4wLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvqOYd8AAAIABJREFUeJzs3Xu0XlV9L/zvDxJIIhwFQWvUGtSDINm5sSkRK4KgpYoUUTTIWxM8QhHxUiuVWqs51IoCFcUiFBShlpODJy+kaIcHC5KDlItsMBACiCIppvJ6ICiCIVx0vn/sJ3EbcyV7Z8Xk8xljj/2sueac6zd3Rv75jrnmU621AAAAAMCmtk3XBQAAAACwdRJMAQAAANAJwRQAAAAAnRBMAQAAANAJwRQAAAAAnRBMAQAAANAJwRQAAAAAnRBMAQAAANAJwRQAAAAAnRjVdQFd22WXXdqECRO6LgMAAABgi3HzzTc/2FrbdV39tvpgasKECRkYGOi6DAAAAIAtRlX9x/r08yofAAAAAJ0QTAEAAADQCcEUAAAAAJ3Y6s+YAgAAAEbWk08+mSVLlmT58uVdl8IwGzNmTF7wghdk9OjRT2u8YAoAAAAYUUuWLMmOO+6YCRMmpKq6Lodh0lrL0qVLs2TJkuy2225Paw6v8gEAAAAjavny5Xn2s58tlNrCVFWe/exnb9ROOMEUAAAAMOKEUlumjf13FUwBAAAA0Imt/oypRUsXpe+ivhGbf+HMhSM2NwAAAPwumnDyvw7rfIs/9YanV8eECRkYGMguu+ySHXbYIY8++uiw1TRv3rzsvvvuefnLX54k+djHPpb9998/Bx988LA9Y0tgxxQAAADAMJs3b17uuOOOldennHKKUGo1BFMAAADAFu/www/P3nvvnb322ivnnXfeGvu11nLSSSdl4sSJ6evryyWXXLLy3mmnnZa+vr5Mnjw5J598cpLk/PPPzz777JPJkyfnzW9+c5YtW5brrrsul19+eU466aRMmTIl99xzT2bNmpW5c+cmSa666qpMnTo1fX19eec735nHH388yeAOro9//OOZNm1a+vr6ctddd43gX2TzIJgCAAAAtngXXHBBbr755gwMDOSss87K0qVLV9vv0ksvzYIFC3LrrbfmyiuvzEknnZT7778/3/jGNzJv3rzceOONufXWW/OXf/mXSZIjjjgiN910U2699dbsueee+dKXvpT99tsvhx12WE4//fQsWLAgL3nJS1bOv3z58syaNSuXXHJJFi5cmKeeeirnnHPOyvu77LJLbrnllrz73e/OGWecMbJ/lM2AYAoAAADY4p111lmZPHlypk+fnh/96Ef5/ve/v9p+1157bY466qhsu+22ee5zn5tXv/rVuemmm3LllVfmmGOOybhx45IkO++8c5Lk9ttvz6te9ar09fXl4osvzqJFi9Zax/e+973stttu2X333ZMkM2fOzDXXXLPy/hFHHJEk2XvvvbN48eKNXfZmb6s//BwAAADYss2fPz9XXnllrr/++owbNy4HHHBAli9fvtq+rbU1tlfVb7XPmjUr8+bNy+TJk3PhhRdm/vz5a61lTfOvsP322ydJtt122zz11FNr7bsl2CyDqap6bpIzk0xP8tMkTyQ5rff5Q621Q1fpPz/J85I8nmS7JFcm+Whr7WfretZejz+RgXvvG9b6f8PsZyazHx65+QEAAIC1evjhh7PTTjtl3Lhxueuuu3LDDTesse/++++ff/zHf8zMmTPz0EMP5Zprrsnpp5+e7bbbLqecckre/va3Z9y4cXnooYey884755FHHsnznve8PPnkk7n44ovz/Oc/P0my44475pFHHvmt+ffYY48sXrw4P/jBD/LSl740X/nKV/LqV796xNa+udvsgqkajB/nJbmotfb2XtuLkhyWwWBqTY5urQ1U1XZJTk3yL0m23n9ZAAAA2Ewt/tQbNunzDjnkkJx77rmZNGlSXvayl2X69Olr7PumN70p119/fSZPnpyqymmnnZbf+73fyyGHHJIFCxakv78/2223XV7/+tfnk5/8ZP72b/82++67b170ohelr69vZRg1Y8aMHHvssTnrrLNWHnqeJGPGjMmXv/zlHHnkkXnqqaeyzz775Pjjjx/xv8Hmqta1hWxTq6qDknystfZboVJVHZA175j6UGttoHe9bZIfJDm8tXbr2p7XP37bNnDcDsNU/RrYMQUAAMBW7M4778yee+7ZdRmMkNX9+1bVza21/nWN3RwPP98ryS0bM0Fr7ZdJbk2yx7BUBAAAAMCw2xyDqd9QVWdX1a1VddOGDl3LnMdV1UBVDTywbPPaMQYAAACwtdgcg6lFSaatuGitvSfJQUl2Xd8Jeq/y9SW5c3X3W2vntdb6W2v9u45bY34FAAAAwAjaHIOpbyUZU1XvHtI2bn0HV9XoDB5+/qPW2m3DXRwAAAAAw2Oz+1a+1lqrqsOTnFlVf5nkgSS/SPLhXpeDqmrJkCFH9n5fXFWPJ9k+yZVJ/mS9Hjh+ajJ7YFhqBwAAAGD9bXbBVJK01u5PMmMNt8eupu2AkasGAAAAgJGwWQZTAAAAwBZs9jOHeb6Hh3c+NpnN8YwpAAAAgBE3YcKEPPjgg0mSHXbYYVjnnjdvXu64446V1x/72Mdy5ZVXDtv88+fPz3XXXTds863NZz/72SxbtmxE5hZMAQAAAAyzVYOpU045JQcffPCwzf90gqmnnnrqaT1LMAUAAACwEQ4//PDsvffe2WuvvXLeeeetsV9rLSeddFImTpyYvr6+XHLJJSvvnXbaaenr68vkyZNz8sknJ0nOP//87LPPPpk8eXLe/OY3Z9myZbnuuuty+eWX56STTsqUKVNyzz33ZNasWZk7d26S5KqrrsrUqVPT19eXd77znXn88ceTDO7g+vjHP55p06alr68vd91112prXLx4cc4999yceeaZmTJlSr797W/na1/7Wvbdd99MnTo1Bx98cH7yk58kSWbPnp3jjjsur3vd6/KOd7wjy5Yty1vf+tZMmjQpb3vb27LvvvtmYGDwS+G++c1v5hWveEWmTZuWI488Mo8++mjOOuus/PjHP86BBx6YAw88cOP/IVbhjCkAAABgi3fBBRdk5513zmOPPZZ99tknb37zm1fb79JLL82CBQty66235sEHH8w+++yT/fffPwsWLMi8efNy4403Zty4cXnooYeSJEcccUSOPfbYJMlHP/rRfOlLX8p73/veHHbYYTn00EPzlre85TfmX758eWbNmpWrrroqu+++e97xjnfknHPOyQc+8IEkyS677JJbbrklX/jCF3LGGWfki1/84m/VOGHChBx//PHZYYcd8qEPfShJ8tOf/jQ33HBDqipf/OIXc9ppp+Xv//7vkyQ333xzrr322owdOzZnnHFGdtppp9x22225/fbbM2XKlCTJgw8+mE984hO58sor84xnPCOf/vSn85nPfCYf+9jH8pnPfCZXX311dtlll2H4l/hNgikAAABgi3fWWWflsssuS5L86Ec/yve///3V9rv22mtz1FFHZdttt81zn/vcvPrVr85NN92U//N//k+OOeaYjBs3Lkmy8847J0luv/32fPSjH83PfvazPProo/mjP/qjtdbxve99L7vttlt23333JMnMmTNz9tlnrwymjjjiiCTJ3nvvnUsvvXS917dkyZK87W1vy/33358nnngiu+2228p7hx12WMaOHbtyfe9///uTJBMnTsykSZOSJDfccEPuuOOOvPKVr0ySPPHEE3nFK16x3s9/ugRTAAAAwBZt/vz5ufLKK3P99ddn3LhxOeCAA7J8+fLV9m2trbG9qn6rfdasWZk3b14mT56cCy+8MPPnz19rLWuaf4Xtt98+SbLttttu0JlQ733ve/PBD34whx12WObPn5/Zs2evvPeMZzxjnc9vreW1r31t5syZs97PHA6CKQAAAGDTmv3wJn3cww8/nJ122injxo3LXXfdlRtuuGGNfffff//84z/+Y2bOnJmHHnoo11xzTU4//fRst912OeWUU/L2t7995at8O++8cx555JE873nPy5NPPpmLL744z3/+85MkO+64Yx555JHfmn+PPfbI4sWL84Mf/CAvfelL85WvfCWvfvWrN3hNO+64Y37+85//xhpXPPuiiy5a47g//MM/zFe/+tUceOCBueOOO7Jw4cIkyfTp0/Oe97xnZV3Lli3LkiVLsvvuu69cy0i8yufwcwAAAGCLdsghh+Spp57KpEmT8jd/8zeZPn36Gvu+6U1vyqRJkzJ58uS85jWvyWmnnZbf+73fyyGHHJLDDjss/f39mTJlSs4444wkyd/+7d9m3333zWtf+9rsscceK+eZMWNGTj/99EydOjX33HPPyvYxY8bky1/+co488sj09fVlm222yfHHH7/Ba3rjG9+Yyy67bOXh57Nnz86RRx6ZV73qVWsNkE444YQ88MADmTRpUj796U9n0qRJeeYzn5ldd901F154YY466qhMmjQp06dPX3n4+nHHHZc//uM/HpHDz2tdW8i2dP39/W3F6fMAAADA8Lvzzjuz5557dl0GSX75y1/mySefzJgxY3LPPffkoIMOyt13353tttvuac+5un/fqrq5tda/rrFe5QMAAADYSixbtiwHHnhgnnzyybTWcs4552xUKLWxBFMAAAAAm6kvf/nL+dznPvcbba985Stz9tlnP635dtxxx2xOb44JpgAAAAA2U8ccc0yOOeaYrssYMQ4/BwAAAKATgikAAAAAOiGYAgAAAKATzpgCAAAANqm+i/qGdb6FMxcO63xsOnZMAQAAAFu8s846K3vuuWd22mmnfOpTn3ra8+ywww4bNW7x4sWZOHHi037+6lx44YX58Y9/vPL6Xe96V+64445hfcZIsWMKAAAA2OJ94QtfyDe+8Y3stttuXZcy7C688MJMnDgx48ePT5J88Ytf7Lii9WfHFAAAALBFO/744/PDH/4whx12WM4888yceOKJSZJZs2blfe97X/bbb7+8+MUvzty5c5Mkjz76aA466KBMmzYtfX19+Zd/+Zf1es6Gjlu+fHmOOeaY9PX1ZerUqbn66quTJL/85S/zoQ99KH19fZk0aVI+//nPJ0lOOeWU7LPPPpk4cWKOO+64tNYyd+7cDAwM5Oijj86UKVPy2GOP5YADDsjAwECSZM6cOenr68vEiRPz4Q9/eOWzd9hhh/z1X/91Jk+enOnTp+cnP/nJhv1Rh4lgCgAAANiinXvuuRk/fnyuvvrq7LTTTr9x7/7778+1116br3/96zn55JOTJGPGjMlll12WW265JVdffXX+4i/+Iq21dT5nQ8edffbZSZKFCxdmzpw5mTlzZpYvX57zzjsv9957b7773e/mtttuy9FHH50kOfHEE3PTTTfl9ttvz2OPPZavf/3rectb3pL+/v5cfPHFWbBgQcaOHbty/h//+Mf58Ic/nG9961tZsGBBbrrppsybNy9J8otf/CLTp0/Prbfemv333z/nn3/+hv1Rh4lgCgAAANhqHX744dlmm23y8pe/fOWuodZaPvKRj2TSpEk5+OCD85//+Z/rtaNoQ8dde+21+dM//dMkyR577JEXvehFufvuu3PllVfm+OOPz6hRgycw7bzzzkmSq6++Ovvuu2/6+vryrW99K4sWLVprPTfddFMOOOCA7Lrrrhk1alSOPvroXHPNNUmS7bbbLoceemiSZO+9987ixYvXub6R4IwpAAAAYKu1/fbbr/y8YnfTxRdfnAceeCA333xzRo8enQkTJmT58uXrnGtDx61pN1VrLVX1G23Lly/PCSeckIGBgbzwhS/M7Nmz11nT2nZrjR49euUztt122zz11FNrnWukCKYAAACATWrhzIVdl7BWDz/8cJ7znOdk9OjRufrqq/Mf//EfIzJu//33z8UXX5zXvOY1ufvuu3PfffflZS97WV73utfl3HPPzQEHHJBRo0bloYceyjbb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
"
>
</div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [17]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#Next we turn our ticker-level strategy into account level actions</span>
<span class="c1">#Join in our rebalanced portfolio and determine how to split value across accounts for a given ticker</span>
<span class="n">port</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">merge</span><span class="p">(</span><span class="n">start_port</span><span class="p">[[</span><span class="s1">'accounttype'</span><span class="p">,</span><span class="s1">'accountid'</span><span class="p">,</span><span class="s1">'ticker'</span><span class="p">,</span><span class="s1">'shares'</span><span class="p">]],</span>
<span class="n">exec_port</span><span class="p">[[</span><span class="s1">'ticker'</span><span class="p">,</span><span class="s1">'assetclass'</span><span class="p">,</span><span class="s1">'close'</span><span class="p">,</span><span class="s1">'value'</span><span class="p">,</span><span class="s1">'final_shares_chg'</span><span class="p">,</span><span class="s1">'new_shares'</span><span class="p">,</span><span class="s1">'new_value'</span><span class="p">,</span><span class="s1">'new_value_chg'</span><span class="p">,</span><span class="s1">'final_allocation'</span><span class="p">]],</span>
<span class="n">how</span> <span class="o">=</span> <span class="s1">'right'</span><span class="p">,</span>
<span class="n">left_on</span> <span class="o">=</span> <span class="s1">'ticker'</span><span class="p">,</span>
<span class="n">right_on</span> <span class="o">=</span> <span class="s1">'ticker'</span><span class="p">)</span>
<span class="n">port</span><span class="p">[</span><span class="s1">'value_orig'</span><span class="p">]</span> <span class="o">=</span> <span class="n">port</span><span class="o">.</span><span class="n">close</span> <span class="o">*</span> <span class="n">port</span><span class="o">.</span><span class="n">shares</span>
<span class="c1">#Calculate the value-weight of each ticker by account</span>
<span class="n">port</span><span class="p">[</span><span class="s1">'tick_alloc'</span><span class="p">]</span> <span class="o">=</span> <span class="n">port</span><span class="o">.</span><span class="n">value_orig</span> <span class="o">/</span> <span class="n">port</span><span class="o">.</span><span class="n">value</span> <span class="c1">#What pct of each ticker is in a given account?</span>
<span class="n">port</span><span class="p">[</span><span class="s1">'tick_alloc'</span><span class="p">]</span><span class="o">.</span><span class="n">fillna</span><span class="p">(</span><span class="mf">1.0</span><span class="p">,</span><span class="n">inplace</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
<span class="c1">#check our sub-allocations</span>
<span class="k">assert</span><span class="p">(</span><span class="n">port</span><span class="o">.</span><span class="n">groupby</span><span class="p">(</span><span class="s1">'ticker'</span><span class="p">)</span><span class="o">.</span><span class="n">tick_alloc</span><span class="o">.</span><span class="n">sum</span><span class="p">()</span><span class="o">.</span><span class="n">sum</span><span class="p">()</span> <span class="o">==</span> <span class="nb">len</span><span class="p">(</span><span class="n">port</span><span class="o">.</span><span class="n">groupby</span><span class="p">(</span><span class="s1">'ticker'</span><span class="p">)</span><span class="o">.</span><span class="n">tick_alloc</span><span class="o">.</span><span class="n">sum</span><span class="p">()))</span>
<span class="c1">#Recalculate the values proportionately</span>
<span class="n">port</span><span class="p">[</span><span class="s1">'final_shares_chg_n'</span><span class="p">]</span> <span class="o">=</span> <span class="n">port</span><span class="o">.</span><span class="n">final_shares_chg</span> <span class="o">*</span> <span class="n">port</span><span class="o">.</span><span class="n">tick_alloc</span>
<span class="n">port</span><span class="p">[</span><span class="s1">'new_shares_n'</span><span class="p">]</span> <span class="o">=</span> <span class="n">port</span><span class="o">.</span><span class="n">new_shares</span> <span class="o">*</span> <span class="n">port</span><span class="o">.</span><span class="n">tick_alloc</span>
<span class="n">port</span><span class="p">[</span><span class="s1">'new_value_n'</span><span class="p">]</span> <span class="o">=</span> <span class="n">port</span><span class="o">.</span><span class="n">new_value</span> <span class="o">*</span> <span class="n">port</span><span class="o">.</span><span class="n">tick_alloc</span>
<span class="n">port</span><span class="p">[</span><span class="s1">'new_value_chg_n'</span><span class="p">]</span> <span class="o">=</span> <span class="n">port</span><span class="o">.</span><span class="n">new_value_chg</span> <span class="o">*</span> <span class="n">port</span><span class="o">.</span><span class="n">tick_alloc</span>
<span class="n">port</span><span class="p">[</span><span class="s1">'final_allocation_n'</span><span class="p">]</span> <span class="o">=</span> <span class="n">port</span><span class="o">.</span><span class="n">final_allocation</span> <span class="o">*</span> <span class="n">port</span><span class="o">.</span><span class="n">tick_alloc</span>
<span class="c1">#double check our final_allocation is 100%</span>
<span class="k">assert</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">round</span><span class="p">(</span><span class="n">port</span><span class="o">.</span><span class="n">final_allocation_n</span><span class="o">.</span><span class="n">sum</span><span class="p">(),</span><span class="mi">4</span><span class="p">)</span><span class="o">==</span><span class="mf">1.0</span><span class="p">)</span>
<span class="c1">#Now we must double check to ensure we are not allocating buys to accounts with no sells (we cannot just add funds to a Traditional IRA account, for example)</span>
<span class="c1">#accounts with single securities in them which also exist in other accounts can cause issues if we don't do this</span>
<span class="n">acctsdf</span> <span class="o">=</span> <span class="n">port</span><span class="o">.</span><span class="n">groupby</span><span class="p">([</span><span class="s1">'accountid'</span><span class="p">,</span><span class="s1">'accounttype'</span><span class="p">])</span><span class="o">.</span><span class="n">new_value_chg_n</span><span class="o">.</span><span class="n">sum</span><span class="p">()</span>
<span class="n">acctsdf</span> <span class="o">=</span> <span class="n">acctsdf</span><span class="o">.</span><span class="n">reset_index</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="s1">'new_value_chg_n'</span><span class="p">:</span><span class="s1">'new_value_chg_sum'</span><span class="p">})</span>
<span class="n">errordf</span> <span class="o">=</span> <span class="n">acctsdf</span><span class="p">[</span><span class="n">acctsdf</span><span class="o">.</span><span class="n">new_value_chg_sum</span> <span class="o">></span> <span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> <span class="c1">#a value >0 at the account-level implies we have allocated buys to an account with insufficient sells</span>
<span class="n">erroraccts</span> <span class="o">=</span> <span class="n">errordf</span><span class="o">.</span><span class="n">accountid</span><span class="o">.</span><span class="n">values</span>
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">errordf</span><span class="p">)</span> <span class="o">></span> <span class="mi">0</span><span class="p">:</span>
<span class="k">for</span> <span class="n">t</span> <span class="ow">in</span> <span class="n">port</span><span class="p">[</span><span class="n">port</span><span class="o">.</span><span class="n">accountid</span><span class="o">.</span><span class="n">isin</span><span class="p">(</span><span class="n">erroraccts</span><span class="p">)]</span><span class="o">.</span><span class="n">ticker</span><span class="o">.</span><span class="n">unique</span><span class="p">():</span> <span class="c1">#Loop by security (not by account)</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">"Correcting distribution for single-security accounts edge case: </span><span class="si">{}</span><span class="s2">"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">t</span><span class="p">))</span>
<span class="n">index</span> <span class="o">=</span> <span class="p">(</span><span class="n">port</span><span class="o">.</span><span class="n">accountid</span><span class="o">.</span><span class="n">isin</span><span class="p">(</span><span class="n">erroraccts</span><span class="p">))</span> <span class="o">&</span> <span class="p">(</span><span class="n">port</span><span class="o">.</span><span class="n">ticker</span> <span class="o">==</span> <span class="n">t</span><span class="p">)</span>
<span class="n">display</span><span class="p">(</span><span class="n">port</span><span class="p">[</span><span class="n">port</span><span class="o">.</span><span class="n">ticker</span> <span class="o">==</span> <span class="n">t</span><span class="p">])</span>
<span class="c1">#adjust numerator and denominator for proper recalculation of asset distribution across accounts</span>
<span class="n">port</span><span class="o">.</span><span class="n">loc</span><span class="p">[</span><span class="n">index</span><span class="p">,</span><span class="s1">'new_shares_n'</span><span class="p">]</span> <span class="o">=</span> <span class="n">port</span><span class="o">.</span><span class="n">new_shares_n</span> <span class="o">-</span> <span class="n">port</span><span class="o">.</span><span class="n">final_shares_chg_n</span>
<span class="n">port</span><span class="o">.</span><span class="n">loc</span><span class="p">[</span><span class="n">index</span><span class="p">,</span><span class="s1">'new_value_n'</span><span class="p">]</span> <span class="o">=</span> <span class="n">port</span><span class="o">.</span><span class="n">new_value_n</span> <span class="o">-</span> <span class="n">port</span><span class="o">.</span><span class="n">new_value_chg_n</span>
<span class="n">port</span><span class="o">.</span><span class="n">loc</span><span class="p">[</span><span class="n">index</span><span class="p">,</span><span class="s1">'final_shares_chg_n'</span><span class="p">]</span> <span class="o">=</span> <span class="mi">0</span>
<span class="n">port</span><span class="o">.</span><span class="n">loc</span><span class="p">[</span><span class="n">index</span><span class="p">,</span><span class="s1">'new_value_chg_n'</span><span class="p">]</span> <span class="o">=</span> <span class="mi">0</span>
<span class="c1">#remove from denominator</span>
<span class="n">port</span><span class="o">.</span><span class="n">loc</span><span class="p">[</span><span class="n">port</span><span class="o">.</span><span class="n">ticker</span> <span class="o">==</span> <span class="n">t</span><span class="p">,</span><span class="s1">'value'</span><span class="p">]</span> <span class="o">=</span> <span class="n">port</span><span class="o">.</span><span class="n">loc</span><span class="p">[</span><span class="n">port</span><span class="o">.</span><span class="n">ticker</span> <span class="o">==</span> <span class="n">t</span><span class="p">,</span><span class="s1">'value'</span><span class="p">]</span> <span class="o">-</span> <span class="n">port</span><span class="p">[</span><span class="n">index</span><span class="p">]</span><span class="o">.</span><span class="n">value_orig</span><span class="o">.</span><span class="n">sum</span><span class="p">()</span>
<span class="c1">#recalculate values for this ticker</span>
<span class="n">port</span><span class="o">.</span><span class="n">loc</span><span class="p">[</span><span class="n">port</span><span class="o">.</span><span class="n">ticker</span> <span class="o">==</span> <span class="n">t</span><span class="p">,</span><span class="s1">'tick_alloc'</span><span class="p">]</span> <span class="o">=</span> <span class="n">port</span><span class="p">[</span><span class="n">port</span><span class="o">.</span><span class="n">ticker</span> <span class="o">==</span> <span class="n">t</span><span class="p">]</span><span class="o">.</span><span class="n">value_orig</span> <span class="o">/</span> <span class="n">port</span><span class="p">[</span><span class="n">port</span><span class="o">.</span><span class="n">ticker</span> <span class="o">==</span> <span class="n">t</span><span class="p">]</span><span class="o">.</span><span class="n">value</span>
<span class="n">port</span><span class="o">.</span><span class="n">loc</span><span class="p">[</span><span class="n">index</span><span class="p">,</span><span class="s1">'tick_alloc'</span><span class="p">]</span> <span class="o">=</span> <span class="mi">0</span> <span class="c1">#set new money allocation to zero for funds with insufficient assets</span>
<span class="n">port</span><span class="o">.</span><span class="n">loc</span><span class="p">[</span><span class="n">port</span><span class="o">.</span><span class="n">ticker</span> <span class="o">==</span> <span class="n">t</span><span class="p">,</span><span class="s1">'final_shares_chg_n'</span><span class="p">]</span> <span class="o">=</span> <span class="n">port</span><span class="o">.</span><span class="n">final_shares_chg</span> <span class="o">*</span> <span class="n">port</span><span class="o">.</span><span class="n">tick_alloc</span>
<span class="n">port</span><span class="o">.</span><span class="n">loc</span><span class="p">[</span><span class="n">port</span><span class="o">.</span><span class="n">ticker</span> <span class="o">==</span> <span class="n">t</span><span class="p">,</span><span class="s1">'new_shares_n'</span><span class="p">]</span> <span class="o">=</span> <span class="n">port</span><span class="o">.</span><span class="n">shares</span> <span class="o">+</span> <span class="n">port</span><span class="o">.</span><span class="n">final_shares_chg_n</span>
<span class="n">port</span><span class="o">.</span><span class="n">loc</span><span class="p">[</span><span class="n">port</span><span class="o">.</span><span class="n">ticker</span> <span class="o">==</span> <span class="n">t</span><span class="p">,</span><span class="s1">'new_value_chg_n'</span><span class="p">]</span> <span class="o">=</span> <span class="n">port</span><span class="o">.</span><span class="n">new_value_chg</span> <span class="o">*</span> <span class="n">port</span><span class="o">.</span><span class="n">tick_alloc</span>
<span class="n">port</span><span class="o">.</span><span class="n">loc</span><span class="p">[</span><span class="n">port</span><span class="o">.</span><span class="n">ticker</span> <span class="o">==</span> <span class="n">t</span><span class="p">,</span><span class="s1">'new_value_n'</span><span class="p">]</span> <span class="o">=</span> <span class="n">port</span><span class="o">.</span><span class="n">value_orig</span> <span class="o">+</span> <span class="n">port</span><span class="o">.</span><span class="n">new_value_chg_n</span>
<span class="n">port</span><span class="o">.</span><span class="n">loc</span><span class="p">[</span><span class="n">port</span><span class="o">.</span><span class="n">ticker</span> <span class="o">==</span> <span class="n">t</span><span class="p">,</span><span class="s1">'final_allocation_n'</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span><span class="n">port</span><span class="o">.</span><span class="n">new_value_n</span> <span class="o">/</span> <span class="n">port</span><span class="o">.</span><span class="n">new_value</span><span class="p">)</span> <span class="o">*</span> <span class="n">port</span><span class="o">.</span><span class="n">final_allocation</span>
<span class="n">display</span><span class="p">(</span><span class="n">port</span><span class="p">[</span><span class="n">port</span><span class="o">.</span><span class="n">ticker</span> <span class="o">==</span> <span class="n">t</span><span class="p">])</span>
<span class="c1">#Cleanup</span>
<span class="n">port</span><span class="p">[</span><span class="s1">'value'</span><span class="p">]</span> <span class="o">=</span> <span class="n">port</span><span class="o">.</span><span class="n">value_orig</span>
<span class="n">port</span><span class="p">[</span><span class="s1">'final_shares_chg'</span><span class="p">]</span> <span class="o">=</span> <span class="n">port</span><span class="o">.</span><span class="n">final_shares_chg_n</span>
<span class="n">port</span><span class="p">[</span><span class="s1">'new_shares'</span><span class="p">]</span> <span class="o">=</span> <span class="n">port</span><span class="o">.</span><span class="n">new_shares_n</span>
<span class="n">port</span><span class="p">[</span><span class="s1">'new_value'</span><span class="p">]</span> <span class="o">=</span> <span class="n">port</span><span class="o">.</span><span class="n">new_value_n</span>
<span class="n">port</span><span class="p">[</span><span class="s1">'new_value_chg'</span><span class="p">]</span> <span class="o">=</span> <span class="n">port</span><span class="o">.</span><span class="n">new_value_chg_n</span>
<span class="n">port</span><span class="p">[</span><span class="s1">'final_allocation'</span><span class="p">]</span> <span class="o">=</span> <span class="n">port</span><span class="o">.</span><span class="n">final_allocation_n</span>
<span class="n">port</span><span class="o">.</span><span class="n">drop</span><span class="p">([</span><span class="s1">'value_orig'</span><span class="p">,</span><span class="s1">'tick_alloc'</span><span class="p">,</span><span class="s1">'final_shares_chg_n'</span><span class="p">,</span><span class="s1">'new_shares_n'</span><span class="p">,</span><span class="s1">'new_value_n'</span><span class="p">,</span><span class="s1">'new_value_chg_n'</span><span class="p">,</span><span class="s1">'final_allocation_n'</span><span class="p">],</span><span class="n">axis</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span><span class="n">inplace</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
<span class="n">port</span><span class="o">.</span><span class="n">fillna</span><span class="p">({</span><span class="s1">'value'</span><span class="p">:</span><span class="mf">0.0</span><span class="p">},</span><span class="n">inplace</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
<span class="c1">#Check our work</span>
<span class="k">assert</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">round</span><span class="p">(</span><span class="n">port</span><span class="o">.</span><span class="n">final_allocation</span><span class="o">.</span><span class="n">sum</span><span class="p">(),</span><span class="mi">4</span><span class="p">)</span><span class="o">==</span><span class="mf">1.0</span><span class="p">)</span>
<span class="k">assert</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">round</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">sum</span><span class="p">((</span><span class="n">port</span><span class="o">.</span><span class="n">shares</span><span class="o">+</span><span class="n">port</span><span class="o">.</span><span class="n">final_shares_chg</span><span class="p">)</span><span class="o">-</span><span class="n">port</span><span class="o">.</span><span class="n">new_shares</span><span class="p">))</span><span class="o">==</span><span class="mi">0</span><span class="p">)</span>
<span class="k">assert</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">round</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span><span class="n">port</span><span class="o">.</span><span class="n">new_value</span><span class="o">-</span><span class="p">(</span><span class="n">port</span><span class="o">.</span><span class="n">new_shares</span><span class="o">*</span><span class="n">port</span><span class="o">.</span><span class="n">close</span><span class="p">)))</span><span class="o">==</span><span class="mi">0</span><span class="p">)</span>
<span class="k">assert</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">round</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span><span class="n">port</span><span class="o">.</span><span class="n">new_value_chg</span><span class="o">-</span><span class="p">(</span><span class="n">port</span><span class="o">.</span><span class="n">final_shares_chg</span><span class="o">*</span><span class="n">port</span><span class="o">.</span><span class="n">close</span><span class="p">)))</span><span class="o">==</span><span class="mi">0</span><span class="p">)</span>
<span class="c1">#Lets look at our final portfolio at the account level</span>
<span class="n">display</span><span class="p">(</span><span class="n">port</span><span class="p">)</span>
</pre></div>
</div>
</div>
</div>
<div class="output_wrapper">
<div class="output">
<div class="output_area">
<div class="prompt"></div>
<div class="output_html rendered_html output_subarea ">
<div>
<style scoped>
.dataframe tbody tr th:only-of-type {
vertical-align: middle;
}
.dataframe tbody tr th {
vertical-align: top;
}
.dataframe thead th {
text-align: right;
}
</style>
<table border="1" class="dataframe">
<thead>
<tr style="text-align: right;">
<th></th>
<th>accounttype</th>
<th>accountid</th>
<th>ticker</th>
<th>shares</th>
<th>assetclass</th>
<th>close</th>
<th>value</th>
<th>final_shares_chg</th>
<th>new_shares</th>
<th>new_value</th>
<th>new_value_chg</th>
<th>final_allocation</th>
</tr>
</thead>
<tbody>
<tr>
<th>0</th>
<td>RIRA</td>
<td>1111</td>
<td>VBTLX</td>
<td>913.483</td>
<td>BD</td>
<td>10.39</td>
<td>9491.08837</td>
<td>-743.404775</td>
<td>170.078225</td>
<td>1767.112759</td>
<td>-7723.975611</td>
<td>0.019071</td>
</tr>
<tr>
<th>1</th>
<td>RIRA</td>
<td>2222</td>
<td>VBTLX</td>
<td>772.407</td>
<td>BD</td>
<td>10.39</td>
<td>8025.30873</td>
<td>-628.595225</td>
<td>143.811775</td>
<td>1494.204341</td>
<td>-6531.104389</td>
<td>0.016125</td>
</tr>
<tr>
<th>2</th>
<td>RIRA</td>
<td>1111</td>
<td>VTIAX</td>
<td>514.298</td>
<td>ST</td>
<td>25.17</td>
<td>12944.88066</td>
<td>47.000000</td>
<td>561.298000</td>
<td>14127.870660</td>
<td>1182.990000</td>
<td>0.152468</td>
</tr>
<tr>
<th>3</th>
<td>RIRA</td>
<td>1111</td>
<td>VTSAX</td>
<td>151.121</td>
<td>ST</td>
<td>61.08</td>
<td>9230.47068</td>
<td>1.418028</td>
<td>152.539028</td>
<td>9317.083821</td>
<td>86.613141</td>
<td>0.100550</td>
</tr>
<tr>
<th>4</th>
<td>RIRA</td>
<td>2222</td>
<td>VTSAX</td>
<td>151.578</td>
<td>ST</td>
<td>61.08</td>
<td>9258.38424</td>
<td>1.422316</td>
<td>153.000316</td>
<td>9345.259305</td>
<td>86.875065</td>
<td>0.100854</td>
</tr>
<tr>
<th>5</th>
<td>TAXB</td>
<td>3333</td>
<td>VTSAX</td>
<td>549.871</td>
<td>ST</td>
<td>61.08</td>
<td>33586.12068</td>
<td>5.159656</td>
<td>555.030656</td>
<td>33901.272475</td>
<td>315.151795</td>
<td>0.365862</td>
</tr>
<tr>
<th>6</th>
<td>TAXB</td>
<td>3333</td>
<td>AAPL</td>
<td>3.140</td>
<td>ST</td>
<td>156.15</td>
<td>490.31100</td>
<td>-3.140000</td>
<td>0.000000</td>
<td>0.000000</td>
<td>-490.311000</td>
<td>0.000000</td>
</tr>
<tr>
<th>7</th>
<td>NaN</td>
<td>NaN</td>
<td>VIGAX</td>
<td>NaN</td>
<td>ST</td>
<td>68.02</td>
<td>0.00000</td>
<td>17.000000</td>
<td>17.000000</td>
<td>1156.340000</td>
<td>1156.340000</td>
<td>0.012479</td>
</tr>
<tr>
<th>8</th>
<td>NaN</td>
<td>NaN</td>
<td>VSMAX</td>
<td>NaN</td>
<td>ST</td>
<td>62.25</td>
<td>0.00000</td>
<td>9.000000</td>
<td>9.000000</td>
<td>560.250000</td>
<td>560.250000</td>
<td>0.006046</td>
</tr>
<tr>
<th>9</th>
<td>NaN</td>
<td>NaN</td>
<td>VSEQX</td>
<td>NaN</td>
<td>ST</td>
<td>26.77</td>
<td>0.00000</td>
<td>22.000000</td>
<td>22.000000</td>
<td>588.940000</td>
<td>588.940000</td>
<td>0.006356</td>
</tr>
<tr>
<th>10</th>
<td>NaN</td>
<td>NaN</td>
<td>VWIGX</td>
<td>NaN</td>
<td>ST</td>
<td>24.76</td>
<td>0.00000</td>
<td>190.000000</td>
<td>190.000000</td>
<td>4704.400000</td>
<td>4704.400000</td>
<td>0.050770</td>
</tr>
<tr>
<th>11</th>
<td>NaN</td>
<td>NaN</td>
<td>VTRIX</td>
<td>NaN</td>
<td>ST</td>
<td>31.91</td>
<td>0.00000</td>
<td>147.000000</td>
<td>147.000000</td>
<td>4690.770000</td>
<td>4690.770000</td>
<td>0.050623</td>
</tr>
<tr>
<th>12</th>
<td>NaN</td>
<td>NaN</td>
<td>VTABX</td>
<td>NaN</td>
<td>BD</td>
<td>21.66</td>
<td>0.00000</td>
<td>64.000000</td>
<td>64.000000</td>
<td>1386.240000</td>
<td>1386.240000</td>
<td>0.014960</td>
</tr>
<tr>
<th>13</th>
<td>NaN</td>
<td>NaN</td>
<td>VGSLX</td>
<td>NaN</td>
<td>RE</td>
<td>105.06</td>
<td>0.00000</td>
<td>44.000000</td>
<td>44.000000</td>
<td>4622.640000</td>
<td>4622.640000</td>
<td>0.049887</td>
</tr>
<tr>
<th>14</th>
<td>NaN</td>
<td>NaN</td>
<td>VNQI</td>
<td>NaN</td>
<td>RE</td>
<td>52.05</td>
<td>0.00000</td>
<td>17.000000</td>
<td>17.000000</td>
<td>884.850000</td>
<td>884.850000</td>
<td>0.009549</td>
</tr>
<tr>
<th>15</th>
<td>NaN</td>
<td>NaN</td>
<td>VDE</td>
<td>NaN</td>
<td>ST</td>
<td>77.44</td>
<td>0.00000</td>
<td>36.000000</td>
<td>36.000000</td>
<td>2787.840000</td>
<td>2787.840000</td>
<td>0.030086</td>
</tr>
<tr>
<th>16</th>
<td>NaN</td>
<td>NaN</td>
<td>GLD</td>
<td>NaN</td>
<td>CS</td>
<td>120.57</td>
<td>0.00000</td>
<td>11.000000</td>
<td>11.000000</td>
<td>1326.270000</td>
<td>1326.270000</td>
<td>0.014313</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [18]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#Finally, all new tickers need an account to land in</span>
<span class="n">dport</span> <span class="o">=</span> <span class="kc">None</span>
<span class="n">acctsdf</span> <span class="o">=</span> <span class="kc">None</span>
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">port</span><span class="p">[</span><span class="n">port</span><span class="o">.</span><span class="n">accounttype</span><span class="o">.</span><span class="n">isnull</span><span class="p">()])</span><span class="o">></span><span class="mi">0</span><span class="p">:</span> <span class="c1">#if we have none, skip this step</span>
<span class="nb">print</span><span class="p">(</span><span class="s1">'Distributing new securities to existing accounts . . .'</span><span class="p">)</span>
<span class="n">dport</span> <span class="o">=</span> <span class="n">port</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span>
<span class="c1">#account-level fund surplus or deficit - must match these with our orphaned securities</span>
<span class="n">acctsdf</span> <span class="o">=</span> <span class="n">port</span><span class="o">.</span><span class="n">groupby</span><span class="p">([</span><span class="s1">'accountid'</span><span class="p">,</span><span class="s1">'accounttype'</span><span class="p">])</span><span class="o">.</span><span class="n">new_value_chg</span><span class="o">.</span><span class="n">sum</span><span class="p">()</span>
<span class="n">acctsdf</span> <span class="o">=</span> <span class="n">acctsdf</span><span class="o">.</span><span class="n">reset_index</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="s1">'new_value_chg'</span><span class="p">:</span><span class="s1">'new_value_chg_sum'</span><span class="p">})</span>
<span class="c1">#establish sort order so we can allocate tax-efficient account space first</span>
<span class="n">actype_sortorder</span> <span class="o">=</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="s1">'RIRA'</span><span class="p">,</span><span class="mi">1</span><span class="p">],[</span><span class="s1">'TIRA'</span><span class="p">,</span><span class="mi">2</span><span class="p">],[</span><span class="s1">'TAXB'</span><span class="p">,</span><span class="mi">3</span><span class="p">]],</span><span class="n">columns</span><span class="o">=</span><span class="p">[</span><span class="s1">'accounttype'</span><span class="p">,</span><span class="s1">'order'</span><span class="p">])</span>
<span class="n">acctsdf</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">merge</span><span class="p">(</span><span class="n">acctsdf</span><span class="p">,</span><span class="n">actype_sortorder</span><span class="p">,</span><span class="n">how</span><span class="o">=</span><span class="s1">'left'</span><span class="p">,</span><span class="n">left_on</span><span class="o">=</span><span class="s1">'accounttype'</span><span class="p">,</span><span class="n">right_on</span><span class="o">=</span><span class="s1">'accounttype'</span><span class="p">)</span>
<span class="c1">#We make a consequential assumption here that any new_money_in will be allocated 100% in one of the Taxable accounts (first in list).</span>
<span class="c1">#if you have a Roth-IRA which has not met its contribution limits for the year, it may be preferrential to distribute the funds there first.</span>
<span class="c1">#IF YOU HAVE NO TAXABLE ACCOUNT AND YOU WISH TO REBALANCE WITH new_money_in > 0 this will cause errors - so we assert here:</span>
<span class="k">assert</span><span class="p">(</span><span class="n">new_money_in</span> <span class="o">==</span> <span class="mi">0</span> <span class="ow">or</span> <span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">acctsdf</span><span class="p">[</span><span class="n">acctsdf</span><span class="o">.</span><span class="n">accounttype</span> <span class="o">==</span> <span class="s1">'TAXB'</span><span class="p">])</span><span class="o">></span><span class="mi">0</span> <span class="ow">and</span> <span class="n">new_money_in</span> <span class="o">></span> <span class="mi">0</span><span class="p">))</span>
<span class="n">min_idx</span> <span class="o">=</span> <span class="n">acctsdf</span><span class="p">[</span><span class="n">acctsdf</span><span class="o">.</span><span class="n">accounttype</span> <span class="o">==</span> <span class="s1">'TAXB'</span><span class="p">]</span><span class="o">.</span><span class="n">index</span><span class="o">.</span><span class="n">min</span><span class="p">()</span>
<span class="n">acctsdf</span><span class="o">.</span><span class="n">loc</span><span class="p">[</span><span class="n">min_idx</span><span class="p">,</span><span class="s1">'new_value_chg_sum'</span><span class="p">]</span> <span class="o">=</span> <span class="n">acctsdf</span><span class="o">.</span><span class="n">loc</span><span class="p">[</span><span class="n">min_idx</span><span class="p">,</span><span class="s1">'new_value_chg_sum'</span><span class="p">]</span> <span class="o">-</span> <span class="n">new_money_in</span>
<span class="c1">#only return accounts that have space</span>
<span class="n">acctsdf</span> <span class="o">=</span> <span class="n">acctsdf</span><span class="p">[</span><span class="n">acctsdf</span><span class="o">.</span><span class="n">new_value_chg_sum</span><span class="o"><</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span>
<span class="c1">#establish sort order so we can allocate tax-inefficient assets first</span>
<span class="n">aclass_sortorder</span> <span class="o">=</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="s1">'ST'</span><span class="p">,</span><span class="mi">3</span><span class="p">],[</span><span class="s1">'BD'</span><span class="p">,</span><span class="mi">1</span><span class="p">],[</span><span class="s1">'CS'</span><span class="p">,</span><span class="mi">4</span><span class="p">],[</span><span class="s1">'RE'</span><span class="p">,</span><span class="mi">2</span><span class="p">],[</span><span class="s1">'ALT'</span><span class="p">,</span><span class="mi">5</span><span class="p">]],</span><span class="n">columns</span><span class="o">=</span><span class="p">[</span><span class="s1">'assetclass'</span><span class="p">,</span><span class="s1">'order'</span><span class="p">])</span>
<span class="n">dport</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">merge</span><span class="p">(</span><span class="n">dport</span><span class="p">,</span><span class="n">aclass_sortorder</span><span class="p">,</span><span class="n">how</span><span class="o">=</span><span class="s1">'left'</span><span class="p">,</span><span class="n">left_on</span><span class="o">=</span><span class="s1">'assetclass'</span><span class="p">,</span><span class="n">right_on</span><span class="o">=</span><span class="s1">'assetclass'</span><span class="p">)</span>
<span class="c1">#We loop twice, first to fit whole securities in accounts with tax location in mind, then again without tax location for anything leftover</span>
<span class="n">loop</span> <span class="o">=</span> <span class="mi">0</span>
<span class="k">while</span> <span class="n">loop</span> <span class="o"><</span> <span class="mi">2</span><span class="p">:</span>
<span class="n">loop</span><span class="o">+=</span><span class="mi">1</span>
<span class="c1">#loop through orphaned tickers and place them in accounts until all assets are allocated or we are forced to split a security across accounts</span>
<span class="c1"># in the first loop we do not allow tax-inefficient assets to wind up in Taxable accounts, in the second loop we relax this constraint</span>
<span class="k">for</span> <span class="n">index</span><span class="p">,</span> <span class="n">row</span> <span class="ow">in</span> <span class="n">dport</span><span class="p">[</span><span class="n">dport</span><span class="o">.</span><span class="n">accounttype</span><span class="o">.</span><span class="n">isnull</span><span class="p">()]</span><span class="o">.</span><span class="n">sort_values</span><span class="p">([</span><span class="s1">'order'</span><span class="p">,</span><span class="s1">'new_value_chg'</span><span class="p">],</span><span class="n">ascending</span><span class="o">=</span><span class="p">[</span><span class="kc">True</span><span class="p">,</span><span class="kc">False</span><span class="p">])</span><span class="o">.</span><span class="n">iterrows</span><span class="p">():</span>
<span class="c1">#loop through accounts and place the assets</span>
<span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">r</span> <span class="ow">in</span> <span class="n">acctsdf</span><span class="o">.</span><span class="n">iterrows</span><span class="p">():</span>
<span class="n">aid</span> <span class="o">=</span> <span class="n">r</span><span class="o">.</span><span class="n">accountid</span>
<span class="n">atype</span> <span class="o">=</span> <span class="n">r</span><span class="o">.</span><span class="n">accounttype</span>
<span class="n">bal</span> <span class="o">=</span> <span class="n">r</span><span class="o">.</span><span class="n">new_value_chg_sum</span>
<span class="c1">#print('Evaluating {}-{} with {} starting bal'.format(aid,atype,bal))</span>
<span class="k">if</span> <span class="n">loop</span> <span class="o">==</span> <span class="mi">0</span> <span class="ow">and</span> <span class="p">(</span><span class="n">row</span><span class="o">.</span><span class="n">assetclass</span> <span class="ow">in</span> <span class="p">(</span><span class="s1">'BD'</span><span class="p">,</span><span class="s1">'RE'</span><span class="p">)</span> <span class="ow">and</span> <span class="n">atype</span> <span class="o">==</span> <span class="s1">'TAXB'</span><span class="p">):</span>
<span class="k">continue</span> <span class="c1">#skip this case, since we don't want to place Bonds and Real-Estate assets in Taxable accounts</span>
<span class="k">elif</span> <span class="n">loop</span> <span class="o">==</span> <span class="mi">0</span> <span class="ow">and</span> <span class="p">(</span><span class="n">row</span><span class="o">.</span><span class="n">assetclass</span> <span class="ow">not</span> <span class="ow">in</span> <span class="p">(</span><span class="s1">'BD'</span><span class="p">,</span><span class="s1">'RE'</span><span class="p">)</span> <span class="ow">and</span> <span class="n">atype</span> <span class="o">!=</span> <span class="s1">'TAXB'</span><span class="p">):</span>
<span class="k">continue</span> <span class="c1">#skip this case, since we don't want to place tax-efficient assets into tax sheltered accounts </span>
<span class="k">if</span> <span class="n">row</span><span class="o">.</span><span class="n">new_value_chg</span> <span class="o">+</span> <span class="n">bal</span> <span class="o"><=</span><span class="mi">0</span><span class="p">:</span> <span class="c1">#it fits</span>
<span class="n">bal</span><span class="o">+=</span><span class="n">row</span><span class="o">.</span><span class="n">new_value_chg</span>
<span class="nb">print</span><span class="p">(</span><span class="s1">' FITS </span><span class="si">{}</span><span class="s1"> in </span><span class="si">{}</span><span class="s1">-</span><span class="si">{}</span><span class="s1"> with </span><span class="si">{}</span><span class="s1"> remaining'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">row</span><span class="o">.</span><span class="n">ticker</span><span class="p">,</span><span class="n">aid</span><span class="p">,</span><span class="n">atype</span><span class="p">,</span><span class="n">bal</span><span class="p">))</span>
<span class="c1">#update our portfolio</span>
<span class="n">dport</span><span class="o">.</span><span class="n">loc</span><span class="p">[</span><span class="n">index</span><span class="p">,</span><span class="s1">'accountid'</span><span class="p">]</span> <span class="o">=</span> <span class="n">aid</span>
<span class="n">dport</span><span class="o">.</span><span class="n">loc</span><span class="p">[</span><span class="n">index</span><span class="p">,</span><span class="s1">'accounttype'</span><span class="p">]</span> <span class="o">=</span> <span class="n">atype</span>
<span class="c1">#update account bal for next loop</span>
<span class="n">acctsdf</span><span class="o">.</span><span class="n">loc</span><span class="p">[</span><span class="n">i</span><span class="p">,</span><span class="s1">'new_value_chg_sum'</span><span class="p">]</span> <span class="o">=</span> <span class="n">bal</span>
<span class="k">break</span>
<span class="k">else</span><span class="p">:</span>
<span class="nb">print</span><span class="p">(</span><span class="s1">' </span><span class="si">{}</span><span class="s1"> </span><span class="si">{}</span><span class="s1"> does not fit in </span><span class="si">{}</span><span class="s1">-</span><span class="si">{}</span><span class="s1">'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">row</span><span class="o">.</span><span class="n">ticker</span><span class="p">,</span><span class="n">row</span><span class="o">.</span><span class="n">new_value_chg</span><span class="p">,</span><span class="n">aid</span><span class="p">,</span><span class="n">atype</span><span class="p">))</span>
<span class="nb">print</span><span class="p">(</span><span class="s1">'</span><span class="se">\n</span><span class="s1">Lets see what remains in our accounts after 2 loops . . .'</span><span class="p">)</span>
<span class="n">display</span><span class="p">(</span><span class="n">acctsdf</span><span class="p">)</span>
<span class="c1">#Here we are forced to split a security across multiple accounts because no one account can fit it</span>
<span class="c1"># in this loop we allow tax-inefficient assets to wind up in Taxable accounts, but only as a last resort</span>
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">dport</span><span class="p">[</span><span class="n">dport</span><span class="o">.</span><span class="n">accounttype</span><span class="o">.</span><span class="n">isnull</span><span class="p">()])</span><span class="o">></span><span class="mi">0</span><span class="p">:</span>
<span class="nb">print</span><span class="p">(</span><span class="s1">'Splitting remaining securities across accounts . . .'</span><span class="p">)</span>
<span class="c1">#loop through accounts and place portions of asset in each, create a new row in the df for each placement.</span>
<span class="k">for</span> <span class="n">index</span><span class="p">,</span> <span class="n">row</span> <span class="ow">in</span> <span class="n">dport</span><span class="p">[</span><span class="n">dport</span><span class="o">.</span><span class="n">accounttype</span><span class="o">.</span><span class="n">isnull</span><span class="p">()]</span><span class="o">.</span><span class="n">sort_values</span><span class="p">([</span><span class="s1">'order'</span><span class="p">,</span><span class="s1">'new_value_chg'</span><span class="p">],</span><span class="n">ascending</span><span class="o">=</span><span class="p">[</span><span class="kc">True</span><span class="p">,</span><span class="kc">False</span><span class="p">])</span><span class="o">.</span><span class="n">iterrows</span><span class="p">():</span>
<span class="n">final_shares_chg</span> <span class="o">=</span> <span class="n">row</span><span class="o">.</span><span class="n">final_shares_chg</span>
<span class="n">asset_bal</span> <span class="o">=</span> <span class="n">row</span><span class="o">.</span><span class="n">new_value_chg</span>
<span class="c1">#if its a tax-inefficent asset, order the accounts by 'order'</span>
<span class="k">if</span> <span class="n">row</span><span class="o">.</span><span class="n">assetclass</span> <span class="ow">in</span> <span class="p">(</span><span class="s1">'BD'</span><span class="p">,</span><span class="s1">'RE'</span><span class="p">):</span>
<span class="n">acctsdf</span> <span class="o">=</span> <span class="n">acctsdf</span><span class="o">.</span><span class="n">sort_values</span><span class="p">(</span><span class="s1">'order'</span><span class="p">,</span><span class="n">ascending</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">acctsdf</span> <span class="o">=</span> <span class="n">acctsdf</span><span class="o">.</span><span class="n">sort_values</span><span class="p">(</span><span class="s1">'order'</span><span class="p">,</span><span class="n">ascending</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
<span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">r</span> <span class="ow">in</span> <span class="n">acctsdf</span><span class="o">.</span><span class="n">iterrows</span><span class="p">():</span>
<span class="n">bal</span> <span class="o">=</span> <span class="n">r</span><span class="o">.</span><span class="n">new_value_chg_sum</span>
<span class="k">if</span> <span class="n">asset_bal</span><span class="o">>-</span><span class="n">bal</span><span class="p">:</span>
<span class="n">to_move</span> <span class="o">=</span> <span class="o">-</span><span class="n">bal</span>
<span class="n">pct_move</span> <span class="o">=</span> <span class="o">-</span><span class="n">bal</span><span class="o">/</span><span class="n">row</span><span class="o">.</span><span class="n">new_value_chg</span>
<span class="n">asset_bal</span><span class="o">+=</span><span class="n">bal</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">to_move</span> <span class="o">=</span> <span class="n">asset_bal</span>
<span class="n">pct_move</span> <span class="o">=</span> <span class="n">asset_bal</span><span class="o">/</span><span class="n">row</span><span class="o">.</span><span class="n">new_value_chg</span>
<span class="n">asset_bal</span><span class="o">=</span><span class="mi">0</span>
<span class="nb">print</span><span class="p">(</span><span class="s1">' </span><span class="si">{}</span><span class="s1"> move </span><span class="si">{}</span><span class="s1"> or </span><span class="si">{}% i</span><span class="s1">nto account </span><span class="si">{}</span><span class="s1">-</span><span class="si">{}</span><span class="s1">. </span><span class="si">{}</span><span class="s1"> bal remaining </span><span class="si">{}</span><span class="s1">'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">row</span><span class="o">.</span><span class="n">ticker</span><span class="p">,</span><span class="n">to_move</span><span class="p">,</span><span class="n">pct_move</span><span class="p">,</span><span class="n">r</span><span class="o">.</span><span class="n">accountid</span><span class="p">,</span><span class="n">r</span><span class="o">.</span><span class="n">accounttype</span><span class="p">,</span><span class="n">row</span><span class="o">.</span><span class="n">ticker</span><span class="p">,</span><span class="n">asset_bal</span><span class="p">))</span>
<span class="c1">#update our account to reflect this change</span>
<span class="k">if</span> <span class="n">asset_bal</span> <span class="o">></span> <span class="mi">0</span><span class="p">:</span>
<span class="n">acctsdf</span><span class="o">.</span><span class="n">loc</span><span class="p">[</span><span class="n">i</span><span class="p">,</span><span class="s1">'new_value_chg_sum'</span><span class="p">]</span> <span class="o">=</span> <span class="mf">0.0</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">acctsdf</span><span class="o">.</span><span class="n">loc</span><span class="p">[</span><span class="n">i</span><span class="p">,</span><span class="s1">'new_value_chg_sum'</span><span class="p">]</span> <span class="o">=</span> <span class="n">to_move</span><span class="o">+</span><span class="n">bal</span>
<span class="k">if</span> <span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">floor</span><span class="p">(</span><span class="n">pct_move</span><span class="o">*</span><span class="n">row</span><span class="o">.</span><span class="n">new_shares</span><span class="p">)</span><span class="o">*</span><span class="n">row</span><span class="o">.</span><span class="n">close</span><span class="p">)</span><span class="o">-</span><span class="n">row</span><span class="o">.</span><span class="n">value</span> <span class="o">></span> <span class="mi">0</span><span class="p">:</span>
<span class="c1">#create new row in our portfolio for this asset in this account</span>
<span class="n">dport</span><span class="o">.</span><span class="n">loc</span><span class="p">[</span><span class="nb">max</span><span class="p">(</span><span class="n">dport</span><span class="o">.</span><span class="n">index</span><span class="p">)</span><span class="o">+</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="n">r</span><span class="o">.</span><span class="n">accounttype</span><span class="p">,</span>
<span class="n">r</span><span class="o">.</span><span class="n">accountid</span><span class="p">,</span>
<span class="n">row</span><span class="o">.</span><span class="n">ticker</span><span class="p">,</span>
<span class="n">row</span><span class="o">.</span><span class="n">shares</span><span class="p">,</span>
<span class="n">row</span><span class="o">.</span><span class="n">assetclass</span><span class="p">,</span>
<span class="n">row</span><span class="o">.</span><span class="n">close</span><span class="p">,</span>
<span class="n">row</span><span class="o">.</span><span class="n">value</span><span class="p">,</span>
<span class="n">np</span><span class="o">.</span><span class="n">floor</span><span class="p">(</span><span class="n">pct_move</span><span class="o">*</span><span class="n">row</span><span class="o">.</span><span class="n">final_shares_chg</span><span class="p">),</span> <span class="c1">#we round down to get back to whole shares</span>
<span class="n">np</span><span class="o">.</span><span class="n">floor</span><span class="p">(</span><span class="n">pct_move</span><span class="o">*</span><span class="n">row</span><span class="o">.</span><span class="n">new_shares</span><span class="p">),</span>
<span class="n">np</span><span class="o">.</span><span class="n">floor</span><span class="p">(</span><span class="n">pct_move</span><span class="o">*</span><span class="n">row</span><span class="o">.</span><span class="n">new_shares</span><span class="p">)</span><span class="o">*</span><span class="n">row</span><span class="o">.</span><span class="n">close</span><span class="p">,</span>
<span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">floor</span><span class="p">(</span><span class="n">pct_move</span><span class="o">*</span><span class="n">row</span><span class="o">.</span><span class="n">new_shares</span><span class="p">)</span><span class="o">*</span><span class="n">row</span><span class="o">.</span><span class="n">close</span><span class="p">)</span><span class="o">-</span><span class="n">row</span><span class="o">.</span><span class="n">value</span><span class="p">,</span> <span class="c1">#rounding can cause us to be short of our total allocatable funds</span>
<span class="n">np</span><span class="o">.</span><span class="n">floor</span><span class="p">(</span><span class="n">pct_move</span><span class="o">*</span><span class="n">row</span><span class="o">.</span><span class="n">new_value</span><span class="p">)</span><span class="o">/</span><span class="n">dport</span><span class="o">.</span><span class="n">new_value</span><span class="o">.</span><span class="n">sum</span><span class="p">(),</span>
<span class="n">row</span><span class="o">.</span><span class="n">order</span><span class="p">]</span>
<span class="c1">#finally delete the original row from the df</span>
<span class="n">dport</span><span class="o">.</span><span class="n">drop</span><span class="p">(</span><span class="n">dport</span><span class="p">[</span><span class="n">dport</span><span class="o">.</span><span class="n">accounttype</span><span class="o">.</span><span class="n">isnull</span><span class="p">()]</span><span class="o">.</span><span class="n">index</span><span class="p">,</span><span class="n">inplace</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
<span class="c1">#double check our work - we just care that distributed funds < total available funds for this ticker</span>
<span class="k">assert</span><span class="p">(</span><span class="n">dport</span><span class="p">[</span><span class="n">dport</span><span class="o">.</span><span class="n">ticker</span><span class="o">==</span><span class="n">row</span><span class="o">.</span><span class="n">ticker</span><span class="p">]</span><span class="o">.</span><span class="n">new_value_chg</span><span class="o">.</span><span class="n">sum</span><span class="p">()</span> <span class="o"><</span> <span class="n">row</span><span class="o">.</span><span class="n">new_value_chg</span><span class="p">)</span>
</pre></div>
</div>
</div>
</div>
<div class="output_wrapper">
<div class="output">
<div class="output_area">
<div class="prompt"></div>
<div class="output_subarea output_stream output_stdout output_text">
<pre>Distributing new securities to existing accounts . . .
FITS VTABX in 1111-RIRA with -5068.132470695083 remaining
FITS VGSLX in 1111-RIRA with -445.4924706950824 remaining
VNQI 884.8499999999999 does not fit in 1111-RIRA
FITS VNQI in 2222-RIRA with -5559.379323808596 remaining
VWIGX 4704.400000000001 does not fit in 1111-RIRA
FITS VWIGX in 2222-RIRA with -854.9793238085958 remaining
VTRIX 4690.77 does not fit in 1111-RIRA
VTRIX 4690.77 does not fit in 2222-RIRA
FITS VTRIX in 3333-TAXB with -5484.389205496322 remaining
VDE 2787.84 does not fit in 1111-RIRA
VDE 2787.84 does not fit in 2222-RIRA
FITS VDE in 3333-TAXB with -2696.5492054963215 remaining
VIGAX 1156.34 does not fit in 1111-RIRA
VIGAX 1156.34 does not fit in 2222-RIRA
FITS VIGAX in 3333-TAXB with -1540.2092054963216 remaining
VSEQX 588.9399999999999 does not fit in 1111-RIRA
FITS VSEQX in 2222-RIRA with -266.0393238085959 remaining
VSMAX 560.25 does not fit in 1111-RIRA
VSMAX 560.25 does not fit in 2222-RIRA
FITS VSMAX in 3333-TAXB with -979.9592054963216 remaining
GLD 1326.27 does not fit in 1111-RIRA
GLD 1326.27 does not fit in 2222-RIRA
GLD 1326.27 does not fit in 3333-TAXB
GLD 1326.27 does not fit in 1111-RIRA
GLD 1326.27 does not fit in 2222-RIRA
GLD 1326.27 does not fit in 3333-TAXB
Lets see what remains in our accounts after 2 loops . . .
</pre>
</div>
</div>
<div class="output_area">
<div class="prompt"></div>
<div class="output_html rendered_html output_subarea ">
<div>
<style scoped>
.dataframe tbody tr th:only-of-type {
vertical-align: middle;
}
.dataframe tbody tr th {
vertical-align: top;
}
.dataframe thead th {
text-align: right;
}
</style>
<table border="1" class="dataframe">
<thead>
<tr style="text-align: right;">
<th></th>
<th>accountid</th>
<th>accounttype</th>
<th>new_value_chg_sum</th>
<th>order</th>
</tr>
</thead>
<tbody>
<tr>
<th>0</th>
<td>1111</td>
<td>RIRA</td>
<td>-445.492471</td>
<td>1</td>
</tr>
<tr>
<th>1</th>
<td>2222</td>
<td>RIRA</td>
<td>-266.039324</td>
<td>1</td>
</tr>
<tr>
<th>2</th>
<td>3333</td>
<td>TAXB</td>
<td>-979.959205</td>
<td>3</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="output_area">
<div class="prompt"></div>
<div class="output_subarea output_stream output_stdout output_text">
<pre>Splitting remaining securities across accounts . . .
GLD move 979.9592054963216 or 0.7388836402062338% into account 3333-TAXB. GLD bal remaining 346.3107945036784
GLD move 346.3107945036784 or 0.26111635979376624% into account 1111-RIRA. GLD bal remaining 0
GLD move 0 or 0.0% into account 2222-RIRA. GLD bal remaining 0
</pre>
</div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [19]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#Lets see whats left in our accounts, it should be very close to zero</span>
<span class="k">if</span> <span class="n">acctsdf</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">display</span><span class="p">(</span><span class="n">acctsdf</span><span class="p">)</span>
</pre></div>
</div>
</div>
</div>
<div class="output_wrapper">
<div class="output">
<div class="output_area">
<div class="prompt"></div>
<div class="output_html rendered_html output_subarea ">
<div>
<style scoped>
.dataframe tbody tr th:only-of-type {
vertical-align: middle;
}
.dataframe tbody tr th {
vertical-align: top;
}
.dataframe thead th {
text-align: right;
}
</style>
<table border="1" class="dataframe">
<thead>
<tr style="text-align: right;">
<th></th>
<th>accountid</th>
<th>accounttype</th>
<th>new_value_chg_sum</th>
<th>order</th>
</tr>
</thead>
<tbody>
<tr>
<th>2</th>
<td>3333</td>
<td>TAXB</td>
<td>0.000000</td>
<td>3</td>
</tr>
<tr>
<th>0</th>
<td>1111</td>
<td>RIRA</td>
<td>-99.181676</td>
<td>1</td>
</tr>
<tr>
<th>1</th>
<td>2222</td>
<td>RIRA</td>
<td>-266.039324</td>
<td>1</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [20]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">#Review our final portfolio with recommended buys/sells in 'final_shares_chg' column</span>
<span class="k">if</span> <span class="n">dport</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
<span class="c1">#Cleanup</span>
<span class="n">dport</span><span class="o">.</span><span class="n">drop</span><span class="p">(</span><span class="n">columns</span><span class="o">=</span><span class="p">[</span><span class="s1">'order'</span><span class="p">],</span><span class="n">inplace</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
<span class="n">dport</span> <span class="o">=</span> <span class="n">dport</span><span class="p">[[</span><span class="s1">'accounttype'</span><span class="p">,</span><span class="s1">'accountid'</span><span class="p">,</span><span class="s1">'ticker'</span><span class="p">,</span><span class="s1">'shares'</span><span class="p">,</span><span class="s1">'assetclass'</span><span class="p">,</span><span class="s1">'close'</span><span class="p">,</span><span class="s1">'value'</span><span class="p">,</span><span class="s1">'new_shares'</span><span class="p">,</span><span class="s1">'final_shares_chg'</span><span class="p">,</span><span class="s1">'new_value'</span><span class="p">,</span><span class="s1">'new_value_chg'</span><span class="p">,</span><span class="s1">'final_allocation'</span><span class="p">]]</span>
<span class="n">display</span><span class="p">(</span><span class="n">dport</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">port</span> <span class="o">=</span> <span class="n">port</span><span class="p">[[</span><span class="s1">'accounttype'</span><span class="p">,</span><span class="s1">'accountid'</span><span class="p">,</span><span class="s1">'ticker'</span><span class="p">,</span><span class="s1">'shares'</span><span class="p">,</span><span class="s1">'assetclass'</span><span class="p">,</span><span class="s1">'close'</span><span class="p">,</span><span class="s1">'value'</span><span class="p">,</span><span class="s1">'new_shares'</span><span class="p">,</span><span class="s1">'final_shares_chg'</span><span class="p">,</span><span class="s1">'new_value'</span><span class="p">,</span><span class="s1">'new_value_chg'</span><span class="p">,</span><span class="s1">'final_allocation'</span><span class="p">]]</span>
<span class="n">display</span><span class="p">(</span><span class="n">port</span><span class="p">)</span>
</pre></div>
</div>
</div>
</div>
<div class="output_wrapper">
<div class="output">
<div class="output_area">
<div class="prompt"></div>
<div class="output_html rendered_html output_subarea ">
<div>
<style scoped>
.dataframe tbody tr th:only-of-type {
vertical-align: middle;
}
.dataframe tbody tr th {
vertical-align: top;
}
.dataframe thead th {
text-align: right;
}
</style>
<table border="1" class="dataframe">
<thead>
<tr style="text-align: right;">
<th></th>
<th>accounttype</th>
<th>accountid</th>
<th>ticker</th>
<th>shares</th>
<th>assetclass</th>
<th>close</th>
<th>value</th>
<th>new_shares</th>
<th>final_shares_chg</th>
<th>new_value</th>
<th>new_value_chg</th>
<th>final_allocation</th>
</tr>
</thead>
<tbody>
<tr>
<th>0</th>
<td>RIRA</td>
<td>1111</td>
<td>VBTLX</td>
<td>913.483</td>
<td>BD</td>
<td>10.39</td>
<td>9491.08837</td>
<td>170.078225</td>
<td>-743.404775</td>
<td>1767.112759</td>
<td>-7723.975611</td>
<td>0.019071</td>
</tr>
<tr>
<th>1</th>
<td>RIRA</td>
<td>2222</td>
<td>VBTLX</td>
<td>772.407</td>
<td>BD</td>
<td>10.39</td>
<td>8025.30873</td>
<td>143.811775</td>
<td>-628.595225</td>
<td>1494.204341</td>
<td>-6531.104389</td>
<td>0.016125</td>
</tr>
<tr>
<th>2</th>
<td>RIRA</td>
<td>1111</td>
<td>VTIAX</td>
<td>514.298</td>
<td>ST</td>
<td>25.17</td>
<td>12944.88066</td>
<td>561.298000</td>
<td>47.000000</td>
<td>14127.870660</td>
<td>1182.990000</td>
<td>0.152468</td>
</tr>
<tr>
<th>3</th>
<td>RIRA</td>
<td>1111</td>
<td>VTSAX</td>
<td>151.121</td>
<td>ST</td>
<td>61.08</td>
<td>9230.47068</td>
<td>152.539028</td>
<td>1.418028</td>
<td>9317.083821</td>
<td>86.613141</td>
<td>0.100550</td>
</tr>
<tr>
<th>4</th>
<td>RIRA</td>
<td>2222</td>
<td>VTSAX</td>
<td>151.578</td>
<td>ST</td>
<td>61.08</td>
<td>9258.38424</td>
<td>153.000316</td>
<td>1.422316</td>
<td>9345.259305</td>
<td>86.875065</td>
<td>0.100854</td>
</tr>
<tr>
<th>5</th>
<td>TAXB</td>
<td>3333</td>
<td>VTSAX</td>
<td>549.871</td>
<td>ST</td>
<td>61.08</td>
<td>33586.12068</td>
<td>555.030656</td>
<td>5.159656</td>
<td>33901.272475</td>
<td>315.151795</td>
<td>0.365862</td>
</tr>
<tr>
<th>6</th>
<td>TAXB</td>
<td>3333</td>
<td>AAPL</td>
<td>3.140</td>
<td>ST</td>
<td>156.15</td>
<td>490.31100</td>
<td>0.000000</td>
<td>-3.140000</td>
<td>0.000000</td>
<td>-490.311000</td>
<td>0.000000</td>
</tr>
<tr>
<th>7</th>
<td>TAXB</td>
<td>3333</td>
<td>VIGAX</td>
<td>NaN</td>
<td>ST</td>
<td>68.02</td>
<td>0.00000</td>
<td>17.000000</td>
<td>17.000000</td>
<td>1156.340000</td>
<td>1156.340000</td>
<td>0.012479</td>
</tr>
<tr>
<th>8</th>
<td>TAXB</td>
<td>3333</td>
<td>VSMAX</td>
<td>NaN</td>
<td>ST</td>
<td>62.25</td>
<td>0.00000</td>
<td>9.000000</td>
<td>9.000000</td>
<td>560.250000</td>
<td>560.250000</td>
<td>0.006046</td>
</tr>
<tr>
<th>9</th>
<td>RIRA</td>
<td>2222</td>
<td>VSEQX</td>
<td>NaN</td>
<td>ST</td>
<td>26.77</td>
<td>0.00000</td>
<td>22.000000</td>
<td>22.000000</td>
<td>588.940000</td>
<td>588.940000</td>
<td>0.006356</td>
</tr>
<tr>
<th>10</th>
<td>RIRA</td>
<td>2222</td>
<td>VWIGX</td>
<td>NaN</td>
<td>ST</td>
<td>24.76</td>
<td>0.00000</td>
<td>190.000000</td>
<td>190.000000</td>
<td>4704.400000</td>
<td>4704.400000</td>
<td>0.050770</td>
</tr>
<tr>
<th>11</th>
<td>TAXB</td>
<td>3333</td>
<td>VTRIX</td>
<td>NaN</td>
<td>ST</td>
<td>31.91</td>
<td>0.00000</td>
<td>147.000000</td>
<td>147.000000</td>
<td>4690.770000</td>
<td>4690.770000</td>
<td>0.050623</td>
</tr>
<tr>
<th>12</th>
<td>RIRA</td>
<td>1111</td>
<td>VTABX</td>
<td>NaN</td>
<td>BD</td>
<td>21.66</td>
<td>0.00000</td>
<td>64.000000</td>
<td>64.000000</td>
<td>1386.240000</td>
<td>1386.240000</td>
<td>0.014960</td>
</tr>
<tr>
<th>13</th>
<td>RIRA</td>
<td>1111</td>
<td>VGSLX</td>
<td>NaN</td>
<td>RE</td>
<td>105.06</td>
<td>0.00000</td>
<td>44.000000</td>
<td>44.000000</td>
<td>4622.640000</td>
<td>4622.640000</td>
<td>0.049887</td>
</tr>
<tr>
<th>14</th>
<td>RIRA</td>
<td>2222</td>
<td>VNQI</td>
<td>NaN</td>
<td>RE</td>
<td>52.05</td>
<td>0.00000</td>
<td>17.000000</td>
<td>17.000000</td>
<td>884.850000</td>
<td>884.850000</td>
<td>0.009549</td>
</tr>
<tr>
<th>15</th>
<td>TAXB</td>
<td>3333</td>
<td>VDE</td>
<td>NaN</td>
<td>ST</td>
<td>77.44</td>
<td>0.00000</td>
<td>36.000000</td>
<td>36.000000</td>
<td>2787.840000</td>
<td>2787.840000</td>
<td>0.030086</td>
</tr>
<tr>
<th>17</th>
<td>TAXB</td>
<td>3333</td>
<td>GLD</td>
<td>NaN</td>
<td>CS</td>
<td>120.57</td>
<td>0.00000</td>
<td>8.000000</td>
<td>8.000000</td>
<td>964.560000</td>
<td>964.560000</td>
<td>0.010565</td>
</tr>
<tr>
<th>18</th>
<td>RIRA</td>
<td>1111</td>
<td>GLD</td>
<td>NaN</td>
<td>CS</td>
<td>120.57</td>
<td>0.00000</td>
<td>2.000000</td>
<td>2.000000</td>
<td>241.140000</td>
<td>241.140000</td>
<td>0.003749</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div><div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h2 id="Conclusion">Conclusion<a class="anchor-link" href="#Conclusion">¶</a></h2><p>Through this portfolio rebalancing demonstration using Pandas you can see we have achieved a rebalanced portfolio very closely approximating our desired target allocation. We can see how GLD was added as a new security along with 9 others, and AAPL was removed from the portfolio. The remaining securities were bought or sold as required by our target allocation. We accounted for whole-share rounding because most of our assets in this sample are index funds. The final steps had us consider how to distribute newly acquired securities into existing accounts, this was accomplished through iteratively fitting securities into accounts until they all had a home. This simple rebalancer can be adapted to your needs and I urge you grab the code and see if you can improve upon it. I welcome your thoughts or feedback in the comments.</p>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div><div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<p><strong><em>No Solicitation or Investment Advice:</em></strong>
The material contained on this website is for informational purposes only and the author is not soliciting any action based upon such material. The material is not to be construed as an offer or a recommendation to buy or sell a security nor is it to be construed as investment advice. Additionally, the material accessible through this website does not constitute a representation that the investments described herein are suitable or appropriate for any person. This code is provided as-is with no warranties and may contain errors which affect its performance.</p>
</div>
</div>
</div>
<script type="text/javascript">if (!document.getElementById('mathjaxscript_pelican_#%@#$@#')) {
var mathjaxscript = document.createElement('script');
mathjaxscript.id = 'mathjaxscript_pelican_#%@#$@#';
mathjaxscript.type = 'text/javascript';
mathjaxscript.src = '//cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML';
mathjaxscript[(window.opera ? "innerHTML" : "text")] =
"MathJax.Hub.Config({" +
" config: ['MMLorHTML.js']," +
" TeX: { extensions: ['AMSmath.js','AMSsymbols.js','noErrors.js','noUndefined.js'], equationNumbers: { autoNumber: 'AMS' } }," +
" jax: ['input/TeX','input/MathML','output/HTML-CSS']," +
" extensions: ['tex2jax.js','mml2jax.js','MathMenu.js','MathZoom.js']," +
" displayAlign: 'center'," +
" displayIndent: '0em'," +
" showMathMenu: true," +
" tex2jax: { " +
" inlineMath: [ ['$','$'] ], " +
" displayMath: [ ['$$','$$'] ]," +
" processEscapes: true," +
" preview: 'TeX'," +
" }, " +
" 'HTML-CSS': { " +
" linebreaks: { automatic: true, width: '95% container' }, " +
" styles: { '.MathJax_Display, .MathJax .mo, .MathJax .mi, .MathJax .mn': {color: 'black ! important'} }" +
" } " +
"}); ";
(document.body || document.getElementsByTagName('head')[0]).appendChild(mathjaxscript);
}
</script>